Faster Python Simulations, Without the Trade-offs: A Chromatography Case Study

pmh-core Chromatography

Table Of Contents:

A different starting point

Meet pmh-core

The benchmark

What this means for CMC teams

Model-based workflows rarely depend on a single simulation. Calibration, model-based design of experiments (MBDoE), global sensitivity analysis (GSA), uncertainty quantification, and process optimisation all require the same model to be solved repeatedly — often thousands of times within a single study. In these workflows, solve time is not a background concern. It determines how many iterations a team can run in a day, and sets a practical ceiling on what the workflow can deliver.


A different starting point

When we built pmh-core, we made a decision that raised a few eyebrows: we built the simulation engine in pure Python.

The conventional wisdom at the time was fairly clear. If you want performance, build the core in C++. If you want speed, Python becomes the bottleneck. If you want enterprise-grade simulation, you'll eventually have to move away from Python.

We didn't see it that way.

Our view was that the future of scientific software in pharma wouldn't just be about raw computational speed. It would be about accessibility — scientists being able to see and understand what the model is actually doing. Transparency — teams being able to customise workflows, algorithms, and equations without fighting a black box. Extensibility — new unit operations, new isotherms, new phenomena added without a recompilation cycle. And seamless integration with the broader scientific and AI ecosystem that is increasingly built in Python.

The challenge, of course, was performance. That required serious investment in numerical methods, solver architecture, memory management, and optimisation strategies — not just for individual simulations, but for the iterative, high-throughput workflows that process development actually depends on.

The benchmark results below are the outcome of that investment.


Meet pmh-core

pmh-core is the Python-native process simulation engine behind ModelFlow's workflow libraries, covering a wide range of pharmaceutical unit operations — from bioreactors and chromatography to chemical synthesis and filtration. It is built around four principles:

A modelling framework, not a launcher. pmh-core lets you implement and maintain models in pure, readable Python, rather than configuring and launching pre-compiled solvers that most users cannot inspect or modify.

Python readability, compiled performance. Models written in Python are automatically converted into efficient native compiled code at solve time. You keep the clarity of Python without sacrificing execution speed.

Unit operations across the pharma process. pmh-core is not limited to a fixed isotherm library or a prepackaged set of unit operations. It supports the definition of essentially any model relevant to pharmaceutical process engineering — upstream, downstream, and synthetics.

Model-based workflows built in. Parameter estimation, MBDoE, GSA, and uncertainty quantification apply seamlessly on top of any pmh-core model. The iterative workflows that dominate CMC development are first-class features, not afterthoughts.

For chromatography specifically, pmh-core implements standard mechanistic column models — including the Lumped Rate Model with Pores (LRMP) — alongside a broad isotherm library. Because models are defined in Python rather than hardcoded in the backend solver, the library extends to isotherms with no equivalent in other frameworks, among them extended liquid–solid BET, HIC Unified, Xu–Lenhoff colloidal, Arkell RPC, and colloidal particle adsorption.

pmh-core Chromatography

The benchmark

To quantify the performance difference, we benchmarked pmh-core against CADET-Core 5.1.1 — one of the most widely used open-source chromatography simulation frameworks — under identical conditions using the Lumped Rate Model with Pores:

  • Same column configuration

  • Same flow rate

  • Same staged load–wash–elute gradient

  • Same spatial discretisation

  • Same adsorption isotherm definitions, for every isotherm available in both frameworks

Matched physics. Performance is only meaningful if the underlying science is correct. Across every shared isotherm, pmh-core reproduced the same chromatographic behaviour as CADET, with matched predictions throughout. This is not a speed-accuracy trade-off — it is a comparison between two implementations of the same physics. Shared isotherms in the benchmark included Linear, competitive Langmuir, Langmuir with salt modulation, steric mass action, affinity complex titration, WHS hydrophobic interaction, stoichiometric RPC, and the Xu–Lenhoff colloidal model.

Faster solve times. pmh-core was faster in every head-to-head comparison, solving 4–12× faster per simulation with a median speedup of around 6×. The advantage held as the spatial grid was refined, indicating that the gains are structural — a property of the implementation, not an artefact of a particular benchmark configuration.

The practical consequence follows directly from the iterative nature of CMC workflows. A calibration or sensitivity campaign requiring 10,000 model evaluations that takes approximately two hours in CADET completes in approximately twenty minutes with pmh-core. For a development team, that is the difference between one design iteration per day and several: larger parameter studies, better parameter identifiability, and MBDoE or optimisation loops that complete within a single working session rather than overnight.

pmh-core vs. CADET-python

What this means for CMC teams

Faster solves are not an end in themselves. What they unlock is more of the work that actually matters: tighter parameter estimation, more ambitious sensitivity studies, optimisation campaigns that were previously impractical, and process understanding built on more iterations rather than fewer.

The Python architecture compounds this. Because pmh-core lives natively in the same ecosystem as the workflows, algorithms, and data pipelines that surround it, there is no integration overhead, no black-box solver to interrogate, and no barrier to extending the model when the science requires it. Everything — from the governing equations to the parameter estimation routine — remains readable, modifiable, and connected.

We are currently preparing a deeper technical publication covering the full benchmark methodology and results. In the meantime, if you would like to see how pmh-core fits your chromatography or broader CMC workflow, book a demo.

PolyModels Hub builds workflows that help pharma teams put their data and models to work in drug development. If you'd like to see how pmh-core fits your pipeline, book a demo with us today.


© 2026 PolyModels Hub®

Accelerate pharma

process development.

Transform lives.

Footer Logo

© Copyright 2026