vpop-calibration 2.2.8__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.
- vpop_calibration/__init__.py +22 -0
- vpop_calibration/data_generation.py +186 -0
- vpop_calibration/diagnostics.py +162 -0
- vpop_calibration/model/__init__.py +3 -0
- vpop_calibration/model/data.py +420 -0
- vpop_calibration/model/gp.py +517 -0
- vpop_calibration/model/plot.py +243 -0
- vpop_calibration/nlme.py +840 -0
- vpop_calibration/ode.py +203 -0
- vpop_calibration/saem.py +945 -0
- vpop_calibration/structural_model.py +200 -0
- vpop_calibration/test/__init__.py +11 -0
- vpop_calibration/test/test_data.py +21 -0
- vpop_calibration/test/test_gp_flavors.py +89 -0
- vpop_calibration/test/test_gp_saem.py +175 -0
- vpop_calibration/test/test_ode_saem.py +121 -0
- vpop_calibration/utils.py +9 -0
- vpop_calibration/vpop.py +50 -0
- vpop_calibration-2.2.8.dist-info/METADATA +78 -0
- vpop_calibration-2.2.8.dist-info/RECORD +22 -0
- vpop_calibration-2.2.8.dist-info/WHEEL +4 -0
- vpop_calibration-2.2.8.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vpop-calibration
|
|
3
|
+
Version: 2.2.8
|
|
4
|
+
Summary:
|
|
5
|
+
License-File: LICENSE
|
|
6
|
+
Author: Paul Lemarre
|
|
7
|
+
Author-email: paul.lemarre@novainsilico.ai
|
|
8
|
+
Requires-Python: >=3.12,<4.0
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
13
|
+
Requires-Dist: gpytorch (>=1.14.2,<2.0.0)
|
|
14
|
+
Requires-Dist: matplotlib (>=3.10.7,<4.0.0)
|
|
15
|
+
Requires-Dist: numpy (>=2.3.4,<3.0.0)
|
|
16
|
+
Requires-Dist: pandas (>=2.3.3,<3.0.0)
|
|
17
|
+
Requires-Dist: plotly (>=6.4.0,<7.0.0)
|
|
18
|
+
Requires-Dist: scipy (>=1.16.3,<2.0.0)
|
|
19
|
+
Requires-Dist: torch
|
|
20
|
+
Requires-Dist: tqdm (>=4.67.1,<5.0.0)
|
|
21
|
+
Requires-Dist: uuid (>=1.30,<2.0)
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
|
|
24
|
+
# Vpop calibration
|
|
25
|
+
|
|
26
|
+
## Description
|
|
27
|
+
|
|
28
|
+
A set of Python tools to allow for virtual population calibration, using a non-linear mixed effects (NLME) model approach, combined with surrogate models in order to speed up the simulation of QSP models.
|
|
29
|
+
|
|
30
|
+
### Currently available features
|
|
31
|
+
|
|
32
|
+
- Surrogate modeling using gaussian processes, implemented using [GPyTorch](https://github.com/cornellius-gp/gpytorch)
|
|
33
|
+
- Synthetic data generation using ODE models. The current implementation uses [scipy.integrate.solve_ivp](https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.solve_ivp.html), parallelized with [multiprocessing](https://docs.python.org/3/library/multiprocessing.html)
|
|
34
|
+
- Non-linear mixed effect models:
|
|
35
|
+
- Log-distributed parameters
|
|
36
|
+
- Additive or multiplicative error model
|
|
37
|
+
- Covariates handling
|
|
38
|
+
- Known individual patient descriptors (i.e. covariates with no effect on other descriptors outside of the structural model)
|
|
39
|
+
- SAEM: see the [dedicated doc](./docs/saem_implementation.md) for more details
|
|
40
|
+
|
|
41
|
+
## Getting started
|
|
42
|
+
|
|
43
|
+
- [Tutorial](./examples/saem_gp_model.ipynb): this notebook demonstrates step-by-step how to create and train a surrogate model, using a reference ODE model and a GP surrogate model. It then showcases how to optimize the surrogate model on synthetic data using SAEM
|
|
44
|
+
- Other available examples:
|
|
45
|
+
- [Data generation using Sobol sequences](./examples/generate_data_ranges.ipynb)
|
|
46
|
+
- [Data generation using a reference NLME model](./examples/generate_data_nlme.ipynb)
|
|
47
|
+
- [Training and exporting a GP using synthetic data](./examples/train_gp.ipynb)
|
|
48
|
+
- [Running SAEM on a reference ODE model](./examples/saem_ode_model.ipynb). Note: the current implementation is notably under-optimized for running SAEM directly on an ODE structural model. This is implemented for testing purposes mostly
|
|
49
|
+
- [Training a GP with a deep kernel](./examples/train_deep_kernel.ipynb)
|
|
50
|
+
|
|
51
|
+
## Support
|
|
52
|
+
|
|
53
|
+
For any issue or comments, please reach out to paul.lemarre@novainsilico.ai, or feel free to open an issue in the repo directly.
|
|
54
|
+
|
|
55
|
+
## Authors and acknowledgment
|
|
56
|
+
|
|
57
|
+
- Paul Lemarre
|
|
58
|
+
- Eléonore Dravet
|
|
59
|
+
- Adeline Leclerq-Sampson
|
|
60
|
+
|
|
61
|
+
## Roadmap
|
|
62
|
+
|
|
63
|
+
- NLME:
|
|
64
|
+
- Support additional error models (additive-multiplicative, power, etc...)
|
|
65
|
+
- Support additional covariate models (categorical covariates)
|
|
66
|
+
- Add residual diagnostic methods (weighted residuals computation and visualization)
|
|
67
|
+
- Structural models:
|
|
68
|
+
- Integrate with SBML models (Roadrunner)
|
|
69
|
+
- Surrogate models:
|
|
70
|
+
- Support additional surrogate models in PyTorch
|
|
71
|
+
- Optimizer:
|
|
72
|
+
- Add SVGP for surrogate model optimization
|
|
73
|
+
|
|
74
|
+
## References
|
|
75
|
+
|
|
76
|
+
- [Delyon et al. 99](https://doi.org/10.1214/aos/1018031103): Bernard Delyon. Marc Lavielle. Eric Moulines. "Convergence of a stochastic approximation version of the EM algorithm." Ann. Statist. 27 (1) 94 - 128, February 1999. https://doi.org/10.1214/aos/1018031103
|
|
77
|
+
- [Grenier et al. 2018](https://doi.org/10.1007/s40314-016-0337-5): Grenier, E., Helbert, C., Louvet, V. et al. Population parametrization of costly black box models using iterations between SAEM algorithm and kriging. Comp. Appl. Math. 37, 161–173 (2018). https://doi.org/10.1007/s40314-016-0337-5
|
|
78
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
vpop_calibration/__init__.py,sha256=NsFFrwCxus0pY406tlzP302Bpc4_TwXEnXPtgCpG0-w,650
|
|
2
|
+
vpop_calibration/data_generation.py,sha256=yuYwYYUHIL9vOSVLXSB4PLKPtaGfcn0o0A2Vch4OEuo,7443
|
|
3
|
+
vpop_calibration/diagnostics.py,sha256=6OUQm3dlEhiC3uZ618IAtdZcjb1UwOXhdp58_zpfiHo,6038
|
|
4
|
+
vpop_calibration/model/__init__.py,sha256=6tWusnXrxEGRMB6vx7gwxVgsqjlAVFVQsQzgBHl8fYI,37
|
|
5
|
+
vpop_calibration/model/data.py,sha256=S1lbCR8y79UUTC2o28ElSXtSjSH6OSQZ19rOlqpBXL8,19107
|
|
6
|
+
vpop_calibration/model/gp.py,sha256=Bz8D0EztdnPyat2T-JsNpr_nKMHaCPdawl1gGEOGayk,22102
|
|
7
|
+
vpop_calibration/model/plot.py,sha256=dgrRZbDU7sO6hH_I_6NqFM2qOm_DJbuytYabOy7GHJ8,8534
|
|
8
|
+
vpop_calibration/nlme.py,sha256=R0EvM5_lPXFAArenuDUwVSmzMmGcGl2gIKLmxZ4J3MY,35988
|
|
9
|
+
vpop_calibration/ode.py,sha256=hPE8VXBgJLd9R53bdPhi302grEhaFw-ww05m99X23hE,7860
|
|
10
|
+
vpop_calibration/saem.py,sha256=ACBfWCT2Mn4MGNb_RFSXcP-og8b2zGuzNsoGjmq0O0I,38295
|
|
11
|
+
vpop_calibration/structural_model.py,sha256=RBSFdftziI5_fDu89yXsJvbDOy2ic-SsuvgKPF5-tlI,7739
|
|
12
|
+
vpop_calibration/test/__init__.py,sha256=BZX2jFrWr2Cj0lUKa-GU1M7R-pScpQ68p-xY_3jy1Mc,272
|
|
13
|
+
vpop_calibration/test/test_data.py,sha256=PEbsUrno1zSJqR7_E0U-BDjbx6Scuo5xPP6-jYRFe1Y,661
|
|
14
|
+
vpop_calibration/test/test_gp_flavors.py,sha256=kFAa4Z3M2NIz7lZkx7uTvLHA-I_Snk6fB3HVEZrWRk4,2603
|
|
15
|
+
vpop_calibration/test/test_gp_saem.py,sha256=on9muQYm7Q1m4taxcE1eS3YvrtaSgDJK9c5_QTp3dvw,5156
|
|
16
|
+
vpop_calibration/test/test_ode_saem.py,sha256=B9dXUt0NA8GZoO425mP8zQEsGPHQCfMq6EWqc3XolNU,3595
|
|
17
|
+
vpop_calibration/utils.py,sha256=OD1Q4-07awCOLsofYgZRJqND928MmqNiULrIb61pIXM,184
|
|
18
|
+
vpop_calibration/vpop.py,sha256=KchXyhhKwEcMhrbuedoEBytPjFw8XUfl399gqkzz4r8,1991
|
|
19
|
+
vpop_calibration-2.2.8.dist-info/METADATA,sha256=s7C5I7bsIK3992abOwa5KV2Ez_LWLQqPshlF8bkJOSY,3925
|
|
20
|
+
vpop_calibration-2.2.8.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
21
|
+
vpop_calibration-2.2.8.dist-info/licenses/LICENSE,sha256=XhDgjsKzfp_sMAOTLzHRsS7CAfGulZ2h2wuupBiaRh8,1061
|
|
22
|
+
vpop_calibration-2.2.8.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Nova
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|