[7.47738193404817, 1.8840414375838503e-8, 4.860861010127701, -16.023526104614593, … ]</code></pre></article><navclass="docs-footer"><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <spanclass="colophon-date"title="Monday 9 August 2021 12:34">Monday 9 August 2021</span>. Using Julia version 1.6.0.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
[7.47738193404817, 1.8840414375838503e-8, 4.860861010127701, -16.023526104614593, … ]</code></pre></article><navclass="docs-footer"><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <spanclass="colophon-date"title="Monday 9 August 2021 16:00">Monday 9 August 2021</span>. Using Julia version 1.6.0.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
@@ -43,4 +43,4 @@ Dict{String, Float64} with 5 entries:
"rxn4" => 1.0
</code></pre><h2id="Writing-generic-model-modifications"><aclass="docs-heading-anchor"href="#Writing-generic-model-modifications">Writing generic model modifications</a><aid="Writing-generic-model-modifications-1"></a><aclass="docs-heading-anchor-permalink"href="#Writing-generic-model-modifications"title="Permalink"></a></h2><p>The custom model structure can also be made compatible with many of the existing variant-generating functions and analysis modifiers.</p><p>The functions prepared for use as "variants" in <ahref="../../functions/#COBREXA.screen-Union{Tuple{MetabolicModel}, Tuple{N}, Tuple{A}, Tuple{V}} where {V<:(AbstractVector{T} where T), A, N}"><code>screen</code></a>, usually prefixed by <code>with_</code>, have their generic variants that only call simpler, overloadable functions for each specific model. This choice is based on the overloading dispatch system of Julia. For example,<ahref="../../functions/#COBREXA.with_removed_metabolites-Tuple"><code>with_removed_metabolites</code></a> is implemented very generically by reducing the problem to some specific <ahref="../../functions/#COBREXA.remove_metabolites-Tuple{CoreModel, Any}"><code>remove_metabolites</code></a> functions selected by the dispatch, as follows:</p><pre><codeclass="language-julia">with_removed_metabolites(args...; kwargs...) =
m -> remove_metabolites(m, args...; kwargs...)</code></pre><p>To be able to use <ahref="../../functions/#COBREXA.with_removed_metabolites-Tuple"><code>with_removed_metabolites</code></a> in your model, we can just overload the actual inner function. For the simple circular model, the modification might as well look like this:</p><pre><codeclass="language-julia">COBREXA.remove_metabolites(m::CircularModel, n::Int) =
return CircularModel(m.size - n)</code></pre><divclass="admonition is-danger"><headerclass="admonition-header">Functions that generate model variants must be pure</header><divclass="admonition-body"><p>Notice that the function is "pure", i.e., does not make any in-place modifications to the original model structure. That property is required for <ahref="../../functions/#COBREXA.screen-Union{Tuple{MetabolicModel}, Tuple{N}, Tuple{A}, Tuple{V}} where {V<:(AbstractVector{T} where T), A, N}"><code>screen</code></a> and other functions to properly and predictably apply the modifications to the model. To expose potential in-place modifications to your codebase, you should instead overload the "bang" counterpart of remove metabolites, called <ahref="../../functions/#COBREXA.remove_metabolites!-Tuple{StandardModel, Vector{String}}"><code>remove_metabolites!</code></a>.</p></div></div></article><navclass="docs-footer"><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <spanclass="colophon-date"title="Monday 9 August 2021 12:33">Monday 9 August 2021</span>. Using Julia version 1.6.0.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
return CircularModel(m.size - n)</code></pre><divclass="admonition is-danger"><headerclass="admonition-header">Functions that generate model variants must be pure</header><divclass="admonition-body"><p>Notice that the function is "pure", i.e., does not make any in-place modifications to the original model structure. That property is required for <ahref="../../functions/#COBREXA.screen-Union{Tuple{MetabolicModel}, Tuple{N}, Tuple{A}, Tuple{V}} where {V<:(AbstractVector{T} where T), A, N}"><code>screen</code></a> and other functions to properly and predictably apply the modifications to the model. To expose potential in-place modifications to your codebase, you should instead overload the "bang" counterpart of remove metabolites, called <ahref="../../functions/#COBREXA.remove_metabolites!-Tuple{StandardModel, Vector{String}}"><code>remove_metabolites!</code></a>.</p></div></div></article><navclass="docs-footer"><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <spanclass="colophon-date"title="Monday 9 August 2021 16:00">Monday 9 August 2021</span>. Using Julia version 1.6.0.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
<htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width, initial-scale=1.0"/><title>Advanced tutorials · COBREXA.jl</title><linkhref="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono"rel="stylesheet"type="text/css"/><linkhref="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/fontawesome.min.css"rel="stylesheet"type="text/css"/><linkhref="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/solid.min.css"rel="stylesheet"type="text/css"/><linkhref="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/brands.min.css"rel="stylesheet"type="text/css"/><linkhref="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><linkclass="docs-theme-link"rel="stylesheet"type="text/css"href="../assets/themes/documenter-dark.css"data-theme-name="documenter-dark"data-theme-primary-dark/><linkclass="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><linkhref="../assets/favicon.ico"rel="icon"type="image/x-icon"/></head><body><divid="documenter"><navclass="docs-sidebar"><aclass="docs-logo"href="../"><imgclass="docs-light-only"src="../assets/logo.svg"alt="COBREXA.jl logo"/><imgclass="docs-dark-only"src="../assets/logo-dark.svg"alt="COBREXA.jl logo"/></a><divclass="docs-package-name"><spanclass="docs-autofit">COBREXA.jl</span></div><formclass="docs-search"action="../search/"><inputclass="docs-search-query"id="documenter-search-query"name="q"type="text"placeholder="Search docs"/></form><ulclass="docs-menu"><li><aclass="tocitem"href="../">Home</a></li><li><aclass="tocitem"href="../tutorials/">Quickstart tutorials</a></li><liclass="is-active"><aclass="tocitem"href>Advanced tutorials</a></li><li><aclass="tocitem"href="../notebooks/">Examples and notebooks</a></li><li><aclass="tocitem"href="../functions/">Function reference</a></li><li><aclass="tocitem"href="../howToContribute/">How to contribute</a></li></ul><divclass="docs-version-selector field has-addons"><divclass="control"><spanclass="docs-label button is-static is-size-7">Version</span></div><divclass="docs-selector control is-expanded"><divclass="select is-fullwidth is-size-7"><selectid="documenter-version-selector"></select></div></div></div></nav><divclass="docs-main"><headerclass="docs-navbar"><navclass="breadcrumb"><ulclass="is-hidden-mobile"><liclass="is-active"><ahref>Advanced tutorials</a></li></ul><ulclass="is-hidden-tablet"><liclass="is-active"><ahref>Advanced tutorials</a></li></ul></nav><divclass="docs-right"><aclass="docs-edit-link"href="https://github.com/LCSB-BioCore/COBREXA.jl/blob/master/docs/src/advanced.md"title="Edit on GitHub"><spanclass="docs-icon fab"></span><spanclass="docs-label is-hidden-touch">Edit on GitHub</span></a><aclass="docs-settings-button fas fa-cog"id="documenter-settings-button"href="#"title="Settings"></a><aclass="docs-sidebar-button fa fa-bars is-hidden-desktop"id="documenter-sidebar-button"href="#"></a></div></header><articleclass="content"id="documenter-page"><h1id="COBREXA-Advanced-tutorials"><aclass="docs-heading-anchor"href="#COBREXA-Advanced-tutorials">COBREXA Advanced tutorials</a><aid="COBREXA-Advanced-tutorials-1"></a><aclass="docs-heading-anchor-permalink"href="#COBREXA-Advanced-tutorials"title="Permalink"></a></h1><ul><li><ahref="1_variants/#Exploring-many-model-variants">Exploring many model variants</a></li><ul><li><ahref="1_variants/#Variant-specification">Variant specification</a></li><li><ahref="1_variants/#Writing-custom-variant-functions">Writing custom variant functions</a></li><li><ahref="1_variants/#Passing-extra-arguments-to-the-analysis-function">Passing extra arguments to the analysis function</a></li></ul><li><ahref="2_custom_model/#Working-with-custom-models">Working with custom models</a></li><ul><li><ahref="2_custom_model/#Writing-the-generic-accessors">Writing the generic accessors</a></li><li><ahref="2_custom_model/#Writing-generic-model-modifications">Writing generic model modifications</a></li></ul></ul></article><navclass="docs-footer"><aclass="docs-footer-prevpage"href="../tutorials/">« Quickstart tutorials</a><aclass="docs-footer-nextpage"href="../notebooks/">Examples and notebooks »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <spanclass="colophon-date"title="Monday 9 August 2021 12:34">Monday 9 August 2021</span>. Using Julia version 1.6.0.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
<htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width, initial-scale=1.0"/><title>Advanced tutorials · COBREXA.jl</title><linkhref="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono"rel="stylesheet"type="text/css"/><linkhref="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/fontawesome.min.css"rel="stylesheet"type="text/css"/><linkhref="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/solid.min.css"rel="stylesheet"type="text/css"/><linkhref="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/brands.min.css"rel="stylesheet"type="text/css"/><linkhref="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><linkclass="docs-theme-link"rel="stylesheet"type="text/css"href="../assets/themes/documenter-dark.css"data-theme-name="documenter-dark"data-theme-primary-dark/><linkclass="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><linkhref="../assets/favicon.ico"rel="icon"type="image/x-icon"/></head><body><divid="documenter"><navclass="docs-sidebar"><aclass="docs-logo"href="../"><imgclass="docs-light-only"src="../assets/logo.svg"alt="COBREXA.jl logo"/><imgclass="docs-dark-only"src="../assets/logo-dark.svg"alt="COBREXA.jl logo"/></a><divclass="docs-package-name"><spanclass="docs-autofit">COBREXA.jl</span></div><formclass="docs-search"action="../search/"><inputclass="docs-search-query"id="documenter-search-query"name="q"type="text"placeholder="Search docs"/></form><ulclass="docs-menu"><li><aclass="tocitem"href="../">Home</a></li><li><aclass="tocitem"href="../tutorials/">Quickstart tutorials</a></li><liclass="is-active"><aclass="tocitem"href>Advanced tutorials</a></li><li><aclass="tocitem"href="../notebooks/">Examples and notebooks</a></li><li><aclass="tocitem"href="../functions/">Function reference</a></li><li><aclass="tocitem"href="../howToContribute/">How to contribute</a></li></ul><divclass="docs-version-selector field has-addons"><divclass="control"><spanclass="docs-label button is-static is-size-7">Version</span></div><divclass="docs-selector control is-expanded"><divclass="select is-fullwidth is-size-7"><selectid="documenter-version-selector"></select></div></div></div></nav><divclass="docs-main"><headerclass="docs-navbar"><navclass="breadcrumb"><ulclass="is-hidden-mobile"><liclass="is-active"><ahref>Advanced tutorials</a></li></ul><ulclass="is-hidden-tablet"><liclass="is-active"><ahref>Advanced tutorials</a></li></ul></nav><divclass="docs-right"><aclass="docs-edit-link"href="https://github.com/LCSB-BioCore/COBREXA.jl/blob/master/docs/src/advanced.md"title="Edit on GitHub"><spanclass="docs-icon fab"></span><spanclass="docs-label is-hidden-touch">Edit on GitHub</span></a><aclass="docs-settings-button fas fa-cog"id="documenter-settings-button"href="#"title="Settings"></a><aclass="docs-sidebar-button fa fa-bars is-hidden-desktop"id="documenter-sidebar-button"href="#"></a></div></header><articleclass="content"id="documenter-page"><h1id="COBREXA-Advanced-tutorials"><aclass="docs-heading-anchor"href="#COBREXA-Advanced-tutorials">COBREXA Advanced tutorials</a><aid="COBREXA-Advanced-tutorials-1"></a><aclass="docs-heading-anchor-permalink"href="#COBREXA-Advanced-tutorials"title="Permalink"></a></h1><ul><li><ahref="1_variants/#Exploring-many-model-variants">Exploring many model variants</a></li><ul><li><ahref="1_variants/#Variant-specification">Variant specification</a></li><li><ahref="1_variants/#Writing-custom-variant-functions">Writing custom variant functions</a></li><li><ahref="1_variants/#Passing-extra-arguments-to-the-analysis-function">Passing extra arguments to the analysis function</a></li></ul><li><ahref="2_custom_model/#Working-with-custom-models">Working with custom models</a></li><ul><li><ahref="2_custom_model/#Writing-the-generic-accessors">Writing the generic accessors</a></li><li><ahref="2_custom_model/#Writing-generic-model-modifications">Writing generic model modifications</a></li></ul></ul></article><navclass="docs-footer"><aclass="docs-footer-prevpage"href="../tutorials/">« Quickstart tutorials</a><aclass="docs-footer-nextpage"href="../notebooks/">Examples and notebooks »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <spanclass="colophon-date"title="Monday 9 August 2021 16:00">Monday 9 August 2021</span>. Using Julia version 1.6.0.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
$ julia</code></pre><p>With Julia, you can install the development version of the package from the directory as follows:</p><pre><codeclass="language-julia">(v1.6) pkg> add .</code></pre><p>(press <code>]</code> to get into the packaging environment)</p><p>This adds the <code>COBREXA.jl</code> package and all its dependencies. You can verify that the installation worked by typing:</p><pre><codeclass="language-julia">(v1.6) pkg> status</code></pre><p>If you are planning to develop the package, it is often easier to install the package in development mode, with <code>dev</code> command:</p><pre><codeclass="language-julia">(v1.6) pkg> dev .</code></pre><p>That causes the package to always load with whatever code changes that you added to the source directory.</p><h4id="Finally:-load-COBREXA.jl"><aclass="docs-heading-anchor"href="#Finally:-load-COBREXA.jl">Finally: load COBREXA.jl</a><aid="Finally:-load-COBREXA.jl-1"></a><aclass="docs-heading-anchor-permalink"href="#Finally:-load-COBREXA.jl"title="Permalink"></a></h4><p>With both of above options, you should get COBREXA.jl installed, which means that the following command should, without errors, load the package and make COBREXA.jl functions available for testing:</p><pre><codeclass="language-julia">julia> using COBREXA</code></pre><p>You may now freely modify the code and test the result.</p><p>Remember that if you want to work in the environment of the package, you need to <em>activate</em> it. That causes, among other, that the additional dependencies specified with packaging <code>add</code> command will be written automaticaly to <code>Project.toml</code> file of your local COBREXA.jl clone, not to your global environment. Activation is simple: when in the directory of the package, just type the command into the packaging shell:</p><pre><codeclass="language-julia">(v1.6) pkg> activate</code></pre><h3id="Step-2:-Publish-your-changes"><aclass="docs-heading-anchor"href="#Step-2:-Publish-your-changes">Step 2: Publish your changes</a><aid="Step-2:-Publish-your-changes-1"></a><aclass="docs-heading-anchor-permalink"href="#Step-2:-Publish-your-changes"title="Permalink"></a></h3><p>You are expected to make a fork of the main COBREXA.jl repository, and open a pull request from that one to the <code>master</code> branch of the main repository. For creating the fork, just hit the "Fork" button on GitHub.</p><p>After that, change the directory to your repository and adjust the remotes:</p><pre><codeclass="language-bash">$ cd ~/.julia/dev/COBREXA # or any other directory, as needed
$ git remote rename origin upstream # renames the origin (the main COBREXA.jl repo) to upstream
$ git remote add origin git@github.com:yourUsername/COBREXA.jl.git # adds the link to your clone as new origin
$ git fetch origin # fetches the refs from your repo</code></pre><p>In the above code, change <code>yourUsername</code> is your GitHub username.</p><p>When the renaming is done, start a new branch at <code>upstream/master</code>. In the code snippet, substitute <code>yn</code> for your initials (Your Name here) and give the new feature a better name than <code>somefeature</code>:</p><pre><codeclass="language-bash">$ git checkout -b yn-somefeature origin/master</code></pre><p>Commit any changes and features that you like to the new branch. When the commits look complete to you, push the branch to your repository fork:</p><pre><codeclass="language-bash">$ git push -u origin yn-somefeature</code></pre><p>This makes your changes visible in your repository. After that, you can navigate to <ahref="https://github.com/LCSB-BioCore/COBREXA.jl/pulls">GitHub's pull request page</a>, where you should immediately see a big green button that helps you to create a pull request for this branch. Read the section below for precise details and guidelines on submitting the pull requests.</p><h2id="How-to-submit-a-pull-request-(PR)-with-your-modification/enhancement?"><aclass="docs-heading-anchor"href="#How-to-submit-a-pull-request-(PR)-with-your-modification/enhancement?">How to submit a pull request (PR) with your modification/enhancement?</a><aid="How-to-submit-a-pull-request-(PR)-with-your-modification/enhancement?-1"></a><aclass="docs-heading-anchor-permalink"href="#How-to-submit-a-pull-request-(PR)-with-your-modification/enhancement?"title="Permalink"></a></h2><ol><li><strong>Make a fork of the repository</strong>, commit the modifications in a <strong>separate branch</strong> and push the branch to your fork.</li><li>Make a pull request where you describe the motivation and expected outcome for the users. Specifically, consider any possible incompatibilities, and the necessity to increment the version number after your changes are applied. Label your pull request with a <ahref="https://gitmoji.dev/">semantic emoji</a> in the title to indicate what it addresses.</li><li>After submitting the pull request, verify that all status checks (tests, documentation) are passing. Make sure any new contribution is properly documented and tested (you may want to check with coverage tools, using <code>test --coverage</code> from the Julia packaging shell)</li></ol><p>After you submitted a pull request, a label might be assigned that allows us to track and manage issues and pull requests.</p><h3id="Code-culture-and-style-recommendations"><aclass="docs-heading-anchor"href="#Code-culture-and-style-recommendations">Code culture and style recommendations</a><aid="Code-culture-and-style-recommendations-1"></a><aclass="docs-heading-anchor-permalink"href="#Code-culture-and-style-recommendations"title="Permalink"></a></h3><p>Follow basic rules for software maintainability and extensibility:</p><ul><li>Do not reimplement functionality that is available in other packages, unless the reimplementation is either trivial and short, or there is a grave need to do so because the other implementations are deficient in some manner.</li><li>Try to keep the function names and interfaces consistent with ecosystem standards and the other functions in the package. Consistency reduces the amount of surprise on the user side, thus lowers the need to reach for documentation, and in turn makes the software much easier and faster to use.</li><li>Code less. Shorter code is almost always better unless demonstrated otherwise, e.g. with a benchmark. Avoid repetitive boilerplate (there should be ways to generate it, if needed).</li><li>Keep the functionality "open" and composable. In particular, avoid all unnecessarily opaque and leaky abstractions (common in object-oriented programming).</li><li>Avoid producing lots of "informative" text side-output by default, unless that is what the user asked for.</li><li>Adhere to the code formatting rules defined by <ahref="https://github.com/domluna/JuliaFormatter.jl">JuliaFormatter</a>. We usually have a bot running that checks all PRs and reports whether the code is properly formatted.</li></ul><p>Follow the common rules for making easily mergable and reviewable PRs:</p><ul><li>Create one PR for each logical "feature" you want to merge. If your change is more complex and contains multiple "stages", open multiple PRs.</li><li>Keep the test coverage reasonably high.</li><li>If you commit many small, partial changes in a PR, you may help us save energy by prefixing your commit names with <code>[skip ci]</code>, which deactivates the CI trigger on that commit. With each skipped CI, you save a few watt-hours of energy. Testing just the "final" commit of the pull-request branch is sufficient.</li></ul><h2id="For-developers:-What-is-the-expected-branch-management/workflow?"><aclass="docs-heading-anchor"href="#For-developers:-What-is-the-expected-branch-management/workflow?">For developers: What is the expected branch management/workflow?</a><aid="For-developers:-What-is-the-expected-branch-management/workflow?-1"></a><aclass="docs-heading-anchor-permalink"href="#For-developers:-What-is-the-expected-branch-management/workflow?"title="Permalink"></a></h2><p>The workflow is based on <ahref="https://docs.gitlab.com/ee/topics/gitlab_flow.html">GitLab flow</a>, i.e., a <code>master</code> branch with <code>feature</code> branches being merged into the <code>master</code> branch. Depending on your access rights, you may open the <code>feature</code> branch in this repository, on in your fork.</p><p>The guidelines can be summarized as such:</p><ul><li>when making a contribution, create one new branch and open one new PR for each new independent feature or bugfix</li><li>do not push to another branch unless it is your own</li><li>try to get a review before merging unless the change is trivial and non-impacting</li><li>consider prefixing your branch names with your initials, so that one can easily see who owns which branch (e.g. <code>ad-somefeature</code> would be committed by Arthur Dent)</li></ul></article><navclass="docs-footer"><aclass="docs-footer-prevpage"href="../functions/">« Function reference</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <spanclass="colophon-date"title="Monday 9 August 2021 12:34">Monday 9 August 2021</span>. Using Julia version 1.6.0.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
$ git fetch origin # fetches the refs from your repo</code></pre><p>In the above code, change <code>yourUsername</code> is your GitHub username.</p><p>When the renaming is done, start a new branch at <code>upstream/master</code>. In the code snippet, substitute <code>yn</code> for your initials (Your Name here) and give the new feature a better name than <code>somefeature</code>:</p><pre><codeclass="language-bash">$ git checkout -b yn-somefeature origin/master</code></pre><p>Commit any changes and features that you like to the new branch. When the commits look complete to you, push the branch to your repository fork:</p><pre><codeclass="language-bash">$ git push -u origin yn-somefeature</code></pre><p>This makes your changes visible in your repository. After that, you can navigate to <ahref="https://github.com/LCSB-BioCore/COBREXA.jl/pulls">GitHub's pull request page</a>, where you should immediately see a big green button that helps you to create a pull request for this branch. Read the section below for precise details and guidelines on submitting the pull requests.</p><h2id="How-to-submit-a-pull-request-(PR)-with-your-modification/enhancement?"><aclass="docs-heading-anchor"href="#How-to-submit-a-pull-request-(PR)-with-your-modification/enhancement?">How to submit a pull request (PR) with your modification/enhancement?</a><aid="How-to-submit-a-pull-request-(PR)-with-your-modification/enhancement?-1"></a><aclass="docs-heading-anchor-permalink"href="#How-to-submit-a-pull-request-(PR)-with-your-modification/enhancement?"title="Permalink"></a></h2><ol><li><strong>Make a fork of the repository</strong>, commit the modifications in a <strong>separate branch</strong> and push the branch to your fork.</li><li>Make a pull request where you describe the motivation and expected outcome for the users. Specifically, consider any possible incompatibilities, and the necessity to increment the version number after your changes are applied. Label your pull request with a <ahref="https://gitmoji.dev/">semantic emoji</a> in the title to indicate what it addresses.</li><li>After submitting the pull request, verify that all status checks (tests, documentation) are passing. Make sure any new contribution is properly documented and tested (you may want to check with coverage tools, using <code>test --coverage</code> from the Julia packaging shell)</li></ol><p>After you submitted a pull request, a label might be assigned that allows us to track and manage issues and pull requests.</p><h3id="Code-culture-and-style-recommendations"><aclass="docs-heading-anchor"href="#Code-culture-and-style-recommendations">Code culture and style recommendations</a><aid="Code-culture-and-style-recommendations-1"></a><aclass="docs-heading-anchor-permalink"href="#Code-culture-and-style-recommendations"title="Permalink"></a></h3><p>Follow basic rules for software maintainability and extensibility:</p><ul><li>Do not reimplement functionality that is available in other packages, unless the reimplementation is either trivial and short, or there is a grave need to do so because the other implementations are deficient in some manner.</li><li>Try to keep the function names and interfaces consistent with ecosystem standards and the other functions in the package. Consistency reduces the amount of surprise on the user side, thus lowers the need to reach for documentation, and in turn makes the software much easier and faster to use.</li><li>Code less. Shorter code is almost always better unless demonstrated otherwise, e.g. with a benchmark. Avoid repetitive boilerplate (there should be ways to generate it, if needed).</li><li>Keep the functionality "open" and composable. In particular, avoid all unnecessarily opaque and leaky abstractions (common in object-oriented programming).</li><li>Avoid producing lots of "informative" text side-output by default, unless that is what the user asked for.</li><li>Adhere to the code formatting rules defined by <ahref="https://github.com/domluna/JuliaFormatter.jl">JuliaFormatter</a>. We usually have a bot running that checks all PRs and reports whether the code is properly formatted.</li></ul><p>Follow the common rules for making easily mergable and reviewable PRs:</p><ul><li>Create one PR for each logical "feature" you want to merge. If your change is more complex and contains multiple "stages", open multiple PRs.</li><li>Keep the test coverage reasonably high.</li><li>If you commit many small, partial changes in a PR, you may help us save energy by prefixing your commit names with <code>[skip ci]</code>, which deactivates the CI trigger on that commit. With each skipped CI, you save a few watt-hours of energy. Testing just the "final" commit of the pull-request branch is sufficient.</li></ul><h2id="For-developers:-What-is-the-expected-branch-management/workflow?"><aclass="docs-heading-anchor"href="#For-developers:-What-is-the-expected-branch-management/workflow?">For developers: What is the expected branch management/workflow?</a><aid="For-developers:-What-is-the-expected-branch-management/workflow?-1"></a><aclass="docs-heading-anchor-permalink"href="#For-developers:-What-is-the-expected-branch-management/workflow?"title="Permalink"></a></h2><p>The workflow is based on <ahref="https://docs.gitlab.com/ee/topics/gitlab_flow.html">GitLab flow</a>, i.e., a <code>master</code> branch with <code>feature</code> branches being merged into the <code>master</code> branch. Depending on your access rights, you may open the <code>feature</code> branch in this repository, on in your fork.</p><p>The guidelines can be summarized as such:</p><ul><li>when making a contribution, create one new branch and open one new PR for each new independent feature or bugfix</li><li>do not push to another branch unless it is your own</li><li>try to get a review before merging unless the change is trivial and non-impacting</li><li>consider prefixing your branch names with your initials, so that one can easily see who owns which branch (e.g. <code>ad-somefeature</code> would be committed by Arthur Dent)</li></ul></article><navclass="docs-footer"><aclass="docs-footer-prevpage"href="../functions/">« Function reference</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <spanclass="colophon-date"title="Monday 9 August 2021 16:00">Monday 9 August 2021</span>. Using Julia version 1.6.0.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
@@ -28,4 +28,4 @@ fluxes = flux_balance_analysis_dict(model, Tulip.Optimizer)</code></pre><p>The v
"R_O2t" => 21.7995
"R_G6PDH2r" => 4.95999
"R_TALA" => 1.49698
⋮ => ⋮</code></pre><h2id="Basic-and-quick-start-tutorials"><aclass="docs-heading-anchor"href="#Basic-and-quick-start-tutorials">Basic and quick-start tutorials</a><aid="Basic-and-quick-start-tutorials-1"></a><aclass="docs-heading-anchor-permalink"href="#Basic-and-quick-start-tutorials"title="Permalink"></a></h2><p>Detailed tutorial content is <ahref="tutorials/">available here</a>.</p><ul><li><ahref="tutorials/1_loading/#Loading-and-converting-model-data">Loading and converting model data</a></li><li><ahref="tutorials/2_analysis/#Basic-analysis-of-constraint-based-models">Basic analysis of constraint-based models</a></li><li><ahref="tutorials/3_hpc/#Distributed-processing-and-HPC-environments">Distributed processing and HPC environments</a></li><li><ahref="tutorials/4_modifying/#Modifying-and-saving-the-models">Modifying and saving the models</a></li></ul><h2id="Advanced-tutorials"><aclass="docs-heading-anchor"href="#Advanced-tutorials">Advanced tutorials</a><aid="Advanced-tutorials-1"></a><aclass="docs-heading-anchor-permalink"href="#Advanced-tutorials"title="Permalink"></a></h2><p>Detailed listing of advanced tutorials is <ahref="advanced/">available here</a>.</p><ul><li><ahref="advanced/1_variants/#Exploring-many-model-variants">Exploring many model variants</a></li><li><ahref="advanced/2_custom_model/#Working-with-custom-models">Working with custom models</a></li></ul><h2id="Example-notebooks-and-workflows"><aclass="docs-heading-anchor"href="#Example-notebooks-and-workflows">Example notebooks and workflows</a><aid="Example-notebooks-and-workflows-1"></a><aclass="docs-heading-anchor-permalink"href="#Example-notebooks-and-workflows"title="Permalink"></a></h2><p>Detailed notebook content is <ahref="notebooks/">available here</a>.</p><ul><li><ahref="notebooks/1_loading_converting_saving/#Loading,-converting,-and-saving-models">Loading, converting, and saving models</a></li><li><ahref="notebooks/2_finding_balance/#Finding-balance-and-variability-of-constraint-based-models">Finding balance and variability of constraint-based models</a></li><li><ahref="notebooks/3_basic_stdmodel_usage/#Basic-usage-of-StandardModel">Basic usage of <code>StandardModel</code></a></li><li><ahref="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><ahref="notebooks/5_basic_stdmodel_construction/#Model-construction-and-modification">Model construction and modification</a></li><li><ahref="notebooks/6_screening/#Exploring-model-variants-with-screen">Exploring model variants with <code>screen</code></a></li><li><ahref="notebooks/7_community_model/#Building-and-analysing-a-small-community-model">Building and analysing a small community model</a></li><li><ahref="notebooks/8_custom_model/#Using-a-custom-model-data-structure">Using a custom model data structure</a></li></ul><h2id="Functions-reference"><aclass="docs-heading-anchor"href="#Functions-reference">Functions reference</a><aid="Functions-reference-1"></a><aclass="docs-heading-anchor-permalink"href="#Functions-reference"title="Permalink"></a></h2><ul><li><ahref="functions/#Functions">Functions</a></li><ul><li><ahref="functions/#Base-Types">Base Types</a></li><li><ahref="functions/#Model-types-and-contents">Model types and contents</a></li><li><ahref="functions/#Base-functions">Base functions</a></li><li><ahref="functions/#File-I/O-and-serialization">File I/O and serialization</a></li><li><ahref="functions/#Model-reconstruction">Model reconstruction</a></li><li><ahref="functions/#Analysis-functions">Analysis functions</a></li><li><ahref="functions/#Miscellaneous-utilities">Miscellaneous utilities</a></li></ul></ul><h2id="Contribution-guide"><aclass="docs-heading-anchor"href="#Contribution-guide">Contribution guide</a><aid="Contribution-guide-1"></a><aclass="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 <ahref="howToContribute/">contribution guidelines and hints.</a>.</p><h2id="Acknowledgements"><aclass="docs-heading-anchor"href="#Acknowledgements">Acknowledgements</a><aid="Acknowledgements-1"></a><aclass="docs-heading-anchor-permalink"href="#Acknowledgements"title="Permalink"></a></h2><p><code>COBREXA.jl</code> is developed at the Luxembourg Centre for Systems Biomedicine of the University of Luxembourg (<ahref="https://wwwen.uni.lu/lcsb">uni.lu/lcsb</a>), cooperating with the Institute for Quantitative and Theoretical Biology at the Heinrich Heine University in Düsseldorf (<ahref="https://www.qtb.hhu.de/">qtb.hhu.de</a>).</p><p>The development was supported by European Union's Horizon 2020 Programme under PerMedCoE project (<ahref="https://permedcoe.eu/">permedcoe.eu</a>) agreement no. 951773.</p><imgsrc="https://lcsb-biocore.github.io/COBREXA.jl/stable/assets/cobrexa.svg"alt="COBREXA logo"height="64px"style="height:64px; width:auto"><imgsrc="https://lcsb-biocore.github.io/COBREXA.jl/stable/assets/unilu.svg"alt="Uni.lu logo"height="64px"style="height:64px; width:auto"><imgsrc="https://lcsb-biocore.github.io/COBREXA.jl/stable/assets/lcsb.svg"alt="LCSB logo"height="64px"style="height:64px; width:auto"><imgsrc="https://lcsb-biocore.github.io/COBREXA.jl/stable/assets/hhu.svg"alt="HHU logo"height="64px"style="height:64px; width:auto"><imgsrc="https://lcsb-biocore.github.io/COBREXA.jl/stable/assets/qtb.svg"alt="QTB logo"height="64px"style="height:64px; width:auto"><imgsrc="https://lcsb-biocore.github.io/COBREXA.jl/stable/assets/permedcoe.svg"alt="PerMedCoE logo"height="64px"style="height:64px; width:auto"></article><navclass="docs-footer"><aclass="docs-footer-nextpage"href="tutorials/">Quickstart tutorials »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <spanclass="colophon-date"title="Monday 9 August 2021 12:34">Monday 9 August 2021</span>. Using Julia version 1.6.0.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
⋮ => ⋮</code></pre><h2id="Basic-and-quick-start-tutorials"><aclass="docs-heading-anchor"href="#Basic-and-quick-start-tutorials">Basic and quick-start tutorials</a><aid="Basic-and-quick-start-tutorials-1"></a><aclass="docs-heading-anchor-permalink"href="#Basic-and-quick-start-tutorials"title="Permalink"></a></h2><p>Detailed tutorial content is <ahref="tutorials/">available here</a>.</p><ul><li><ahref="tutorials/1_loading/#Loading-and-converting-model-data">Loading and converting model data</a></li><li><ahref="tutorials/2_analysis/#Basic-analysis-of-constraint-based-models">Basic analysis of constraint-based models</a></li><li><ahref="tutorials/3_hpc/#Distributed-processing-and-HPC-environments">Distributed processing and HPC environments</a></li><li><ahref="tutorials/4_modifying/#Modifying-and-saving-the-models">Modifying and saving the models</a></li></ul><h2id="Advanced-tutorials"><aclass="docs-heading-anchor"href="#Advanced-tutorials">Advanced tutorials</a><aid="Advanced-tutorials-1"></a><aclass="docs-heading-anchor-permalink"href="#Advanced-tutorials"title="Permalink"></a></h2><p>Detailed listing of advanced tutorials is <ahref="advanced/">available here</a>.</p><ul><li><ahref="advanced/1_variants/#Exploring-many-model-variants">Exploring many model variants</a></li><li><ahref="advanced/2_custom_model/#Working-with-custom-models">Working with custom models</a></li></ul><h2id="Example-notebooks-and-workflows"><aclass="docs-heading-anchor"href="#Example-notebooks-and-workflows">Example notebooks and workflows</a><aid="Example-notebooks-and-workflows-1"></a><aclass="docs-heading-anchor-permalink"href="#Example-notebooks-and-workflows"title="Permalink"></a></h2><p>Detailed notebook content is <ahref="notebooks/">available here</a>.</p><ul><li><ahref="notebooks/1_loading_converting_saving/#Loading,-converting,-and-saving-models">Loading, converting, and saving models</a></li><li><ahref="notebooks/2_finding_balance/#Finding-balance-and-variability-of-constraint-based-models">Finding balance and variability of constraint-based models</a></li><li><ahref="notebooks/3_basic_stdmodel_usage/#Basic-usage-of-StandardModel">Basic usage of <code>StandardModel</code></a></li><li><ahref="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><ahref="notebooks/5_basic_stdmodel_construction/#Model-construction-and-modification">Model construction and modification</a></li><li><ahref="notebooks/6_screening/#Exploring-model-variants-with-screen">Exploring model variants with <code>screen</code></a></li><li><ahref="notebooks/7_community_model/#Building-and-analysing-a-small-community-model">Building and analysing a small community model</a></li><li><ahref="notebooks/8_custom_model/#Using-a-custom-model-data-structure">Using a custom model data structure</a></li></ul><h2id="Functions-reference"><aclass="docs-heading-anchor"href="#Functions-reference">Functions reference</a><aid="Functions-reference-1"></a><aclass="docs-heading-anchor-permalink"href="#Functions-reference"title="Permalink"></a></h2><ul><li><ahref="functions/#Functions">Functions</a></li><ul><li><ahref="functions/#Base-Types">Base Types</a></li><li><ahref="functions/#Model-types-and-contents">Model types and contents</a></li><li><ahref="functions/#Base-functions">Base functions</a></li><li><ahref="functions/#File-I/O-and-serialization">File I/O and serialization</a></li><li><ahref="functions/#Model-reconstruction">Model reconstruction</a></li><li><ahref="functions/#Analysis-functions">Analysis functions</a></li><li><ahref="functions/#Miscellaneous-utilities">Miscellaneous utilities</a></li></ul></ul><h2id="Contribution-guide"><aclass="docs-heading-anchor"href="#Contribution-guide">Contribution guide</a><aid="Contribution-guide-1"></a><aclass="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 <ahref="howToContribute/">contribution guidelines and hints.</a>.</p><h2id="Acknowledgements"><aclass="docs-heading-anchor"href="#Acknowledgements">Acknowledgements</a><aid="Acknowledgements-1"></a><aclass="docs-heading-anchor-permalink"href="#Acknowledgements"title="Permalink"></a></h2><p><code>COBREXA.jl</code> is developed at the Luxembourg Centre for Systems Biomedicine of the University of Luxembourg (<ahref="https://wwwen.uni.lu/lcsb">uni.lu/lcsb</a>), cooperating with the Institute for Quantitative and Theoretical Biology at the Heinrich Heine University in Düsseldorf (<ahref="https://www.qtb.hhu.de/">qtb.hhu.de</a>).</p><p>The development was supported by European Union's Horizon 2020 Programme under PerMedCoE project (<ahref="https://permedcoe.eu/">permedcoe.eu</a>) agreement no. 951773.</p><imgsrc="https://lcsb-biocore.github.io/COBREXA.jl/stable/assets/cobrexa.svg"alt="COBREXA logo"height="64px"style="height:64px; width:auto"><imgsrc="https://lcsb-biocore.github.io/COBREXA.jl/stable/assets/unilu.svg"alt="Uni.lu logo"height="64px"style="height:64px; width:auto"><imgsrc="https://lcsb-biocore.github.io/COBREXA.jl/stable/assets/lcsb.svg"alt="LCSB logo"height="64px"style="height:64px; width:auto"><imgsrc="https://lcsb-biocore.github.io/COBREXA.jl/stable/assets/hhu.svg"alt="HHU logo"height="64px"style="height:64px; width:auto"><imgsrc="https://lcsb-biocore.github.io/COBREXA.jl/stable/assets/qtb.svg"alt="QTB logo"height="64px"style="height:64px; width:auto"><imgsrc="https://lcsb-biocore.github.io/COBREXA.jl/stable/assets/permedcoe.svg"alt="PerMedCoE logo"height="64px"style="height:64px; width:auto"></article><navclass="docs-footer"><aclass="docs-footer-nextpage"href="tutorials/">Quickstart tutorials »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <spanclass="colophon-date"title="Monday 9 August 2021 16:00">Monday 9 August 2021</span>. Using Julia version 1.6.0.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>