mxlpy 0.18.0__py3-none-any.whl → 0.20.0__py3-none-any.whl
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.
- mxlpy/__init__.py +13 -9
- mxlpy/compare.py +240 -0
- mxlpy/experimental/diff.py +16 -4
- mxlpy/fit.py +6 -11
- mxlpy/fns.py +37 -42
- mxlpy/identify.py +10 -3
- mxlpy/integrators/__init__.py +4 -3
- mxlpy/integrators/int_assimulo.py +16 -9
- mxlpy/integrators/int_scipy.py +13 -9
- mxlpy/label_map.py +7 -3
- mxlpy/linear_label_map.py +4 -2
- mxlpy/mc.py +5 -14
- mxlpy/mca.py +4 -4
- mxlpy/meta/__init__.py +6 -4
- mxlpy/meta/codegen_latex.py +180 -87
- mxlpy/meta/codegen_modebase.py +3 -1
- mxlpy/meta/codegen_py.py +11 -3
- mxlpy/meta/source_tools.py +9 -5
- mxlpy/model.py +187 -100
- mxlpy/nn/__init__.py +24 -5
- mxlpy/nn/_keras.py +92 -0
- mxlpy/nn/_torch.py +25 -18
- mxlpy/npe/__init__.py +21 -16
- mxlpy/npe/_keras.py +326 -0
- mxlpy/npe/_torch.py +56 -60
- mxlpy/parallel.py +5 -2
- mxlpy/parameterise.py +11 -3
- mxlpy/plot.py +205 -52
- mxlpy/report.py +33 -8
- mxlpy/sbml/__init__.py +3 -3
- mxlpy/sbml/_data.py +7 -6
- mxlpy/sbml/_export.py +8 -1
- mxlpy/sbml/_mathml.py +8 -7
- mxlpy/sbml/_name_conversion.py +5 -1
- mxlpy/scan.py +14 -19
- mxlpy/simulator.py +34 -31
- mxlpy/surrogates/__init__.py +25 -17
- mxlpy/surrogates/_keras.py +139 -0
- mxlpy/surrogates/_poly.py +25 -10
- mxlpy/surrogates/_qss.py +34 -0
- mxlpy/surrogates/_torch.py +50 -32
- mxlpy/symbolic/__init__.py +5 -3
- mxlpy/symbolic/strikepy.py +5 -2
- mxlpy/symbolic/symbolic_model.py +14 -5
- mxlpy/types.py +61 -120
- {mxlpy-0.18.0.dist-info → mxlpy-0.20.0.dist-info}/METADATA +25 -24
- mxlpy-0.20.0.dist-info/RECORD +55 -0
- mxlpy/nn/_tensorflow.py +0 -0
- mxlpy-0.18.0.dist-info/RECORD +0 -51
- {mxlpy-0.18.0.dist-info → mxlpy-0.20.0.dist-info}/WHEEL +0 -0
- {mxlpy-0.18.0.dist-info → mxlpy-0.20.0.dist-info}/licenses/LICENSE +0 -0
mxlpy/types.py
CHANGED
@@ -17,9 +17,13 @@ Classes:
|
|
17
17
|
from __future__ import annotations
|
18
18
|
|
19
19
|
from abc import abstractmethod
|
20
|
+
from collections.abc import Callable, Iterable, Iterator, Mapping
|
20
21
|
from dataclasses import dataclass, field
|
22
|
+
from typing import TYPE_CHECKING, Any, ParamSpec, Protocol, TypeVar, cast
|
21
23
|
|
24
|
+
import numpy as np
|
22
25
|
import pandas as pd
|
26
|
+
from numpy.typing import NDArray
|
23
27
|
|
24
28
|
__all__ = [
|
25
29
|
"AbstractEstimator",
|
@@ -27,7 +31,6 @@ __all__ = [
|
|
27
31
|
"Array",
|
28
32
|
"ArrayLike",
|
29
33
|
"Derived",
|
30
|
-
"Float",
|
31
34
|
"IntegratorProtocol",
|
32
35
|
"IntegratorType",
|
33
36
|
"McSteadyStates",
|
@@ -46,15 +49,7 @@ __all__ = [
|
|
46
49
|
"unwrap2",
|
47
50
|
]
|
48
51
|
|
49
|
-
|
50
|
-
from typing import TYPE_CHECKING, Any, ParamSpec, Protocol, TypeVar, cast
|
51
|
-
|
52
|
-
import numpy as np
|
53
|
-
import numpy.typing as npt
|
54
|
-
from numpy.typing import NDArray
|
55
|
-
|
56
|
-
type Float = npt.NDArray[np.floating[Any]] | float
|
57
|
-
type RateFn = Callable[..., Float]
|
52
|
+
type RateFn = Callable[..., float]
|
58
53
|
type Array = NDArray[np.floating[Any]]
|
59
54
|
type ArrayLike = NDArray[np.floating[Any]] | list[float]
|
60
55
|
|
@@ -159,7 +154,7 @@ class Derived:
|
|
159
154
|
fn: RateFn
|
160
155
|
args: list[str]
|
161
156
|
|
162
|
-
def calculate(self, dependent: dict[str,
|
157
|
+
def calculate(self, dependent: dict[str, Any]) -> float:
|
163
158
|
"""Calculate the derived value.
|
164
159
|
|
165
160
|
Args:
|
@@ -171,7 +166,7 @@ class Derived:
|
|
171
166
|
"""
|
172
167
|
return cast(float, self.fn(*(dependent[arg] for arg in self.args)))
|
173
168
|
|
174
|
-
def calculate_inpl(self, name: str, dependent: dict[str,
|
169
|
+
def calculate_inpl(self, name: str, dependent: dict[str, Any]) -> None:
|
175
170
|
"""Calculate the derived value in place.
|
176
171
|
|
177
172
|
Args:
|
@@ -181,20 +176,6 @@ class Derived:
|
|
181
176
|
"""
|
182
177
|
dependent[name] = cast(float, self.fn(*(dependent[arg] for arg in self.args)))
|
183
178
|
|
184
|
-
def calculate_inpl_time_course(self, name: str, dependent: pd.DataFrame) -> None:
|
185
|
-
"""Calculate the derived value in place.
|
186
|
-
|
187
|
-
Args:
|
188
|
-
name: Name of the derived variable.
|
189
|
-
dependent: Dictionary of dependent variables.
|
190
|
-
|
191
|
-
"""
|
192
|
-
try:
|
193
|
-
dependent[name] = self.fn(*dependent.loc[:, self.args].to_numpy().T)
|
194
|
-
except ValueError: # e.g. numpy.where
|
195
|
-
sub = dependent.loc[:, self.args].to_numpy()
|
196
|
-
dependent[name] = [self.fn(*row) for row in sub]
|
197
|
-
|
198
179
|
|
199
180
|
@dataclass(kw_only=True, slots=True)
|
200
181
|
class Readout:
|
@@ -203,7 +184,7 @@ class Readout:
|
|
203
184
|
fn: RateFn
|
204
185
|
args: list[str]
|
205
186
|
|
206
|
-
def calculate(self, dependent: dict[str,
|
187
|
+
def calculate(self, dependent: dict[str, Any]) -> float:
|
207
188
|
"""Calculate the derived value.
|
208
189
|
|
209
190
|
Args:
|
@@ -215,8 +196,8 @@ class Readout:
|
|
215
196
|
"""
|
216
197
|
return cast(float, self.fn(*(dependent[arg] for arg in self.args)))
|
217
198
|
|
218
|
-
def calculate_inpl(self, name: str, dependent: dict[str,
|
219
|
-
"""Calculate the
|
199
|
+
def calculate_inpl(self, name: str, dependent: dict[str, Any]) -> None:
|
200
|
+
"""Calculate the reaction in place.
|
220
201
|
|
221
202
|
Args:
|
222
203
|
name: Name of the derived variable.
|
@@ -225,20 +206,6 @@ class Readout:
|
|
225
206
|
"""
|
226
207
|
dependent[name] = cast(float, self.fn(*(dependent[arg] for arg in self.args)))
|
227
208
|
|
228
|
-
def calculate_inpl_time_course(self, name: str, dependent: pd.DataFrame) -> None:
|
229
|
-
"""Calculate the derived value in place.
|
230
|
-
|
231
|
-
Args:
|
232
|
-
name: Name of the derived variable.
|
233
|
-
dependent: Dictionary of dependent variables.
|
234
|
-
|
235
|
-
"""
|
236
|
-
try:
|
237
|
-
dependent[name] = self.fn(*dependent.loc[:, self.args].to_numpy().T)
|
238
|
-
except ValueError: # e.g. numpy.where
|
239
|
-
sub = dependent.loc[:, self.args].to_numpy()
|
240
|
-
dependent[name] = [self.fn(*row) for row in sub]
|
241
|
-
|
242
209
|
|
243
210
|
@dataclass(kw_only=True, slots=True)
|
244
211
|
class Reaction:
|
@@ -255,7 +222,7 @@ class Reaction:
|
|
255
222
|
|
256
223
|
return [k for k in self.args if k in include and k not in exclude]
|
257
224
|
|
258
|
-
def calculate(self, dependent: dict[str,
|
225
|
+
def calculate(self, dependent: dict[str, Any]) -> float:
|
259
226
|
"""Calculate the derived value.
|
260
227
|
|
261
228
|
Args:
|
@@ -267,7 +234,7 @@ class Reaction:
|
|
267
234
|
"""
|
268
235
|
return cast(float, self.fn(*(dependent[arg] for arg in self.args)))
|
269
236
|
|
270
|
-
def calculate_inpl(self, name: str, dependent: dict[str,
|
237
|
+
def calculate_inpl(self, name: str, dependent: dict[str, Any]) -> None:
|
271
238
|
"""Calculate the reaction in place.
|
272
239
|
|
273
240
|
Args:
|
@@ -277,19 +244,57 @@ class Reaction:
|
|
277
244
|
"""
|
278
245
|
dependent[name] = cast(float, self.fn(*(dependent[arg] for arg in self.args)))
|
279
246
|
|
280
|
-
def calculate_inpl_time_course(self, name: str, dependent: pd.DataFrame) -> None:
|
281
|
-
"""Calculate the derived value in place.
|
282
247
|
|
283
|
-
|
284
|
-
|
285
|
-
|
248
|
+
@dataclass(kw_only=True)
|
249
|
+
class AbstractSurrogate:
|
250
|
+
"""Abstract base class for surrogate models.
|
286
251
|
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
252
|
+
Attributes:
|
253
|
+
inputs: List of input variable names.
|
254
|
+
stoichiometries: Dictionary mapping reaction names to stoichiometries.
|
255
|
+
|
256
|
+
Methods:
|
257
|
+
predict: Abstract method to predict outputs based on input data.
|
258
|
+
|
259
|
+
"""
|
260
|
+
|
261
|
+
args: list[str]
|
262
|
+
outputs: list[str]
|
263
|
+
stoichiometries: dict[str, dict[str, float | Derived]] = field(default_factory=dict)
|
264
|
+
|
265
|
+
@abstractmethod
|
266
|
+
def predict(
|
267
|
+
self, args: dict[str, float | pd.Series | pd.DataFrame]
|
268
|
+
) -> dict[str, float]:
|
269
|
+
"""Predict outputs based on input data."""
|
270
|
+
|
271
|
+
def calculate_inpl(
|
272
|
+
self,
|
273
|
+
name: str, # noqa: ARG002, for API compatibility
|
274
|
+
args: dict[str, float | pd.Series | pd.DataFrame],
|
275
|
+
) -> None:
|
276
|
+
"""Predict outputs based on input data."""
|
277
|
+
args |= self.predict(args=args)
|
278
|
+
|
279
|
+
|
280
|
+
@dataclass(kw_only=True)
|
281
|
+
class MockSurrogate(AbstractSurrogate):
|
282
|
+
"""Mock surrogate model for testing purposes."""
|
283
|
+
|
284
|
+
fn: Callable[..., Iterable[float]]
|
285
|
+
|
286
|
+
def predict(
|
287
|
+
self,
|
288
|
+
args: dict[str, float | pd.Series | pd.DataFrame],
|
289
|
+
) -> dict[str, float]:
|
290
|
+
"""Predict outputs based on input data."""
|
291
|
+
return dict(
|
292
|
+
zip(
|
293
|
+
self.outputs,
|
294
|
+
self.fn(*(args[i] for i in self.args)),
|
295
|
+
strict=True,
|
296
|
+
)
|
297
|
+
) # type: ignore
|
293
298
|
|
294
299
|
|
295
300
|
@dataclass(kw_only=True, slots=True)
|
@@ -429,70 +434,6 @@ class ProtocolByPars:
|
|
429
434
|
return cast(pd.DataFrame, mean.unstack().T)
|
430
435
|
|
431
436
|
|
432
|
-
@dataclass(kw_only=True)
|
433
|
-
class AbstractSurrogate:
|
434
|
-
"""Abstract base class for surrogate models.
|
435
|
-
|
436
|
-
Attributes:
|
437
|
-
inputs: List of input variable names.
|
438
|
-
stoichiometries: Dictionary mapping reaction names to stoichiometries.
|
439
|
-
|
440
|
-
Methods:
|
441
|
-
predict: Abstract method to predict outputs based on input data.
|
442
|
-
|
443
|
-
"""
|
444
|
-
|
445
|
-
args: list[str]
|
446
|
-
outputs: list[str]
|
447
|
-
stoichiometries: dict[str, dict[str, float]] = field(default_factory=dict)
|
448
|
-
|
449
|
-
@abstractmethod
|
450
|
-
def predict_raw(self, y: np.ndarray) -> np.ndarray:
|
451
|
-
"""Predict outputs based on input data."""
|
452
|
-
|
453
|
-
def predict(self, y: np.ndarray) -> dict[str, float]:
|
454
|
-
"""Predict outputs based on input data."""
|
455
|
-
return dict(
|
456
|
-
zip(
|
457
|
-
self.outputs,
|
458
|
-
self.predict_raw(y),
|
459
|
-
strict=True,
|
460
|
-
)
|
461
|
-
)
|
462
|
-
|
463
|
-
def calculate_inpl(
|
464
|
-
self,
|
465
|
-
name: str, # noqa: ARG002, for API compatibility
|
466
|
-
args: dict[str, float],
|
467
|
-
) -> None:
|
468
|
-
"""Predict outputs based on input data."""
|
469
|
-
args |= self.predict(np.array([args[arg] for arg in self.args]))
|
470
|
-
|
471
|
-
def calculate_inpl_time_course(
|
472
|
-
self,
|
473
|
-
name: str, # noqa: ARG002, for API compatibility
|
474
|
-
args: pd.DataFrame,
|
475
|
-
) -> None:
|
476
|
-
"""Predict outputs based on input data."""
|
477
|
-
args[self.outputs] = pd.DataFrame(
|
478
|
-
[self.predict(y) for y in args.loc[:, self.args].to_numpy()],
|
479
|
-
index=args.index,
|
480
|
-
dtype=float,
|
481
|
-
)
|
482
|
-
|
483
|
-
|
484
|
-
@dataclass(kw_only=True)
|
485
|
-
class MockSurrogate(AbstractSurrogate):
|
486
|
-
"""Mock surrogate model for testing purposes."""
|
487
|
-
|
488
|
-
def predict(
|
489
|
-
self,
|
490
|
-
y: np.ndarray,
|
491
|
-
) -> dict[str, float]:
|
492
|
-
"""Predict outputs based on input data."""
|
493
|
-
return dict(zip(self.outputs, y, strict=True))
|
494
|
-
|
495
|
-
|
496
437
|
@dataclass(kw_only=True)
|
497
438
|
class AbstractEstimator:
|
498
439
|
"""Abstract class for parameter estimation using neural networks."""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mxlpy
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.20.0
|
4
4
|
Summary: A package to build metabolic models
|
5
5
|
Author-email: Marvin van Aalst <marvin.vanaalst@gmail.com>
|
6
6
|
Maintainer-email: Marvin van Aalst <marvin.vanaalst@gmail.com>
|
@@ -24,6 +24,7 @@ Classifier: Topic :: Software Development
|
|
24
24
|
Requires-Python: >=3.12
|
25
25
|
Requires-Dist: dill>=0.3.9
|
26
26
|
Requires-Dist: latexify-py>=0.4.4
|
27
|
+
Requires-Dist: lazy-import>=0.2.2
|
27
28
|
Requires-Dist: matplotlib>=3.9.2
|
28
29
|
Requires-Dist: mike>=2.1.3
|
29
30
|
Requires-Dist: more-itertools>=10.5.0
|
@@ -41,29 +42,21 @@ Requires-Dist: tabulate>=0.9.0
|
|
41
42
|
Requires-Dist: toml>=0.10.2
|
42
43
|
Requires-Dist: tqdm>=4.66.6
|
43
44
|
Requires-Dist: typing-extensions>=4.12.2
|
44
|
-
Provides-Extra:
|
45
|
-
Requires-Dist:
|
46
|
-
|
47
|
-
Requires-Dist:
|
48
|
-
Requires-Dist: mkdocs-material>=9.5.42; extra == 'dev'
|
49
|
-
Requires-Dist: mkdocs>=1.6.1; extra == 'dev'
|
50
|
-
Requires-Dist: pre-commit>=4.0.1; extra == 'dev'
|
51
|
-
Requires-Dist: pyright>=1.1.387; extra == 'dev'
|
52
|
-
Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
|
53
|
-
Requires-Dist: pytest>=8.3.3; extra == 'dev'
|
54
|
-
Requires-Dist: requests>=2.32.3; extra == 'dev'
|
55
|
-
Requires-Dist: ruff>=0.7.1; extra == 'dev'
|
56
|
-
Requires-Dist: ssort>=0.13.0; extra == 'dev'
|
57
|
-
Requires-Dist: toml-sort<0.24,>=0.23.1; extra == 'dev'
|
45
|
+
Provides-Extra: keras
|
46
|
+
Requires-Dist: keras>=3.9.2; extra == 'keras'
|
47
|
+
Provides-Extra: tensorflow
|
48
|
+
Requires-Dist: tensorflow>=2.19.0; extra == 'tensorflow'
|
58
49
|
Provides-Extra: torch
|
59
50
|
Requires-Dist: torch>=2.5.1; extra == 'torch'
|
60
51
|
Description-Content-Type: text/markdown
|
61
52
|
|
62
53
|
<p align="center">
|
63
|
-
<img src="docs/assets/logo-diagram.png" width="600px" alt='mxlpy-logo'>
|
54
|
+
<img src="https://raw.githubusercontent.com/Computational-Biology-Aachen/MxlPy/refs/heads/main/docs/assets/logo-diagram.png" width="600px" alt='mxlpy-logo'>
|
64
55
|
</p>
|
65
56
|
|
66
|
-
|
57
|
+
|
58
|
+
|
59
|
+
# MxlPy
|
67
60
|
|
68
61
|
[](https://pypi.python.org/pypi/mxlpy)
|
69
62
|
[![docs][docs-badge]][docs]
|
@@ -78,14 +71,26 @@ Description-Content-Type: text/markdown
|
|
78
71
|
|
79
72
|
## Installation
|
80
73
|
|
81
|
-
You can install mxlpy using pip: `pip install mxlpy
|
74
|
+
You can install mxlpy using pip: `pip install mxlpy`.
|
75
|
+
|
76
|
+
Due to their sizes, the machine learning packages are optional dependencies. You can install them using
|
77
|
+
|
78
|
+
```shell
|
79
|
+
# One of them respectively
|
80
|
+
pip install mxlpy[torch]
|
81
|
+
pip install mxlpy[tensorflow]
|
82
|
+
pip install mxlpy[keras]
|
83
|
+
|
84
|
+
# together
|
85
|
+
pip install mxlpy[torch, tensorflow, keras]
|
86
|
+
```
|
82
87
|
|
83
88
|
If you want access to the sundials solver suite via the [assimulo](https://jmodelica.org/assimulo/) package, we recommend setting up a virtual environment via [pixi](https://pixi.sh/) or [mamba / conda](https://mamba.readthedocs.io/en/latest/) using the [conda-forge](https://conda-forge.org/) channel.
|
84
89
|
|
85
90
|
```bash
|
86
91
|
pixi init
|
87
92
|
pixi add python assimulo
|
88
|
-
pixi add --pypi mxlpy
|
93
|
+
pixi add --pypi mxlpy
|
89
94
|
```
|
90
95
|
|
91
96
|
## How to cite
|
@@ -103,7 +108,7 @@ You have two choices here, using `uv` (pypi-only) or using `pixi` (conda-forge,
|
|
103
108
|
### uv
|
104
109
|
|
105
110
|
- Install `uv` as described in [the docs](https://docs.astral.sh/uv/getting-started/installation/).
|
106
|
-
- Run `uv sync --
|
111
|
+
- Run `uv sync --all-extras --all-groups` to install dependencies locally
|
107
112
|
|
108
113
|
### pixi
|
109
114
|
|
@@ -111,7 +116,3 @@ You have two choices here, using `uv` (pypi-only) or using `pixi` (conda-forge,
|
|
111
116
|
- Run `pixi install --frozen`
|
112
117
|
|
113
118
|
|
114
|
-
## Notes
|
115
|
-
|
116
|
-
- `uv add $package`
|
117
|
-
- `uv add --optional dev $package`
|
@@ -0,0 +1,55 @@
|
|
1
|
+
mxlpy/__init__.py,sha256=4pbDeyLhQjfL76h2oXdodARzKkrkX5wESV7kEjwC3K8,4399
|
2
|
+
mxlpy/compare.py,sha256=6iIl6yKXP9guSVLgqqnaqILP_BF_oqyx7DTGbdpwAjM,7800
|
3
|
+
mxlpy/distributions.py,sha256=ce6RTqn19YzMMec-u09fSIUA8A92M6rehCuHuXWcX7A,8734
|
4
|
+
mxlpy/fit.py,sha256=i1R_2WErNJdHNf6JWPFPBDfbI7-MkY9fTaO6jgL4Pqk,12433
|
5
|
+
mxlpy/fns.py,sha256=NLxYwa3ylS7SkISBjw_TgQSKEm7WnkZF9wPigX_ZCAM,13915
|
6
|
+
mxlpy/identify.py,sha256=I136kpczw_WriN-CtTMP3cBN-K4ZKaHW6lWZCWsIQUE,2233
|
7
|
+
mxlpy/label_map.py,sha256=Zla9tey-7_POTE57XNEuCSeTqdAbMWZdj_j_OwokngY,17823
|
8
|
+
mxlpy/linear_label_map.py,sha256=5FyD0MMdSGsC3eKeBnpd1LBHyVBqIDWCDjgR8_q6XZo,10289
|
9
|
+
mxlpy/mc.py,sha256=6uN2fw4W627FoK_yVNIWbphoPa-pBA7-51nIX81CilU,17200
|
10
|
+
mxlpy/mca.py,sha256=PloMdBtyoPsiyJT-vnB0RUc1aTFkoMYwvYa7WmKA7tY,9359
|
11
|
+
mxlpy/model.py,sha256=14gncyYft39rwoiJPb5AynL3whXnZrJY3N7SLExH0Qk,62056
|
12
|
+
mxlpy/parallel.py,sha256=a69Ci7NrCplo4pq7qFQUMtOPD56SfaZ6Vz3JNplJpZ0,5013
|
13
|
+
mxlpy/parameterise.py,sha256=IgbvfEnkmaqVq_5GgFjHqApGUN9CJrsVD3Fr7pg9iFA,758
|
14
|
+
mxlpy/paths.py,sha256=TK2wO4N9lG-UV1JGfeB64q48JVDbwqIUj63rl55MKuQ,1022
|
15
|
+
mxlpy/plot.py,sha256=PA7tAmy2XXACxBLtdnfpxKUFRzi-lnCQjr7gw_nzxKU,32544
|
16
|
+
mxlpy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
17
|
+
mxlpy/report.py,sha256=6V_kH5usFtar2lUGLjG5k7WIJjUi1TD5qIO7V_6V3Gc,8773
|
18
|
+
mxlpy/scan.py,sha256=AnDSR-ttOjFGBrvOdhMdM04URZSHVoiS049tK0oUwV8,18948
|
19
|
+
mxlpy/simulator.py,sha256=fXFRJHXvDzhZHIccxH6l5QJEZUcpYrNCeA9DUkvnN-8,21052
|
20
|
+
mxlpy/types.py,sha256=FXBkwHgQ3v_k4ER49hDqyFMIA6i1BQf8isPma97LJdg,12605
|
21
|
+
mxlpy/experimental/__init__.py,sha256=kZTE-92OErpHzNRqmgSQYH4CGXrogGJ5EL35XGZQ81M,206
|
22
|
+
mxlpy/experimental/diff.py,sha256=MoM15rbMAHa7p9Zva8NxIc7K585kHJYKFaD1LnN5e10,9088
|
23
|
+
mxlpy/integrators/__init__.py,sha256=OLdcNCDIOiD1Z2LO143YtD47cMadNJt0app41nLAx5o,456
|
24
|
+
mxlpy/integrators/int_assimulo.py,sha256=8gLR1D4zJ-TnJ9DTkfkqA2uVE0H2w_npZhZ8RoWZOX8,5013
|
25
|
+
mxlpy/integrators/int_scipy.py,sha256=MEwhTNhMMVQE2UFWxv5fifN6TKVjRsyDmyibuuNNiHI,4649
|
26
|
+
mxlpy/meta/__init__.py,sha256=Z3LnN3a9qDAJTukHZs_nF_G6DrjKXOqBvOb47rSsAsM,314
|
27
|
+
mxlpy/meta/codegen_latex.py,sha256=ocdn_mrjPXllYBwImOBQcFzjFR6LONnBs3fhRIA0yzs,22875
|
28
|
+
mxlpy/meta/codegen_modebase.py,sha256=ziUuwod1F10ak7WTj5gcuVL7MLtK65kUhqKGCxgn3mY,3131
|
29
|
+
mxlpy/meta/codegen_py.py,sha256=bpwXrGUaf8lO81VVcIh0cbtf4cd84CYDZrL3ngf1FHo,3587
|
30
|
+
mxlpy/meta/source_tools.py,sha256=8kZD0_FnO2t8MTG9FvEFOhhU52uXKNpQJW6xDOGWGck,13540
|
31
|
+
mxlpy/nn/__init__.py,sha256=Qjr-ERsY2lbD75sFBOhCUwEasQDSJKcpBn_kReLZ6oA,633
|
32
|
+
mxlpy/nn/_keras.py,sha256=-5zjHRu8OjSiZeuBSIZFyB63uBsNNH5o9y4kBcPnhx8,2263
|
33
|
+
mxlpy/nn/_torch.py,sha256=GUJmLU282VU4O-fs3Sz90SEaAnfuXN2MPlBr_tHmvn4,5775
|
34
|
+
mxlpy/npe/__init__.py,sha256=hBHCUD2JYDBBGS2kTY8mTCfWB3u1R7m5l--wUupZt6o,1270
|
35
|
+
mxlpy/npe/_keras.py,sha256=ytvXMPK9KUCGOzTQm08_SgafiMb-MOIUdZQV7JjAO40,9721
|
36
|
+
mxlpy/npe/_torch.py,sha256=v3joh6lFJJxvYJj--wzmKXL9UMTaIN3h6hPNq0uX9NU,11250
|
37
|
+
mxlpy/sbml/__init__.py,sha256=Mt97CddpLi3wIrA1b_5cagLmDdNxAVF_S7QV57Pzw8s,226
|
38
|
+
mxlpy/sbml/_data.py,sha256=yYli7ZQ1_pnH9kt5EmcuHM0moQoa43rrFVdrseXlG0o,1136
|
39
|
+
mxlpy/sbml/_export.py,sha256=4tU3SVxfEvl0E1urZWHyphkiAeH5HeRO1cODvvrczAQ,20342
|
40
|
+
mxlpy/sbml/_import.py,sha256=5odQBdpD93mQJp2bVIabmPo6NK60nxqrdSVB8fEsF_A,22099
|
41
|
+
mxlpy/sbml/_mathml.py,sha256=oaU9q5yb9jvDGxDJrqOkbOiurCB1Vv_P99oUwJ7v1VE,24437
|
42
|
+
mxlpy/sbml/_name_conversion.py,sha256=93muW47M7qJoE227HKHmThWpPeWsXDN9eM8cRH2pqPs,1340
|
43
|
+
mxlpy/sbml/_unit_conversion.py,sha256=dW_I6_Ou09ccwnp6LIdrPriIQnQUK5lJcjzM2Fawm6U,1927
|
44
|
+
mxlpy/surrogates/__init__.py,sha256=cz9qr0ToYSutIK45IvKrMe1mPP7Lj0I_V0HYGixfpZU,916
|
45
|
+
mxlpy/surrogates/_keras.py,sha256=r2pR3iTJOaMqtATbsCm5CF94TYG9b-9cKljc8kMOplQ,3852
|
46
|
+
mxlpy/surrogates/_poly.py,sha256=z2g3JTdVyQJ8dIiXP4BOun_yMZOrlYpPNvQ0wmFYDTk,3672
|
47
|
+
mxlpy/surrogates/_qss.py,sha256=9w-hPPhdcwybkyaSX0sIfYfvcKu1U5j4HHj4SlgZcYQ,723
|
48
|
+
mxlpy/surrogates/_torch.py,sha256=gU0secuRBYgewhNqZmSo6_Xf804dSzwWwIYmdKA7y60,6389
|
49
|
+
mxlpy/symbolic/__init__.py,sha256=_vM5YM5I6OH0QDbFt9uGYKO8Z5Vly0wbGuvUScVrPRU,258
|
50
|
+
mxlpy/symbolic/strikepy.py,sha256=tzo3uvPpXLDex09hWTuitVzuTNwbgl7jWGjD8g6a8iI,20033
|
51
|
+
mxlpy/symbolic/symbolic_model.py,sha256=JFzcIdyfJihvKjef748DMXU6WI8nHjgjIk5BwUuB4HQ,2543
|
52
|
+
mxlpy-0.20.0.dist-info/METADATA,sha256=oZ5kyCjoeUm28YKPxNSf0kTZx977NA3-3BfEd6riQSI,4402
|
53
|
+
mxlpy-0.20.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
54
|
+
mxlpy-0.20.0.dist-info/licenses/LICENSE,sha256=lHX9Eu70g3Iv1aOxXTWNHa3vq9vaVYSPQx4jOLYmDpw,1096
|
55
|
+
mxlpy-0.20.0.dist-info/RECORD,,
|
mxlpy/nn/_tensorflow.py
DELETED
File without changes
|
mxlpy-0.18.0.dist-info/RECORD
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
mxlpy/__init__.py,sha256=lGo7XQTVuR1p8rW1J6gZsgdQWRqfYa9AWbvZQwT8oLQ,4236
|
2
|
-
mxlpy/distributions.py,sha256=ce6RTqn19YzMMec-u09fSIUA8A92M6rehCuHuXWcX7A,8734
|
3
|
-
mxlpy/fit.py,sha256=WNg98wW47xkd4gNEgj3t8eNNTqfVpHEJTbXMRQBe22o,12457
|
4
|
-
mxlpy/fns.py,sha256=VxDDyEdtGD7fEoT5LiiEaRqFk-0fIunRXHr1dCMpCdE,14002
|
5
|
-
mxlpy/identify.py,sha256=veYYCjTDAlzibrWtciX2egfEWWgosOpqgLBgbfVj42g,2130
|
6
|
-
mxlpy/label_map.py,sha256=urv-QTb0MUEKjwWvKtJSB8H2kvhLn1EKfRIH7awQQ8Y,17769
|
7
|
-
mxlpy/linear_label_map.py,sha256=DqzN_akacPccZwzYAR3ANIdzAU_GU6Xe6gWV9DHAAWU,10282
|
8
|
-
mxlpy/mc.py,sha256=oYd8a3ycyZLyh-ZxTYUjDRNfsCcwSQaLWssxv0yC5Cc,17399
|
9
|
-
mxlpy/mca.py,sha256=1_qBX9lHI6svXSebtwvMldAMwPlLqMylAPmxMbMQdWw,9359
|
10
|
-
mxlpy/model.py,sha256=H1rAKaB5pAQcMuBh5GnXuBReADTx5IDa1x0CdUZ6VlI,58411
|
11
|
-
mxlpy/parallel.py,sha256=kX4Td5YoovDwZp6kX_3cfO6QtHSS9ieJ0bMZiKs3Xv8,5002
|
12
|
-
mxlpy/parameterise.py,sha256=2jMhhO-bHTFP_0kXercJekeATAZYBg5FrK1MQ_mWGpk,654
|
13
|
-
mxlpy/paths.py,sha256=TK2wO4N9lG-UV1JGfeB64q48JVDbwqIUj63rl55MKuQ,1022
|
14
|
-
mxlpy/plot.py,sha256=Bu69ZSerqQlY_Hut-Wmn-KpqT1cwW96n8paa6dXOVrw,28853
|
15
|
-
mxlpy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
|
-
mxlpy/report.py,sha256=ZwnjquPAvo4A8UqK-BT19SZFSEUOy1FALqoh7uTmbAI,7793
|
17
|
-
mxlpy/scan.py,sha256=FBPpjv66v4IWZ5OwG_EWUdrucLWR9gq_XEsLFC-otaw,18969
|
18
|
-
mxlpy/simulator.py,sha256=9Ne4P5Jrwgx4oAlljPvCqSCCy98_5Lv1B87y1AkbI4c,21041
|
19
|
-
mxlpy/types.py,sha256=EOIOPuxD2vqRjYgX4vYByclxmG7bCCR1WWXYE0Msz7A,14669
|
20
|
-
mxlpy/experimental/__init__.py,sha256=kZTE-92OErpHzNRqmgSQYH4CGXrogGJ5EL35XGZQ81M,206
|
21
|
-
mxlpy/experimental/diff.py,sha256=4bztagJzFMsQJM7dlun_kv-WrWssM8CIw7gcL63hFf8,8952
|
22
|
-
mxlpy/integrators/__init__.py,sha256=kqmV6a0TRyLGR_XqbyAI652AfptYnXAUpqbSFg0CpP8,450
|
23
|
-
mxlpy/integrators/int_assimulo.py,sha256=TCBWQd558ZeRdBba1jCNsFyLBOssKvm8dXK36Aqg4_k,4817
|
24
|
-
mxlpy/integrators/int_scipy.py,sha256=dFHlYTeb2zX97f3VuNdMJdI7WEYshF4JAIgprKKk2z4,4581
|
25
|
-
mxlpy/meta/__init__.py,sha256=Jyy4063fZy6iT4LSwjPyEAVr4N_3xxcLc8wDBoDPyKc,278
|
26
|
-
mxlpy/meta/codegen_latex.py,sha256=vONj--_wmFM_FJpe15aAYyT06-kolqQwSe2NEbKrQWo,19934
|
27
|
-
mxlpy/meta/codegen_modebase.py,sha256=_ZAW4NvXhKwJQLGz5hkwwZpL2JMAJlfG-GUWkYIiNvw,3124
|
28
|
-
mxlpy/meta/codegen_py.py,sha256=xSdeuEGPGc-QKRMgJO4VSPGMlxCPEV5prkKjNQ2D2hg,3483
|
29
|
-
mxlpy/meta/source_tools.py,sha256=IyiCLZ1KScSqADC9p_QSRgedoHGibs9U1RGJuXm827U,13464
|
30
|
-
mxlpy/nn/__init__.py,sha256=yUc4o-iqfVVzkq9tZCstWwizrCqNlMft0YUwWGFFO-E,219
|
31
|
-
mxlpy/nn/_tensorflow.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
32
|
-
mxlpy/nn/_torch.py,sha256=DORLixCSteCUMb7PTrIwd5FrVZ4_k0GIaLc6PI3ViwE,5796
|
33
|
-
mxlpy/npe/__init__.py,sha256=IQmqUPJc5A8QXJLzp6Dq6Sjm8Hh2KAYZLrMxXQVeQP8,1181
|
34
|
-
mxlpy/npe/_torch.py,sha256=pynnkdspO7NwTT3Pb_BU21jgBjJEvuLBJwaw_A-jAFg,11681
|
35
|
-
mxlpy/sbml/__init__.py,sha256=AS7IwrBzBgN8coUZkyBEtiYa9ICWyY1wzp1ujVm5ItA,226
|
36
|
-
mxlpy/sbml/_data.py,sha256=XwT1sSxn6KLTXYMbk4ORbEAEgZhQDBfoyrjMBDAoY_s,1135
|
37
|
-
mxlpy/sbml/_export.py,sha256=Q6B9rxy-yt73DORzAYu4BpfkZXxCS3MDSDUXwpoXV6Q,19970
|
38
|
-
mxlpy/sbml/_import.py,sha256=5odQBdpD93mQJp2bVIabmPo6NK60nxqrdSVB8fEsF_A,22099
|
39
|
-
mxlpy/sbml/_mathml.py,sha256=bNk9RQ_NQFDhY1R354p-gwqqHaIiyAwZ1xLPHHhiguQ,24436
|
40
|
-
mxlpy/sbml/_name_conversion.py,sha256=XK9DEyzhrD0GBBwwjK9RA0yORrDX5c-Uvx0VtKMR5rA,1325
|
41
|
-
mxlpy/sbml/_unit_conversion.py,sha256=dW_I6_Ou09ccwnp6LIdrPriIQnQUK5lJcjzM2Fawm6U,1927
|
42
|
-
mxlpy/surrogates/__init__.py,sha256=ofHPNwe0LAILP2ZUWivAQpOv9LyHHzLZc6iu1cV2LeQ,894
|
43
|
-
mxlpy/surrogates/_poly.py,sha256=n1pe4xuD2A4BK8jJagzZ-17WW3kqvFBO-ZYuznmfosw,3303
|
44
|
-
mxlpy/surrogates/_torch.py,sha256=dpRZL8qOD8toezniuVPJ7NFTMpA97dF9dyrXfBAcTro,5984
|
45
|
-
mxlpy/symbolic/__init__.py,sha256=3hQjCMw8-6iOxeUdfnCg8449fF_BRF2u6lCM1GPpkRY,222
|
46
|
-
mxlpy/symbolic/strikepy.py,sha256=UMx2LMRwCkASKjdCYEvh9tKlW9dk3nDoWM9NNJXWL_8,19960
|
47
|
-
mxlpy/symbolic/symbolic_model.py,sha256=YL9noEeP3_0DoKXwMPELtfmPuP6mgNcLIJgDRCkyB7A,2434
|
48
|
-
mxlpy-0.18.0.dist-info/METADATA,sha256=LgAn8m3f6oRfZl03E3X8UHak-2pJmoUdhealdJXQsJA,4567
|
49
|
-
mxlpy-0.18.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
50
|
-
mxlpy-0.18.0.dist-info/licenses/LICENSE,sha256=lHX9Eu70g3Iv1aOxXTWNHa3vq9vaVYSPQx4jOLYmDpw,1096
|
51
|
-
mxlpy-0.18.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|