mxlmodels 1.1.0__tar.gz → 1.3.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.3.0/.editorconfig +19 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/.github/dependabot.yml +1 -1
- mxlmodels-1.3.0/.github/workflows/release.yml +166 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/.github/workflows/tests.yml +2 -2
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/.gitignore +7 -5
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/PKG-INFO +3 -1
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/README.md +2 -0
- mxlmodels-1.3.0/docs/_dynamic_enterobactin.ipynb +153 -0
- mxlmodels-1.1.0/docs/pop_dyn.ipynb → mxlmodels-1.3.0/docs/_population_dynamics.ipynb +1 -3
- mxlmodels-1.1.0/docs/trip_dyn.ipynb → mxlmodels-1.3.0/docs/_tripartite_dynamics.ipynb +1 -3
- mxlmodels-1.3.0/docs/davis2017.ipynb +321 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/docs/ebeling2026.ipynb +15 -5
- mxlmodels-1.1.0/docs/saadat2021.ipynb → mxlmodels-1.3.0/docs/ebenhoeh2014.ipynb +2 -4
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/docs/elowitz2000_repressilator.ipynb +1 -3
- mxlmodels-1.3.0/docs/fvcb.ipynb +326 -0
- mxlmodels-1.3.0/docs/hahn1987.ipynb +197 -0
- mxlmodels-1.3.0/docs/index.md +8 -0
- mxlmodels-1.3.0/docs/lazar1997.ipynb +112 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/docs/lotka_volterra.ipynb +1 -3
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/docs/matuszynska2016_npq.ipynb +15 -5
- mxlmodels-1.3.0/docs/matuszynska2016_phd.ipynb +53 -0
- mxlmodels-1.3.0/docs/matuszynska2019.ipynb +61 -0
- mxlmodels-1.3.0/docs/nguyen2026_tomato.ipynb +125 -0
- mxlmodels-1.3.0/docs/pfennig2024_synechocystis.ipynb +234 -0
- mxlmodels-1.3.0/docs/poolman2000.ipynb +89 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/docs/prigogine1968_brusselator.ipynb +1 -3
- mxlmodels-1.3.0/docs/saadat2021.ipynb +53 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/docs/selkov1968_oscillator.ipynb +1 -3
- mxlmodels-1.3.0/docs/stylesheets/extra.css +3 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/docs/yokota1985.ipynb +1 -3
- mxlmodels-1.3.0/docs/zhu_2009.ipynb +141 -0
- mxlmodels-1.3.0/mkdocs.yml +81 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/pyproject.toml +7 -6
- mxlmodels-1.3.0/src/mxlmodels/__init__.py +74 -0
- mxlmodels-1.3.0/src/mxlmodels/_dynamic_enterobactin.py +183 -0
- mxlmodels-1.3.0/src/mxlmodels/_names.py +235 -0
- mxlmodels-1.1.0/src/mxlmodels/pop_dyn.py → mxlmodels-1.3.0/src/mxlmodels/_population_dynamics.py +1 -1
- mxlmodels-1.1.0/src/mxlmodels/trip_dyn.py → mxlmodels-1.3.0/src/mxlmodels/_tripartite_dynamics.py +1 -1
- mxlmodels-1.3.0/src/mxlmodels/bellasio2019.py +1168 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/__init__.py +13 -1
- mxlmodels-1.3.0/src/mxlmodels/davis2017.py +560 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/ebeling2026.py +10 -2
- mxlmodels-1.3.0/src/mxlmodels/ebenhoeh2014.py +789 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/elowitz2000_repressilator.py +10 -6
- mxlmodels-1.3.0/src/mxlmodels/fuente2024.py +742 -0
- mxlmodels-1.3.0/src/mxlmodels/hahn1987.py +430 -0
- mxlmodels-1.3.0/src/mxlmodels/lazar1997.py +359 -0
- mxlmodels-1.3.0/src/mxlmodels/li2021.py +978 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/lotka_volterra_v1.py +12 -2
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/lotka_volterra_v2.py +12 -2
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/matuszynska2016_npq.py +9 -4
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/matuszynska2016_phd.py +10 -5
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/matuszynska2019.py +9 -4
- mxlmodels-1.3.0/src/mxlmodels/nguyen2026_tomato.py +1212 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/pfennig2024_synechocystis.py +9 -7
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/poolman2000.py +10 -6
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/prigogine1968_brusselator.py +8 -5
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/saadat2021.py +9 -4
- mxlmodels-1.1.0/src/mxlmodels/selkov1968_glycolysis_oscillator.py → mxlmodels-1.3.0/src/mxlmodels/selkov1968_oscillator.py +8 -5
- mxlmodels-1.3.0/src/mxlmodels/sir.py +56 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/yokota1985.py +9 -4
- mxlmodels-1.3.0/src/mxlmodels/zhu2009.py +128 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_dynamic_enterobactin.py +6 -1
- mxlmodels-1.3.0/tests/test_ebenhoeh2014.py +24 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_import.py +1 -0
- mxlmodels-1.3.0/tests/test_nguyen2026_tomato.py +29 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_pfennig2024_synechocystis.py +1 -1
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/uv.lock +333 -329
- mxlmodels-1.1.0/.github/workflows/docs.yml +0 -43
- mxlmodels-1.1.0/.github/workflows/python-publish.yml +0 -55
- mxlmodels-1.1.0/.github/workflows/release-to-slack.yml +0 -77
- mxlmodels-1.1.0/docs/matuszynska2016_phd.ipynb +0 -29
- mxlmodels-1.1.0/docs/matuszynska2019.ipynb +0 -35
- mxlmodels-1.1.0/docs/pfennig2024-synechocystis.ipynb +0 -61
- mxlmodels-1.1.0/docs/poolman2000.ipynb +0 -29
- mxlmodels-1.1.0/src/mxlmodels/__init__.py +0 -46
- mxlmodels-1.1.0/src/mxlmodels/dyn_entro.py +0 -184
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/.gitattributes +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/.github/ISSUE_TEMPLATE/discussion.md +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/.pre-commit-config.yaml +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/.python-version +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/.vscode/settings.json +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/CONTRIBUTING.md +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/LICENSE +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/SECURITY.md +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/docs/assets/logo.png +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/__init__.py +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/lights/README.md +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/lights/cool_white_led.csv +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/lights/fluorescent_lamp.csv +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/lights/halogen_lamp.csv +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/lights/incandescent_bulb.csv +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/lights/solar.csv +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/lights/warm_white_led.csv +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/ocp_absorption.csv +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/per_pigment/README.md +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/per_pigment/allophycocyanin.csv +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/per_pigment/beta_carotene.csv +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/per_pigment/chla.csv +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/per_pigment/phycocyanin.csv +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/photosystem_composition.csv +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/data/pfennig2024/pigment_concentrations.csv +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/src/mxlmodels/py.typed +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/__init__.py +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_ebeling_2026.py +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_elowitz2000_repressilator.py +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_lotka_volterra_v1.py +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_lotka_volterra_v2.py +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_matuszynska2016_npq.py +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_matuszynska2016_phd.py +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_matuszynska2019.py +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_poolman2000.py +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_population_dynamics.py +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_prigogine1968_brusselator.py +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_saadat2021.py +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_selkov1968_glycolysis_oscillator.py +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_tripartite_dynamics.py +0 -0
- {mxlmodels-1.1.0 → mxlmodels-1.3.0}/tests/test_yokota1985.py +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
# Unix-style newlines with a newline ending every file
|
|
3
|
+
[*]
|
|
4
|
+
end_of_line = lf
|
|
5
|
+
insert_final_newline = true
|
|
6
|
+
|
|
7
|
+
# Matches multiple files with brace expansion notation
|
|
8
|
+
# Set default charset
|
|
9
|
+
[*.{js,py}]
|
|
10
|
+
charset = utf-8
|
|
11
|
+
|
|
12
|
+
# 4 space indentation
|
|
13
|
+
[*.py]
|
|
14
|
+
indent_style = space
|
|
15
|
+
indent_size = 4
|
|
16
|
+
|
|
17
|
+
[.toml]
|
|
18
|
+
indent_style = space
|
|
19
|
+
indent_size = 2
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
name: Upload Python Package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
workflow_dispatch: {}
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
build-documentation:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
permissions:
|
|
15
|
+
contents: write
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v6
|
|
18
|
+
with:
|
|
19
|
+
fetch-depth: 0 # fetch all commits/branches
|
|
20
|
+
|
|
21
|
+
- name: Configure Git Credentials
|
|
22
|
+
run: |
|
|
23
|
+
git config user.name github-actions[bot]
|
|
24
|
+
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
|
25
|
+
|
|
26
|
+
- name: Install uv
|
|
27
|
+
uses: astral-sh/setup-uv@v8.2.0
|
|
28
|
+
|
|
29
|
+
- name: Set up Python
|
|
30
|
+
run: uv python install 3.12
|
|
31
|
+
|
|
32
|
+
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
|
|
33
|
+
- uses: actions/cache@v5
|
|
34
|
+
with:
|
|
35
|
+
key: mkdocs-material-${{ env.cache_id }}
|
|
36
|
+
path: .cache
|
|
37
|
+
restore-keys: |
|
|
38
|
+
mkdocs-material-
|
|
39
|
+
|
|
40
|
+
- run: uv sync --all-extras --all-groups
|
|
41
|
+
- run: uv run python -c "import toml;print('VERSION={}'.format(toml.load(open('pyproject.toml'))['project']['version']))" >> $GITHUB_ENV
|
|
42
|
+
- run: uv run mike deploy --update-aliases --push ${{ env.VERSION }} latest
|
|
43
|
+
- run: uv run mike set-default --push latest
|
|
44
|
+
|
|
45
|
+
build-release:
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
steps:
|
|
48
|
+
- uses: actions/checkout@v6
|
|
49
|
+
|
|
50
|
+
- name: Install uv
|
|
51
|
+
uses: astral-sh/setup-uv@v8.2.0
|
|
52
|
+
|
|
53
|
+
- name: Set up Python
|
|
54
|
+
run: uv python install 3.13
|
|
55
|
+
|
|
56
|
+
- name: Set Python version
|
|
57
|
+
run: uv venv --python 3.13
|
|
58
|
+
|
|
59
|
+
- name: Build release distribution
|
|
60
|
+
run: uv build
|
|
61
|
+
|
|
62
|
+
- name: Upload distributions
|
|
63
|
+
uses: actions/upload-artifact@v7
|
|
64
|
+
with:
|
|
65
|
+
name: release-dists
|
|
66
|
+
path: dist/
|
|
67
|
+
|
|
68
|
+
pypi-publish:
|
|
69
|
+
runs-on: ubuntu-latest
|
|
70
|
+
needs:
|
|
71
|
+
- build-release
|
|
72
|
+
- build-documentation
|
|
73
|
+
permissions:
|
|
74
|
+
id-token: write
|
|
75
|
+
|
|
76
|
+
environment:
|
|
77
|
+
name: pypi
|
|
78
|
+
|
|
79
|
+
steps:
|
|
80
|
+
- name: Retrieve release distributions
|
|
81
|
+
uses: actions/download-artifact@v8
|
|
82
|
+
with:
|
|
83
|
+
name: release-dists
|
|
84
|
+
path: dist/
|
|
85
|
+
|
|
86
|
+
- name: Publish release distributions to PyPI
|
|
87
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
88
|
+
with:
|
|
89
|
+
packages-dir: dist/
|
|
90
|
+
|
|
91
|
+
notify-slack:
|
|
92
|
+
runs-on: ubuntu-latest
|
|
93
|
+
needs:
|
|
94
|
+
- pypi-publish
|
|
95
|
+
|
|
96
|
+
# github.event.release.* not populated if run via
|
|
97
|
+
# workflow_dispatch
|
|
98
|
+
if: github.event_name == 'release'
|
|
99
|
+
|
|
100
|
+
steps:
|
|
101
|
+
- name: Send release notification to Slack
|
|
102
|
+
env:
|
|
103
|
+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
104
|
+
RELEASE_NAME: ${{ github.event.release.name }}
|
|
105
|
+
RELEASE_TAG: ${{ github.event.release.tag_name }}
|
|
106
|
+
RELEASE_BODY: ${{ github.event.release.body }}
|
|
107
|
+
RELEASE_URL: ${{ github.event.release.html_url }}
|
|
108
|
+
REPO: ${{ github.repository }}
|
|
109
|
+
run: |
|
|
110
|
+
payload=$(jq -n \
|
|
111
|
+
--arg text "*New Release Published* :tada:" \
|
|
112
|
+
--arg repo "$REPO" \
|
|
113
|
+
--arg name "$RELEASE_NAME" \
|
|
114
|
+
--arg tag "$RELEASE_TAG" \
|
|
115
|
+
--arg body "$RELEASE_BODY" \
|
|
116
|
+
--arg url "$RELEASE_URL" \
|
|
117
|
+
'{
|
|
118
|
+
text: $text,
|
|
119
|
+
blocks: [
|
|
120
|
+
{
|
|
121
|
+
type: "section",
|
|
122
|
+
text: {
|
|
123
|
+
type: "mrkdwn",
|
|
124
|
+
text: "*New Release Published* :tada:"
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: "section",
|
|
129
|
+
fields: [
|
|
130
|
+
{ type: "mrkdwn", text: "*Repository:*\n\($repo)" },
|
|
131
|
+
{ type: "mrkdwn", text: "*Tag:*\n\($tag)" }
|
|
132
|
+
]
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: "section",
|
|
136
|
+
text: {
|
|
137
|
+
type: "mrkdwn",
|
|
138
|
+
text: "*Release:*\n\($name)"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
type: "section",
|
|
143
|
+
text: {
|
|
144
|
+
type: "mrkdwn",
|
|
145
|
+
text: "*Notes:*\n\($body)"
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
type: "actions",
|
|
150
|
+
elements: [
|
|
151
|
+
{
|
|
152
|
+
type: "button",
|
|
153
|
+
text: {
|
|
154
|
+
type: "plain_text",
|
|
155
|
+
text: "View Release"
|
|
156
|
+
},
|
|
157
|
+
url: $url
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
}
|
|
161
|
+
]
|
|
162
|
+
}')
|
|
163
|
+
|
|
164
|
+
curl -X POST -H 'Content-type: application/json' \
|
|
165
|
+
--data "$payload" \
|
|
166
|
+
"$SLACK_WEBHOOK_URL"
|
|
@@ -12,10 +12,10 @@ jobs:
|
|
|
12
12
|
default-tests:
|
|
13
13
|
runs-on: ubuntu-latest
|
|
14
14
|
steps:
|
|
15
|
-
- uses: actions/checkout@
|
|
15
|
+
- uses: actions/checkout@v6
|
|
16
16
|
|
|
17
17
|
- name: Install uv
|
|
18
|
-
uses: astral-sh/setup-uv@
|
|
18
|
+
uses: astral-sh/setup-uv@v8.2.0
|
|
19
19
|
|
|
20
20
|
- name: Set up Python
|
|
21
21
|
run: uv python install 3.13
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# temporary files and folders
|
|
2
|
+
papers/
|
|
3
|
+
*temp*
|
|
4
|
+
tmp
|
|
5
|
+
src/mxlbricks
|
|
6
|
+
src/mxlweb
|
|
7
|
+
|
|
1
8
|
# Byte-compiled / optimized / DLL files
|
|
2
9
|
__pycache__/
|
|
3
10
|
*.py[cod]
|
|
@@ -102,11 +109,6 @@ venv.bak/
|
|
|
102
109
|
# mypy
|
|
103
110
|
.mypy_cache/
|
|
104
111
|
|
|
105
|
-
# temporary files and folders
|
|
106
|
-
*temp*
|
|
107
|
-
tmp
|
|
108
|
-
src/mxlbricks
|
|
109
|
-
src/mxlweb
|
|
110
112
|
|
|
111
113
|
# pixi environments
|
|
112
114
|
.pixi
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mxlmodels
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.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>
|
|
@@ -55,6 +55,8 @@ Done. Simple as that.
|
|
|
55
55
|
| Matuszyńska 2019 | Merges PETC (Ebenhöh 2014), NPQ (Matuszynska 2016) and CBB (Poolman 2000) |
|
|
56
56
|
| Saadat 2021 | 2019 + Mehler (Valero ?) & Thioredoxin & extendend PSI states & consumption |
|
|
57
57
|
| Ebeling 2026 | unpublishd |
|
|
58
|
+
| Hahn 1987 | Photosynthesis and Photorespiration |
|
|
59
|
+
| Lazar 1997 | Fluorescence induction |
|
|
58
60
|
|
|
59
61
|
|
|
60
62
|
## Tool family 🏠
|
|
@@ -28,6 +28,8 @@ Done. Simple as that.
|
|
|
28
28
|
| Matuszyńska 2019 | Merges PETC (Ebenhöh 2014), NPQ (Matuszynska 2016) and CBB (Poolman 2000) |
|
|
29
29
|
| Saadat 2021 | 2019 + Mehler (Valero ?) & Thioredoxin & extendend PSI states & consumption |
|
|
30
30
|
| Ebeling 2026 | unpublishd |
|
|
31
|
+
| Hahn 1987 | Photosynthesis and Photorespiration |
|
|
32
|
+
| Lazar 1997 | Fluorescence induction |
|
|
31
33
|
|
|
32
34
|
|
|
33
35
|
## Tool family 🏠
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "markdown",
|
|
5
|
+
"id": "8616db3a",
|
|
6
|
+
"metadata": {},
|
|
7
|
+
"source": [
|
|
8
|
+
"# Race for iron: shaping tripartite community\n",
|
|
9
|
+
"\n",
|
|
10
|
+
"This model was being developed collaboratively within the SFB MibiNet community to study how the structure of a synthetic microbial community is shaped by different siderophores"
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"cell_type": "code",
|
|
15
|
+
"execution_count": null,
|
|
16
|
+
"id": "c6f8d298",
|
|
17
|
+
"metadata": {},
|
|
18
|
+
"outputs": [],
|
|
19
|
+
"source": [
|
|
20
|
+
"import matplotlib.lines as mlines\n",
|
|
21
|
+
"import numpy as np\n",
|
|
22
|
+
"import pandas as pd\n",
|
|
23
|
+
"from matplotlib import colormaps\n",
|
|
24
|
+
"from matplotlib import pyplot as plt\n",
|
|
25
|
+
"from mxlpy import Simulator, plot, scan\n",
|
|
26
|
+
"\n",
|
|
27
|
+
"from mxlmodels import get_dynamic_enterobactin"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"cell_type": "code",
|
|
32
|
+
"execution_count": null,
|
|
33
|
+
"id": "40b6a58d",
|
|
34
|
+
"metadata": {},
|
|
35
|
+
"outputs": [],
|
|
36
|
+
"source": [
|
|
37
|
+
"_ = (\n",
|
|
38
|
+
" Simulator(get_dynamic_enterobactin())\n",
|
|
39
|
+
" .simulate(20)\n",
|
|
40
|
+
" .get_result()\n",
|
|
41
|
+
" .unwrap_or_err()\n",
|
|
42
|
+
" .variables.plot()\n",
|
|
43
|
+
")"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"cell_type": "code",
|
|
48
|
+
"execution_count": null,
|
|
49
|
+
"id": "35201750",
|
|
50
|
+
"metadata": {},
|
|
51
|
+
"outputs": [],
|
|
52
|
+
"source": [
|
|
53
|
+
"total_biomass = 0.11 # g/L\n",
|
|
54
|
+
"\n",
|
|
55
|
+
"res = scan.time_course(\n",
|
|
56
|
+
" get_dynamic_enterobactin(),\n",
|
|
57
|
+
" to_scan=pd.DataFrame(\n",
|
|
58
|
+
" [\n",
|
|
59
|
+
" (f * total_biomass, (1 - f) * total_biomass)\n",
|
|
60
|
+
" for f in np.linspace(0.05, 0.95, 19)\n",
|
|
61
|
+
" ],\n",
|
|
62
|
+
" columns=[\"x1\", \"x2\"],\n",
|
|
63
|
+
" ),\n",
|
|
64
|
+
" time_points=np.linspace(0, 20, 101),\n",
|
|
65
|
+
")"
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"cell_type": "code",
|
|
70
|
+
"execution_count": null,
|
|
71
|
+
"id": "07954d38",
|
|
72
|
+
"metadata": {},
|
|
73
|
+
"outputs": [],
|
|
74
|
+
"source": [
|
|
75
|
+
"fig, ax = plt.subplots(figsize=(6, 4))\n",
|
|
76
|
+
"res.variables[\"x1\"].unstack().T.plot(\n",
|
|
77
|
+
" ax=ax, lw=\"0.8\", alpha=0.3, color=\"green\", legend=False\n",
|
|
78
|
+
")\n",
|
|
79
|
+
"res.variables[\"x2\"].unstack().T.plot(\n",
|
|
80
|
+
" ax=ax, lw=\"0.8\", alpha=0.5, color=\"red\", legend=False\n",
|
|
81
|
+
")\n",
|
|
82
|
+
"res.variables[\"s1\"].unstack().T.plot(\n",
|
|
83
|
+
" ax=ax, lw=\"0.8\", alpha=0.5, color=\"black\", legend=False\n",
|
|
84
|
+
")\n",
|
|
85
|
+
"plot.add_grid(ax)\n",
|
|
86
|
+
"ax.legend(\n",
|
|
87
|
+
" handles=[\n",
|
|
88
|
+
" mlines.Line2D([], [], color=\"green\", label=\"x1\"),\n",
|
|
89
|
+
" mlines.Line2D([], [], color=\"red\", label=\"x2\"),\n",
|
|
90
|
+
" mlines.Line2D([], [], color=\"black\", label=\"s1\"),\n",
|
|
91
|
+
" ]\n",
|
|
92
|
+
")\n",
|
|
93
|
+
"ax.set(\n",
|
|
94
|
+
" title=\"\",\n",
|
|
95
|
+
" xlabel=\"time / h\",\n",
|
|
96
|
+
" ylabel=\"conc / (g / L)\",\n",
|
|
97
|
+
")\n",
|
|
98
|
+
"plt.show()"
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"cell_type": "code",
|
|
103
|
+
"execution_count": null,
|
|
104
|
+
"id": "d22b8f7e",
|
|
105
|
+
"metadata": {},
|
|
106
|
+
"outputs": [],
|
|
107
|
+
"source": [
|
|
108
|
+
"cmap = colormaps[\"RdYlGn_r\"]\n",
|
|
109
|
+
"colors = cmap(res.to_scan[\"x2\"] / res.to_scan.sum(axis=1))\n",
|
|
110
|
+
"\n",
|
|
111
|
+
"fig, (ax1, ax2) = plt.subplots(2, 1)\n",
|
|
112
|
+
"\n",
|
|
113
|
+
"ax = res.fluxes[\"mu1\"].unstack().T.plot(ax=ax1, color=colors, legend=False)\n",
|
|
114
|
+
"ax.set(\n",
|
|
115
|
+
" ylim=(0.0, 0.5),\n",
|
|
116
|
+
" xlabel=\"time / h\",\n",
|
|
117
|
+
" ylabel=\"growth rate e. coli / (1/h)\",\n",
|
|
118
|
+
")\n",
|
|
119
|
+
"plot.add_grid(ax)\n",
|
|
120
|
+
"\n",
|
|
121
|
+
"ax = res.fluxes[\"mu2\"].unstack().T.plot(ax=ax2, color=colors, legend=False)\n",
|
|
122
|
+
"ax.set(\n",
|
|
123
|
+
" ylim=(0.0, 0.5),\n",
|
|
124
|
+
" xlabel=\"time / h\",\n",
|
|
125
|
+
" ylabel=\"growth rate c. glut / (1/h)\",\n",
|
|
126
|
+
")\n",
|
|
127
|
+
"plot.add_grid(ax)\n",
|
|
128
|
+
"plt.show()"
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
],
|
|
132
|
+
"metadata": {
|
|
133
|
+
"kernelspec": {
|
|
134
|
+
"display_name": "git-mxl-meta (3.13.12)",
|
|
135
|
+
"language": "python",
|
|
136
|
+
"name": "python3"
|
|
137
|
+
},
|
|
138
|
+
"language_info": {
|
|
139
|
+
"codemirror_mode": {
|
|
140
|
+
"name": "ipython",
|
|
141
|
+
"version": 3
|
|
142
|
+
},
|
|
143
|
+
"file_extension": ".py",
|
|
144
|
+
"mimetype": "text/x-python",
|
|
145
|
+
"name": "python",
|
|
146
|
+
"nbconvert_exporter": "python",
|
|
147
|
+
"pygments_lexer": "ipython3",
|
|
148
|
+
"version": "3.13.12"
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"nbformat": 4,
|
|
152
|
+
"nbformat_minor": 5
|
|
153
|
+
}
|
|
@@ -7,9 +7,7 @@
|
|
|
7
7
|
"metadata": {},
|
|
8
8
|
"outputs": [],
|
|
9
9
|
"source": [
|
|
10
|
-
"from
|
|
11
|
-
"\n",
|
|
12
|
-
"from mxlmodels import get_population_dynamics\n",
|
|
10
|
+
"from mxlmodels import Simulator, get_population_dynamics, plot\n",
|
|
13
11
|
"\n",
|
|
14
12
|
"res = Simulator(get_population_dynamics()).simulate(1).get_result().unwrap_or_err()\n",
|
|
15
13
|
"\n",
|
|
@@ -7,9 +7,7 @@
|
|
|
7
7
|
"metadata": {},
|
|
8
8
|
"outputs": [],
|
|
9
9
|
"source": [
|
|
10
|
-
"from
|
|
11
|
-
"\n",
|
|
12
|
-
"from mxlmodels import get_tripartite_dynamics\n",
|
|
10
|
+
"from mxlmodels import Simulator, get_tripartite_dynamics, plot\n",
|
|
13
11
|
"\n",
|
|
14
12
|
"res = Simulator(get_tripartite_dynamics()).simulate(10).get_result().unwrap_or_err()\n",
|
|
15
13
|
"\n",
|