Metadata-Version: 2.4
Name: perfusio
Version: 0.1.0
Summary: Open reference implementation of self-driving perfusion bioprocess development (Gadiyar et al., 2026)
Project-URL: Homepage, https://github.com/lynchaos/perfusio
Project-URL: Documentation, https://lynchaos.github.io/perfusio
Project-URL: Repository, https://github.com/lynchaos/perfusio
Project-URL: Bug Tracker, https://github.com/lynchaos/perfusio/issues
Author-email: Kemal Yaylali <kemal.yaylali@gmail.com>
Maintainer-email: Kemal Yaylali <support@yaylali.uk>
License: Apache-2.0
License-File: LICENSE
Keywords: CHO,bayesian-optimization,bioprocess,digital-twin,gaussian-process,mAb,perfusion,self-driving-labs
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Classifier: Typing :: Typed
Requires-Python: <3.14,>=3.11
Requires-Dist: alembic<2.0,>=1.13
Requires-Dist: asyncua<2.0,>=1.1
Requires-Dist: botorch<1.0,>=0.10
Requires-Dist: cmocean<5.0,>=4.0
Requires-Dist: cryptography<44.0,>=42.0
Requires-Dist: dash-bootstrap-components<2.0,>=1.5
Requires-Dist: dash<3.0,>=2.16
Requires-Dist: gpytorch<2.0,>=1.11
Requires-Dist: humanize<5.0,>=4.9
Requires-Dist: linear-operator<1.0,>=0.5
Requires-Dist: matplotlib<4.0,>=3.8
Requires-Dist: numpy<3.0,>=1.26
Requires-Dist: openpyxl<4.0,>=3.1
Requires-Dist: pandas<3.0,>=2.2
Requires-Dist: plotly<6.0,>=5.20
Requires-Dist: pyarrow<20.0,>=15.0
Requires-Dist: pydantic-settings<3.0,>=2.2
Requires-Dist: pydantic<3.0,>=2.6
Requires-Dist: rich<14.0,>=13.7
Requires-Dist: scipy<2.0,>=1.12
Requires-Dist: sqlalchemy<3.0,>=2.0
Requires-Dist: structlog<25.0,>=24.1
Requires-Dist: tenacity<9.0,>=8.2
Requires-Dist: torch<3.0,>=2.2
Requires-Dist: tqdm<5.0,>=4.66
Requires-Dist: typer<1.0,>=0.12
Provides-Extra: dev
Requires-Dist: codespell>=2.2; extra == 'dev'
Requires-Dist: hypothesis>=6.100; extra == 'dev'
Requires-Dist: ipykernel>=6.29; extra == 'dev'
Requires-Dist: jupytext>=1.16; extra == 'dev'
Requires-Dist: mypy>=1.9; extra == 'dev'
Requires-Dist: nbstripout>=0.7; extra == 'dev'
Requires-Dist: pre-commit>=3.7; extra == 'dev'
Requires-Dist: pyright>=1.1.360; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest-benchmark>=4.0; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest-mock>=3.14; extra == 'dev'
Requires-Dist: pytest-mpl>=0.17; extra == 'dev'
Requires-Dist: pytest-xdist>=3.5; extra == 'dev'
Requires-Dist: pytest>=8.1; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Provides-Extra: docs
Requires-Dist: furo>=2024.1.29; extra == 'docs'
Requires-Dist: myst-parser>=3.0; extra == 'docs'
Requires-Dist: nbsphinx>=0.9; extra == 'docs'
Requires-Dist: sphinx-copybutton>=0.5; extra == 'docs'
Requires-Dist: sphinx>=7.3; extra == 'docs'
Description-Content-Type: text/markdown

# perfusio

`perfusio` is an open, peer-reviewable reference implementation of the self-driving perfusion methodology of Gadiyar et al. (2026) and Hutter et al. (2021), providing stepwise Gaussian Process hybrid models, entity-embedding transfer learning, 11 Bayesian experimental design acquisitions, and a fully-instrumented online digital twin for CHO cell perfusion bioprocesses.

[![CI](https://github.com/lynchaos/perfusio/actions/workflows/ci.yml/badge.svg)](https://github.com/lynchaos/perfusio/actions/workflows/ci.yml)
[![Docs](https://github.com/lynchaos/perfusio/actions/workflows/docs.yml/badge.svg)](https://lynchaos.github.io/perfusio)
[![PyPI](https://img.shields.io/pypi/v/perfusio)](https://pypi.org/project/perfusio)
[![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
[![Python](https://img.shields.io/pypi/pyversions/perfusio)](https://pypi.org/project/perfusio)

---

## Quick-start

```bash
pip install perfusio
python -c "from perfusio.simulator.cho_perfusion import CHOSimulator; print('OK')"
```

### Reproduce all paper figures

```bash
pip install perfusio
python examples/reproduce_paper_figures.py
# → paper_figures/{fig4,fig7,fig8}.{pdf,png,svg}
```

### CLI

```bash
# Generates 27 runs (4-factor Box-Behnken design, 3 centre points)
perfusio simulate --clone CloneX --n-days 28 --out runs/
perfusio train   --runs runs/ --model-out model.pt
perfusio run     --model model.pt --connector ambr250 --dashboard
perfusio reproduce-figures --out paper_figures/
```

---

## What's inside

| Module | Description |
|--------|-------------|
| `perfusio.mechanistic` | CHO kinetics ODEs (dual-Monod, Pirt, Warburg, Luedeking–Piret) |
| `perfusio.gp` | PerfusionKernel, JackknifeEnsemble, StepwiseGP |
| `perfusio.embedding` | Entity-embedding transfer (Hutter 2021) |
| `perfusio.hybrid` | Hybrid state-space model + online retraining |
| `perfusio.bed` | 11 BED acquisitions + Pareto / HV utilities |
| `perfusio.simulator` | CHOSimulator, Box-Behnken / LHC DoE, noise model |
| `perfusio.twin` | DigitalTwin, audit, notifications, scheduler |
| `perfusio.connectors` | OPC UA, SQL, filesystem, ambr®250 emulator |
| `perfusio.metrics` | rRMSE, PI coverage, CRPS, IGD+, ε-indicator |
| `perfusio.viz` | Static figures (Matplotlib) + interactive (Plotly/Dash) |
| `perfusio.cli` | Typer CLI |

---

## Installation

### CPU (default)

```bash
pip install perfusio
```

### GPU

```bash
pip install perfusio[gpu]
```

### Dashboard

```bash
pip install perfusio[dash]
perfusio run --dashboard
```

### Development

```bash
git clone https://github.com/lynchaos/perfusio.git
cd perfusio
pip install -e ".[dev]"
pre-commit install
pytest
```

---

## Citation

If you use `perfusio`, please cite:

```bibtex
@article{gadiyar2026,
  author  = {Gadiyar, Chiraag J. and others},
  title   = {Self-Driving Development of Perfusion Processes
             for Monoclonal Antibody Production},
  journal = {Biotechnology and Bioengineering},
  year    = {2026},
  volume  = {123},
  number  = {2},
  pages   = {391--405},
  doi     = {10.1002/bit.28631},
}

@article{hutter2021,
  author  = {Hutter, Simone and others},
  title   = {Clone selection in cell culture development using
             multi-objective Bayesian optimisation with
             entity-embedding transfer learning},
  journal = {Computers \& Chemical Engineering},
  year    = {2021},
  volume  = {151},
  pages   = {107373},
}
```

---

## Limitations

See [LIMITATIONS.md](LIMITATIONS.md) for a full list of out-of-scope items,
including CQA modelling, GMP validation, and proprietary media formulations.

## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md).

## Code of Conduct

See [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).

## Maintainer

**Kemal Yaylali** — [kemal.yaylali.uk](https://kemal.yaylali.uk)

- GitHub: [@lynchaos](https://github.com/lynchaos)
- X / Twitter: [@kmlyyll](https://x.com/kmlyyll)
- LinkedIn: [kemalyaylali](https://www.linkedin.com/in/kemalyaylali/)
- Support: [support@yaylali.uk](mailto:support@yaylali.uk)

## Licence

Apache-2.0 — see [LICENSE](LICENSE).
