Omni-MIDD Model Incubator
Omni-MIDD is a browser-based platform for mechanistic pharmacokinetic modelling across drug modalities. Models are implemented in vanilla JavaScript and run entirely client-side — no installation or server connection is required.
The platform currently supports PBPK, QSP, and PK/PD frameworks for small molecules, monoclonal antibodies, antibody–drug conjugates, PROTACs, and bispecific antibodies.
Quick Start
1. Serve the files locally
Browsers block fetch() on file:// URLs.
Start a local static server from the pk_model/ directory:
# Python 3
python3 -m http.server 8000
# Node.js (npx)
npx serve .
Then open http://localhost:8000/landing.html in your browser.
2. Open a model
From the landing page, locate the model card you want to run and click Open Model. Cards marked In Development or Planned are not yet executable.
3. Adjust parameters and run
Use the slider panel at the bottom of the simulation interface to adjust model parameters. Click Run Simulation to update all charts. Use Shift + drag on any chart to zoom, and plain drag to pan.
Parameter values are preserved in localStorage between sessions.
Click Reset in the parameter panel header to restore defaults.
PBPK Framework
All models in Omni-MIDD are built on a common physiologically based pharmacokinetic scaffold. Mass-balance ordinary differential equations describe drug disposition across tissue compartments connected by blood flow, with compartment volumes and blood flow rates sourced from species-specific physiological databases.
The general mass-balance equation for tissue compartment i is:
dA_i/dt = Q_i · (C_art - C_i / Kp_i) - CL_i · C_i
where Q_i is tissue blood flow, C_art is
arterial drug concentration, Kp_i is the tissue:plasma
partition coefficient, and CL_i is tissue intrinsic clearance.
models.yaml Reference
The model registry is defined in models.yaml. Each entry
corresponds to one card on the landing page. The file is parsed at runtime
by landing.js using js-yaml — no build step is
required.
| Field | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Unique slug used as the HTML anchor id. |
| title | string | Yes | Display title shown on the model card. |
| modality | enum | Yes | small-molecule | mab | adc | protac | bispecific |
| model_types | list | Yes | Any combination of PBPK, QSP, PK/PD. |
| status | enum | Yes | planned | in-development | mature |
| version | string|null | No | Semantic version string, e.g. 1.2.0. Null if unreleased. |
| drug | string | Yes | Generic or a specific drug name. |
| url | string|null | No | Relative path to the executable model page. |
| description | string | Yes | One- to three-sentence summary shown on the card. |
| publication | object|null | No | Bibliographic record. See sub-fields below. |
| publication.title | string | — | Article title. |
| publication.authors | list | — | Author strings in Last FM format. |
| publication.journal | string | — | Full journal or conference name. |
| publication.year | integer | — | Publication year. |
| publication.doi | string | — | DOI without the https://doi.org/ prefix. |
Adding a Model
To register a new model in the library, append an entry to
models.yaml following the field reference above. The landing
page will pick up the new card automatically on next load — no changes to
HTML or JavaScript are required.
Set status: planned and url: null for models
that are not yet executable. The Open button will be rendered as
disabled until a url is provided.
To implement the model itself, create a new HTML page (e.g.
my-model.html) that follows the same structure as
index.html, sharing styles.css and referencing
model-specific charts.js and params.js files.