mxlmodels 1.0.0__tar.gz → 1.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mxlmodels-1.2.0/.gitignore +118 -0
- mxlmodels-1.2.0/.pre-commit-config.yaml +24 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/PKG-INFO +1 -1
- mxlmodels-1.2.0/docs/_dynamic_enterobactin.ipynb +49 -0
- mxlmodels-1.2.0/docs/_population_dynamics.ipynb +41 -0
- mxlmodels-1.2.0/docs/_tripartite_dynamics.ipynb +41 -0
- mxlmodels-1.2.0/docs/ebeling2026.ipynb +41 -0
- mxlmodels-1.2.0/docs/elowitz2000_repressilator.ipynb +43 -0
- mxlmodels-1.2.0/docs/lotka_volterra.ipynb +33 -0
- mxlmodels-1.2.0/docs/matuszynska2016_npq.ipynb +41 -0
- mxlmodels-1.2.0/docs/matuszynska2016_phd.ipynb +27 -0
- mxlmodels-1.2.0/docs/matuszynska2019.ipynb +33 -0
- mxlmodels-1.2.0/docs/nguyen2026_tomato.ipynb +69 -0
- mxlmodels-1.2.0/docs/pfennig2024_synechocystis.ipynb +58 -0
- mxlmodels-1.2.0/docs/poolman2000.ipynb +27 -0
- mxlmodels-1.2.0/docs/prigogine1968_brusselator.ipynb +43 -0
- mxlmodels-1.2.0/docs/saadat2021.ipynb +27 -0
- mxlmodels-1.2.0/docs/selkov1968_oscillator.ipynb +46 -0
- mxlmodels-1.2.0/docs/yokota1985.ipynb +27 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/pyproject.toml +19 -18
- mxlmodels-1.2.0/src/mxlmodels/__init__.py +55 -0
- mxlmodels-1.0.0/src/mxlmodels/dyn_entro.py → mxlmodels-1.2.0/src/mxlmodels/_dynamic_enterobactin.py +1 -1
- mxlmodels-1.2.0/src/mxlmodels/_names.py +235 -0
- mxlmodels-1.0.0/src/mxlmodels/pop_dyn.py → mxlmodels-1.2.0/src/mxlmodels/_population_dynamics.py +1 -1
- mxlmodels-1.0.0/src/mxlmodels/trip_dyn.py → mxlmodels-1.2.0/src/mxlmodels/_tripartite_dynamics.py +1 -1
- mxlmodels-1.2.0/src/mxlmodels/data/__init__.py +5 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/__init__.py +96 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/lights/README.md +41 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/lights/cool_white_led.csv +302 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/lights/fluorescent_lamp.csv +302 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/lights/halogen_lamp.csv +302 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/lights/incandescent_bulb.csv +302 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/lights/solar.csv +302 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/lights/warm_white_led.csv +302 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/ocp_absorption.csv +302 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/per_pigment/README.md +39 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/per_pigment/allophycocyanin.csv +302 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/per_pigment/beta_carotene.csv +302 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/per_pigment/chla.csv +302 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/per_pigment/phycocyanin.csv +302 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/photosystem_composition.csv +5 -0
- mxlmodels-1.2.0/src/mxlmodels/data/pfennig2024/pigment_concentrations.csv +5 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/src/mxlmodels/ebeling2026.py +1 -1
- mxlmodels-1.2.0/src/mxlmodels/elowitz2000_repressilator.py +152 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/src/mxlmodels/lotka_volterra_v1.py +1 -1
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/src/mxlmodels/lotka_volterra_v2.py +1 -1
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/src/mxlmodels/matuszynska2016_npq.py +1 -1
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/src/mxlmodels/matuszynska2016_phd.py +1 -1
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/src/mxlmodels/matuszynska2019.py +1 -1
- mxlmodels-1.2.0/src/mxlmodels/nguyen2026_tomato.py +1173 -0
- mxlmodels-1.2.0/src/mxlmodels/pfennig2024_synechocystis.py +2197 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/src/mxlmodels/poolman2000.py +3 -1
- mxlmodels-1.2.0/src/mxlmodels/prigogine1968_brusselator.py +74 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/src/mxlmodels/saadat2021.py +1 -1
- mxlmodels-1.2.0/src/mxlmodels/selkov1968_oscillator.py +61 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/src/mxlmodels/yokota1985.py +1 -1
- mxlmodels-1.2.0/tests/__init__.py +0 -0
- mxlmodels-1.2.0/tests/test_dynamic_enterobactin.py +16 -0
- mxlmodels-1.2.0/tests/test_ebeling_2026.py +58 -0
- mxlmodels-1.2.0/tests/test_elowitz2000_repressilator.py +23 -0
- mxlmodels-1.2.0/tests/test_import.py +19 -0
- mxlmodels-1.2.0/tests/test_lotka_volterra_v1.py +14 -0
- mxlmodels-1.2.0/tests/test_lotka_volterra_v2.py +14 -0
- mxlmodels-1.2.0/tests/test_matuszynska2016_npq.py +23 -0
- mxlmodels-1.2.0/tests/test_matuszynska2016_phd.py +25 -0
- mxlmodels-1.2.0/tests/test_matuszynska2019.py +41 -0
- mxlmodels-1.2.0/tests/test_nguyen2026_tomato.py +29 -0
- mxlmodels-1.2.0/tests/test_pfennig2024_synechocystis.py +47 -0
- mxlmodels-1.2.0/tests/test_poolman2000.py +33 -0
- mxlmodels-1.2.0/tests/test_population_dynamics.py +14 -0
- mxlmodels-1.2.0/tests/test_prigogine1968_brusselator.py +14 -0
- mxlmodels-1.2.0/tests/test_saadat2021.py +47 -0
- mxlmodels-1.2.0/tests/test_selkov1968_glycolysis_oscillator.py +14 -0
- mxlmodels-1.2.0/tests/test_tripartite_dynamics.py +16 -0
- mxlmodels-1.2.0/tests/test_yokota1985.py +23 -0
- mxlmodels-1.2.0/uv.lock +3013 -0
- mxlmodels-1.0.0/.github/workflows/docs.yml +0 -43
- mxlmodels-1.0.0/.gitignore +0 -15
- mxlmodels-1.0.0/.pre-commit-config.yaml +0 -10
- mxlmodels-1.0.0/src/mxlmodels/__init__.py +0 -34
- mxlmodels-1.0.0/uv.lock +0 -1502
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/.gitattributes +0 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/.github/ISSUE_TEMPLATE/discussion.md +0 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/.github/dependabot.yml +0 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/.github/workflows/python-publish.yml +0 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/.github/workflows/release-to-slack.yml +0 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/.github/workflows/tests.yml +0 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/.python-version +0 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/.vscode/settings.json +0 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/CONTRIBUTING.md +0 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/LICENSE +0 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/README.md +0 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/SECURITY.md +0 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/docs/assets/logo.png +0 -0
- {mxlmodels-1.0.0 → mxlmodels-1.2.0}/src/mxlmodels/py.typed +0 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
*.egg-info/
|
|
24
|
+
.installed.cfg
|
|
25
|
+
*.egg
|
|
26
|
+
MANIFEST
|
|
27
|
+
|
|
28
|
+
# PyInstaller
|
|
29
|
+
# Usually these files are written by a python script from a template
|
|
30
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
31
|
+
*.manifest
|
|
32
|
+
*.spec
|
|
33
|
+
|
|
34
|
+
# Installer logs
|
|
35
|
+
pip-log.txt
|
|
36
|
+
pip-delete-this-directory.txt
|
|
37
|
+
|
|
38
|
+
# Unit test / coverage reports
|
|
39
|
+
htmlcov/
|
|
40
|
+
.tox/
|
|
41
|
+
coverage.json
|
|
42
|
+
.coverage
|
|
43
|
+
.coverage.*
|
|
44
|
+
.cache
|
|
45
|
+
nosetests.xml
|
|
46
|
+
coverage.xml
|
|
47
|
+
*.cover
|
|
48
|
+
.hypothesis/
|
|
49
|
+
.pytest_cache/
|
|
50
|
+
.ruff_cache/
|
|
51
|
+
|
|
52
|
+
# Translations
|
|
53
|
+
*.mo
|
|
54
|
+
*.pot
|
|
55
|
+
|
|
56
|
+
# Django stuff:
|
|
57
|
+
*.log
|
|
58
|
+
local_settings.py
|
|
59
|
+
db.sqlite3
|
|
60
|
+
|
|
61
|
+
# Flask stuff:
|
|
62
|
+
instance/
|
|
63
|
+
.webassets-cache
|
|
64
|
+
|
|
65
|
+
# Scrapy stuff:
|
|
66
|
+
.scrapy
|
|
67
|
+
|
|
68
|
+
# Sphinx documentation
|
|
69
|
+
docs/_build/
|
|
70
|
+
|
|
71
|
+
# PyBuilder
|
|
72
|
+
target/
|
|
73
|
+
|
|
74
|
+
# Jupyter Notebook
|
|
75
|
+
.ipynb_checkpoints
|
|
76
|
+
|
|
77
|
+
# celery beat schedule file
|
|
78
|
+
celerybeat-schedule
|
|
79
|
+
|
|
80
|
+
# SageMath parsed files
|
|
81
|
+
*.sage.py
|
|
82
|
+
|
|
83
|
+
# Environments
|
|
84
|
+
.env
|
|
85
|
+
.venv
|
|
86
|
+
env/
|
|
87
|
+
venv/
|
|
88
|
+
ENV/
|
|
89
|
+
env.bak/
|
|
90
|
+
venv.bak/
|
|
91
|
+
|
|
92
|
+
# Spyder project settings
|
|
93
|
+
.spyderproject
|
|
94
|
+
.spyproject
|
|
95
|
+
|
|
96
|
+
# Rope project settings
|
|
97
|
+
.ropeproject
|
|
98
|
+
|
|
99
|
+
# mkdocs documentation
|
|
100
|
+
/site
|
|
101
|
+
|
|
102
|
+
# mypy
|
|
103
|
+
.mypy_cache/
|
|
104
|
+
|
|
105
|
+
# temporary files and folders
|
|
106
|
+
*temp*
|
|
107
|
+
tmp
|
|
108
|
+
src/mxlbricks
|
|
109
|
+
src/mxlweb
|
|
110
|
+
|
|
111
|
+
# pixi environments
|
|
112
|
+
.pixi
|
|
113
|
+
*.egg-info
|
|
114
|
+
|
|
115
|
+
# AI config files
|
|
116
|
+
.github/copilot-instructions.md
|
|
117
|
+
.claude
|
|
118
|
+
CLAUDE.md
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
# Lint & format
|
|
3
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
4
|
+
rev: v0.15.12
|
|
5
|
+
hooks:
|
|
6
|
+
- id: ruff
|
|
7
|
+
types_or: [ python, pyi, jupyter ]
|
|
8
|
+
args: [ --fix ]
|
|
9
|
+
- id: ruff-format
|
|
10
|
+
types_or: [ python, pyi, jupyter ]
|
|
11
|
+
|
|
12
|
+
- repo: https://github.com/aio-libs/sort-all
|
|
13
|
+
rev: v1.3.0
|
|
14
|
+
hooks:
|
|
15
|
+
- id: sort-all
|
|
16
|
+
|
|
17
|
+
- repo: local
|
|
18
|
+
hooks:
|
|
19
|
+
- id: jupyter-nb-clear-output
|
|
20
|
+
name: jupyter-nb-clear-output
|
|
21
|
+
files: \.ipynb$
|
|
22
|
+
stages: [ pre-commit ]
|
|
23
|
+
language: system
|
|
24
|
+
entry: uvx jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mxlmodels
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: MxlModels is a Python package of reference mechanistic models.
|
|
5
5
|
Author-email: Marvin van Aalst <marvin.vanaalst@gmail.com>
|
|
6
6
|
Maintainer-email: Marvin van Aalst <marvin.vanaalst@gmail.com>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "code",
|
|
5
|
+
"execution_count": null,
|
|
6
|
+
"id": "323f3026",
|
|
7
|
+
"metadata": {},
|
|
8
|
+
"outputs": [],
|
|
9
|
+
"source": [
|
|
10
|
+
"from mxlmodels import Simulator, get_dynamic_enterobactin, plot\n",
|
|
11
|
+
"\n",
|
|
12
|
+
"res = Simulator(get_dynamic_enterobactin()).simulate(0.2).get_result().unwrap_or_err()\n",
|
|
13
|
+
"\n",
|
|
14
|
+
"fig, (ax1, ax2, ax3) = plot.grid_layout(3, n_cols=3)\n",
|
|
15
|
+
"_ = plot.lines(res.get_variables(include_derived_variables=False).iloc[:, :10], ax=ax1)\n",
|
|
16
|
+
"_ = plot.lines(\n",
|
|
17
|
+
" res.get_args(\n",
|
|
18
|
+
" include_variables=False,\n",
|
|
19
|
+
" include_derived_variables=True,\n",
|
|
20
|
+
" include_reactions=False,\n",
|
|
21
|
+
" ).iloc[:, :10],\n",
|
|
22
|
+
" ax=ax2,\n",
|
|
23
|
+
")\n",
|
|
24
|
+
"_ = plot.lines(res.fluxes.iloc[:, :10], ax=ax3)"
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"metadata": {
|
|
29
|
+
"kernelspec": {
|
|
30
|
+
"display_name": "git-mxl-meta (3.13.12)",
|
|
31
|
+
"language": "python",
|
|
32
|
+
"name": "python3"
|
|
33
|
+
},
|
|
34
|
+
"language_info": {
|
|
35
|
+
"codemirror_mode": {
|
|
36
|
+
"name": "ipython",
|
|
37
|
+
"version": 3
|
|
38
|
+
},
|
|
39
|
+
"file_extension": ".py",
|
|
40
|
+
"mimetype": "text/x-python",
|
|
41
|
+
"name": "python",
|
|
42
|
+
"nbconvert_exporter": "python",
|
|
43
|
+
"pygments_lexer": "ipython3",
|
|
44
|
+
"version": "3.13.12"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"nbformat": 4,
|
|
48
|
+
"nbformat_minor": 5
|
|
49
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "code",
|
|
5
|
+
"execution_count": null,
|
|
6
|
+
"id": "323f3026",
|
|
7
|
+
"metadata": {},
|
|
8
|
+
"outputs": [],
|
|
9
|
+
"source": [
|
|
10
|
+
"from mxlmodels import Simulator, get_population_dynamics, plot\n",
|
|
11
|
+
"\n",
|
|
12
|
+
"res = Simulator(get_population_dynamics()).simulate(1).get_result().unwrap_or_err()\n",
|
|
13
|
+
"\n",
|
|
14
|
+
"fig, (ax1, ax2) = plot.two_axes(figsize=(12, 6))\n",
|
|
15
|
+
"_ = plot.lines(res.variables.iloc[:, :10], ax=ax1)\n",
|
|
16
|
+
"_ = plot.lines(res.fluxes.iloc[:, :10], ax=ax2)"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"metadata": {
|
|
21
|
+
"kernelspec": {
|
|
22
|
+
"display_name": "git-mxl-meta (3.13.12)",
|
|
23
|
+
"language": "python",
|
|
24
|
+
"name": "python3"
|
|
25
|
+
},
|
|
26
|
+
"language_info": {
|
|
27
|
+
"codemirror_mode": {
|
|
28
|
+
"name": "ipython",
|
|
29
|
+
"version": 3
|
|
30
|
+
},
|
|
31
|
+
"file_extension": ".py",
|
|
32
|
+
"mimetype": "text/x-python",
|
|
33
|
+
"name": "python",
|
|
34
|
+
"nbconvert_exporter": "python",
|
|
35
|
+
"pygments_lexer": "ipython3",
|
|
36
|
+
"version": "3.13.12"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"nbformat": 4,
|
|
40
|
+
"nbformat_minor": 5
|
|
41
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "code",
|
|
5
|
+
"execution_count": null,
|
|
6
|
+
"id": "86589195",
|
|
7
|
+
"metadata": {},
|
|
8
|
+
"outputs": [],
|
|
9
|
+
"source": [
|
|
10
|
+
"from mxlmodels import Simulator, get_tripartite_dynamics, plot\n",
|
|
11
|
+
"\n",
|
|
12
|
+
"res = Simulator(get_tripartite_dynamics()).simulate(10).get_result().unwrap_or_err()\n",
|
|
13
|
+
"\n",
|
|
14
|
+
"fig, (ax1, ax2) = plot.two_axes(figsize=(12, 6))\n",
|
|
15
|
+
"_ = plot.lines(res.variables.iloc[:, :10], ax=ax1)\n",
|
|
16
|
+
"_ = plot.lines(res.fluxes.iloc[:, :10], ax=ax2)"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"metadata": {
|
|
21
|
+
"kernelspec": {
|
|
22
|
+
"display_name": "git-mxl-meta (3.13.12)",
|
|
23
|
+
"language": "python",
|
|
24
|
+
"name": "python3"
|
|
25
|
+
},
|
|
26
|
+
"language_info": {
|
|
27
|
+
"codemirror_mode": {
|
|
28
|
+
"name": "ipython",
|
|
29
|
+
"version": 3
|
|
30
|
+
},
|
|
31
|
+
"file_extension": ".py",
|
|
32
|
+
"mimetype": "text/x-python",
|
|
33
|
+
"name": "python",
|
|
34
|
+
"nbconvert_exporter": "python",
|
|
35
|
+
"pygments_lexer": "ipython3",
|
|
36
|
+
"version": "3.13.12"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"nbformat": 4,
|
|
40
|
+
"nbformat_minor": 5
|
|
41
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "code",
|
|
5
|
+
"execution_count": null,
|
|
6
|
+
"id": "c496798a",
|
|
7
|
+
"metadata": {},
|
|
8
|
+
"outputs": [],
|
|
9
|
+
"source": [
|
|
10
|
+
"from mxlmodels import Simulator, get_ebeling_2026, plot\n",
|
|
11
|
+
"\n",
|
|
12
|
+
"res = Simulator(get_ebeling_2026()).simulate(10).get_result().unwrap_or_err()\n",
|
|
13
|
+
"\n",
|
|
14
|
+
"fig, (ax1, ax2) = plot.two_axes(figsize=(12, 6))\n",
|
|
15
|
+
"_ = plot.lines(res.variables.iloc[:, :10], ax=ax1)\n",
|
|
16
|
+
"_ = plot.lines(res.fluxes.iloc[:, :10], ax=ax2)"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"metadata": {
|
|
21
|
+
"kernelspec": {
|
|
22
|
+
"display_name": "git-mxl-meta (3.13.12)",
|
|
23
|
+
"language": "python",
|
|
24
|
+
"name": "python3"
|
|
25
|
+
},
|
|
26
|
+
"language_info": {
|
|
27
|
+
"codemirror_mode": {
|
|
28
|
+
"name": "ipython",
|
|
29
|
+
"version": 3
|
|
30
|
+
},
|
|
31
|
+
"file_extension": ".py",
|
|
32
|
+
"mimetype": "text/x-python",
|
|
33
|
+
"name": "python",
|
|
34
|
+
"nbconvert_exporter": "python",
|
|
35
|
+
"pygments_lexer": "ipython3",
|
|
36
|
+
"version": "3.13.12"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"nbformat": 4,
|
|
40
|
+
"nbformat_minor": 5
|
|
41
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "code",
|
|
5
|
+
"execution_count": null,
|
|
6
|
+
"id": "a5b6e12b",
|
|
7
|
+
"metadata": {},
|
|
8
|
+
"outputs": [],
|
|
9
|
+
"source": [
|
|
10
|
+
"from mxlmodels import Simulator, get_elowitz2000_repressilator, plot\n",
|
|
11
|
+
"\n",
|
|
12
|
+
"res = (\n",
|
|
13
|
+
" Simulator(get_elowitz2000_repressilator()).simulate(10).get_result().unwrap_or_err()\n",
|
|
14
|
+
")\n",
|
|
15
|
+
"\n",
|
|
16
|
+
"fig, (ax1, ax2) = plot.two_axes(figsize=(12, 6))\n",
|
|
17
|
+
"_ = plot.lines(res.variables.iloc[:, :10], ax=ax1)\n",
|
|
18
|
+
"_ = plot.lines(res.fluxes.iloc[:, :10], ax=ax2)"
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"metadata": {
|
|
23
|
+
"kernelspec": {
|
|
24
|
+
"display_name": "git-mxl-meta (3.13.12)",
|
|
25
|
+
"language": "python",
|
|
26
|
+
"name": "python3"
|
|
27
|
+
},
|
|
28
|
+
"language_info": {
|
|
29
|
+
"codemirror_mode": {
|
|
30
|
+
"name": "ipython",
|
|
31
|
+
"version": 3
|
|
32
|
+
},
|
|
33
|
+
"file_extension": ".py",
|
|
34
|
+
"mimetype": "text/x-python",
|
|
35
|
+
"name": "python",
|
|
36
|
+
"nbconvert_exporter": "python",
|
|
37
|
+
"pygments_lexer": "ipython3",
|
|
38
|
+
"version": "3.13.12"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"nbformat": 4,
|
|
42
|
+
"nbformat_minor": 5
|
|
43
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "code",
|
|
5
|
+
"execution_count": null,
|
|
6
|
+
"id": "023f3645",
|
|
7
|
+
"metadata": {},
|
|
8
|
+
"outputs": [],
|
|
9
|
+
"source": [
|
|
10
|
+
"from mxlmodels import Simulator, get_lotka_volterra_v1, plot\n",
|
|
11
|
+
"\n",
|
|
12
|
+
"res = Simulator(get_lotka_volterra_v1()).simulate(10).get_result().unwrap_or_err()\n",
|
|
13
|
+
"\n",
|
|
14
|
+
"fig, (ax1, ax2) = plot.two_axes(figsize=(12, 6))\n",
|
|
15
|
+
"_ = plot.lines(res.variables.iloc[:, :10], ax=ax1)\n",
|
|
16
|
+
"_ = plot.lines(res.fluxes.iloc[:, :10], ax=ax2)"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"metadata": {
|
|
21
|
+
"kernelspec": {
|
|
22
|
+
"display_name": "git-mxl-meta (3.13.12)",
|
|
23
|
+
"language": "python",
|
|
24
|
+
"name": "python3"
|
|
25
|
+
},
|
|
26
|
+
"language_info": {
|
|
27
|
+
"name": "python",
|
|
28
|
+
"version": "3.13.12"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"nbformat": 4,
|
|
32
|
+
"nbformat_minor": 5
|
|
33
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "code",
|
|
5
|
+
"execution_count": null,
|
|
6
|
+
"id": "f006da9a",
|
|
7
|
+
"metadata": {},
|
|
8
|
+
"outputs": [],
|
|
9
|
+
"source": [
|
|
10
|
+
"from mxlmodels import Simulator, get_matuszynska2016_npq, plot\n",
|
|
11
|
+
"\n",
|
|
12
|
+
"res = Simulator(get_matuszynska2016_npq()).simulate(10).get_result().unwrap_or_err()\n",
|
|
13
|
+
"\n",
|
|
14
|
+
"fig, (ax1, ax2) = plot.two_axes(figsize=(12, 6))\n",
|
|
15
|
+
"_ = plot.lines(res.variables.iloc[:, :10], ax=ax1)\n",
|
|
16
|
+
"_ = plot.lines(res.fluxes.iloc[:, :10], ax=ax2)"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"metadata": {
|
|
21
|
+
"kernelspec": {
|
|
22
|
+
"display_name": "git-mxl-meta (3.13.12)",
|
|
23
|
+
"language": "python",
|
|
24
|
+
"name": "python3"
|
|
25
|
+
},
|
|
26
|
+
"language_info": {
|
|
27
|
+
"codemirror_mode": {
|
|
28
|
+
"name": "ipython",
|
|
29
|
+
"version": 3
|
|
30
|
+
},
|
|
31
|
+
"file_extension": ".py",
|
|
32
|
+
"mimetype": "text/x-python",
|
|
33
|
+
"name": "python",
|
|
34
|
+
"nbconvert_exporter": "python",
|
|
35
|
+
"pygments_lexer": "ipython3",
|
|
36
|
+
"version": "3.13.12"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"nbformat": 4,
|
|
40
|
+
"nbformat_minor": 5
|
|
41
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "code",
|
|
5
|
+
"execution_count": null,
|
|
6
|
+
"id": "5f7d0e15",
|
|
7
|
+
"metadata": {},
|
|
8
|
+
"outputs": [],
|
|
9
|
+
"source": [
|
|
10
|
+
"from mxlmodels import Simulator, get_matuszynska2016_phd, plot\n",
|
|
11
|
+
"\n",
|
|
12
|
+
"res = Simulator(get_matuszynska2016_phd()).simulate(10).get_result().unwrap_or_err()\n",
|
|
13
|
+
"\n",
|
|
14
|
+
"fig, (ax1, ax2) = plot.two_axes(figsize=(12, 6))\n",
|
|
15
|
+
"_ = plot.lines(res.variables.iloc[:, :10], ax=ax1)\n",
|
|
16
|
+
"_ = plot.lines(res.fluxes.iloc[:, :10], ax=ax2)"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"metadata": {
|
|
21
|
+
"language_info": {
|
|
22
|
+
"name": "python"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"nbformat": 4,
|
|
26
|
+
"nbformat_minor": 5
|
|
27
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "code",
|
|
5
|
+
"execution_count": null,
|
|
6
|
+
"id": "f5cc7bbf",
|
|
7
|
+
"metadata": {},
|
|
8
|
+
"outputs": [],
|
|
9
|
+
"source": [
|
|
10
|
+
"from mxlmodels import Simulator, get_matuszynska2019, plot\n",
|
|
11
|
+
"\n",
|
|
12
|
+
"res = Simulator(get_matuszynska2019()).simulate(10).get_result().unwrap_or_err()\n",
|
|
13
|
+
"\n",
|
|
14
|
+
"fig, (ax1, ax2) = plot.two_axes(figsize=(12, 6))\n",
|
|
15
|
+
"_ = plot.lines(res.variables.iloc[:, :10], ax=ax1)\n",
|
|
16
|
+
"_ = plot.lines(res.fluxes.iloc[:, :10], ax=ax2)"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"metadata": {
|
|
21
|
+
"kernelspec": {
|
|
22
|
+
"display_name": "git-mxl-meta (3.13.12)",
|
|
23
|
+
"language": "python",
|
|
24
|
+
"name": "python3"
|
|
25
|
+
},
|
|
26
|
+
"language_info": {
|
|
27
|
+
"name": "python",
|
|
28
|
+
"version": "3.13.12"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"nbformat": 4,
|
|
32
|
+
"nbformat_minor": 5
|
|
33
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "code",
|
|
5
|
+
"execution_count": null,
|
|
6
|
+
"id": "db264b37",
|
|
7
|
+
"metadata": {},
|
|
8
|
+
"outputs": [],
|
|
9
|
+
"source": [
|
|
10
|
+
"from mxlmodels import Simulator, get_nguyen2026_tomato, plot\n",
|
|
11
|
+
"\n",
|
|
12
|
+
"res = (\n",
|
|
13
|
+
" Simulator(get_nguyen2026_tomato())\n",
|
|
14
|
+
" .update_variables(\n",
|
|
15
|
+
" {\n",
|
|
16
|
+
" \"B0\": 1.9587919653281205,\n",
|
|
17
|
+
" \"B1\": 5.308607566760226e-08,\n",
|
|
18
|
+
" \"B2\": 0.5412079539026975,\n",
|
|
19
|
+
" \"PQH2\": 14.753583247530687,\n",
|
|
20
|
+
" \"ATP\": 23.681707158359565,\n",
|
|
21
|
+
" \"H_lumen\": 0.004056077821448256,\n",
|
|
22
|
+
" \"delta_psi\": 0.02512099319259713,\n",
|
|
23
|
+
" \"Vx\": 0.9500845858289113,\n",
|
|
24
|
+
" \"PsbS\": 0.6863197475682336,\n",
|
|
25
|
+
" \"ATPactivity\": 1.0,\n",
|
|
26
|
+
" \"K_lumen\": 400.0,\n",
|
|
27
|
+
" \"K_stroma\": 3200.0,\n",
|
|
28
|
+
" }\n",
|
|
29
|
+
" )\n",
|
|
30
|
+
" .simulate(10)\n",
|
|
31
|
+
" .get_result()\n",
|
|
32
|
+
" .unwrap_or_err()\n",
|
|
33
|
+
")\n",
|
|
34
|
+
"fig, (ax1, ax2) = plot.two_axes(figsize=(12, 4))\n",
|
|
35
|
+
"_ = plot.lines(res.variables.iloc[:, :10], ax=ax1)\n",
|
|
36
|
+
"_ = plot.lines(res.fluxes.iloc[:, :10], ax=ax2)"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"cell_type": "code",
|
|
41
|
+
"execution_count": null,
|
|
42
|
+
"id": "97322ab1",
|
|
43
|
+
"metadata": {},
|
|
44
|
+
"outputs": [],
|
|
45
|
+
"source": []
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"metadata": {
|
|
49
|
+
"kernelspec": {
|
|
50
|
+
"display_name": "git-mxl-meta (3.13.12)",
|
|
51
|
+
"language": "python",
|
|
52
|
+
"name": "python3"
|
|
53
|
+
},
|
|
54
|
+
"language_info": {
|
|
55
|
+
"codemirror_mode": {
|
|
56
|
+
"name": "ipython",
|
|
57
|
+
"version": 3
|
|
58
|
+
},
|
|
59
|
+
"file_extension": ".py",
|
|
60
|
+
"mimetype": "text/x-python",
|
|
61
|
+
"name": "python",
|
|
62
|
+
"nbconvert_exporter": "python",
|
|
63
|
+
"pygments_lexer": "ipython3",
|
|
64
|
+
"version": "3.13.12"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"nbformat": 4,
|
|
68
|
+
"nbformat_minor": 5
|
|
69
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "code",
|
|
5
|
+
"execution_count": null,
|
|
6
|
+
"id": "6b8b849e",
|
|
7
|
+
"metadata": {},
|
|
8
|
+
"outputs": [],
|
|
9
|
+
"source": [
|
|
10
|
+
"from mxlmodels import Simulator, data, get_pfennig2024_synechocystis, plot\n",
|
|
11
|
+
"\n",
|
|
12
|
+
"dfs = data.pfennig2024.load()\n",
|
|
13
|
+
"\n",
|
|
14
|
+
"model = get_pfennig2024_synechocystis(\n",
|
|
15
|
+
" light_spectrum=dfs.light_spectrum,\n",
|
|
16
|
+
" light_spectrum_measure=dfs.light_spectrum_measure,\n",
|
|
17
|
+
" ocp_absorption=dfs.ocp_absorption_per_wavelength,\n",
|
|
18
|
+
" abs_coef=dfs.pigment_abs_coef_per_wavelength,\n",
|
|
19
|
+
" molar_masses=dfs.molar_masses,\n",
|
|
20
|
+
" ps_comp=dfs.ps_comp,\n",
|
|
21
|
+
" pigment_content=dfs.pigment_content,\n",
|
|
22
|
+
")\n",
|
|
23
|
+
"\n",
|
|
24
|
+
"res = Simulator(model).simulate(10).get_result().unwrap_or_err()\n",
|
|
25
|
+
"fig, ax = plot.lines(res.fluxes.loc[:, [\"vPS2\"]])"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"cell_type": "code",
|
|
30
|
+
"execution_count": null,
|
|
31
|
+
"id": "3e475022",
|
|
32
|
+
"metadata": {},
|
|
33
|
+
"outputs": [],
|
|
34
|
+
"source": []
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"metadata": {
|
|
38
|
+
"kernelspec": {
|
|
39
|
+
"display_name": "git-mxl-meta (3.13.12)",
|
|
40
|
+
"language": "python",
|
|
41
|
+
"name": "python3"
|
|
42
|
+
},
|
|
43
|
+
"language_info": {
|
|
44
|
+
"codemirror_mode": {
|
|
45
|
+
"name": "ipython",
|
|
46
|
+
"version": 3
|
|
47
|
+
},
|
|
48
|
+
"file_extension": ".py",
|
|
49
|
+
"mimetype": "text/x-python",
|
|
50
|
+
"name": "python",
|
|
51
|
+
"nbconvert_exporter": "python",
|
|
52
|
+
"pygments_lexer": "ipython3",
|
|
53
|
+
"version": "3.13.12"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"nbformat": 4,
|
|
57
|
+
"nbformat_minor": 5
|
|
58
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "code",
|
|
5
|
+
"execution_count": null,
|
|
6
|
+
"id": "5eb68a6a",
|
|
7
|
+
"metadata": {},
|
|
8
|
+
"outputs": [],
|
|
9
|
+
"source": [
|
|
10
|
+
"from mxlmodels import Simulator, get_poolman2000, plot\n",
|
|
11
|
+
"\n",
|
|
12
|
+
"res = Simulator(get_poolman2000()).simulate(10).get_result().unwrap_or_err()\n",
|
|
13
|
+
"\n",
|
|
14
|
+
"fig, (ax1, ax2) = plot.two_axes(figsize=(12, 6))\n",
|
|
15
|
+
"_ = plot.lines(res.variables.iloc[:, :10], ax=ax1)\n",
|
|
16
|
+
"_ = plot.lines(res.fluxes.iloc[:, :10], ax=ax2)"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"metadata": {
|
|
21
|
+
"language_info": {
|
|
22
|
+
"name": "python"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"nbformat": 4,
|
|
26
|
+
"nbformat_minor": 5
|
|
27
|
+
}
|