enzax 0.1.2__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.
Files changed (41) hide show
  1. enzax-0.1.2/.github/pull_request_template.md +7 -0
  2. enzax-0.1.2/.github/workflows/count-lines-of-code.yml +26 -0
  3. enzax-0.1.2/.github/workflows/lighthouserc.json +40 -0
  4. enzax-0.1.2/.github/workflows/release.yml +46 -0
  5. enzax-0.1.2/.github/workflows/run_tests.yml +42 -0
  6. enzax-0.1.2/.github/workflows/test_docs.yml +35 -0
  7. enzax-0.1.2/.gitignore +167 -0
  8. enzax-0.1.2/.pre-commit-config.yaml +15 -0
  9. enzax-0.1.2/.readthedocs.yaml +21 -0
  10. enzax-0.1.2/CODE_OF_CONDUCT.md +79 -0
  11. enzax-0.1.2/CONTRIBUTING.md +37 -0
  12. enzax-0.1.2/PKG-INFO +72 -0
  13. enzax-0.1.2/README.md +53 -0
  14. enzax-0.1.2/docs/accessibility.md +33 -0
  15. enzax-0.1.2/docs/api/kinetic_model.md +9 -0
  16. enzax-0.1.2/docs/api/mcmc.md +13 -0
  17. enzax-0.1.2/docs/api/rate_equations.md +12 -0
  18. enzax-0.1.2/docs/api/steady_state.md +7 -0
  19. enzax-0.1.2/docs/contributing.md +1 -0
  20. enzax-0.1.2/docs/getting_started.md +190 -0
  21. enzax-0.1.2/docs/index.md +11 -0
  22. enzax-0.1.2/mkdocs.yml +48 -0
  23. enzax-0.1.2/pdm.lock +1443 -0
  24. enzax-0.1.2/pyproject.toml +47 -0
  25. enzax-0.1.2/scripts/mcmc_demo.py +126 -0
  26. enzax-0.1.2/scripts/steady_state_demo.py +62 -0
  27. enzax-0.1.2/src/enzax/__init__.py +3 -0
  28. enzax-0.1.2/src/enzax/examples/linear.py +100 -0
  29. enzax-0.1.2/src/enzax/examples/methionine.py +515 -0
  30. enzax-0.1.2/src/enzax/kinetic_model.py +74 -0
  31. enzax-0.1.2/src/enzax/mcmc.py +184 -0
  32. enzax-0.1.2/src/enzax/parameters.py +58 -0
  33. enzax-0.1.2/src/enzax/rate_equation.py +19 -0
  34. enzax-0.1.2/src/enzax/rate_equations/__init__.py +19 -0
  35. enzax-0.1.2/src/enzax/rate_equations/drain.py +27 -0
  36. enzax-0.1.2/src/enzax/rate_equations/generalised_mwc.py +94 -0
  37. enzax-0.1.2/src/enzax/rate_equations/michaelis_menten.py +193 -0
  38. enzax-0.1.2/src/enzax/steady_state.py +63 -0
  39. enzax-0.1.2/tests/__init__.py +0 -0
  40. enzax-0.1.2/tests/test_examples.py +19 -0
  41. enzax-0.1.2/tests/test_rate_equations.py +116 -0
@@ -0,0 +1,7 @@
1
+
2
+ Checklist:
3
+
4
+ - [ ] tests pass
5
+ - [ ] `README.md` up to date
6
+ - [ ] docs up to date
7
+ - [ ] link to any relevant issues
@@ -0,0 +1,26 @@
1
+ name: Count Lines of Code
2
+
3
+ # Controls when the action will run. Triggers the workflow on push or pull request
4
+ # events but only for the main branch
5
+ on:
6
+ push:
7
+ branches: [ main ]
8
+ tags-ignore: '**'
9
+ pull_request:
10
+ branches: [ main ]
11
+
12
+ # A workflow run is made up of one or more jobs that can run sequentially or in parallel
13
+ jobs:
14
+ # This workflow contains a single job called "build"
15
+ cloc:
16
+ # The type of runner that the job will run on
17
+ runs-on: ubuntu-latest
18
+
19
+ # Steps represent a sequence of tasks that will be executed as part of the job
20
+ steps:
21
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
22
+ - uses: actions/checkout@v3
23
+
24
+ # Runs djdefi/cloc-action
25
+ - name: Count Lines of Code (cloc)
26
+ uses: djdefi/cloc-action@5
@@ -0,0 +1,40 @@
1
+ {
2
+ "ci": {
3
+ "collect": {
4
+ "staticDistDir": "./site/",
5
+ "settings": {
6
+ "skipAudits": [
7
+ "canonical"
8
+ ]
9
+ }
10
+ },
11
+ "assert": {
12
+ "assertions": {
13
+ "categories:performance": [
14
+ "error",
15
+ {
16
+ "minScore": 0.8
17
+ }
18
+ ],
19
+ "categories:accessibility": [
20
+ "error",
21
+ {
22
+ "minScore": 0.8
23
+ }
24
+ ],
25
+ "categories:best-practices": [
26
+ "error",
27
+ {
28
+ "minScore": 0.8
29
+ }
30
+ ],
31
+ "categories:seo": [
32
+ "error",
33
+ {
34
+ "minScore": 0.7
35
+ }
36
+ ]
37
+ }
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,46 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ # Sequence of patterns matched against refs/tags
6
+ tags:
7
+ - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
8
+
9
+ jobs:
10
+ release-build:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - uses: actions/setup-python@v5
17
+ with:
18
+ python-version: "3.12"
19
+
20
+ - name: build release distributions
21
+ run: |
22
+ python -m pip install pdm
23
+ pdm build
24
+
25
+ - name: upload windows dists
26
+ uses: actions/upload-artifact@v4
27
+ with:
28
+ name: release-dists
29
+ path: dist/
30
+
31
+ pypi-publish:
32
+ runs-on: ubuntu-latest
33
+ needs:
34
+ - release-build
35
+ permissions:
36
+ id-token: write
37
+
38
+ steps:
39
+ - name: Retrieve release distributions
40
+ uses: actions/download-artifact@v4
41
+ with:
42
+ name: release-dists
43
+ path: dist/
44
+
45
+ - name: Publish release distributions to PyPI
46
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,42 @@
1
+ name: Run tests
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - '**'
7
+ tags-ignore:
8
+ - '**'
9
+
10
+ jobs:
11
+ build:
12
+
13
+ runs-on: ${{ matrix.os }}
14
+
15
+ strategy:
16
+ matrix:
17
+ os: [ubuntu-latest, windows-latest]
18
+ python-version: [3.12]
19
+
20
+ steps:
21
+
22
+ - name: checkout code
23
+ uses: actions/checkout@v2
24
+
25
+ - name: Set up Python ${{ matrix.python-version }}
26
+ uses: actions/setup-python@v2
27
+ with:
28
+ python-version: ${{ matrix.python-version }}
29
+
30
+ - name: Install pdm
31
+ run: pip install pdm
32
+
33
+ - name: pre-commit checks
34
+ uses: pre-commit/action@v2.0.3
35
+
36
+ - name: Run tests
37
+ run: |
38
+ pdm install --dev
39
+ pdm run pytest tests --cov=src/enzax
40
+
41
+ - name: Upload coverage reports to Codecov
42
+ uses: codecov/codecov-action@v3
@@ -0,0 +1,35 @@
1
+ # This workflow tests whether the documentation builds correctly and runs a
2
+ # lighthouse audit.
3
+
4
+ name: Docs check
5
+
6
+ on:
7
+ push:
8
+ branches:
9
+ - '**'
10
+ tags-ignore:
11
+ - '**'
12
+
13
+ jobs:
14
+ docs:
15
+
16
+ runs-on: ubuntu-latest
17
+
18
+ steps:
19
+
20
+ - uses: actions/checkout@v4
21
+ - name: Set up Python 3.12
22
+ uses: actions/setup-python@v5
23
+ with:
24
+ python-version: 3.12
25
+ - name: install enzax with development packages
26
+ run: pip install -e .\[docs\]
27
+ - name: build docs with mkdocs
28
+ run: mkdocs build
29
+ - name: Audit with Lighthouse
30
+ uses: treosh/lighthouse-ci-action@v12
31
+ with:
32
+ configPath: ".github/workflows/lighthouserc.json"
33
+ temporaryPublicStorage: true
34
+ uploadArtifacts: true
35
+ runs: 3 # Multiple runs to reduce variance
enzax-0.1.2/.gitignore ADDED
@@ -0,0 +1,167 @@
1
+ .DS_Store
2
+
3
+ # scratchpads
4
+ scratch.md
5
+
6
+ # Byte-compiled / optimized / DLL files
7
+ __pycache__/
8
+ *.py[cod]
9
+ *$py.class
10
+
11
+ # C extensions
12
+ *.so
13
+
14
+ # Distribution / packaging
15
+ .Python
16
+ build/
17
+ develop-eggs/
18
+ dist/
19
+ downloads/
20
+ eggs/
21
+ .eggs/
22
+ lib/
23
+ lib64/
24
+ parts/
25
+ sdist/
26
+ var/
27
+ wheels/
28
+ share/python-wheels/
29
+ *.egg-info/
30
+ .installed.cfg
31
+ *.egg
32
+ MANIFEST
33
+
34
+ # PyInstaller
35
+ # Usually these files are written by a python script from a template
36
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
37
+ *.manifest
38
+ *.spec
39
+
40
+ # Installer logs
41
+ pip-log.txt
42
+ pip-delete-this-directory.txt
43
+
44
+ # Unit test / coverage reports
45
+ htmlcov/
46
+ .tox/
47
+ .nox/
48
+ .coverage
49
+ .coverage.*
50
+ .cache
51
+ nosetests.xml
52
+ coverage.xml
53
+ *.cover
54
+ *.py,cover
55
+ .hypothesis/
56
+ .pytest_cache/
57
+ cover/
58
+
59
+ # Translations
60
+ *.mo
61
+ *.pot
62
+
63
+ # Django stuff:
64
+ *.log
65
+ local_settings.py
66
+ db.sqlite3
67
+ db.sqlite3-journal
68
+
69
+ # Flask stuff:
70
+ instance/
71
+ .webassets-cache
72
+
73
+ # Scrapy stuff:
74
+ .scrapy
75
+
76
+ # Sphinx documentation
77
+ docs/_build/
78
+
79
+ # PyBuilder
80
+ .pybuilder/
81
+ target/
82
+
83
+ # Jupyter Notebook
84
+ .ipynb_checkpoints
85
+
86
+ # IPython
87
+ profile_default/
88
+ ipython_config.py
89
+
90
+ # pyenv
91
+ # For a library or package, you might want to ignore these files since the code is
92
+ # intended to run in multiple environments; otherwise, check them in:
93
+ # .python-version
94
+
95
+ # pipenv
96
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
97
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
98
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
99
+ # install all needed dependencies.
100
+ #Pipfile.lock
101
+
102
+ # poetry
103
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
104
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
105
+ # commonly ignored for libraries.
106
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
107
+ #poetry.lock
108
+
109
+ # pdm
110
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
111
+ #pdm.lock
112
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
113
+ # in version control.
114
+ # https://pdm-project.org/#use-with-ide
115
+ .pdm.toml
116
+ .pdm-python
117
+ .pdm-build/
118
+
119
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
120
+ __pypackages__/
121
+
122
+ # Celery stuff
123
+ celerybeat-schedule
124
+ celerybeat.pid
125
+
126
+ # SageMath parsed files
127
+ *.sage.py
128
+
129
+ # Environments
130
+ .env
131
+ .venv
132
+ env/
133
+ venv/
134
+ ENV/
135
+ env.bak/
136
+ venv.bak/
137
+
138
+ # Spyder project settings
139
+ .spyderproject
140
+ .spyproject
141
+
142
+ # Rope project settings
143
+ .ropeproject
144
+
145
+ # mkdocs documentation
146
+ /site
147
+
148
+ # mypy
149
+ .mypy_cache/
150
+ .dmypy.json
151
+ dmypy.json
152
+
153
+ # Pyre type checker
154
+ .pyre/
155
+
156
+ # pytype static type analyzer
157
+ .pytype/
158
+
159
+ # Cython debug symbols
160
+ cython_debug/
161
+
162
+ # PyCharm
163
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
164
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
165
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
166
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
167
+ #.idea/
@@ -0,0 +1,15 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v4.6.0
4
+ hooks:
5
+ - id: check-yaml
6
+ - id: end-of-file-fixer
7
+ - id: trailing-whitespace
8
+ - repo: https://github.com/astral-sh/ruff-pre-commit
9
+ # Ruff version.
10
+ rev: v0.6.0
11
+ hooks:
12
+ # Run the linter.
13
+ - id: ruff
14
+ # Run the formatter.
15
+ - id: ruff-format
@@ -0,0 +1,21 @@
1
+ # Read the Docs configuration file for MkDocs projects
2
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
3
+ # Required
4
+
5
+ version: 2
6
+
7
+ # Set the version of Python and other tools you might need
8
+ build:
9
+ os: ubuntu-22.04
10
+ tools:
11
+ python: "3.12"
12
+
13
+ mkdocs:
14
+ configuration: mkdocs.yml
15
+
16
+ python:
17
+ install:
18
+ - method: "pip"
19
+ path: .
20
+ extra_requirements:
21
+ - docs
@@ -0,0 +1,79 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
6
+
7
+ We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
8
+
9
+ ## Our Standards
10
+
11
+ Examples of behaviour that contributes to a positive environment for our community include:
12
+
13
+ * Demonstrating empathy and kindness toward other people
14
+ * Being respectful of differing opinions, viewpoints, and experiences
15
+ * Giving and gracefully accepting constructive feedback
16
+ * Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
17
+ * Focusing on what is best not just for us as individuals, but for the overall community
18
+
19
+ Examples of unacceptable behaviour include:
20
+
21
+ * The use of sexualized language or imagery, and sexual attention or advances of any kind
22
+ * Trolling, insulting or derogatory comments, and personal or political attacks
23
+ * Public or private harassment
24
+ * Publishing others' private information, such as a physical or email address, without their explicit permission
25
+ * Other conduct which could reasonably be considered inappropriate in a professional setting
26
+
27
+ ## Enforcement Responsibilities
28
+
29
+ Community leaders are responsible for clarifying and enforcing our standards of acceptable behaviour and will take appropriate and fair corrective action in response to any behaviour that they deem inappropriate, threatening, offensive, or harmful.
30
+
31
+ Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
32
+
33
+ ## Scope
34
+
35
+ This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
36
+
37
+ ## Enforcement
38
+
39
+ Instances of abusive, harassing, or otherwise unacceptable behaviour may be reported to the community leaders responsible for enforcement at tedgro@biosustain.dtu.dk. All complaints will be reviewed and investigated promptly and fairly.
40
+
41
+ All community leaders are obligated to respect the privacy and security of the reporter of any incident.
42
+
43
+ ## Enforcement Guidelines
44
+
45
+ Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
46
+
47
+ ### 1. Correction
48
+
49
+ **Community Impact**: Use of inappropriate language or other behaviour deemed unprofessional or unwelcome in the community.
50
+
51
+ **Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behaviour was inappropriate. A public apology may be requested.
52
+
53
+ ### 2. Warning
54
+
55
+ **Community Impact**: A violation through a single incident or series of actions.
56
+
57
+ **Consequence**: A warning with consequences for continued behaviour. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
58
+
59
+ ### 3. Temporary Ban
60
+
61
+ **Community Impact**: A serious violation of community standards, including sustained inappropriate behaviour.
62
+
63
+ **Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
64
+
65
+ ### 4. Permanent Ban
66
+
67
+ **Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behaviour, harassment of an individual, or aggression toward or disparagement of classes of individuals.
68
+
69
+ **Consequence**: A permanent ban from any sort of public interaction within the community.
70
+
71
+ ## Attribution
72
+
73
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
74
+
75
+ Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
76
+
77
+ [homepage]: https://www.contributor-covenant.org
78
+
79
+ For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.
@@ -0,0 +1,37 @@
1
+ # How to contribute to enzax
2
+
3
+ All contributions are very welcome!
4
+
5
+ Make sure to read the [code of conduct](https://github.com/dtu-qmcm/CODE_OF_CONDUCT.md) and follow its recommendations.
6
+
7
+ If you have a specific suggestion for how enzax could be improved, or if you find a bug then please file an issue or submit a pull request.
8
+
9
+ Alternatively, if you have any more general thoughts or questions, please post them in the [discussions page](https://github.com/dtu-qmcmc/enzax/discussions).
10
+
11
+ If you would like to contribute code changes, just follow the normal [GitHub workflow](https://docs.github.com/en/get-started/quickstart/github-flow): make a local branch with the changes then create a pull request.
12
+
13
+ ## Developing enzax locally
14
+
15
+ To develop enzax locally you will probably need to install it with development dependencies. Here is how to do so:
16
+
17
+ ```sh
18
+ $ pip install enzax'[dev]'
19
+ ```
20
+
21
+ You can see what these dependencies are by checking the `[tool.pdm.dev-dependencies]` table in enzax's [`pyproject.toml` file](https://github.com/dtu-qmcm/enzax/blob/main/pyproject.toml).
22
+
23
+ ## Releasing new versions of enzax
24
+
25
+ To release a new version of enzax, edit the field `version` in `pyproject.toml`, e.g. to `0.2.1` then make a pull request with this change.
26
+
27
+ Once the changes are merged into the `origin/main` branch, add a tag whose name begins with `v`, followed by the new version number to your local `main` branch, for example like this:
28
+
29
+ ```sh
30
+ $ git tag v0.2.1
31
+ ```
32
+
33
+ Now push the new tag to GitHub:
34
+
35
+ ```sh
36
+ $ git push origin "v0.2.1"
37
+ ```
enzax-0.1.2/PKG-INFO ADDED
@@ -0,0 +1,72 @@
1
+ Metadata-Version: 2.3
2
+ Name: enzax
3
+ Version: 0.1.2
4
+ Summary: Differentiable models of enzyme-catalysed reaction networks
5
+ Author-email: Teddy Groves <tedgro@dtu.dk>
6
+ License: MIT
7
+ Requires-Python: >=3.12
8
+ Requires-Dist: arviz>=0.19.0
9
+ Requires-Dist: blackjax>=1.2.1
10
+ Requires-Dist: diffrax>=0.6.0
11
+ Requires-Dist: jaxtyping>=0.2.31
12
+ Provides-Extra: docs
13
+ Requires-Dist: mkdocs-material>=9.5.32; extra == 'docs'
14
+ Requires-Dist: mkdocs>=1.6.0; extra == 'docs'
15
+ Requires-Dist: mkdocstrings-python>=1.10.8; extra == 'docs'
16
+ Requires-Dist: mkdocstrings>=0.25.2; extra == 'docs'
17
+ Requires-Dist: pymdown-extensions>=10.9; extra == 'docs'
18
+ Description-Content-Type: text/markdown
19
+
20
+ # Enzax
21
+
22
+ [![Tests](https://github.com/dtu-qmcm/enzax/actions/workflows/run_tests.yml/badge.svg)](https://github.com/dtu-qmcm/enzax/actions/workflows/run_tests.yml)
23
+ [![Project Status: WIP – Initial development is in progress, but there has not yet been a stable, usable release suitable for the public.](https://www.repostatus.org/badges/latest/wip.svg)](https://www.repostatus.org/#wip)
24
+ [![Supported Python versions: 3.12 and newer](https://img.shields.io/badge/python->=3.12-blue.svg)](https://www.python.org/)
25
+ [![Documentation Status](https://readthedocs.org/projects/enzax/badge/?version=latest)](https://enzax.readthedocs.io/en/latest/?badge=latest)
26
+
27
+ Enzax is a library of automatically differentiable equations and solvers for modelling networks of enzyme-catalysed reactions, written in [JAX](https://jax.readthedocs.io/en/latest/).
28
+
29
+ Enzax provides straightforward, fast and interoperable access to the gradients of realistic metabolic network models, allowing you to incorporate these models in your MCMC and machine learning algorithms when you want to, for example, predict the effect of down-regulating an enzyme on the yield of a fermentation experiment.
30
+
31
+ ## Installation
32
+
33
+ ```sh
34
+ pip install enzax
35
+ ```
36
+
37
+ ## Usage
38
+
39
+ ### Find a kinetic model's steady state
40
+
41
+ ```python
42
+ from enzax.examples import methionine
43
+ from enzax.steady_state import get_kinetic_model_steady_state
44
+ from jax import numpy as jnp
45
+
46
+ guess = jnp.full((5,) 0.01)
47
+
48
+ steady_state = get_kinetic_model_steady_state(methionine.model, guess)
49
+ ```
50
+
51
+ ### Find a steady state's Jacobian with respect to all parameters
52
+
53
+ ```python
54
+ import jax
55
+ from enzax.examples import methionine
56
+ from enzax.steady_state import get_kinetic_model_steady_state
57
+ from jax import numpy as jnp
58
+ from jaxtyping import PyTree
59
+
60
+ guess = jnp.full((5,) 0.01)
61
+ model = methionine.model
62
+
63
+ def get_steady_state_from_params(parameters: PyTree):
64
+ """Get the steady state with a one-argument non-pure function."""
65
+ _model = RateEquationModel(
66
+ parameters, model.structure, model.rate_equations
67
+ )
68
+ return get_kinetic_model_steady_state(_model, guess)
69
+
70
+ jacobian = jax.jacrev(get_steady_state_from_params)(model.parameters)
71
+
72
+ ```
enzax-0.1.2/README.md ADDED
@@ -0,0 +1,53 @@
1
+ # Enzax
2
+
3
+ [![Tests](https://github.com/dtu-qmcm/enzax/actions/workflows/run_tests.yml/badge.svg)](https://github.com/dtu-qmcm/enzax/actions/workflows/run_tests.yml)
4
+ [![Project Status: WIP – Initial development is in progress, but there has not yet been a stable, usable release suitable for the public.](https://www.repostatus.org/badges/latest/wip.svg)](https://www.repostatus.org/#wip)
5
+ [![Supported Python versions: 3.12 and newer](https://img.shields.io/badge/python->=3.12-blue.svg)](https://www.python.org/)
6
+ [![Documentation Status](https://readthedocs.org/projects/enzax/badge/?version=latest)](https://enzax.readthedocs.io/en/latest/?badge=latest)
7
+
8
+ Enzax is a library of automatically differentiable equations and solvers for modelling networks of enzyme-catalysed reactions, written in [JAX](https://jax.readthedocs.io/en/latest/).
9
+
10
+ Enzax provides straightforward, fast and interoperable access to the gradients of realistic metabolic network models, allowing you to incorporate these models in your MCMC and machine learning algorithms when you want to, for example, predict the effect of down-regulating an enzyme on the yield of a fermentation experiment.
11
+
12
+ ## Installation
13
+
14
+ ```sh
15
+ pip install enzax
16
+ ```
17
+
18
+ ## Usage
19
+
20
+ ### Find a kinetic model's steady state
21
+
22
+ ```python
23
+ from enzax.examples import methionine
24
+ from enzax.steady_state import get_kinetic_model_steady_state
25
+ from jax import numpy as jnp
26
+
27
+ guess = jnp.full((5,) 0.01)
28
+
29
+ steady_state = get_kinetic_model_steady_state(methionine.model, guess)
30
+ ```
31
+
32
+ ### Find a steady state's Jacobian with respect to all parameters
33
+
34
+ ```python
35
+ import jax
36
+ from enzax.examples import methionine
37
+ from enzax.steady_state import get_kinetic_model_steady_state
38
+ from jax import numpy as jnp
39
+ from jaxtyping import PyTree
40
+
41
+ guess = jnp.full((5,) 0.01)
42
+ model = methionine.model
43
+
44
+ def get_steady_state_from_params(parameters: PyTree):
45
+ """Get the steady state with a one-argument non-pure function."""
46
+ _model = RateEquationModel(
47
+ parameters, model.structure, model.rate_equations
48
+ )
49
+ return get_kinetic_model_steady_state(_model, guess)
50
+
51
+ jacobian = jax.jacrev(get_steady_state_from_params)(model.parameters)
52
+
53
+ ```
@@ -0,0 +1,33 @@
1
+ # Accessibility
2
+
3
+ The enzax developers want as many people as possible to be able to use this
4
+ website. For example, that means you should be able to:
5
+
6
+ - change colours, contrast levels and fonts
7
+
8
+ - zoom in up to 300% without the text spilling off the screen
9
+
10
+ - navigate most of the website using just a keyboard
11
+
12
+ - navigate most of the website using speech recognition software
13
+
14
+ - listen to most of the website using a screen reader
15
+
16
+ - We’ve also made the website text as simple as possible to understand.
17
+
18
+ ## How accessible this website is
19
+
20
+ We test the website's accessibility using [Lighthouse](https://developer.chrome.com/docs/lighthouse/overview/). Check out the latest results [here](https://github.com/dtu-qmcm/enzax/actions/workflows/test_docs.yml).
21
+
22
+ ## Feedback and contact information
23
+
24
+ If you need information on this website in a different format like accessible
25
+ PDF, large print, easy read, audio recording or braille, please contact us by
26
+ [email](mailto:groves.teddy@gmail.com) or raise an issue on the [enzax GitHub repository](https://github.com/dtu-qmcm/enzax/).
27
+
28
+ ## Reporting accessibility problems with this website
29
+
30
+ We’re always looking to improve the accessibility of this website. If you find
31
+ any problems not listed on this page or think we’re not meeting accessibility
32
+ requirements, contact us by [email](mailto:groves.teddy@gmail.com) or raise
33
+ an issue on our [GitHub repository](https://github.com/dtu-qmcm/enzax/).