Commit 1f326084 authored by Documenter.jl's avatar Documenter.jl
Browse files

build based on e8fdb29b


Former-commit-id: 7eedee15
parent a192f9f4
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Screening with modifications · COBREXA.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img class="docs-light-only" src="../../assets/logo.svg" alt="COBREXA.jl logo"/><img class="docs-dark-only" src="../../assets/logo-dark.svg" alt="COBREXA.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">COBREXA.jl</span></div><form class="docs-search" action="../../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><a class="tocitem" href="../../tutorials/">Tutorials</a></li><li><a class="tocitem" href="../../notebooks/">Examples and notebooks</a></li><li><a class="tocitem" href="../../functions/">Function reference</a></li><li><a class="tocitem" href="../../howToContribute/">How to contribute</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Screening with modifications</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Screening with modifications</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/LCSB-BioCore/COBREXA.jl/blob/master/docs/src/advanced/1_modifications.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Screening-with-modifications"><a class="docs-heading-anchor" href="#Screening-with-modifications">Screening with modifications</a><a id="Screening-with-modifications-1"></a><a class="docs-heading-anchor-permalink" href="#Screening-with-modifications" title="Permalink"></a></h1></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 10:44">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Screening with modifications · COBREXA.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img class="docs-light-only" src="../../assets/logo.svg" alt="COBREXA.jl logo"/><img class="docs-dark-only" src="../../assets/logo-dark.svg" alt="COBREXA.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">COBREXA.jl</span></div><form class="docs-search" action="../../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><a class="tocitem" href="../../tutorials/">Tutorials</a></li><li><a class="tocitem" href="../../notebooks/">Examples and notebooks</a></li><li><a class="tocitem" href="../../functions/">Function reference</a></li><li><a class="tocitem" href="../../howToContribute/">How to contribute</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Screening with modifications</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Screening with modifications</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/LCSB-BioCore/COBREXA.jl/blob/master/docs/src/advanced/1_modifications.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Screening-with-modifications"><a class="docs-heading-anchor" href="#Screening-with-modifications">Screening with modifications</a><a id="Screening-with-modifications-1"></a><a class="docs-heading-anchor-permalink" href="#Screening-with-modifications" title="Permalink"></a></h1></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 13:47">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Custom models · COBREXA.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img class="docs-light-only" src="../../assets/logo.svg" alt="COBREXA.jl logo"/><img class="docs-dark-only" src="../../assets/logo-dark.svg" alt="COBREXA.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">COBREXA.jl</span></div><form class="docs-search" action="../../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><a class="tocitem" href="../../tutorials/">Tutorials</a></li><li><a class="tocitem" href="../../notebooks/">Examples and notebooks</a></li><li><a class="tocitem" href="../../functions/">Function reference</a></li><li><a class="tocitem" href="../../howToContribute/">How to contribute</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Custom models</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Custom models</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/LCSB-BioCore/COBREXA.jl/blob/master/docs/src/advanced/2_custom_model.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Custom-models"><a class="docs-heading-anchor" href="#Custom-models">Custom models</a><a id="Custom-models-1"></a><a class="docs-heading-anchor-permalink" href="#Custom-models" title="Permalink"></a></h1></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 10:44">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Custom models · COBREXA.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img class="docs-light-only" src="../../assets/logo.svg" alt="COBREXA.jl logo"/><img class="docs-dark-only" src="../../assets/logo-dark.svg" alt="COBREXA.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">COBREXA.jl</span></div><form class="docs-search" action="../../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><a class="tocitem" href="../../tutorials/">Tutorials</a></li><li><a class="tocitem" href="../../notebooks/">Examples and notebooks</a></li><li><a class="tocitem" href="../../functions/">Function reference</a></li><li><a class="tocitem" href="../../howToContribute/">How to contribute</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Custom models</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Custom models</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/LCSB-BioCore/COBREXA.jl/blob/master/docs/src/advanced/2_custom_model.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Custom-models"><a class="docs-heading-anchor" href="#Custom-models">Custom models</a><a id="Custom-models-1"></a><a class="docs-heading-anchor-permalink" href="#Custom-models" title="Permalink"></a></h1></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 13:47">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Using customized models on HPC · COBREXA.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img class="docs-light-only" src="../../assets/logo.svg" alt="COBREXA.jl logo"/><img class="docs-dark-only" src="../../assets/logo-dark.svg" alt="COBREXA.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">COBREXA.jl</span></div><form class="docs-search" action="../../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><a class="tocitem" href="../../tutorials/">Tutorials</a></li><li><a class="tocitem" href="../../notebooks/">Examples and notebooks</a></li><li><a class="tocitem" href="../../functions/">Function reference</a></li><li><a class="tocitem" href="../../howToContribute/">How to contribute</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Using customized models on HPC</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Using customized models on HPC</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/LCSB-BioCore/COBREXA.jl/blob/master/docs/src/advanced/3_custom_models_on_hpc.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Using-customized-models-on-HPC"><a class="docs-heading-anchor" href="#Using-customized-models-on-HPC">Using customized models on HPC</a><a id="Using-customized-models-on-HPC-1"></a><a class="docs-heading-anchor-permalink" href="#Using-customized-models-on-HPC" title="Permalink"></a></h1></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 10:44">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Using customized models on HPC · COBREXA.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img class="docs-light-only" src="../../assets/logo.svg" alt="COBREXA.jl logo"/><img class="docs-dark-only" src="../../assets/logo-dark.svg" alt="COBREXA.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">COBREXA.jl</span></div><form class="docs-search" action="../../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><a class="tocitem" href="../../tutorials/">Tutorials</a></li><li><a class="tocitem" href="../../notebooks/">Examples and notebooks</a></li><li><a class="tocitem" href="../../functions/">Function reference</a></li><li><a class="tocitem" href="../../howToContribute/">How to contribute</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Using customized models on HPC</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Using customized models on HPC</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/LCSB-BioCore/COBREXA.jl/blob/master/docs/src/advanced/3_custom_models_on_hpc.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Using-customized-models-on-HPC"><a class="docs-heading-anchor" href="#Using-customized-models-on-HPC">Using customized models on HPC</a><a id="Using-customized-models-on-HPC-1"></a><a class="docs-heading-anchor-permalink" href="#Using-customized-models-on-HPC" title="Permalink"></a></h1></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 13:47">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Advanced model screening · COBREXA.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img class="docs-light-only" src="../../assets/logo.svg" alt="COBREXA.jl logo"/><img class="docs-dark-only" src="../../assets/logo-dark.svg" alt="COBREXA.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">COBREXA.jl</span></div><form class="docs-search" action="../../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><a class="tocitem" href="../../tutorials/">Tutorials</a></li><li><a class="tocitem" href="../../notebooks/">Examples and notebooks</a></li><li><a class="tocitem" href="../../functions/">Function reference</a></li><li><a class="tocitem" href="../../howToContribute/">How to contribute</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Advanced model screening</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Advanced model screening</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/LCSB-BioCore/COBREXA.jl/blob/master/docs/src/advanced/4_advanced_screening.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Advanced-model-screening"><a class="docs-heading-anchor" href="#Advanced-model-screening">Advanced model screening</a><a id="Advanced-model-screening-1"></a><a class="docs-heading-anchor-permalink" href="#Advanced-model-screening" title="Permalink"></a></h1><h2 id="Example:-Gene-knockouts"><a class="docs-heading-anchor" href="#Example:-Gene-knockouts">Example: Gene knockouts</a><a id="Example:-Gene-knockouts-1"></a><a class="docs-heading-anchor-permalink" href="#Example:-Gene-knockouts" title="Permalink"></a></h2></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 10:44">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Advanced model screening · COBREXA.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img class="docs-light-only" src="../../assets/logo.svg" alt="COBREXA.jl logo"/><img class="docs-dark-only" src="../../assets/logo-dark.svg" alt="COBREXA.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">COBREXA.jl</span></div><form class="docs-search" action="../../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><a class="tocitem" href="../../tutorials/">Tutorials</a></li><li><a class="tocitem" href="../../notebooks/">Examples and notebooks</a></li><li><a class="tocitem" href="../../functions/">Function reference</a></li><li><a class="tocitem" href="../../howToContribute/">How to contribute</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Advanced model screening</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Advanced model screening</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/LCSB-BioCore/COBREXA.jl/blob/master/docs/src/advanced/4_advanced_screening.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Advanced-model-screening"><a class="docs-heading-anchor" href="#Advanced-model-screening">Advanced model screening</a><a id="Advanced-model-screening-1"></a><a class="docs-heading-anchor-permalink" href="#Advanced-model-screening" title="Permalink"></a></h1><h2 id="Example:-Gene-knockouts"><a class="docs-heading-anchor" href="#Example:-Gene-knockouts">Example: Gene knockouts</a><a id="Example:-Gene-knockouts-1"></a><a class="docs-heading-anchor-permalink" href="#Example:-Gene-knockouts" title="Permalink"></a></h2></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 13:47">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Tracing and debugging · COBREXA.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img class="docs-light-only" src="../../assets/logo.svg" alt="COBREXA.jl logo"/><img class="docs-dark-only" src="../../assets/logo-dark.svg" alt="COBREXA.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">COBREXA.jl</span></div><form class="docs-search" action="../../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><a class="tocitem" href="../../tutorials/">Tutorials</a></li><li><a class="tocitem" href="../../notebooks/">Examples and notebooks</a></li><li><a class="tocitem" href="../../functions/">Function reference</a></li><li><a class="tocitem" href="../../howToContribute/">How to contribute</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Tracing and debugging</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Tracing and debugging</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/LCSB-BioCore/COBREXA.jl/blob/master/docs/src/advanced/5_debugging.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Tracing-and-debugging"><a class="docs-heading-anchor" href="#Tracing-and-debugging">Tracing and debugging</a><a id="Tracing-and-debugging-1"></a><a class="docs-heading-anchor-permalink" href="#Tracing-and-debugging" title="Permalink"></a></h1></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 10:44">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Tracing and debugging · COBREXA.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img class="docs-light-only" src="../../assets/logo.svg" alt="COBREXA.jl logo"/><img class="docs-dark-only" src="../../assets/logo-dark.svg" alt="COBREXA.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">COBREXA.jl</span></div><form class="docs-search" action="../../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><a class="tocitem" href="../../tutorials/">Tutorials</a></li><li><a class="tocitem" href="../../notebooks/">Examples and notebooks</a></li><li><a class="tocitem" href="../../functions/">Function reference</a></li><li><a class="tocitem" href="../../howToContribute/">How to contribute</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Tracing and debugging</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Tracing and debugging</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/LCSB-BioCore/COBREXA.jl/blob/master/docs/src/advanced/5_debugging.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Tracing-and-debugging"><a class="docs-heading-anchor" href="#Tracing-and-debugging">Tracing and debugging</a><a id="Tracing-and-debugging-1"></a><a class="docs-heading-anchor-permalink" href="#Tracing-and-debugging" title="Permalink"></a></h1></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 13:47">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
ecff656cde77ec4de2217ad154ef55da338a4a37
\ No newline at end of file
7c413466668bc95426d9ad32a616e38e80621f90
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -10,4 +10,4 @@ $ git remote rename origin upstream # renames the origin as upstream
$ git remote add origin git@github.com:yourUsername/COBREXA.jl.git
$ git fetch origin</code></pre><p>where <code>yourUsername</code> is your Github username.</p><div class="admonition is-warning"><header class="admonition-header">Warning</header><div class="admonition-body"><p>Make sure that your fork is located at <code>github.com/yourUsername/COBREXA.jl</code>.</p></div></div><p>Then, checkout a branch <code>yourNewBranch</code>:</p><pre><code class="language-bash">$ cd ~/.julia/dev/COBREXA
$ git checkout -b yourNewBranch origin/develop</code></pre><p>Then, you can readily use the <code>COBREXA</code> package:</p><pre><code class="language-julia">julia&gt; using COBREXA</code></pre><p>After making changes, precompile the package:</p><pre><code class="language-julia">(v1.1) pkg&gt; precompile</code></pre><h2 id="Step-2:-Activate-COBREXA"><a class="docs-heading-anchor" href="#Step-2:-Activate-COBREXA">Step 2: Activate COBREXA</a><a id="Step-2:-Activate-COBREXA-1"></a><a class="docs-heading-anchor-permalink" href="#Step-2:-Activate-COBREXA" title="Permalink"></a></h2><div class="admonition is-warning"><header class="admonition-header">Warning</header><div class="admonition-body"><p>Please note that you cannot use the dependencies of COBREXA directly, unless they are installed separately or the environment has been activated:</p></div></div><pre><code class="language-julia">(v1.1) pkg&gt; activate .
(COBREXA) pkg&gt; instantiate</code></pre><p>Now, the environment is activated (you can see it with the prompt change <code>(COBREXA) pkg&gt;</code>). Now, you can use the dependency. For instance:</p><pre><code class="language-julia">julia&gt; using JuMP</code></pre><div class="admonition is-warning"><header class="admonition-header">Warning</header><div class="admonition-body"><p>If you do not <code>activate</code> the environment before using any of the dependencies, you will see a red error messages prompting you to install the dependency explicitly.</p></div></div><h2 id="Step-3:-Contribute!"><a class="docs-heading-anchor" href="#Step-3:-Contribute!">Step 3: Contribute!</a><a id="Step-3:-Contribute!-1"></a><a class="docs-heading-anchor-permalink" href="#Step-3:-Contribute!" title="Permalink"></a></h2><div class="admonition is-success"><header class="admonition-header">Tip</header><div class="admonition-body"><p>Adding <code>[skip ci]</code> in your commit message will skip CI from automatically testing that commit. </p></div></div></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../functions/">« Function reference</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 10:44">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
(COBREXA) pkg&gt; instantiate</code></pre><p>Now, the environment is activated (you can see it with the prompt change <code>(COBREXA) pkg&gt;</code>). Now, you can use the dependency. For instance:</p><pre><code class="language-julia">julia&gt; using JuMP</code></pre><div class="admonition is-warning"><header class="admonition-header">Warning</header><div class="admonition-body"><p>If you do not <code>activate</code> the environment before using any of the dependencies, you will see a red error messages prompting you to install the dependency explicitly.</p></div></div><h2 id="Step-3:-Contribute!"><a class="docs-heading-anchor" href="#Step-3:-Contribute!">Step 3: Contribute!</a><a id="Step-3:-Contribute!-1"></a><a class="docs-heading-anchor-permalink" href="#Step-3:-Contribute!" title="Permalink"></a></h2><div class="admonition is-success"><header class="admonition-header">Tip</header><div class="admonition-body"><p>Adding <code>[skip ci]</code> in your commit message will skip CI from automatically testing that commit. </p></div></div></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../functions/">« Function reference</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 13:47">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
......@@ -4,7 +4,7 @@
<img class="docs-light-only" src="assets/header.svg?maxAge=0" width="80%">
<img class="docs-dark-only" src="assets/header-dark.svg?maxAge=0" width="80%">
</div>
<br><h1 id="Constraint-Based-Reconstruction-and-EXascale-Analysis"><a class="docs-heading-anchor" href="#Constraint-Based-Reconstruction-and-EXascale-Analysis">Constraint-Based Reconstruction and EXascale Analysis</a><a id="Constraint-Based-Reconstruction-and-EXascale-Analysis-1"></a><a class="docs-heading-anchor-permalink" href="#Constraint-Based-Reconstruction-and-EXascale-Analysis" title="Permalink"></a></h1><p>COBREXA is a toolkit for working with large constraint-based metabolic models, and running very large number of analysis tasks on these models in parallel. Its main purpose is to make the methods of Constraint-based Reconstruction and Analysis (COBRA) scale to problem sizes that require the use of huge computer clusters and HPC environment, which allows to realistically approach the pre-exascale-sized models.</p><p>In the package, you will find the usual COBRA-like functions that inteface to the underlying linear programming solvers. We use <a href="https://github.com/jump-dev/JuMP.jl"><code>JuMP.jl</code></a> as the unified interface for many solvers; you can plug in whatever compatible solver you want, including the popular <code>Tulip.jl</code>, <code>GLPK.jl</code>, <code>OSQP.jl</code>, and <code>Gurobi</code>.</p><div align="center">
<br><h1 id="Constraint-Based-Reconstruction-and-EXascale-Analysis"><a class="docs-heading-anchor" href="#Constraint-Based-Reconstruction-and-EXascale-Analysis">Constraint-Based Reconstruction and EXascale Analysis</a><a id="Constraint-Based-Reconstruction-and-EXascale-Analysis-1"></a><a class="docs-heading-anchor-permalink" href="#Constraint-Based-Reconstruction-and-EXascale-Analysis" title="Permalink"></a></h1><p>COBREXA is a toolkit for working with large constraint-based metabolic models, and a running very large number of analysis tasks on these models in parallel. Its main purpose is to make the methods of Constraint-based Reconstruction and Analysis (COBRA) scale to problem sizes that require the use of huge computer clusters and HPC environments, which allows them to be realistically applied to pre-exascale-sized models.</p><p>In this package, you will find the usual COBRA-like functions that interface to underlying linear programming solvers. We use <a href="https://github.com/jump-dev/JuMP.jl"><code>JuMP.jl</code></a> as the unified interface for many solvers; you can plug in whichever compatible solver you want, including the popular <a href="https://github.com/ds4dm/Tulip.jl"><code>Tulip.jl</code></a>, <a href="https://github.com/jump-dev/GLPK.jl"><code>GLPK.jl</code></a>, <a href="https://github.com/oxfordcontrol/OSQP.jl"><code>OSQP.jl</code></a>, and <a href="https://github.com/jump-dev/Gurobi.jl"><code>Gurobi.jl</code></a>.</p><div align="center">
<img style="width:300px;margin:10px;border-offset:15px;border: 1px solid #eee;border-radius: 50%;padding: 10px;-webkit-border-radius: 50%;-moz-border-radius: 50%;" src="assets/output.gif" alt="history"><br>
Development history of COBREXA.jl.
</div><h2 id="Quick-start-guide"><a class="docs-heading-anchor" href="#Quick-start-guide">Quick start guide</a><a id="Quick-start-guide-1"></a><a class="docs-heading-anchor-permalink" href="#Quick-start-guide" title="Permalink"></a></h2><p>&lt;!–insert_quickstart–&gt;</p><h2 id="Tutorials"><a class="docs-heading-anchor" href="#Tutorials">Tutorials</a><a id="Tutorials-1"></a><a class="docs-heading-anchor-permalink" href="#Tutorials" title="Permalink"></a></h2><p>Detailed tutorial contents is <a href="../tutorials/">available here</a>.</p><ul><li><a href="../tutorials/1_loading/#Loading-and-converting-model-data">Loading and converting model data</a></li><li><a href="../tutorials/2_analysis/#Basic-analysis-of-constraint-based-models">Basic analysis of constraint-based models</a></li><li><a href="../tutorials/3_hpc/#Distributed-processing-and-HPC-environments">Distributed processing and HPC environments</a></li><li><a href="../tutorials/4_modifying/#Modifying-and-saving-the-models">Modifying and saving the models</a></li></ul><h2 id="Example-notebooks-and-workflows"><a class="docs-heading-anchor" href="#Example-notebooks-and-workflows">Example notebooks and workflows</a><a id="Example-notebooks-and-workflows-1"></a><a class="docs-heading-anchor-permalink" href="#Example-notebooks-and-workflows" title="Permalink"></a></h2><p>Detailed notebook content is <a href="../notebooks/">available here</a>.</p><ul><li><a href="../notebooks/1_loading_converting_saving/#Loading,-converting,-and-saving-models">Loading, converting, and saving models</a></li><li><a href="../notebooks/2_finding_balance/#Finding-balance-and-variability-of-constraint-based-models">Finding balance and variability of constraint-based models</a></li><li><a href="../notebooks/3_basic_stdmodel_usage/#Basic-usage-of-StandardModel">Basic usage of <code>StandardModel</code></a></li><li><a href="../notebooks/4_basic_core_coupled_usage/#Basic-usage-of-CoreModel-and-CoreModelCoupled">Basic usage of <code>CoreModel</code> and <code>CoreModelCoupled</code></a></li><li><a href="../notebooks/5_basic_stdmodel_construction/#Model-construction-and-modification">Model construction and modification</a></li></ul><h2 id="Functions-reference"><a class="docs-heading-anchor" href="#Functions-reference">Functions reference</a><a id="Functions-reference-1"></a><a class="docs-heading-anchor-permalink" href="#Functions-reference" title="Permalink"></a></h2><ul><li><a href="../functions/#Functions">Functions</a></li><ul><li><a href="../functions/#Base-Types">Base Types</a></li><li><a href="../functions/#Model-types-and-contents">Model types and contents</a></li><li><a href="../functions/#Base-functions">Base functions</a></li><li><a href="../functions/#File-I/O-and-serialization">File I/O and serialization</a></li><li><a href="../functions/#Model-reconstruction">Model reconstruction</a></li><li><a href="../functions/#Analysis-functions">Analysis functions</a></li><li><a href="../functions/#Miscellaneous-utilities">Miscellaneous utilities</a></li></ul></ul><h2 id="Contribution-guide"><a class="docs-heading-anchor" href="#Contribution-guide">Contribution guide</a><a id="Contribution-guide-1"></a><a class="docs-heading-anchor-permalink" href="#Contribution-guide" title="Permalink"></a></h2><p>If you aim to contribute code, patches or improvements to <code>COBREXA.jl</code> read the basic guidelines at a separate page with <a href="../howToContribute/">contribution guidelines and hints</a>.</p></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 10:44">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
</div><h2 id="Quick-start-guide"><a class="docs-heading-anchor" href="#Quick-start-guide">Quick start guide</a><a id="Quick-start-guide-1"></a><a class="docs-heading-anchor-permalink" href="#Quick-start-guide" title="Permalink"></a></h2><p>&lt;!–insert_quickstart–&gt;</p><h2 id="Tutorials"><a class="docs-heading-anchor" href="#Tutorials">Tutorials</a><a id="Tutorials-1"></a><a class="docs-heading-anchor-permalink" href="#Tutorials" title="Permalink"></a></h2><p>Detailed tutorial content is <a href="../tutorials/">available here</a>.</p><ul><li><a href="../tutorials/1_loading/#Loading-and-converting-model-data">Loading and converting model data</a></li><li><a href="../tutorials/2_analysis/#Basic-analysis-of-constraint-based-models">Basic analysis of constraint-based models</a></li><li><a href="../tutorials/3_hpc/#Distributed-processing-and-HPC-environments">Distributed processing and HPC environments</a></li><li><a href="../tutorials/4_modifying/#Modifying-and-saving-the-models">Modifying and saving the models</a></li></ul><h2 id="Example-notebooks-and-workflows"><a class="docs-heading-anchor" href="#Example-notebooks-and-workflows">Example notebooks and workflows</a><a id="Example-notebooks-and-workflows-1"></a><a class="docs-heading-anchor-permalink" href="#Example-notebooks-and-workflows" title="Permalink"></a></h2><p>Detailed notebook content is <a href="../notebooks/">available here</a>.</p><ul><li><a href="../notebooks/1_loading_converting_saving/#Loading,-converting,-and-saving-models">Loading, converting, and saving models</a></li><li><a href="../notebooks/2_finding_balance/#Finding-balance-and-variability-of-constraint-based-models">Finding balance and variability of constraint-based models</a></li><li><a href="../notebooks/3_basic_stdmodel_usage/#Basic-usage-of-StandardModel">Basic usage of <code>StandardModel</code></a></li><li><a href="../notebooks/4_basic_core_coupled_usage/#Basic-usage-of-CoreModel-and-CoreModelCoupled">Basic usage of <code>CoreModel</code> and <code>CoreModelCoupled</code></a></li><li><a href="../notebooks/5_basic_stdmodel_construction/#Model-construction-and-modification">Model construction and modification</a></li></ul><h2 id="Functions-reference"><a class="docs-heading-anchor" href="#Functions-reference">Functions reference</a><a id="Functions-reference-1"></a><a class="docs-heading-anchor-permalink" href="#Functions-reference" title="Permalink"></a></h2><ul><li><a href="../functions/#Functions">Functions</a></li><ul><li><a href="../functions/#Base-Types">Base Types</a></li><li><a href="../functions/#Model-types-and-contents">Model types and contents</a></li><li><a href="../functions/#Base-functions">Base functions</a></li><li><a href="../functions/#File-I/O-and-serialization">File I/O and serialization</a></li><li><a href="../functions/#Model-reconstruction">Model reconstruction</a></li><li><a href="../functions/#Analysis-functions">Analysis functions</a></li><li><a href="../functions/#Miscellaneous-utilities">Miscellaneous utilities</a></li></ul></ul><h2 id="Contribution-guide"><a class="docs-heading-anchor" href="#Contribution-guide">Contribution guide</a><a id="Contribution-guide-1"></a><a class="docs-heading-anchor-permalink" href="#Contribution-guide" title="Permalink"></a></h2><p>If you wish to contribute code, patches or improvements to <code>COBREXA.jl</code>, please read the basic <a href="../howToContribute/">contribution guidelines and hints.</a>.</p></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 13:47">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
......@@ -4,7 +4,7 @@
<img class="docs-light-only" src="assets/header.svg?maxAge=0" width="80%">
<img class="docs-dark-only" src="assets/header-dark.svg?maxAge=0" width="80%">
</div>
<br><h1 id="Constraint-Based-Reconstruction-and-EXascale-Analysis"><a class="docs-heading-anchor" href="#Constraint-Based-Reconstruction-and-EXascale-Analysis">Constraint-Based Reconstruction and EXascale Analysis</a><a id="Constraint-Based-Reconstruction-and-EXascale-Analysis-1"></a><a class="docs-heading-anchor-permalink" href="#Constraint-Based-Reconstruction-and-EXascale-Analysis" title="Permalink"></a></h1><p>COBREXA is a toolkit for working with large constraint-based metabolic models, and running very large number of analysis tasks on these models in parallel. Its main purpose is to make the methods of Constraint-based Reconstruction and Analysis (COBRA) scale to problem sizes that require the use of huge computer clusters and HPC environment, which allows to realistically approach the pre-exascale-sized models.</p><p>In the package, you will find the usual COBRA-like functions that inteface to the underlying linear programming solvers. We use <a href="https://github.com/jump-dev/JuMP.jl"><code>JuMP.jl</code></a> as the unified interface for many solvers; you can plug in whatever compatible solver you want, including the popular <code>Tulip.jl</code>, <code>GLPK.jl</code>, <code>OSQP.jl</code>, and <code>Gurobi</code>.</p><div align="center">
<br><h1 id="Constraint-Based-Reconstruction-and-EXascale-Analysis"><a class="docs-heading-anchor" href="#Constraint-Based-Reconstruction-and-EXascale-Analysis">Constraint-Based Reconstruction and EXascale Analysis</a><a id="Constraint-Based-Reconstruction-and-EXascale-Analysis-1"></a><a class="docs-heading-anchor-permalink" href="#Constraint-Based-Reconstruction-and-EXascale-Analysis" title="Permalink"></a></h1><p>COBREXA is a toolkit for working with large constraint-based metabolic models, and a running very large number of analysis tasks on these models in parallel. Its main purpose is to make the methods of Constraint-based Reconstruction and Analysis (COBRA) scale to problem sizes that require the use of huge computer clusters and HPC environments, which allows them to be realistically applied to pre-exascale-sized models.</p><p>In this package, you will find the usual COBRA-like functions that interface to underlying linear programming solvers. We use <a href="https://github.com/jump-dev/JuMP.jl"><code>JuMP.jl</code></a> as the unified interface for many solvers; you can plug in whichever compatible solver you want, including the popular <a href="https://github.com/ds4dm/Tulip.jl"><code>Tulip.jl</code></a>, <a href="https://github.com/jump-dev/GLPK.jl"><code>GLPK.jl</code></a>, <a href="https://github.com/oxfordcontrol/OSQP.jl"><code>OSQP.jl</code></a>, and <a href="https://github.com/jump-dev/Gurobi.jl"><code>Gurobi.jl</code></a>.</p><div align="center">
<img style="width:300px;margin:10px;border-offset:15px;border: 1px solid #eee;border-radius: 50%;padding: 10px;-webkit-border-radius: 50%;-moz-border-radius: 50%;" src="assets/output.gif" alt="history"><br>
Development history of COBREXA.jl.
</div><h2 id="Quick-start-guide"><a class="docs-heading-anchor" href="#Quick-start-guide">Quick start guide</a><a id="Quick-start-guide-1"></a><a class="docs-heading-anchor-permalink" href="#Quick-start-guide" title="Permalink"></a></h2><p>You can install COBREXA directly from the GitHub repository. Start <code>julia</code>, <strong>press <code>]</code></strong> to switch to the Packaging environment, and type:</p><pre><code class="language-none">add https://github.com/LCSB-BioCore/COBREXA.jl</code></pre><p>You also need to install your favorite solver supported by <code>JuMP.jl</code>, typing e.g.:</p><pre><code class="language-none">add GLPK</code></pre><p>When the packages are installed, switch back to the &quot;normal&quot; julia shell by pressing Backspace (the prompt should change color back to green). After that, you can download <a href="http://bigg.ucsd.edu/models/e_coli_core">a SBML model from the internet</a> and perform a flux balance analysis as follows:</p><pre><code class="language-julia">using COBREXA # loads the package
......@@ -28,4 +28,4 @@ fluxes = flux_balance_analysis_dict(model, GLPK.Optimizer)</code></pre><p>The va
&quot;R_O2t&quot; =&gt; 21.7995
&quot;R_G6PDH2r&quot; =&gt; 4.95998
&quot;R_TALA&quot; =&gt; 1.49698
⋮ =&gt;</code></pre><h2 id="Tutorials"><a class="docs-heading-anchor" href="#Tutorials">Tutorials</a><a id="Tutorials-1"></a><a class="docs-heading-anchor-permalink" href="#Tutorials" title="Permalink"></a></h2><p>Detailed tutorial contents is <a href="tutorials/">available here</a>.</p><ul><li><a href="tutorials/1_loading/#Loading-and-converting-model-data">Loading and converting model data</a></li><li><a href="tutorials/2_analysis/#Basic-analysis-of-constraint-based-models">Basic analysis of constraint-based models</a></li><li><a href="tutorials/3_hpc/#Distributed-processing-and-HPC-environments">Distributed processing and HPC environments</a></li><li><a href="tutorials/4_modifying/#Modifying-and-saving-the-models">Modifying and saving the models</a></li></ul><h2 id="Example-notebooks-and-workflows"><a class="docs-heading-anchor" href="#Example-notebooks-and-workflows">Example notebooks and workflows</a><a id="Example-notebooks-and-workflows-1"></a><a class="docs-heading-anchor-permalink" href="#Example-notebooks-and-workflows" title="Permalink"></a></h2><p>Detailed notebook content is <a href="notebooks/">available here</a>.</p><ul><li><a href="notebooks/1_loading_converting_saving/#Loading,-converting,-and-saving-models">Loading, converting, and saving models</a></li><li><a href="notebooks/2_finding_balance/#Finding-balance-and-variability-of-constraint-based-models">Finding balance and variability of constraint-based models</a></li><li><a href="notebooks/3_basic_stdmodel_usage/#Basic-usage-of-StandardModel">Basic usage of <code>StandardModel</code></a></li><li><a href="notebooks/4_basic_core_coupled_usage/#Basic-usage-of-CoreModel-and-CoreModelCoupled">Basic usage of <code>CoreModel</code> and <code>CoreModelCoupled</code></a></li><li><a href="notebooks/5_basic_stdmodel_construction/#Model-construction-and-modification">Model construction and modification</a></li></ul><h2 id="Functions-reference"><a class="docs-heading-anchor" href="#Functions-reference">Functions reference</a><a id="Functions-reference-1"></a><a class="docs-heading-anchor-permalink" href="#Functions-reference" title="Permalink"></a></h2><ul><li><a href="functions/#Functions">Functions</a></li><ul><li><a href="functions/#Base-Types">Base Types</a></li><li><a href="functions/#Model-types-and-contents">Model types and contents</a></li><li><a href="functions/#Base-functions">Base functions</a></li><li><a href="functions/#File-I/O-and-serialization">File I/O and serialization</a></li><li><a href="functions/#Model-reconstruction">Model reconstruction</a></li><li><a href="functions/#Analysis-functions">Analysis functions</a></li><li><a href="functions/#Miscellaneous-utilities">Miscellaneous utilities</a></li></ul></ul><h2 id="Contribution-guide"><a class="docs-heading-anchor" href="#Contribution-guide">Contribution guide</a><a id="Contribution-guide-1"></a><a class="docs-heading-anchor-permalink" href="#Contribution-guide" title="Permalink"></a></h2><p>If you aim to contribute code, patches or improvements to <code>COBREXA.jl</code> read the basic guidelines at a separate page with <a href="howToContribute/">contribution guidelines and hints</a>.</p></article><nav class="docs-footer"><a class="docs-footer-nextpage" href="tutorials/">Tutorials »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 10:44">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
⋮ =&gt;</code></pre><h2 id="Tutorials"><a class="docs-heading-anchor" href="#Tutorials">Tutorials</a><a id="Tutorials-1"></a><a class="docs-heading-anchor-permalink" href="#Tutorials" title="Permalink"></a></h2><p>Detailed tutorial content is <a href="tutorials/">available here</a>.</p><ul><li><a href="tutorials/1_loading/#Loading-and-converting-model-data">Loading and converting model data</a></li><li><a href="tutorials/2_analysis/#Basic-analysis-of-constraint-based-models">Basic analysis of constraint-based models</a></li><li><a href="tutorials/3_hpc/#Distributed-processing-and-HPC-environments">Distributed processing and HPC environments</a></li><li><a href="tutorials/4_modifying/#Modifying-and-saving-the-models">Modifying and saving the models</a></li></ul><h2 id="Example-notebooks-and-workflows"><a class="docs-heading-anchor" href="#Example-notebooks-and-workflows">Example notebooks and workflows</a><a id="Example-notebooks-and-workflows-1"></a><a class="docs-heading-anchor-permalink" href="#Example-notebooks-and-workflows" title="Permalink"></a></h2><p>Detailed notebook content is <a href="notebooks/">available here</a>.</p><ul><li><a href="notebooks/1_loading_converting_saving/#Loading,-converting,-and-saving-models">Loading, converting, and saving models</a></li><li><a href="notebooks/2_finding_balance/#Finding-balance-and-variability-of-constraint-based-models">Finding balance and variability of constraint-based models</a></li><li><a href="notebooks/3_basic_stdmodel_usage/#Basic-usage-of-StandardModel">Basic usage of <code>StandardModel</code></a></li><li><a href="notebooks/4_basic_core_coupled_usage/#Basic-usage-of-CoreModel-and-CoreModelCoupled">Basic usage of <code>CoreModel</code> and <code>CoreModelCoupled</code></a></li><li><a href="notebooks/5_basic_stdmodel_construction/#Model-construction-and-modification">Model construction and modification</a></li></ul><h2 id="Functions-reference"><a class="docs-heading-anchor" href="#Functions-reference">Functions reference</a><a id="Functions-reference-1"></a><a class="docs-heading-anchor-permalink" href="#Functions-reference" title="Permalink"></a></h2><ul><li><a href="functions/#Functions">Functions</a></li><ul><li><a href="functions/#Base-Types">Base Types</a></li><li><a href="functions/#Model-types-and-contents">Model types and contents</a></li><li><a href="functions/#Base-functions">Base functions</a></li><li><a href="functions/#File-I/O-and-serialization">File I/O and serialization</a></li><li><a href="functions/#Model-reconstruction">Model reconstruction</a></li><li><a href="functions/#Analysis-functions">Analysis functions</a></li><li><a href="functions/#Miscellaneous-utilities">Miscellaneous utilities</a></li></ul></ul><h2 id="Contribution-guide"><a class="docs-heading-anchor" href="#Contribution-guide">Contribution guide</a><a id="Contribution-guide-1"></a><a class="docs-heading-anchor-permalink" href="#Contribution-guide" title="Permalink"></a></h2><p>If you wish to contribute code, patches or improvements to <code>COBREXA.jl</code>, please read the basic <a href="howToContribute/">contribution guidelines and hints.</a>.</p></article><nav class="docs-footer"><a class="docs-footer-nextpage" href="tutorials/">Tutorials »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 13:47">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
%% Cell type:markdown id: tags:
# Loading, converting, and saving models
%% Cell type:markdown id: tags:
`COBREXA` can load models stored in `.mat`, `.json`, and `.xml` formats (with
the latter denoting SBML formatted models).
%% Cell type:markdown id: tags:
We will primarily use the *E. Coli* "core" model to demonstrate the utilities
found in `COBREXA`. First, let's download the model in several formats.
%% Cell type:code id: tags:
``` julia
# Downloads the model files if they don't already exist
!isfile("e_coli_core.mat") &&
download("http://bigg.ucsd.edu/static/models/e_coli_core.mat", "e_coli_core.mat");
!isfile("e_coli_core.json") &&
download("http://bigg.ucsd.edu/static/models/e_coli_core.json", "e_coli_core.json");
!isfile("e_coli_core.xml") &&
download("http://bigg.ucsd.edu/static/models/e_coli_core.xml", "e_coli_core.xml");
```
%% Cell type:markdown id: tags:
Now, load the package:
%% Cell type:code id: tags:
``` julia
using COBREXA
```
%% Cell type:markdown id: tags:
## Loading models
%% Cell type:markdown id: tags:
Load the models using the `load_model` function. Each model is able to
"pretty-print" itself, hiding the inner complexity.
%% Cell type:code id: tags:
``` julia
mat_model = load_model("e_coli_core.mat")
```
%% Output
Metabolic model of type MATModel\n\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢄⠀⠀⠀⠀⠀⠀⠀⠈⠶⠴⡆⠀⠀⠀⠀⠀⠀\n⡀⢐⣀⢀⡀⡒⢒⣐⠀⣂⣂⠀⣂⣂⢂⠀⢀⠀⠀⠀⠀⠀⢀⠄⠀⠀⠀⢂⠀⢂⣀⣐⡒⡀⠆⢙⣀⠀⡀⠀\n⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠈⢑⣀⣀⠀⠀\n⠀⠀⠃⠀⠃⠀⠀⠀⠘⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⡜⠀⡄⣤⢠⠘⠙⢣⡇⠘\n⠀⠐⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠐⠁⠉⠀⠀⠀⠀⠀⠘⠄\n⠀⢐⠀⠂⠀⠄⠠⠠⠀⠠⠆⠀⠄⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠠⠀⠠⠀⠀⢀⠀⠀⠠⠀⠀⠁\n⢀⠐⠀⠨⢀⠁⠈⣈⠀⢁⣁⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠁⢀⠀⢊⠉⠀⠀⠀⢀⠀⣀⠀⢀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡈⠀⡀⠆⠀⠆⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀\n⠀⠀⠂⠀⡂⠀⠀⠁⠀⠀⠀⠈⠁⠀⠀⠀⠄⠄⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀\n⠈⠀⠁⠀⠀⢀⡀⠀⠠⠁⠁⠀⠑⠀⠐⠲⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠂⠀⠀⠀⠀⠀⠀⠊⠀⠀⠀⠈\n⠄⠠⢠⠀⠰⠀⠠⠀⠤⠦⠄⠈⠀⠀⠀⠠⠀⠁⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⠄⠄⠠⠀⠀⠀⠀⠀\n⠂⠐⠀⠀⠐⡠⢐⠘⢃⠒⠂⡀⠄⠀⠀⠐⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠀⢀⢀⠀⠀⣀⠀⢀\n⠈⠀⠁⠀⡀⠀⠀⠀⠈⠁⠅⠀⠁⠀⢀⠈⠄⠔⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠈\n⠣⠁⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠈⠀⠁⠁⠀⠈⡀⠀⠀⠀⠀⠀⠐⢣⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠂⠄⠤⠀⠀⠈⠂⠀⠀⠀⠀⠠⠀⠊⠒⣠⠀⠀⠀⠀⠀⠀⠀⠀⠀\nNumber of reactions: 95\nNumber of metabolites: 72\n
Metabolic model of type MATModel\n\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢄⠀⠀⠀⠀⠀⠀⠀⠈⠶⠴⡆⠀⠀⠀⠀⠀⠀\n⡀⢐⣀⢀⡀⡒⢒⣐⠀⣂⣂⠀⣂⣂⢂⠀⢀⠀⠀⠀⠀⠀⢀⠄⠀⠀⠀⢂⠀⢂⣀⣐⡒⡀⠆⢙⣀⠀⡀⠀\n⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠈⢑⣀⣀⠀⠀\n⠀⠀⠃⠀⠃⠀⠀⠀⠘⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⡜⠀⡄⣤⢠⠘⠙⢣⡇⠘\n⠀⠐⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠐⠁⠉⠀⠀⠀⠀⠀⠘⠄\n⠀⢐⠀⠂⠀⠄⠠⠠⠀⠠⠆⠀⠄⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠠⠀⠠⠀⠀⢀⠀⠀⠠⠀⠀⠁\n⢀⠐⠀⠨⢀⠁⠈⣈⠀⢁⣁⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠁⢀⠀⢊⠉⠀⠀⠀⢀⠀⣀⠀⢀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡈⠀⡀⠆⠀⠆⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀\n⠀⠀⠂⠀⡂⠀⠀⠁⠀⠀⠀⠈⠁⠀⠀⠀⠄⠄⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀\n⠈⠀⠁⠀⠀⢀⡀⠀⠠⠁⠁⠀⠑⠀⠐⠲⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠂⠀⠀⠀⠀⠀⠀⠊⠀⠀⠀⠈\n⠄⠠⢠⠀⠰⠀⠠⠀⠤⠦⠄⠈⠀⠀⠀⠠⠀⠁⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⠄⠄⠠⠀⠀⠀⠀⠀\n⠂⠐⠀⠀⠐⡠⢐⠘⢃⠒⠂⡀⠄⠀⠀⠐⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠀⢀⢀⠀⠀⣀⠀⢀\n⠈⠀⠁⠀⡀⠀⠀⠀⠈⠁⠅⠀⠁⠀⢀⠈⠄⠔⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠈\n⠣⠁⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠈⠀⠁⠁⠀⠈⡀⠀⠀⠀⠀⠀⠐⢣⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠂⠄⠤⠀⠀⠈⠂⠀⠀⠀⠀⠠⠀⠊⠒⣠⠀⠀⠀⠀⠀⠀⠀⠀⠀\nNumber of reactions: 95\nNumber of metabolites: 72\n
%% Cell type:code id: tags:
``` julia
json_model = load_model("e_coli_core.json")
```
%% Output
Metabolic model of type JSONModel\n\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢄⠀⠀⠀⠀⠀⠀⠀⠈⠶⠴⡆⠀⠀⠀⠀⠀⠀\n⡀⢐⣀⢀⡀⡒⢒⣐⠀⣂⣂⠀⣂⣂⢂⠀⢀⠀⠀⠀⠀⠀⢀⠄⠀⠀⠀⢂⠀⢂⣀⣐⡒⡀⠆⢙⣀⠀⡀⠀\n⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠈⢑⣀⣀⠀⠀\n⠀⠀⠃⠀⠃⠀⠀⠀⠘⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⡜⠀⡄⣤⢠⠘⠙⢣⡇⠘\n⠀⠐⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠐⠁⠉⠀⠀⠀⠀⠀⠘⠄\n⠀⢐⠀⠂⠀⠄⠠⠠⠀⠠⠆⠀⠄⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠠⠀⠠⠀⠀⢀⠀⠀⠠⠀⠀⠁\n⢀⠐⠀⠨⢀⠁⠈⣈⠀⢁⣁⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠁⢀⠀⢊⠉⠀⠀⠀⢀⠀⣀⠀⢀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡈⠀⡀⠆⠀⠆⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀\n⠀⠀⠂⠀⡂⠀⠀⠁⠀⠀⠀⠈⠁⠀⠀⠀⠄⠄⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀\n⠈⠀⠁⠀⠀⢀⡀⠀⠠⠁⠁⠀⠑⠀⠐⠲⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠂⠀⠀⠀⠀⠀⠀⠊⠀⠀⠀⠈\n⠄⠠⢠⠀⠰⠀⠠⠀⠤⠦⠄⠈⠀⠀⠀⠠⠀⠁⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⠄⠄⠠⠀⠀⠀⠀⠀\n⠂⠐⠀⠀⠐⡠⢐⠘⢃⠒⠂⡀⠄⠀⠀⠐⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠀⢀⢀⠀⠀⣀⠀⢀\n⠈⠀⠁⠀⡀⠀⠀⠀⠈⠁⠅⠀⠁⠀⢀⠈⠄⠔⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠈\n⠣⠁⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠈⠀⠁⠁⠀⠈⡀⠀⠀⠀⠀⠀⠐⢣⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠂⠄⠤⠀⠀⠈⠂⠀⠀⠀⠀⠠⠀⠊⠒⣠⠀⠀⠀⠀⠀⠀⠀⠀⠀\nNumber of reactions: 95\nNumber of metabolites: 72\n
Metabolic model of type JSONModel\n\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢄⠀⠀⠀⠀⠀⠀⠀⠈⠶⠴⡆⠀⠀⠀⠀⠀⠀\n⡀⢐⣀⢀⡀⡒⢒⣐⠀⣂⣂⠀⣂⣂⢂⠀⢀⠀⠀⠀⠀⠀⢀⠄⠀⠀⠀⢂⠀⢂⣀⣐⡒⡀⠆⢙⣀⠀⡀⠀\n⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠈⢑⣀⣀⠀⠀\n⠀⠀⠃⠀⠃⠀⠀⠀⠘⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⡜⠀⡄⣤⢠⠘⠙⢣⡇⠘\n⠀⠐⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠐⠁⠉⠀⠀⠀⠀⠀⠘⠄\n⠀⢐⠀⠂⠀⠄⠠⠠⠀⠠⠆⠀⠄⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠠⠀⠠⠀⠀⢀⠀⠀⠠⠀⠀⠁\n⢀⠐⠀⠨⢀⠁⠈⣈⠀⢁⣁⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠁⢀⠀⢊⠉⠀⠀⠀⢀⠀⣀⠀⢀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡈⠀⡀⠆⠀⠆⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀\n⠀⠀⠂⠀⡂⠀⠀⠁⠀⠀⠀⠈⠁⠀⠀⠀⠄⠄⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀\n⠈⠀⠁⠀⠀⢀⡀⠀⠠⠁⠁⠀⠑⠀⠐⠲⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠂⠀⠀⠀⠀⠀⠀⠊⠀⠀⠀⠈\n⠄⠠⢠⠀⠰⠀⠠⠀⠤⠦⠄⠈⠀⠀⠀⠠⠀⠁⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⠄⠄⠠⠀⠀⠀⠀⠀\n⠂⠐⠀⠀⠐⡠⢐⠘⢃⠒⠂⡀⠄⠀⠀⠐⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠀⢀⢀⠀⠀⣀⠀⢀\n⠈⠀⠁⠀⡀⠀⠀⠀⠈⠁⠅⠀⠁⠀⢀⠈⠄⠔⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠈\n⠣⠁⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠈⠀⠁⠁⠀⠈⡀⠀⠀⠀⠀⠀⠐⢣⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠂⠄⠤⠀⠀⠈⠂⠀⠀⠀⠀⠠⠀⠊⠒⣠⠀⠀⠀⠀⠀⠀⠀⠀⠀\nNumber of reactions: 95\nNumber of metabolites: 72\n
%% Cell type:code id: tags:
``` julia
sbml_model = load_model("e_coli_core.xml")
```
%% Output
Metabolic model of type SBMLModel\n\n⠀⠈⢀⠀⡀⠀⠀⠀⠀⡠⠂⠀⠀⠀⠀⠈⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⢀⠐⡀⠀⠀⠀⠀⠄\n⠀⠐⠀⠀⠀⠀⠀⠀⡠⠂⠀⠀⠀⠀⢰⠱⣀⠀⡄⢐⠀⠀⢀⠀⠀⠀⡂⠄⠔⠁⠰⠀⠠⠀⣆⠀⠄⢠⢀⠄\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠠⠀⠀⠐⠀⠀⠀⠀⠀⠀⢀⠀⠀⠐⠀⠂⠀⠀⠀⠄⠀⠐⠀⢁⠄⠀⠀⠀⠀⠀\n⠀⢀⠀⠐⡈⠀⡀⠀⠂⠀⣀⠀⠑⡈⢀⠀⠀⠀⠀⠀⡀⡠⠀⡀⠰⠁⠈⠂⠁⠀⠠⠀⠀⠂⡂⠀⠂⠂⠀⠀\n⠠⠀⠐⠀⠂⠀⠀⢀⠀⠀⠀⠀⠊⠀⡐⠊⠐⠀⠀⠀⠀⠀⠐⠀⠂⠀⠀⠐⠀⠀⠀⠀⠀⠁⠃⠠⠀⠁⠐⠀\n⠀⠠⠀⡀⠄⠀⠀⠂⠀⠀⠀⠠⠀⠠⠀⠀⠄⠀⠨⠀⠀⠀⠐⠀⠀⠄⢀⠀⠀⠀⠈⠀⠀⠀⠁⠄⠀⠀⠀⠀\n⠀⢐⠐⠀⠄⠀⡂⠀⢐⠀⠀⠀⠀⠂⢀⢀⠐⠂⡀⠈⠀⠀⠀⠂⠀⠈⠀⡀⡐⠀⢄⠀⢀⠀⡆⠀⡀⣀⡀⡐\n⠀⠈⠀⠀⠀⠀⠀⠐⢂⠀⢀⠀⠈⠀⠀⠀⠀⠀⠠⠀⠀⠠⠀⠀⠀⠈⠂⠀⠀⠀⠄⠐⠐⠀⠁⠀⠀⠑⠁⠀\n⠂⠠⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠠⠈⠀⠀⠀⠀⠀⠁⠀⠀⠠⠐⠀⠁⠈⠀⠁⢀⠀⠀⠀⠀⠀⠀⠀⠀⠌⠀\n⠀⠀⠂⢨⠀⡀⠀⠐⠁⠐⠀⠐⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠢⠒⠈⠐⠐⠁⠂⠀⠀⠀⠄⠓⠕⠂⠃⠁⠀⠐\n⠠⠀⠨⠀⠁⠤⠄⠀⠁⡄⠀⠂⠠⠄⢈⠌⠠⠄⠀⢀⠀⠀⠀⠄⠨⠀⡤⠀⢀⠀⢀⠠⠀⠁⡔⠨⠀⠈⠄⠀\n⠀⢀⢀⣀⠀⡠⡒⢀⢀⣀⠀⢀⣀⡀⢀⠀⢀⠀⡀⠀⡀⠀⠈⣀⠀⢀⣀⠀⡀⠀⢀⠁⢀⣀⣀⡀⡠⡀⡀⣀\n⠀⠄⠀⠀⠀⠀⠀⠀⠀⠂⠁⠀⠀⠀⠀⠀⠀⣠⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀\n⢀⠂⠀⠀⠂⠀⠈⠀⠐⠀⠀⠀⠁⠀⠀⠀⡀⠔⠑⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠢⠀⠀⡀⠂⠈⠀⠀⠀⠄\n⠀⠐⠀⠀⡂⠀⠂⠀⠀⠀⠒⠐⠄⠂⠐⠀⠘⡀⠀⠠⡂⠃⠀⠂⠄⠂⠀⠀⠀⠀⡀⠀⡀⠀⡂⠂⠀⠀⢀⠀\nNumber of reactions: 95\nNumber of metabolites: 72\n
Metabolic model of type SBMLModel\n\n⠀⠈⢀⠀⡀⠀⠀⠀⠀⡠⠂⠀⠀⠀⠀⠈⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⢀⠐⡀⠀⠀⠀⠀⠄\n⠀⠐⠀⠀⠀⠀⠀⠀⡠⠂⠀⠀⠀⠀⢰⠱⣀⠀⡄⢐⠀⠀⢀⠀⠀⠀⡂⠄⠔⠁⠰⠀⠠⠀⣆⠀⠄⢠⢀⠄\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠠⠀⠀⠐⠀⠀⠀⠀⠀⠀⢀⠀⠀⠐⠀⠂⠀⠀⠀⠄⠀⠐⠀⢁⠄⠀⠀⠀⠀⠀\n⠀⢀⠀⠐⡈⠀⡀⠀⠂⠀⣀⠀⠑⡈⢀⠀⠀⠀⠀⠀⡀⡠⠀⡀⠰⠁⠈⠂⠁⠀⠠⠀⠀⠂⡂⠀⠂⠂⠀⠀\n⠠⠀⠐⠀⠂⠀⠀⢀⠀⠀⠀⠀⠊⠀⡐⠊⠐⠀⠀⠀⠀⠀⠐⠀⠂⠀⠀⠐⠀⠀⠀⠀⠀⠁⠃⠠⠀⠁⠐⠀\n⠀⠠⠀⡀⠄⠀⠀⠂⠀⠀⠀⠠⠀⠠⠀⠀⠄⠀⠨⠀⠀⠀⠐⠀⠀⠄⢀⠀⠀⠀⠈⠀⠀⠀⠁⠄⠀⠀⠀⠀\n⠀⢐⠐⠀⠄⠀⡂⠀⢐⠀⠀⠀⠀⠂⢀⢀⠐⠂⡀⠈⠀⠀⠀⠂⠀⠈⠀⡀⡐⠀⢄⠀⢀⠀⡆⠀⡀⣀⡀⡐\n⠀⠈⠀⠀⠀⠀⠀⠐⢂⠀⢀⠀⠈⠀⠀⠀⠀⠀⠠⠀⠀⠠⠀⠀⠀⠈⠂⠀⠀⠀⠄⠐⠐⠀⠁⠀⠀⠑⠁⠀\n⠂⠠⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠠⠈⠀⠀⠀⠀⠀⠁⠀⠀⠠⠐⠀⠁⠈⠀⠁⢀⠀⠀⠀⠀⠀⠀⠀⠀⠌⠀\n⠀⠀⠂⢨⠀⡀⠀⠐⠁⠐⠀⠐⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠢⠒⠈⠐⠐⠁⠂⠀⠀⠀⠄⠓⠕⠂⠃⠁⠀⠐\n⠠⠀⠨⠀⠁⠤⠄⠀⠁⡄⠀⠂⠠⠄⢈⠌⠠⠄⠀⢀⠀⠀⠀⠄⠨⠀⡤⠀⢀⠀⢀⠠⠀⠁⡔⠨⠀⠈⠄⠀\n⠀⢀⢀⣀⠀⡠⡒⢀⢀⣀⠀⢀⣀⡀⢀⠀⢀⠀⡀⠀⡀⠀⠈⣀⠀⢀⣀⠀⡀⠀⢀⠁⢀⣀⣀⡀⡠⡀⡀⣀\n⠀⠄⠀⠀⠀⠀⠀⠀⠀⠂⠁⠀⠀⠀⠀⠀⠀⣠⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀\n⢀⠂⠀⠀⠂⠀⠈⠀⠐⠀⠀⠀⠁⠀⠀⠀⡀⠔⠑⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠢⠀⠀⡀⠂⠈⠀⠀⠀⠄\n⠀⠐⠀⠀⡂⠀⠂⠀⠀⠀⠒⠐⠄⠂⠐⠀⠘⡀⠀⠠⡂⠃⠀⠂⠄⠂⠀⠀⠀⠀⡀⠀⡀⠀⡂⠂⠀⠀⢀⠀\nNumber of reactions: 95\nNumber of metabolites: 72\n
%% Cell type:markdown id: tags:
You can directly inspect the model objects, although only with a specific way
for each specific type.
%% Cell type:markdown id: tags:
JSON models contain their corresponding JSON:
%% Cell type:code id: tags:
``` julia
json_model.json
```
%% Output
Dict{String, Any} with 6 entries:\n "metabolites" => Any[Dict{String, Any}("compartment"=>"e", "name"=>"D-Glucos…\n "id" => "e_coli_core"\n "compartments" => Dict{String, Any}("c"=>"cytosol", "e"=>"extracellular space…\n "reactions" => Any[Dict{String, Any}("name"=>"Phosphofructokinase", "metab…\n "version" => "1"\n "genes" => Any[Dict{String, Any}("name"=>"adhE", "id"=>"b1241", "notes…
%% Cell type:markdown id: tags:
SBML models contain a complicated structure from [`SBML.jl`
package](https://github.com/LCSB-BioCore/SBML.jl):
%% Cell type:code id: tags:
``` julia
typeof(sbml_model.sbml)
```
%% Output
SBML.Model
%% Cell type:markdown id: tags:
MAT models contain MATLAB data:
%% Cell type:code id: tags:
``` julia
mat_model.mat
```
%% Output
Dict{String, Any} with 17 entries:\n "description" => "e_coli_core"\n "c" => [0.0; 0.0; … ; 0.0; 0.0]\n "rev" => [0; 0; … ; 1; 0]\n "mets" => Any["glc__D_e"; "gln__L_c"; … ; "g3p_c"; "g6p_c"]\n "grRules" => Any["b3916 or b1723"; "((b0902 and b0903) and b2579) or (b09…\n "subSystems" => Any["Glycolysis/Gluconeogenesis"; "Pyruvate Metabolism"; … ;…\n "b" => [0.0; 0.0; … ; 0.0; 0.0]\n "metFormulas" => Any["C6H12O6"; "C5H10N2O3"; … ; "C3H5O6P"; "C6H11O9P"]\n "rxnGeneMat" => …\n "S" => [0.0 0.0 … 0.0 0.0; 0.0 0.0 … 0.0 0.0; … ; 0.0 0.0 … 0.0 0.0…\n "metNames" => Any["D-Glucose"; "L-Glutamine"; … ; "Glyceraldehyde 3-phosph…\n "lb" => [0.0; 0.0; … ; -1000.0; 0.0]\n "metCharge" => [0.0; 0.0; … ; -2.0; -2.0]\n "ub" => [1000.0; 1000.0; … ; 1000.0; 1000.0]\n "rxnNames" => Any["Phosphofructokinase"; "Pyruvate formate lyase"; … ; "O2…\n "rxns" => Any["PFK"; "PFL"; … ; "O2t"; "PDH"]\n "genes" => Any["b1241"; "b0351"; … ; "b2935"; "b3919"]
%% Cell type:markdown id: tags:
## Using the generic interface to access model details
%% Cell type:markdown id: tags:
To prevent the complexities of object representation, `COBREXA.jl` uses a set
of generic interface functions that extract various important information
from all supported model types. This approach ensures that the analysis
functions can work on any data.
%% Cell type:markdown id: tags:
For example, you can check the reactions and metabolites contained in SBML
and JSON models using the same accessor:
%% Cell type:code id: tags:
``` julia
reactions(json_model)
```
%% Output
95-element Vector{String}:\n "PFK"\n "PFL"\n "PGI"\n "PGK"\n "PGL"\n "ACALD"\n "AKGt2r"\n "PGM"\n "PIt2r"\n "ALCD2x"\n\n "MALt2_2"\n "MDH"\n "ME1"\n "ME2"\n "NADH16"\n "NADTRHD"\n "NH4t"\n "O2t"\n "PDH"
%% Cell type:code id: tags:
``` julia
reactions(sbml_model)
```
%% Output
95-element Vector{String}:\n "R_EX_fum_e"\n "R_ACONTb"\n "R_TPI"\n "R_SUCOAS"\n "R_GLNS"\n "R_EX_pi_e"\n "R_PPC"\n "R_O2t"\n "R_G6PDH2r"\n "R_TALA"\n\n "R_THD2"\n "R_EX_h2o_e"\n "R_GLUSy"\n "R_ME1"\n "R_GLUN"\n "R_EX_o2_e"\n "R_FRUpts2"\n "R_ALCD2x"\n "R_PIt2r"
%% Cell type:code id: tags:
``` julia
issetequal(reactions(json_model), reactions(mat_model)) # do models contain the same reactions?
```
%% Output
true
%% Cell type:markdown id: tags:
All accessors are defined in a single file in COBREXA source code; you may
therefore get a list of all accessors as follows:
%% Cell type:code id: tags:
``` julia
using InteractiveUtils
for method in filter(
x -> endswith(string(x.file), "MetabolicModel.jl"),
InteractiveUtils.methodswith(MetabolicModel, COBREXA),
)
println(method.name)
end
```
%% Output
balance
bounds
coupling
coupling_bounds
gene_annotations
gene_notes
genes
metabolite_annotations
metabolite_charge
metabolite_compartment
metabolite_formula
metabolite_notes
metabolites
n_coupling_constraints
n_genes
n_metabolites
n_reactions
objective
reaction_annotations
reaction_gene_association
reaction_notes
reaction_subsystem
reactions
stoichiometry
%% Cell type:markdown id: tags:
## Converting between model types
%% Cell type:markdown id: tags:
It is possible to convert model types to-and-fro. To do this, use the
`convert` function, which is overloaded from Julia's `Base`.
%% Cell type:code id: tags:
``` julia
m = convert(MATModel, json_model)
```
%% Output
Metabolic model of type MATModel\n\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢄⠀⠀⠀⠀⠀⠀⠀⠈⠶⠴⡆⠀⠀⠀⠀⠀⠀\n⡀⢐⣀⢀⡀⡒⢒⣐⠀⣂⣂⠀⣂⣂⢂⠀⢀⠀⠀⠀⠀⠀⢀⠄⠀⠀⠀⢂⠀⢂⣀⣐⡒⡀⠆⢙⣀⠀⡀⠀\n⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠈⢑⣀⣀⠀⠀\n⠀⠀⠃⠀⠃⠀⠀⠀⠘⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⡜⠀⡄⣤⢠⠘⠙⢣⡇⠘\n⠀⠐⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠐⠁⠉⠀⠀⠀⠀⠀⠘⠄\n⠀⢐⠀⠂⠀⠄⠠⠠⠀⠠⠆⠀⠄⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠠⠀⠠⠀⠀⢀⠀⠀⠠⠀⠀⠁\n⢀⠐⠀⠨⢀⠁⠈⣈⠀⢁⣁⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠁⢀⠀⢊⠉⠀⠀⠀⢀⠀⣀⠀⢀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡈⠀⡀⠆⠀⠆⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀\n⠀⠀⠂⠀⡂⠀⠀⠁⠀⠀⠀⠈⠁⠀⠀⠀⠄⠄⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀\n⠈⠀⠁⠀⠀⢀⡀⠀⠠⠁⠁⠀⠑⠀⠐⠲⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠂⠀⠀⠀⠀⠀⠀⠊⠀⠀⠀⠈\n⠄⠠⢠⠀⠰⠀⠠⠀⠤⠦⠄⠈⠀⠀⠀⠠⠀⠁⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⠄⠄⠠⠀⠀⠀⠀⠀\n⠂⠐⠀⠀⠐⡠⢐⠘⢃⠒⠂⡀⠄⠀⠀⠐⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠀⢀⢀⠀⠀⣀⠀⢀\n⠈⠀⠁⠀⡀⠀⠀⠀⠈⠁⠅⠀⠁⠀⢀⠈⠄⠔⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠈\n⠣⠁⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠈⠀⠁⠁⠀⠈⡀⠀⠀⠀⠀⠀⠐⢣⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠂⠄⠤⠀⠀⠈⠂⠀⠀⠀⠀⠠⠀⠊⠒⣠⠀⠀⠀⠀⠀⠀⠀⠀⠀\nNumber of reactions: 95\nNumber of metabolites: 72\n
Metabolic model of type MATModel\n\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢄⠀⠀⠀⠀⠀⠀⠀⠈⠶⠴⡆⠀⠀⠀⠀⠀⠀\n⡀⢐⣀⢀⡀⡒⢒⣐⠀⣂⣂⠀⣂⣂⢂⠀⢀⠀⠀⠀⠀⠀⢀⠄⠀⠀⠀⢂⠀⢂⣀⣐⡒⡀⠆⢙⣀⠀⡀⠀\n⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠈⢑⣀⣀⠀⠀\n⠀⠀⠃⠀⠃⠀⠀⠀⠘⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⡜⠀⡄⣤⢠⠘⠙⢣⡇⠘\n⠀⠐⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠐⠁⠉⠀⠀⠀⠀⠀⠘⠄\n⠀⢐⠀⠂⠀⠄⠠⠠⠀⠠⠆⠀⠄⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠠⠀⠠⠀⠀⢀⠀⠀⠠⠀⠀⠁\n⢀⠐⠀⠨⢀⠁⠈⣈⠀⢁⣁⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠁⢀⠀⢊⠉⠀⠀⠀⢀⠀⣀⠀⢀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡈⠀⡀⠆⠀⠆⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀\n⠀⠀⠂⠀⡂⠀⠀⠁⠀⠀⠀⠈⠁⠀⠀⠀⠄⠄⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀\n⠈⠀⠁⠀⠀⢀⡀⠀⠠⠁⠁⠀⠑⠀⠐⠲⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠂⠀⠀⠀⠀⠀⠀⠊⠀⠀⠀⠈\n⠄⠠⢠⠀⠰⠀⠠⠀⠤⠦⠄⠈⠀⠀⠀⠠⠀⠁⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⠄⠄⠠⠀⠀⠀⠀⠀\n⠂⠐⠀⠀⠐⡠⢐⠘⢃⠒⠂⡀⠄⠀⠀⠐⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠀⢀⢀⠀⠀⣀⠀⢀\n⠈⠀⠁⠀⡀⠀⠀⠀⠈⠁⠅⠀⠁⠀⢀⠈⠄⠔⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠈\n⠣⠁⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠈⠀⠁⠁⠀⠈⡀⠀⠀⠀⠀⠀⠐⢣⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠂⠄⠤⠀⠀⠈⠂⠀⠀⠀⠀⠠⠀⠊⠒⣠⠀⠀⠀⠀⠀⠀⠀⠀⠀\nNumber of reactions: 95\nNumber of metabolites: 72\n
%% Cell type:markdown id: tags:
`m` will now contain the MATLAB-style matrix representation of the model:
%% Cell type:code id: tags:
``` julia
Matrix(m.mat["S"])
```
%% Output
72×95 Matrix{Float64}:\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 1.0 0.0 0.0 0.0 1.0 1.0 1.0 0.0 0.0 -4.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 -1.0 0.0 0.0 3.0 0.0 0.0 0.0 0.0\n ⋮ ⋮ ⋱ ⋮ \n -1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 1.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
%% Cell type:markdown id: tags:
The loading and conversion can be combined using a shortcut:
%% Cell type:code id: tags:
``` julia
m = load_model(MATModel, "e_coli_core.json")
```
%% Output
Metabolic model of type MATModel\n\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢄⠀⠀⠀⠀⠀⠀⠀⠈⠶⠴⡆⠀⠀⠀⠀⠀⠀\n⡀⢐⣀⢀⡀⡒⢒⣐⠀⣂⣂⠀⣂⣂⢂⠀⢀⠀⠀⠀⠀⠀⢀⠄⠀⠀⠀⢂⠀⢂⣀⣐⡒⡀⠆⢙⣀⠀⡀⠀\n⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠈⢑⣀⣀⠀⠀\n⠀⠀⠃⠀⠃⠀⠀⠀⠘⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⡜⠀⡄⣤⢠⠘⠙⢣⡇⠘\n⠀⠐⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠐⠁⠉⠀⠀⠀⠀⠀⠘⠄\n⠀⢐⠀⠂⠀⠄⠠⠠⠀⠠⠆⠀⠄⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠠⠀⠠⠀⠀⢀⠀⠀⠠⠀⠀⠁\n⢀⠐⠀⠨⢀⠁⠈⣈⠀⢁⣁⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠁⢀⠀⢊⠉⠀⠀⠀⢀⠀⣀⠀⢀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡈⠀⡀⠆⠀⠆⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀\n⠀⠀⠂⠀⡂⠀⠀⠁⠀⠀⠀⠈⠁⠀⠀⠀⠄⠄⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀\n⠈⠀⠁⠀⠀⢀⡀⠀⠠⠁⠁⠀⠑⠀⠐⠲⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠂⠀⠀⠀⠀⠀⠀⠊⠀⠀⠀⠈\n⠄⠠⢠⠀⠰⠀⠠⠀⠤⠦⠄⠈⠀⠀⠀⠠⠀⠁⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⠄⠄⠠⠀⠀⠀⠀⠀\n⠂⠐⠀⠀⠐⡠⢐⠘⢃⠒⠂⡀⠄⠀⠀⠐⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠀⢀⢀⠀⠀⣀⠀⢀\n⠈⠀⠁⠀⡀⠀⠀⠀⠈⠁⠅⠀⠁⠀⢀⠈⠄⠔⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠈\n⠣⠁⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠈⠀⠁⠁⠀⠈⡀⠀⠀⠀⠀⠀⠐⢣⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠂⠄⠤⠀⠀⠈⠂⠀⠀⠀⠀⠠⠀⠊⠒⣠⠀⠀⠀⠀⠀⠀⠀⠀⠀\nNumber of reactions: 95\nNumber of metabolites: 72\n
Metabolic model of type MATModel\n\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢄⠀⠀⠀⠀⠀⠀⠀⠈⠶⠴⡆⠀⠀⠀⠀⠀⠀\n⡀⢐⣀⢀⡀⡒⢒⣐⠀⣂⣂⠀⣂⣂⢂⠀⢀⠀⠀⠀⠀⠀⢀⠄⠀⠀⠀⢂⠀⢂⣀⣐⡒⡀⠆⢙⣀⠀⡀⠀\n⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠈⢑⣀⣀⠀⠀\n⠀⠀⠃⠀⠃⠀⠀⠀⠘⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⡜⠀⡄⣤⢠⠘⠙⢣⡇⠘\n⠀⠐⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠐⠁⠉⠀⠀⠀⠀⠀⠘⠄\n⠀⢐⠀⠂⠀⠄⠠⠠⠀⠠⠆⠀⠄⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠠⠀⠠⠀⠀⢀⠀⠀⠠⠀⠀⠁\n⢀⠐⠀⠨⢀⠁⠈⣈⠀⢁⣁⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠁⢀⠀⢊⠉⠀⠀⠀⢀⠀⣀⠀⢀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡈⠀⡀⠆⠀⠆⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀\n⠀⠀⠂⠀⡂⠀⠀⠁⠀⠀⠀⠈⠁⠀⠀⠀⠄⠄⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀\n⠈⠀⠁⠀⠀⢀⡀⠀⠠⠁⠁⠀⠑⠀⠐⠲⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠂⠀⠀⠀⠀⠀⠀⠊⠀⠀⠀⠈\n⠄⠠⢠⠀⠰⠀⠠⠀⠤⠦⠄⠈⠀⠀⠀⠠⠀⠁⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⠄⠄⠠⠀⠀⠀⠀⠀\n⠂⠐⠀⠀⠐⡠⢐⠘⢃⠒⠂⡀⠄⠀⠀⠐⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠀⢀⢀⠀⠀⣀⠀⢀\n⠈⠀⠁⠀⡀⠀⠀⠀⠈⠁⠅⠀⠁⠀⢀⠈⠄⠔⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠈\n⠣⠁⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠈⠀⠁⠁⠀⠈⡀⠀⠀⠀⠀⠀⠐⢣⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠂⠄⠤⠀⠀⠈⠂⠀⠀⠀⠀⠠⠀⠊⠒⣠⠀⠀⠀⠀⠀⠀⠀⠀⠀\nNumber of reactions: 95\nNumber of metabolites: 72\n
%% Cell type:markdown id: tags:
## Saving and exporting models
%% Cell type:markdown id: tags:
`COBREXA.jl` supports exporting the models in JSON and MAT format, using `save_model`.
%% Cell type:code id: tags:
``` julia
save_model(m, "converted_model.json")
save_model(m, "converted_model.mat")
```
%% Cell type:markdown id: tags:
If you need a non-standard suffix, use the type-specific saving functions:
%% Cell type:code id: tags:
``` julia
save_json_model(m, "file.without.a.good.suffix")
save_mat_model(m, "another.file.matlab")
```
%% Cell type:markdown id: tags:
If you are saving the models only for future processing in Julia environment,
it is often wasteful to encode the models to external formats and decode them
back. Instead, you can use the "native" Julia data format, accessible with
package `Serialization`.
This way, you can use `serialize` to save even the `StandardModel`
that has no file format associated:
%% Cell type:code id: tags:
``` julia
using Serialization
sm = convert(StandardModel, m)
open(f -> serialize(f, sm), "myModel.stdmodel", "w")
```
%% Cell type:markdown id: tags:
The models can then be loaded back using `deserialize`:
%% Cell type:code id: tags:
``` julia
sm2 = deserialize("myModel.stdmodel")
issetequal(metabolites(sm), metabolites(sm2))
```
%% Output
true
%% Cell type:markdown id: tags:
This form of loading operation is usually pretty quick:
%% Cell type:code id: tags:
``` julia
t = @elapsed deserialize("myModel.stdmodel")
@info "Deserialization took $t seconds"
```
%% Output
┌ Info: Deserialization took 0.001981373 seconds
┌ Info: Deserialization took 0.002505835 seconds
└ @ Main.##258 string:2
%% Cell type:markdown id: tags:
Notably, large and complicated models with thousands of reactions and
annotations can take seconds to decode properly. Serialization allows you to
almost completely remove this overhead, and scales well to tens of millions
of reactions.
%% Cell type:markdown id: tags:
---
*This notebook was generated using [Literate.jl](https://github.com/fredrikekre/Literate.jl).*
......
%% Cell type:markdown id: tags:
# Finding balance and variability of constraint-based models
%% Cell type:markdown id: tags:
Here we use `flux_balance_analysis`,
`flux_variability_analysis`, and
`parsimonious_flux_balance_analysis` of `COBREXA.jl` functions to
analyze a toy model of *E. coli*.
%% Cell type:markdown id: tags:
If it is not already present, download the model.
%% Cell type:code id: tags:
``` julia
!isfile("e_coli_core.xml") &&
download("http://bigg.ucsd.edu/static/models/e_coli_core.xml", "e_coli_core.xml")
using COBREXA
model = load_model("e_coli_core.xml")
```
%% Output
Metabolic model of type SBMLModel\n\n⠀⠈⢀⠀⡀⠀⠀⠀⠀⡠⠂⠀⠀⠀⠀⠈⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⢀⠐⡀⠀⠀⠀⠀⠄\n⠀⠐⠀⠀⠀⠀⠀⠀⡠⠂⠀⠀⠀⠀⢰⠱⣀⠀⡄⢐⠀⠀⢀⠀⠀⠀⡂⠄⠔⠁⠰⠀⠠⠀⣆⠀⠄⢠⢀⠄\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠠⠀⠀⠐⠀⠀⠀⠀⠀⠀⢀⠀⠀⠐⠀⠂⠀⠀⠀⠄⠀⠐⠀⢁⠄⠀⠀⠀⠀⠀\n⠀⢀⠀⠐⡈⠀⡀⠀⠂⠀⣀⠀⠑⡈⢀⠀⠀⠀⠀⠀⡀⡠⠀⡀⠰⠁⠈⠂⠁⠀⠠⠀⠀⠂⡂⠀⠂⠂⠀⠀\n⠠⠀⠐⠀⠂⠀⠀⢀⠀⠀⠀⠀⠊⠀⡐⠊⠐⠀⠀⠀⠀⠀⠐⠀⠂⠀⠀⠐⠀⠀⠀⠀⠀⠁⠃⠠⠀⠁⠐⠀\n⠀⠠⠀⡀⠄⠀⠀⠂⠀⠀⠀⠠⠀⠠⠀⠀⠄⠀⠨⠀⠀⠀⠐⠀⠀⠄⢀⠀⠀⠀⠈⠀⠀⠀⠁⠄⠀⠀⠀⠀\n⠀⢐⠐⠀⠄⠀⡂⠀⢐⠀⠀⠀⠀⠂⢀⢀⠐⠂⡀⠈⠀⠀⠀⠂⠀⠈⠀⡀⡐⠀⢄⠀⢀⠀⡆⠀⡀⣀⡀⡐\n⠀⠈⠀⠀⠀⠀⠀⠐⢂⠀⢀⠀⠈⠀⠀⠀⠀⠀⠠⠀⠀⠠⠀⠀⠀⠈⠂⠀⠀⠀⠄⠐⠐⠀⠁⠀⠀⠑⠁⠀\n⠂⠠⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠠⠈⠀⠀⠀⠀⠀⠁⠀⠀⠠⠐⠀⠁⠈⠀⠁⢀⠀⠀⠀⠀⠀⠀⠀⠀⠌⠀\n⠀⠀⠂⢨⠀⡀⠀⠐⠁⠐⠀⠐⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠢⠒⠈⠐⠐⠁⠂⠀⠀⠀⠄⠓⠕⠂⠃⠁⠀⠐\n⠠⠀⠨⠀⠁⠤⠄⠀⠁⡄⠀⠂⠠⠄⢈⠌⠠⠄⠀⢀⠀⠀⠀⠄⠨⠀⡤⠀⢀⠀⢀⠠⠀⠁⡔⠨⠀⠈⠄⠀\n⠀⢀⢀⣀⠀⡠⡒⢀⢀⣀⠀⢀⣀⡀⢀⠀⢀⠀⡀⠀⡀⠀⠈⣀⠀⢀⣀⠀⡀⠀⢀⠁⢀⣀⣀⡀⡠⡀⡀⣀\n⠀⠄⠀⠀⠀⠀⠀⠀⠀⠂⠁⠀⠀⠀⠀⠀⠀⣠⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀\n⢀⠂⠀⠀⠂⠀⠈⠀⠐⠀⠀⠀⠁⠀⠀⠀⡀⠔⠑⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠢⠀⠀⡀⠂⠈⠀⠀⠀⠄\n⠀⠐⠀⠀⡂⠀⠂⠀⠀⠀⠒⠐⠄⠂⠐⠀⠘⡀⠀⠠⡂⠃⠀⠂⠄⠂⠀⠀⠀⠀⡀⠀⡀⠀⡂⠂⠀⠀⢀⠀\nNumber of reactions: 95\nNumber of metabolites: 72\n
Metabolic model of type SBMLModel\n\n⠀⠈⢀⠀⡀⠀⠀⠀⠀⡠⠂⠀⠀⠀⠀⠈⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⢀⠐⡀⠀⠀⠀⠀⠄\n⠀⠐⠀⠀⠀⠀⠀⠀⡠⠂⠀⠀⠀⠀⢰⠱⣀⠀⡄⢐⠀⠀⢀⠀⠀⠀⡂⠄⠔⠁⠰⠀⠠⠀⣆⠀⠄⢠⢀⠄\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠠⠀⠀⠐⠀⠀⠀⠀⠀⠀⢀⠀⠀⠐⠀⠂⠀⠀⠀⠄⠀⠐⠀⢁⠄⠀⠀⠀⠀⠀\n⠀⢀⠀⠐⡈⠀⡀⠀⠂⠀⣀⠀⠑⡈⢀⠀⠀⠀⠀⠀⡀⡠⠀⡀⠰⠁⠈⠂⠁⠀⠠⠀⠀⠂⡂⠀⠂⠂⠀⠀\n⠠⠀⠐⠀⠂⠀⠀⢀⠀⠀⠀⠀⠊⠀⡐⠊⠐⠀⠀⠀⠀⠀⠐⠀⠂⠀⠀⠐⠀⠀⠀⠀⠀⠁⠃⠠⠀⠁⠐⠀\n⠀⠠⠀⡀⠄⠀⠀⠂⠀⠀⠀⠠⠀⠠⠀⠀⠄⠀⠨⠀⠀⠀⠐⠀⠀⠄⢀⠀⠀⠀⠈⠀⠀⠀⠁⠄⠀⠀⠀⠀\n⠀⢐⠐⠀⠄⠀⡂⠀⢐⠀⠀⠀⠀⠂⢀⢀⠐⠂⡀⠈⠀⠀⠀⠂⠀⠈⠀⡀⡐⠀⢄⠀⢀⠀⡆⠀⡀⣀⡀⡐\n⠀⠈⠀⠀⠀⠀⠀⠐⢂⠀⢀⠀⠈⠀⠀⠀⠀⠀⠠⠀⠀⠠⠀⠀⠀⠈⠂⠀⠀⠀⠄⠐⠐⠀⠁⠀⠀⠑⠁⠀\n⠂⠠⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠠⠈⠀⠀⠀⠀⠀⠁⠀⠀⠠⠐⠀⠁⠈⠀⠁⢀⠀⠀⠀⠀⠀⠀⠀⠀⠌⠀\n⠀⠀⠂⢨⠀⡀⠀⠐⠁⠐⠀⠐⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠢⠒⠈⠐⠐⠁⠂⠀⠀⠀⠄⠓⠕⠂⠃⠁⠀⠐\n⠠⠀⠨⠀⠁⠤⠄⠀⠁⡄⠀⠂⠠⠄⢈⠌⠠⠄⠀⢀⠀⠀⠀⠄⠨⠀⡤⠀⢀⠀⢀⠠⠀⠁⡔⠨⠀⠈⠄⠀\n⠀⢀⢀⣀⠀⡠⡒⢀⢀⣀⠀⢀⣀⡀⢀⠀⢀⠀⡀⠀⡀⠀⠈⣀⠀⢀⣀⠀⡀⠀⢀⠁⢀⣀⣀⡀⡠⡀⡀⣀\n⠀⠄⠀⠀⠀⠀⠀⠀⠀⠂⠁⠀⠀⠀⠀⠀⠀⣠⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀\n⢀⠂⠀⠀⠂⠀⠈⠀⠐⠀⠀⠀⠁⠀⠀⠀⡀⠔⠑⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠢⠀⠀⡀⠂⠈⠀⠀⠀⠄\n⠀⠐⠀⠀⡂⠀⠂⠀⠀⠀⠒⠐⠄⠂⠐⠀⠘⡀⠀⠠⡂⠃⠀⠂⠄⠂⠀⠀⠀⠀⡀⠀⡀⠀⡂⠂⠀⠀⢀⠀\nNumber of reactions: 95\nNumber of metabolites: 72\n
%% Cell type:markdown id: tags:
## Optimization solvers in `COBREXA`
To actually perform any optimization based analysis we need to load an
optimizer. Any [`JuMP.jl`-supported
optimizers](https://jump.dev/JuMP.jl/stable/installation/#Supported-solvers)
will work. Here, we will use [`Tulip.jl`](https://github.com/ds4dm/Tulip.jl)
to optimize linear programs and
[`OSQP.jl`](https://osqp.org/docs/get_started/julia.html) to optimize quadratic
programs.
%% Cell type:code id: tags:
``` julia
import Pkg
Pkg.add("Tulip")
Pkg.add("OSQP")
using Tulip
using OSQP
```
%% Output
Updating registry at `~/.julia/registries/General`
Resolving package versions...
No Changes to `/builds/lcsb-biocore/COBREXA.jl/docs/Project.toml`
No Changes to `/builds/lcsb-biocore/COBREXA.jl/docs/Manifest.toml`
Resolving package versions...
No Changes to `/builds/lcsb-biocore/COBREXA.jl/docs/Project.toml`
No Changes to `/builds/lcsb-biocore/COBREXA.jl/docs/Manifest.toml`
%% Cell type:markdown id: tags:
## Flux balance analysis (FBA)
Most analysis functions come in several variants that produce different types
of output. All of them usually require a model and `JuMP.jl`-compatible
optimizer to work in the model.
In the case of FBA, you may choose from these variants (here using the
`Tulip` optimizer):
%% Cell type:code id: tags:
``` julia
vec_soln = flux_balance_analysis_vec(model, Tulip.Optimizer)
```
%% Output
95-element Vector{Float64}:\n -0.0\n 6.00724956649032\n 7.477381918907127\n -5.064375360152338\n 0.2234617471432185\n -3.214895030387032\n 2.504309432010867\n 21.799492758475754\n 4.959985078874371\n 1.496983802869297\n\n 3.375438217960911e-7\n 29.175827202685298\n 9.054357964341115e-9\n 4.817965631705414e-8\n 9.959461594581987e-9\n -21.799492758475754\n -0.0\n -1.4340676616267298e-9\n 3.214895030387032
%% Cell type:code id: tags:
``` julia
dict_soln = flux_balance_analysis_dict(model, Tulip.Optimizer)
```
%% Output
Dict{String, Float64} with 95 entries:\n "R_EX_fum_e" => -0.0\n "R_ACONTb" => 6.00725\n "R_TPI" => 7.47738\n "R_SUCOAS" => -5.06438\n "R_GLNS" => 0.223462\n "R_EX_pi_e" => -3.2149\n "R_PPC" => 2.50431\n "R_O2t" => 21.7995\n "R_G6PDH2r" => 4.95999\n "R_TALA" => 1.49698\n "R_PPCK" => 5.88317e-8\n "R_EX_lac__D_e" => 2.39394e-9\n "R_PGL" => 4.95999\n "R_H2Ot" => -29.1758\n "R_GLNabc" => -0.0\n "R_EX_co2_e" => 22.8098\n "R_EX_gln__L_e" => -0.0\n "R_EX_nh4_e" => -4.76532\n "R_MALt2_2" => -0.0\n ⋮ => ⋮
%% Cell type:markdown id: tags:
## Modifications
%% Cell type:markdown id: tags:
Often it is desirable to add a slight modififaction to the problem before
performing analysis, to see e.g. differences of the model behavior caused by
the change introduced.
`COBREXA.jl` supports several modifications by default, which include
changing objective sense, optimizer attributes, flux constraints,
optimization objective, reaction and gene knockouts, and others.
%% Cell type:code id: tags:
``` julia
dict_soln = flux_balance_analysis_dict(
model,
OSQP.Optimizer;
modifications = [ # modifications are applied in order
# this changes the objective to maximize the biomass production
change_objective("R_BIOMASS_Ecoli_core_w_GAM"),
# this fixes a specific rate of the glucose exchange
change_constraint("R_EX_glc__D_e", -12, -12),
# this knocks out two genes, i.e. constrains their associated reactions to zero.
knockout(["b0978", "b0734"]), ## the gene IDs are cytochrome oxidase (CYTBD)
# ignore the optimizer specified above and change it to Tulip
change_optimizer(Tulip.Optimizer),
# set a custom attribute of the Tulip optimizer (see Tulip docs for more possibilities)
change_optimizer_attribute("IPM_IterationsLimit", 110),
# explicitly tell the optimizer to maximize the new objective
change_sense(MAX_SENSE),
],
)
```
%% Output
Dict{String, Float64} with 95 entries:\n "R_EX_fum_e" => -0.0\n "R_ACONTb" => 7.03277\n "R_TPI" => 8.90908\n "R_SUCOAS" => -5.8921\n "R_GLNS" => 0.270339\n "R_EX_pi_e" => -3.88931\n "R_PPC" => 3.02966\n "R_O2t" => 25.7859\n "R_G6PDH2r" => 6.11782\n "R_TALA" => 1.85013\n "R_PPCK" => 5.26409e-10\n "R_EX_lac__D_e" => 4.37341e-12\n "R_PGL" => 6.11782\n "R_H2Ot" => -34.7096\n "R_GLNabc" => -0.0\n "R_EX_co2_e" => 27.0082\n "R_EX_gln__L_e" => -0.0\n "R_EX_nh4_e" => -5.76498\n "R_MALt2_2" => -0.0\n ⋮ => ⋮
%% Cell type:markdown id: tags:
## Flux variability analysis (FVA)
%% Cell type:markdown id: tags:
The default FVA in `flux_variability_analysis` returns maximized and
minimized reaction fluxes in a matrix. Here we use the dictionary variant in
flux_variability_analysis_dict, to show how to easily access specific fluxes
from its results.
%% Cell type:code id: tags:
``` julia
fva_mins, fva_maxs = flux_variability_analysis_dict(
model,
Tulip.Optimizer;
bounds = objective_bounds(0.99), # the objective function is allowed to vary by ~1% from the FBA optimum
modifications = [
change_optimizer_attribute("IPM_IterationsLimit", 500),
change_constraint("R_EX_glc__D_e", -10, -10),
change_constraint("R_EX_o2_e", 0.0, 0.0),
],
)
```
%% Output
(Dict("R_EX_fum_e" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 8.387567703061316, "R_TPI" => 7.532255418870419, "R_SUCOAS" => -2.1456715700928, "R_GLNS" => 11.72801152935013, "R_EX_pi_e" => -0.781841023618242, "R_PPC" => 12.709428540552382, "R_O2t" => 30.207306741855934, "R_G6PDH2r" => 6.3963713000040885, "R_TALA" => 2.094101813498349…), "R_ACONTb" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 0.2260795234341539, "R_TPI" => 0.27629819544371975, "R_SUCOAS" => -2.8375942206305713e-12, "R_GLNS" => 9.663346629147215, "R_EX_pi_e" => -0.7708580431967099, "R_PPC" => 13.616949989618535, "R_O2t" => 30.324546231187313, "R_G6PDH2r" => 28.16720077460885, "R_TALA" => 9.351579088425249…), "R_TPI" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 0.22607952365224862, "R_TPI" => -7.023645995325829, "R_SUCOAS" => -5.989684359376451e-11, "R_GLNS" => 14.308313357789281, "R_EX_pi_e" => -0.7708580432585497, "R_PPC" => 18.802685220533647, "R_O2t" => 50.4222650020313, "R_G6PDH2r" => 50.44563081566434, "R_TALA" => 16.777722435440715…), "R_SUCOAS" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 17.041289795789567, "R_TPI" => 9.791564276526747, "R_SUCOAS" => -16.815210272246723, "R_GLNS" => 19.47631848364111, "R_EX_pi_e" => -0.770858043196644, "R_PPC" => 25.4355271739484, "R_O2t" => 48.49828617064436, "R_G6PDH2r" => 2.4419522059618934e-10, "R_TALA" => -0.03748783636298141…), "R_GLNS" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 8.061973806526826, "R_TPI" => 7.523620762504264, "R_SUCOAS" => -2.0664872403347907, "R_GLNS" => 0.0535809937339624, "R_EX_pi_e" => -0.7708580431966973, "R_PPC" => 14.947771300763096, "R_O2t" => 29.036876963512825, "R_G6PDH2r" => 6.399244385839639, "R_TALA" => 2.0955936255021808…), "R_EX_pi_e" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 8.388812649215613, "R_TPI" => 7.533309613876824, "R_SUCOAS" => -2.1466235942183447, "R_GLNS" => 11.688210901810553, "R_EX_pi_e" => -0.7865095839138668, "R_PPC" => 12.645801274331156, "R_O2t" => 30.188166942395195, "R_G6PDH2r" => 6.388553068133392, "R_TALA" => 2.09126869800525…), "R_PPC" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 9.14053048210921, "R_TPI" => 7.815024382280643, "R_SUCOAS" => -1.4014273460315068, "R_GLNS" => 15.195578469146987, "R_EX_pi_e" => -0.7818087293451119, "R_PPC" => 8.00091769193397e-10, "R_O2t" => 31.204423146044512, "R_G6PDH2r" => 5.543458812160874, "R_TALA" => 1.809799221396707…), "R_O2t" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 0.23347557615742534, "R_TPI" => 9.783623631549453, "R_SUCOAS" => -0.001629549873797233, "R_GLNS" => 0.06270823060221115, "R_EX_pi_e" => -0.7716851675773635, "R_PPC" => 0.6737424037490961, "R_O2t" => 2.0683004221209886e-10, "R_G6PDH2r" => 0.01992471198008615, "R_TALA" => -0.03088648992748138…), "R_G6PDH2r" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 10.251784177340285, "R_TPI" => 9.659615645294526, "R_SUCOAS" => -3.404492835948122, "R_GLNS" => 11.754546921095894, "R_EX_pi_e" => -0.7818183172437788, "R_PPC" => 12.84942993145147, "R_O2t" => 29.407516338347314, "R_G6PDH2r" => 1.2044971310956056e-13, "R_TALA" => -0.038020848928905275…), "R_TALA" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 10.35557912119309, "R_TPI" => 9.65911239712571, "R_SUCOAS" => -4.306503172360712, "R_GLNS" => 11.818606548613598, "R_EX_pi_e" => -0.786509583913964, "R_PPC" => 13.469379343614088, "R_O2t" => 29.691047792422857, "R_G6PDH2r" => 4.749673144081168e-13, "R_TALA" => -0.03824899137239327…)…), Dict("R_EX_fum_e" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 8.387567703061316, "R_TPI" => 7.532255418870419, "R_SUCOAS" => -2.1456715700928, "R_GLNS" => 11.72801152935013, "R_EX_pi_e" => -0.781841023618242, "R_PPC" => 12.709428540552382, "R_O2t" => 30.207306741855934, "R_G6PDH2r" => 6.3963713000040885, "R_TALA" => 2.094101813498349…), "R_ACONTb" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 17.041289795007938, "R_TPI" => 9.791564276433519, "R_SUCOAS" => -5.688082121108331, "R_GLNS" => 19.780355774841556, "R_EX_pi_e" => -0.7708580433275182, "R_PPC" => 16.936579264014647, "R_O2t" => 48.30857236846392, "R_G6PDH2r" => 3.833409490124206e-10, "R_TALA" => -0.03748783632297794…), "R_TPI" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 10.554697110858058, "R_TPI" => 9.79156427517227, "R_SUCOAS" => -4.36079829072734, "R_GLNS" => 12.195418956692743, "R_EX_pi_e" => -0.7708580443890825, "R_PPC" => 13.848078463930056, "R_O2t" => 30.26371446753615, "R_G6PDH2r" => 1.996871968753506e-9, "R_TALA" => -0.03748783583683612…), "R_SUCOAS" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 8.057908581115928, "R_TPI" => 7.332654280738366, "R_SUCOAS" => -1.2187147897617456e-10, "R_GLNS" => 11.572637789614943, "R_EX_pi_e" => -0.781840987603548, "R_PPC" => 11.178325328275292, "R_O2t" => 29.841134825372734, "R_G6PDH2r" => 6.989508449861914, "R_TALA" => 2.2918141985356772…), "R_GLNS" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 17.04128979542336, "R_TPI" => 9.791564276164623, "R_SUCOAS" => -16.769668728120884, "R_GLNS" => 127.20986479797551, "R_EX_pi_e" => -0.7708580431963201, "R_PPC" => 0.55493438797057, "R_O2t" => 50.84039512729372, "R_G6PDH2r" => 1.3335673812250126e-9, "R_TALA" => -0.037487835999915696…), "R_EX_pi_e" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 8.477625183335908, "R_TPI" => 7.508226727537374, "R_SUCOAS" => -2.1740673997402995, "R_GLNS" => 11.955467607327458, "R_EX_pi_e" => -0.7708580431986837, "R_PPC" => 12.809131647158342, "R_O2t" => 30.488106628893533, "R_G6PDH2r" => 6.466262473804337, "R_TALA" => 2.117932988156977…), "R_PPC" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 17.041289790111023, "R_TPI" => 9.791564273069904, "R_SUCOAS" => -16.815210261955922, "R_GLNS" => 0.05358099899733933, "R_EX_pi_e" => -0.7708580432275103, "R_PPC" => 127.7567596864386, "R_O2t" => 50.84039511913468, "R_G6PDH2r" => 1.0228880908192078e-8, "R_TALA" => -0.03748783303680075…), "R_O2t" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 13.488565849967824, "R_TPI" => 6.238840330806542, "R_SUCOAS" => -3.772617647963326, "R_GLNS" => 20.283358516037556, "R_EX_pi_e" => -0.7708580432002806, "R_PPC" => 17.883676633529095, "R_O2t" => 50.84039512688941, "R_G6PDH2r" => 10.658171837390052, "R_TALA" => 3.515236109352078…), "R_G6PDH2r" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 0.2260795280734479, "R_TPI" => -7.023645980797208, "R_SUCOAS" => -1.2263907749526956e-9, "R_GLNS" => 14.973603529019034, "R_EX_pi_e" => -0.7708580432619148, "R_PPC" => 18.825207611043435, "R_O2t" => 50.530923759776464, "R_G6PDH2r" => 50.445630770442904, "R_TALA" => 16.7777224203659…), "R_TALA" => Dict("R_EX_fum_e" => -0.0, "R_ACONTb" => 0.22607952440356835, "R_TPI" => -7.023645988176, "R_SUCOAS" => -2.8144007763514797e-10, "R_GLNS" => 14.338969784762646, "R_EX_pi_e" => -0.7708580432375506, "R_PPC" => 18.868338300612862, "R_O2t" => 50.4236100549293, "R_G6PDH2r" => 50.445630793530995, "R_TALA" => 16.777722428063736…)…))
%% Cell type:code id: tags:
``` julia
fva_maxs["R_EX_ac_e"]["R_EX_ac_e"] # get the maximal acetate exchange flux
```
%% Output
16.815210271774536
%% Cell type:markdown id: tags:
## Parsimonious flux balance analysis (pFBA)
%% Cell type:markdown id: tags:
Parsimonious flux balance analysis (here in
`parsimonious_flux_balance_analysis` finds a unique flux solution
that minimizes the squared sum of fluxes of the system subject, while
maintaining the same objective value as the flux balance analysis solution.
Since we are optimizing a quadratic objective, we also need to switch to a
quadratic optimizer. In this case, OSQP will work. We demonstrate it on the
dictionary-returning variant of pFBA,
`parsimonious_flux_balance_analysis_dict`:
%% Cell type:code id: tags:
``` julia
dict_soln = parsimonious_flux_balance_analysis_dict(
model,
OSQP.Optimizer;
modifications = [
change_optimizer_attribute("verbose", false), # silence the optimizer (OSQP is very verbose by default)
change_constraint("R_EX_glc__D_e", -12, -12),
],
)
```
%% Output
Dict{String, Float64} with 95 entries:\n "R_EX_fum_e" => -0.0054306\n "R_ACONTb" => 6.51108\n "R_TPI" => 8.90211\n "R_SUCOAS" => -5.41568\n "R_GLNS" => 0.250914\n "R_EX_pi_e" => -3.85013\n "R_PPC" => 2.94799\n "R_O2t" => 25.1823\n "R_G6PDH2r" => 6.27109\n "R_TALA" => 1.90314\n "R_PPCK" => -0.00186526\n "R_EX_lac__D_e" => -0.00399055\n "R_PGL" => 6.27111\n "R_H2Ot" => -33.9472\n "R_GLNabc" => 0.0126618\n "R_EX_co2_e" => 26.4219\n "R_EX_gln__L_e" => -0.0126492\n "R_EX_nh4_e" => -5.67116\n "R_MALt2_2" => 0.00493596\n ⋮ => ⋮
%% Cell type:markdown id: tags:
The function also has the expectable second variant that returns a vector of
solutions, in `parsimonious_flux_balance_analysis_vec`. Here, we
utilize it to show how to use different optimizers for finding the optimum
and for solving the quadratic problem. That may be preferable if the
optimizer qualities differ for the differing tasks. pFBA allows you to
specify `qp_modifications` that are applied after the original optimum is
found, and before the quadratic part of the problem solving begins.
%% Cell type:code id: tags:
``` julia
vec_soln = parsimonious_flux_balance_analysis_vec(
model,
Tulip.Optimizer; # start with Tulip
modifications = [
change_constraint("R_EX_glc__D_e", -12, -12),
change_optimizer_attribute("IPM_IterationsLimit", 500), # we may change Tulip-specific attributes here
],
qp_modifications = [
change_optimizer(OSQP.Optimizer), # now switch to OSQP (Tulip wouldn't be able to finish the computation)
change_optimizer_attribute("verbose", false), # and silence it.
],
)
```
%% Output
95-element Vector{Float64}:\n -0.00645620622352188\n 6.851837981534216\n 8.913341572099457\n -5.74102223475315\n 0.2546019668801427\n -3.8888374186478805\n 2.977074571131644\n 25.64644396822028\n 6.197416083246767\n 1.8766996924783867\n\n -0.00010898686223948537\n 34.50239498696516\n -0.001894364829844857\n -0.0014869114445033595\n -0.0018422507357719023\n -25.646443859189773\n 0.01524881430898677\n 0.0052844123614167\n 3.8888374206512077
95-element Vector{Float64}:\n -0.006231402533094581\n 6.847122967587614\n 8.914435875871503\n -5.738183656745528\n 0.25363156710733\n -3.8887743417980833\n 2.977310372502161\n 25.64208341306474\n 6.1991009754149715\n 1.877264043236841\n\n -0.0002197051126034427\n 34.49592944330335\n -0.0020752886988600542\n -0.0014018715428246171\n -0.002009900868927077\n -25.642083259145206\n 0.0161569956400718\n 0.004729690379188246\n 3.8887743479784547
%% Cell type:markdown id: tags:
---
*This notebook was generated using [Literate.jl](https://github.com/fredrikekre/Literate.jl).*
......
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Finding balance and variability of constraint-based models · COBREXA.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img class="docs-light-only" src="../../assets/logo.svg" alt="COBREXA.jl logo"/><img class="docs-dark-only" src="../../assets/logo-dark.svg" alt="COBREXA.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">COBREXA.jl</span></div><form class="docs-search" action="../../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><a class="tocitem" href="../../tutorials/">Tutorials</a></li><li><a class="tocitem" href="../">Examples and notebooks</a></li><li><a class="tocitem" href="../../functions/">Function reference</a></li><li><a class="tocitem" href="../../howToContribute/">How to contribute</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Finding balance and variability of constraint-based models</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Finding balance and variability of constraint-based models</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/LCSB-BioCore/COBREXA.jl/blob/master/docs/src/notebooks-src/2_finding_balance.jl" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Finding-balance-and-variability-of-constraint-based-models"><a class="docs-heading-anchor" href="#Finding-balance-and-variability-of-constraint-based-models">Finding balance and variability of constraint-based models</a><a id="Finding-balance-and-variability-of-constraint-based-models-1"></a><a class="docs-heading-anchor-permalink" href="#Finding-balance-and-variability-of-constraint-based-models" title="Permalink"></a></h1><p><a href="https://mybinder.org/v2/gh/LCSB-BioCore/COBREXA.jl/gh-pages?filepath=stable/notebooks/2_finding_balance.ipynb"><img src="https://mybinder.org/badge_logo.svg" alt/></a> <a href="https://nbviewer.jupyter.org/github/LCSB-BioCore/COBREXA.jl/blob/gh-pages/stable/notebooks/2_finding_balance.ipynb"><img src="https://img.shields.io/badge/show-nbviewer-579ACA.svg" alt/></a></p><p>Here we use <a href="../../functions/#COBREXA.flux_balance_analysis-Union{Tuple{M}, Tuple{M, Any}} where M&lt;:MetabolicModel"><code>flux_balance_analysis</code></a>, <a href="../../functions/#COBREXA.flux_variability_analysis-Tuple{MetabolicModel, Any}"><code>flux_variability_analysis</code></a>, and <a href="../../functions/#COBREXA.parsimonious_flux_balance_analysis-Tuple{MetabolicModel, Any}"><code>parsimonious_flux_balance_analysis</code></a> of <code>COBREXA.jl</code> functions to analyze a toy model of <em>E. coli</em>.</p><p>If it is not already present, download the model.</p><pre><code class="language-julia">!isfile(&quot;e_coli_core.xml&quot;) &amp;&amp;
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Finding balance and variability of constraint-based models · COBREXA.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img class="docs-light-only" src="../../assets/logo.svg" alt="COBREXA.jl logo"/><img class="docs-dark-only" src="../../assets/logo-dark.svg" alt="COBREXA.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">COBREXA.jl</span></div><form class="docs-search" action="../../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><a class="tocitem" href="../../tutorials/">Tutorials</a></li><li><a class="tocitem" href="../">Examples and notebooks</a></li><li><a class="tocitem" href="../../functions/">Function reference</a></li><li><a class="tocitem" href="../../howToContribute/">How to contribute</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Finding balance and variability of constraint-based models</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Finding balance and variability of constraint-based models</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/LCSB-BioCore/COBREXA.jl/blob/master/docs/src/notebooks/2_finding_balance.jl" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Finding-balance-and-variability-of-constraint-based-models"><a class="docs-heading-anchor" href="#Finding-balance-and-variability-of-constraint-based-models">Finding balance and variability of constraint-based models</a><a id="Finding-balance-and-variability-of-constraint-based-models-1"></a><a class="docs-heading-anchor-permalink" href="#Finding-balance-and-variability-of-constraint-based-models" title="Permalink"></a></h1><p><a href="https://mybinder.org/v2/gh/LCSB-BioCore/COBREXA.jl/gh-pages?filepath=stable/notebooks/2_finding_balance.ipynb"><img src="https://mybinder.org/badge_logo.svg" alt/></a> <a href="https://nbviewer.jupyter.org/github/LCSB-BioCore/COBREXA.jl/blob/gh-pages/stable/notebooks/2_finding_balance.ipynb"><img src="https://img.shields.io/badge/show-nbviewer-579ACA.svg" alt/></a></p><p>Here we use <a href="../../functions/#COBREXA.flux_balance_analysis-Union{Tuple{M}, Tuple{M, Any}} where M&lt;:MetabolicModel"><code>flux_balance_analysis</code></a>, <a href="../../functions/#COBREXA.flux_variability_analysis-Tuple{MetabolicModel, Any}"><code>flux_variability_analysis</code></a>, and <a href="../../functions/#COBREXA.parsimonious_flux_balance_analysis-Tuple{MetabolicModel, Any}"><code>parsimonious_flux_balance_analysis</code></a> of <code>COBREXA.jl</code> functions to analyze a toy model of <em>E. coli</em>.</p><p>If it is not already present, download the model.</p><pre><code class="language-julia">!isfile(&quot;e_coli_core.xml&quot;) &amp;&amp;
download(&quot;http://bigg.ucsd.edu/static/models/e_coli_core.xml&quot;, &quot;e_coli_core.xml&quot;)
using COBREXA</code></pre><div class="admonition is-success"><header class="admonition-header">Tip: use `?` to get quick help about functions</header><div class="admonition-body"><p>When you are unsure about how a function works, write <code>? function_name</code> to see the function reference documentation.</p></div></div><pre><code class="language-julia">model = load_model(&quot;e_coli_core.xml&quot;)</code></pre><pre class="documenter-example-output">Metabolic model of type SBMLModel

using COBREXA</code></pre><div class="admonition is-success"><header class="admonition-header">Tip: use `?` to get quick help about functions</header><div class="admonition-body"><p>When you are unsure about how a function works, write <code>? function_name</code> to see the function reference documentation.</p></div></div><pre><code class="language-julia">model = load_model(&quot;e_coli_core.xml&quot;)</code></pre><pre class="documenter-example-output">Metabolic model of type SBMLModel
⠀⠈⢀⠀⡀⠀⠀⠀⠀⡠⠂⠀⠀⠀⠀⠈⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⢀⠐⡀⠀⠀⠀⠀⠄
⠀⠐⠀⠀⠀⠀⠀⠀⡠⠂⠀⠀⠀⠀⢰⠱⣀⠀⡄⢐⠀⠀⢀⠀⠀⠀⡂⠄⠔⠁⠰⠀⠠⠀⣆⠀⠄⢠⢀⠄
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠠⠀⠀⠐⠀⠀⠀⠀⠀⠀⢀⠀⠀⠐⠀⠂⠀⠀⠀⠄⠀⠐⠀⢁⠄⠀⠀⠀⠀⠀
......@@ -19,8 +19,8 @@ using COBREXA</code></pre><div class="admonition is-success"><header class="admo
⠀⠄⠀⠀⠀⠀⠀⠀⠀⠂⠁⠀⠀⠀⠀⠀⠀⣠⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀
⢀⠂⠀⠀⠂⠀⠈⠀⠐⠀⠀⠀⠁⠀⠀⠀⡀⠔⠑⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠢⠀⠀⡀⠂⠈⠀⠀⠀⠄
⠀⠐⠀⠀⡂⠀⠂⠀⠀⠀⠒⠐⠄⠂⠐⠀⠘⡀⠀⠠⡂⠃⠀⠂⠄⠂⠀⠀⠀⠀⡀⠀⡀⠀⡂⠂⠀⠀⢀⠀
Number of reactions: 95
Number of metabolites: 72
Number of reactions: 95
Number of metabolites: 72
</pre><h2 id="Optimization-solvers-in-COBREXA"><a class="docs-heading-anchor" href="#Optimization-solvers-in-COBREXA">Optimization solvers in <code>COBREXA</code></a><a id="Optimization-solvers-in-COBREXA-1"></a><a class="docs-heading-anchor-permalink" href="#Optimization-solvers-in-COBREXA" title="Permalink"></a></h2><p>To actually perform any optimization based analysis we need to load an optimizer. Any <a href="https://jump.dev/JuMP.jl/stable/installation/#Supported-solvers"><code>JuMP.jl</code>-supported optimizers</a> will work. Here, we will use <a href="https://github.com/ds4dm/Tulip.jl"><code>Tulip.jl</code></a> to optimize linear programs and <a href="https://osqp.org/docs/get_started/julia.html"><code>OSQP.jl</code></a> to optimize quadratic programs.</p><pre><code class="language-julia">import Pkg
Pkg.add(&quot;Tulip&quot;)
Pkg.add(&quot;OSQP&quot;)
......@@ -161,23 +161,23 @@ using OSQP</code></pre><pre class="documenter-example-output"> Resolving packa
change_optimizer_attribute(&quot;verbose&quot;, false), # and silence it.
],
)</code></pre><pre class="documenter-example-output">95-element Vector{Float64}:
-0.006231402533094581
6.847122967587614
8.914435875871503
-5.738183656745528
0.25363156710733
-3.8887743417980833
2.977310372502161
25.64208341306474
6.1991009754149715
1.877264043236841
-0.00645620622352188
6.851837981534216
8.913341572099457
-5.74102223475315
0.2546019668801427
-3.8888374186478805
2.977074571131644
25.64644396822028
6.197416083246767
1.8766996924783867
-0.0002197051126034427
34.49592944330335
-0.0020752886988600542
-0.0014018715428246171
-0.002009900868927077
-25.642083259145206
0.0161569956400718
0.004729690379188246
3.8887743479784547</pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 10:44">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
-0.00010898686223948537
34.50239498696516
-0.001894364829844857
-0.0014869114445033595
-0.0018422507357719023
-25.646443859189773
0.01524881430898677
0.0052844123614167
3.8888374206512077</pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 11 May 2021 13:47">Tuesday 11 May 2021</span>. Using Julia version 1.6.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
%% Cell type:markdown id: tags:
# Basic usage of `StandardModel`
%% Cell type:markdown id: tags:
In this tutorial we will use `COBREXA`'s `StandardModel` and functions that
specifically operate on it. As usual we will use the toy model of *E. coli*
for demonstration.
%% Cell type:code id: tags:
``` julia
!isfile("e_coli_core.json") &&
download("http://bigg.ucsd.edu/static/models/e_coli_core.json", "e_coli_core.json")
using COBREXA
```
%% Cell type:markdown id: tags:
## Loading a model
%% Cell type:code id: tags:
``` julia
model = load_model(StandardModel, "e_coli_core.json") # we specifically want to load a StandardModel from the model file
```
%% Output
Metabolic model of type StandardModel\n\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢄⠀⠀⠀⠀⠀⠀⠀⠈⠶⠴⡆⠀⠀⠀⠀⠀⠀\n⡀⢐⣀⢀⡀⡒⢒⣐⠀⣂⣂⠀⣂⣂⢂⠀⢀⠀⠀⠀⠀⠀⢀⠄⠀⠀⠀⢂⠀⢂⣀⣐⡒⡀⠆⢙⣀⠀⡀⠀\n⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠈⢑⣀⣀⠀⠀\n⠀⠀⠃⠀⠃⠀⠀⠀⠘⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⡜⠀⡄⣤⢠⠘⠙⢣⡇⠘\n⠀⠐⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠐⠁⠉⠀⠀⠀⠀⠀⠘⠄\n⠀⢐⠀⠂⠀⠄⠠⠠⠀⠠⠆⠀⠄⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠠⠀⠠⠀⠀⢀⠀⠀⠠⠀⠀⠁\n⢀⠐⠀⠨⢀⠁⠈⣈⠀⢁⣁⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠁⢀⠀⢊⠉⠀⠀⠀⢀⠀⣀⠀⢀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡈⠀⡀⠆⠀⠆⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀\n⠀⠀⠂⠀⡂⠀⠀⠁⠀⠀⠀⠈⠁⠀⠀⠀⠄⠄⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀\n⠈⠀⠁⠀⠀⢀⡀⠀⠠⠁⠁⠀⠑⠀⠐⠲⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠂⠀⠀⠀⠀⠀⠀⠊⠀⠀⠀⠈\n⠄⠠⢠⠀⠰⠀⠠⠀⠤⠦⠄⠈⠀⠀⠀⠠⠀⠁⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⠄⠄⠠⠀⠀⠀⠀⠀\n⠂⠐⠀⠀⠐⡠⢐⠘⢃⠒⠂⡀⠄⠀⠀⠐⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠀⢀⢀⠀⠀⣀⠀⢀\n⠈⠀⠁⠀⡀⠀⠀⠀⠈⠁⠅⠀⠁⠀⢀⠈⠄⠔⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠈\n⠣⠁⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠈⠀⠁⠁⠀⠈⡀⠀⠀⠀⠀⠀⠐⢣⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠂⠄⠤⠀⠀⠈⠂⠀⠀⠀⠀⠠⠀⠊⠒⣠⠀⠀⠀⠀⠀⠀⠀⠀⠀\nNumber of reactions: 95\nNumber of metabolites: 72\n
Metabolic model of type StandardModel\n\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢄⠀⠀⠀⠀⠀⠀⠀⠈⠶⠴⡆⠀⠀⠀⠀⠀⠀\n⡀⢐⣀⢀⡀⡒⢒⣐⠀⣂⣂⠀⣂⣂⢂⠀⢀⠀⠀⠀⠀⠀⢀⠄⠀⠀⠀⢂⠀⢂⣀⣐⡒⡀⠆⢙⣀⠀⡀⠀\n⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠈⢑⣀⣀⠀⠀\n⠀⠀⠃⠀⠃⠀⠀⠀⠘⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⡜⠀⡄⣤⢠⠘⠙⢣⡇⠘\n⠀⠐⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠐⠁⠉⠀⠀⠀⠀⠀⠘⠄\n⠀⢐⠀⠂⠀⠄⠠⠠⠀⠠⠆⠀⠄⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠠⠀⠠⠀⠀⢀⠀⠀⠠⠀⠀⠁\n⢀⠐⠀⠨⢀⠁⠈⣈⠀⢁⣁⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠁⢀⠀⢊⠉⠀⠀⠀⢀⠀⣀⠀⢀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡈⠀⡀⠆⠀⠆⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀\n⠀⠀⠂⠀⡂⠀⠀⠁⠀⠀⠀⠈⠁⠀⠀⠀⠄⠄⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀\n⠈⠀⠁⠀⠀⢀⡀⠀⠠⠁⠁⠀⠑⠀⠐⠲⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠂⠀⠀⠀⠀⠀⠀⠊⠀⠀⠀⠈\n⠄⠠⢠⠀⠰⠀⠠⠀⠤⠦⠄⠈⠀⠀⠀⠠⠀⠁⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⠄⠄⠠⠀⠀⠀⠀⠀\n⠂⠐⠀⠀⠐⡠⢐⠘⢃⠒⠂⡀⠄⠀⠀⠐⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠀⢀⢀⠀⠀⣀⠀⢀\n⠈⠀⠁⠀⡀⠀⠀⠀⠈⠁⠅⠀⠁⠀⢀⠈⠄⠔⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠈\n⠣⠁⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠈⠀⠁⠁⠀⠈⡀⠀⠀⠀⠀⠀⠐⢣⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠂⠄⠤⠀⠀⠈⠂⠀⠀⠀⠀⠠⠀⠊⠒⣠⠀⠀⠀⠀⠀⠀⠀⠀⠀\nNumber of reactions: 95\nNumber of metabolites: 72\n
%% Cell type:markdown id: tags:
When using `load_model(StandardModel, file_location)` the model at
`file_location` is first loaded into its inferred format and is then
converted to a `StandardModel` using the generic accessor interface.
Thus, data loss may occur. Always check your model to ensure that
nothing important has been lost.
%% Cell type:markdown id: tags:
## Basic analysis
%% Cell type:markdown id: tags:
As before, for optimization based analysis we need to load an optimizer. Here we
will use [`Tulip.jl`](https://github.com/ds4dm/Tulip.jl) to solve the linear
programs of this tutorial. Refer to the basic constraint-based analysis
tutorial for more informaiton.
%% Cell type:markdown id: tags:
All the normal analysis functions work on `StandardModel`, due to it also
having the same generic accessor interface as all the other model types.
%% Cell type:code id: tags:
``` julia
using Tulip
dict_sol = flux_balance_analysis_dict(
model,
Tulip.Optimizer;
modifications = [
change_objective("BIOMASS_Ecoli_core_w_GAM"),
change_constraint("EX_glc__D_e", -12, -12),
change_constraint("EX_o2_e", 0, 0),
],
)
```
%% Output
Dict{String, Float64} with 95 entries:\n "ACALD" => -9.78427\n "PTAr" => 10.0729\n "ALCD2x" => -9.78427\n "PDH" => 1.98381e-9\n "PYK" => 9.94501\n "CO2t" => 0.487021\n "EX_nh4_e" => -1.48633\n "MALt2_2" => -0.0\n "CS" => 0.294088\n "PGM" => -22.8676\n "TKT1" => -0.0487648\n "EX_mal__L_e" => -0.0\n "ACONTa" => 0.294088\n "EX_pi_e" => -1.00274\n "GLNS" => 0.069699\n "ICL" => 5.34932e-11\n "EX_o2_e" => -0.0\n "FBA" => 11.7289\n "EX_gln__L_e" => -0.0\n ⋮ => ⋮
%% Cell type:markdown id: tags:
This is not very exciting yet, since every other model type can also do this.
However, deeper inspection of flux results is possible when using
`StandardModel`.
%% Cell type:markdown id: tags:
## Inspecting the flux solution: `atom_exchange`
%% Cell type:markdown id: tags:
It is sometimes interesting to keep track of the atoms entering and leaving
the system through boundary reactions. This can be inspected by calling
`atom_exchange`.
%% Cell type:code id: tags:
``` julia
atom_exchange(dict_sol, model) # flux of individual atoms entering and leaving the system through boundary reactions (e.g. exchange reactions) based on flux_dict
```
%% Output
Dict{String, Float64} with 5 entries:\n "C" => -11.5998\n "N" => -1.48633\n "P" => -1.00274\n "H" => -20.7086\n "O" => -12.995
%% Cell type:markdown id: tags:
## Inspecting the flux solution: `exchange_reactions`
%% Cell type:markdown id: tags:
It is also sometimes useful to inspect the exchange reactions used by a flux
solution. The function `exchange_reactions` fulfills this purpose.
%% Cell type:code id: tags:
``` julia
consuming, producing = exchange_reactions(dict_sol, model; top_n = 4);
```
%% Output
Consuming fluxes:
EX_glc__D_e = -12.0
EX_h2o_e = -8.285701
EX_nh4_e = -1.48633
EX_pi_e = -1.002744
EX_co2_e = -0.487021
Producing fluxes:
EX_h_e = 36.713726
EX_for_e = 21.172843
EX_ac_e = 10.072906
EX_etoh_e = 9.78427
EX_succ_e = 0.0
%% Cell type:markdown id: tags:
## Inspecting the flux solution: `metabolite_fluxes`
%% Cell type:markdown id: tags:
Another useful flux result analysis function is `metabolite_fluxes`. This
function keeps track of reactions consuming and producing each metabolite.
%% Cell type:code id: tags:
``` julia
consuming, producing = metabolite_fluxes(dict_sol, model)
consuming["atp_c"] # reactions consuming atp_c
```
%% Output
Dict{String, Float64} with 5 entries:\n "PFK" => -11.7289\n "BIOMASS_Ecoli_core_w_GAM" => -16.3031\n "GLNS" => -0.069699\n "ATPM" => -8.39\n "ATPS4r" => -6.80168
%% Cell type:markdown id: tags:
## Internals of `StandardModel`
%% Cell type:markdown id: tags:
Another benefit of `StandardModel` is that it supports a richer internal
infrastructure that can be used to manipulate internal model attributes in a
systematic way. Specifically, the genes, reactions, and metabolites with of a
model each have a type. This is particularly useful when modifying or even
constructing a model from scratch.
%% Cell type:markdown id: tags:
## `Gene`s, `Reaction`s, and `Metabolite`s
%% Cell type:markdown id: tags:
`StandardModel` is composed of ordered dictionaries of `Gene`s, `Metabolite`s
and `Reaction`s. Ordered dictionaries are used because the order of the
reactions and metabolites are important for constructing a stoichiometric
matrix since the rows and columns should correspond to the order of the metabolites
and reactions returned by calling the accessors `metabolites` and `reactions`.
%% Cell type:markdown id: tags:
Each `StandardModel` is composed of the following fields:
%% Cell type:code id: tags:
``` julia
fieldnames(StandardModel) # fields of a StandardModel
```
%% Output
(:id, :reactions, :metabolites, :genes)
%% Cell type:markdown id: tags:
The `:genes` field of a `StandardModel` contains an ordered dictionary of gene ids mapped to `Gene`s.
%% Cell type:code id: tags:
``` julia
model.genes # the keys of this dictionary are the same as genes(model)
```
%% Output
OrderedCollections.OrderedDict{String, Gene} with 137 entries:\n "b1241" => Gene("b1241", nothing, Dict("original_bigg_ids"=>["b1241"]), Dict(…\n "b0351" => Gene("b0351", nothing, Dict("original_bigg_ids"=>["b0351"]), Dict(…\n "s0001" => Gene("s0001", nothing, Dict("original_bigg_ids"=>["s0001"]), Dict(…\n "b1849" => Gene("b1849", nothing, Dict("original_bigg_ids"=>["b1849"]), Dict(…\n "b3115" => Gene("b3115", nothing, Dict("original_bigg_ids"=>["b3115"]), Dict(…\n "b2296" => Gene("b2296", nothing, Dict("original_bigg_ids"=>["b2296"]), Dict(…\n "b1276" => Gene("b1276", nothing, Dict("original_bigg_ids"=>["b1276"]), Dict(…\n "b0118" => Gene("b0118", nothing, Dict("original_bigg_ids"=>["b0118"]), Dict(…\n "b0474" => Gene("b0474", nothing, Dict("original_bigg_ids"=>["b0474"]), Dict(…\n "b0116" => Gene("b0116", nothing, Dict("original_bigg_ids"=>["b0116"]), Dict(…\n "b0727" => Gene("b0727", nothing, Dict("original_bigg_ids"=>["b0727"]), Dict(…\n "b0726" => Gene("b0726", nothing, Dict("original_bigg_ids"=>["b0726"]), Dict(…\n "b2587" => Gene("b2587", nothing, Dict("original_bigg_ids"=>["b2587"]), Dict(…\n "b0356" => Gene("b0356", nothing, Dict("original_bigg_ids"=>["b0356"]), Dict(…\n "b1478" => Gene("b1478", nothing, Dict("original_bigg_ids"=>["b1478"]), Dict(…\n "b3734" => Gene("b3734", nothing, Dict("original_bigg_ids"=>["b3734"]), Dict(…\n "b3733" => Gene("b3733", nothing, Dict("original_bigg_ids"=>["b3733"]), Dict(…\n "b3736" => Gene("b3736", nothing, Dict("original_bigg_ids"=>["b3736"]), Dict(…\n "b3737" => Gene("b3737", nothing, Dict("original_bigg_ids"=>["b3737"]), Dict(…\n ⋮ => ⋮
%% Cell type:markdown id: tags:
The `Gene` type is a struct that can be used to store information about genes
in a `StandardModel`. Each `Gene` is composed of the following fields:
%% Cell type:code id: tags:
``` julia
fieldnames(Gene)
```
%% Output
(:id, :name, :notes, :annotations)
%% Cell type:markdown id: tags:
Use <tab> to quickly explore the fields of a struct. For example,
Gene.<tab> will list all the fields shown above.
%% Cell type:markdown id: tags:
The keys used in the ordered dictionaries in
`model.genes` are the ids returned using the generic accessor `genes`. `Gene`s
have pretty printing, as demonstrated below for a random gene drawn from the
model:
%% Cell type:code id: tags:
``` julia
random_gene_id = genes(model)[rand(1:n_genes(model))]
model.genes[random_gene_id]
```
%% Output
Gene.id: b2987\nGene.name: ---\nGene.notes: \n original_bigg_ids: ["b2987"]\nGene.annotations: \n sbo: ["SBO:0000243"]\n uniprot: ["P43676"]\n ecogene: ["EG12883"]\n ncbigene: ["947475"]\n ncbigi: ["16130887"]\n refseq_locus_tag: ["b2987"]\n refseq_name: ["pitB"]\n asap: ["ABE-0009800"]\n refseq_synonym: ["ECK2981", "JW2955"]\n
Gene.id: b0722\nGene.name: ---\nGene.notes: \n original_bigg_ids: ["b0722"]\nGene.annotations: \n sbo: ["SBO:0000243"]\n uniprot: ["P0AC44"]\n ecogene: ["EG10934"]\n ncbigene: ["945322"]\n ncbigi: ["16128697"]\n refseq_locus_tag: ["b0722"]\n refseq_name: ["sdhD"]\n asap: ["ABE-0002464"]\n refseq_synonym: ["JW0712", "ECK0711"]\n
%% Cell type:markdown id: tags:
The same idea holds for both metabolites (stored as `Metabolite`s) and
reactions (stored as `Reaction`s). This is demonstrated below.
%% Cell type:code id: tags:
``` julia
random_metabolite_id = metabolites(model)[rand(1:n_metabolites(model))]
model.metabolites[random_metabolite_id]
```
%% Output
Metabolite.id: f6p_c\nMetabolite.name: ---\nMetabolite.formula: C6P1H11O9\nMetabolite.charge: -2\nMetabolite.compartment: c\nMetabolite.notes: \n original_bigg_ids: ["f6p_c"]\nMetabolite.annotations: \n chebi: CHEBI:16084, ..., CHEBI:42378\n metanetx.chemical: ["MNXM89621"]\n inchi_key: BGWGXPAPYGQALX-ARQDH...\n kegg.compound: ["C05345"]\n hmdb: ["HMDB03971"]\n sabiork: ["25"]\n sbo: ["SBO:0000247"]\n bigg.metabolite: ["f6p"]\n biocyc: ["META:FRUCTOSE-6P"]\n seed.compound: ["cpd19035"]\n
Metabolite.id: nadh_c\nMetabolite.name: ---\nMetabolite.formula: C21N7P2H27O14\nMetabolite.charge: -2\nMetabolite.compartment: c\nMetabolite.notes: \n original_bigg_ids: ["nadh_c"]\nMetabolite.annotations: \n sabiork: ["38"]\n kegg.compound: ["C00004"]\n sbo: ["SBO:0000247"]\n biocyc: ["META:NADH"]\n chebi: CHEBI:13395, ..., CHEBI:13396\n metanetx.chemical: ["MNXM10"]\n inchi_key: BOPGDPNILDQYTO-NNYOX...\n hmdb: ["HMDB01487"]\n bigg.metabolite: ["nadh"]\n seed.compound: ["cpd00004"]\n reactome.compound: 192305, ..., 194697\n
%% Cell type:code id: tags:
``` julia
random_reaction_id = reactions(model)[rand(1:n_reactions(model))]
model.reactions[random_reaction_id]
```
%% Output
Reaction.id: D_LACt2\nReaction.name: ---\nReaction.metabolites: 1.0 lac__D_e + 1.0 h_e 1.0 lac__D_c + 1.0 h_c\nReaction.lb: -1000.0\nReaction.ub: 1000.0\nReaction.grr: (b2975) or (b3603)\nReaction.subsystem: Transport, Extracellular\nReaction.notes: \n original_bigg_ids: ["D_LACt2"]\nReaction.annotations: \n metanetx.reaction: ["MNXR97838"]\n sbo: ["SBO:0000185"]\n seed.reaction: rxn10171, ..., rxn08350\n biocyc: ["META:TRANS-RXN0-515"]\n bigg.reaction: ["D_LACt2"]\nReaction.objective_coefficient: 0.0\n
Reaction.id: SUCCt2_2\nReaction.name: ---\nReaction.metabolites: 2.0 h_e + 1.0 succ_e 1.0 succ_c + 2.0 h_c\nReaction.lb: 0.0\nReaction.ub: 1000.0\nReaction.grr: (b3528)\nReaction.subsystem: Transport, Extracellular\nReaction.notes: \n original_bigg_ids: ["SUCCt2_2"]\nReaction.annotations: \n metanetx.reaction: ["MNXR104620"]\n rhea: 29305, ..., 29303\n sbo: ["SBO:0000185"]\n seed.reaction: ["rxn10154", "rxn09269"]\n biocyc: ["META:TRANS-RXN-121"]\n bigg.reaction: ["SUCCt2_2"]\nReaction.objective_coefficient: 0.0\n
%% Cell type:markdown id: tags:
`StandardModel` can be used to build your own metabolic model or modify an
existing one. One of the main use cases for `StandardModel` is that it can be
used to merge multiple models or parts of multiple models together. Since the
internals are uniform inside each `StandardModel`, attributes of other model
types are squashed into the required format (using the generic accessors).
This ensures that the internals of all `StandardModel`s are the same -
allowing easy systematic evaluation.
%% Cell type:markdown id: tags:
## Checking the internals of `StandardModel`s: `annotation_index`
%% Cell type:markdown id: tags:
Often when models are automatically reconstructed duplicate genes, reactions
or metabolites end up in a model. `COBREXA` exports `annotation_index` to
check for cases where the id of a struct may be different, but the annotations
the same (possibly suggesting a duplication). `annotation_index` builds a
dictionary mapping annotation features to the ids of whatever struct you are
inspecting. This makes it easy to find structs that share certain annotation features.
%% Cell type:code id: tags:
``` julia
rxn_annotations = annotation_index(model.reactions)
```
%% Output
Dict{String, Dict{String, Set{String}}} with 10 entries:\n "ec-code" => Dict("3.6.3.37"=>Set(["ATPM"]), "3.6.3.42"=>Set(["ATPM…\n "sabiork" => Dict("109"=>Set(["PGL"]), "762"=>Set(["GLUN"]), "155"=…\n "metanetx.reaction" => Dict("MNXR104869"=>Set(["TKT2"]), "MNXR99715"=>Set(["E…\n "rhea" => Dict("27626"=>Set(["TKT2"]), "10229"=>Set(["ACONTa"]),…\n "sbo" => Dict("SBO:0000627"=>Set(["EX_for_e", "EX_nh4_e", "EX_p…\n "seed.reaction" => Dict("rxn05297"=>Set(["GLUt2r"]), "rxn09717"=>Set(["PY…\n "kegg.reaction" => Dict("R00114"=>Set(["GLUSy"]), "R00199"=>Set(["PPS"]),…\n "biocyc" => Dict("META:TRANS-RXN-121B"=>Set(["FUMt2_2"]), "META:PE…\n "reactome.reaction" => Dict("R-TGU-71397"=>Set(["PDH"]), "R-XTR-70449"=>Set([…\n "bigg.reaction" => Dict("ACALD"=>Set(["ACALD"]), "PTAr"=>Set(["PTAr"]), "…
%% Cell type:code id: tags:
``` julia
rxn_annotations["ec-code"]
```
%% Output
Dict{String, Set{String}} with 141 entries:\n "3.6.3.37" => Set(["ATPM"])\n "3.6.3.42" => Set(["ATPM"])\n "3.6.3.38" => Set(["ATPM"])\n "3.6.3.19" => Set(["ATPM"])\n "2.3.3.1" => Set(["CS"])\n "1.6.1.2" => Set(["NADTRHD"])\n "3.6.3.35" => Set(["ATPM"])\n "6.2.1.5" => Set(["SUCOAS"])\n "6.3.5.4" => Set(["GLUN"])\n "3.6.3.49" => Set(["ATPM"])\n "3.6.3.51" => Set(["ATPM"])\n "1.2.1.12" => Set(["GAPD"])\n "3.6.3.32" => Set(["ATPM"])\n "2.3.3.3" => Set(["CS"])\n "2.7.4.3" => Set(["ADK1"])\n "6.3.5.5" => Set(["GLUN"])\n "3.5.1.2" => Set(["GLUN"])\n "1.1.1.49" => Set(["G6PDH2r"])\n "5.3.1.9" => Set(["PGI"])\n ⋮ => ⋮
%% Cell type:markdown id: tags:
The `annotation_index` function can also be used on `Reaction`s and
`Gene`s in the same way.
%% Cell type:markdown id: tags:
## Checking the internals of `StandardModel`s: `check_duplicate_reaction`
%% Cell type:markdown id: tags:
Another useful function is `check_duplicate_reaction`, which checks for
reactions that have duplicate (or similar) reaction equations.
%% Cell type:code id: tags:
``` julia
pgm_duplicate = Reaction()
pgm_duplicate.id = "pgm2" # Phosphoglycerate mutase
pgm_duplicate.metabolites = Dict{String,Float64}("3pg_c" => 1, "2pg_c" => -1)
pgm_duplicate
```
%% Output
Reaction.id: pgm2\nReaction.name: ---\nReaction.metabolites: 1.0 2pg_c ⟷ 1.0 3pg_c\nReaction.lb: -1000.0\nReaction.ub: 1000.0\nReaction.grr: ---\nReaction.subsystem: ---\nReaction.notes: ---\nReaction.annotations: ---\nReaction.objective_coefficient: 0.0\n
Reaction.id: pgm2\nReaction.name: ---\nReaction.metabolites: 1.0 2pg_c ⟷ 1.0 3pg_c\nReaction.lb: -1000.0\nReaction.ub: 1000.0\nReaction.grr: ---\nReaction.subsystem: ---\nReaction.notes: ---\nReaction.annotations: ---\nReaction.objective_coefficient: 0.0\n
%% Cell type:code id: tags:
``` julia
check_duplicate_reaction(pgm_duplicate, model.reactions; only_metabolites = false) # can also just check if only the metabolites are the same but different stoichiometry is used
```
%% Output
"PGM"
%% Cell type:markdown id: tags:
## Checking the internals of `StandardModel`s: `is_mass_balanced`
%% Cell type:markdown id: tags:
Finally, `is_mass_balanced` can be used to check if a reaction is mass
balanced based on the formulas of the reaction equation.
%% Cell type:code id: tags:
``` julia
pgm_duplicate.metabolites = Dict{String,Float64}("3pg_c" => 1, "2pg_c" => -1, "h2o_c" => 1) # not mass balanced now
is_bal, extra_atoms = is_mass_balanced(pgm_duplicate, model) # extra_atoms shows which atoms are in excess/deficit
```
%% Output
(false, Dict("C" => 0.0, "P" => 0.0, "H" => 2.0, "O" => 1.0))
%% Cell type:markdown id: tags:
---
*This notebook was generated using [Literate.jl](https://github.com/fredrikekre/Literate.jl).*
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment