Skip to main content

The Virtual Cell Project

The Virtual Cell is a modeling and simulation framework for computational biology. For details see http://vcell.org and http://github.com/virtualcell.


vcell-ode

CI

Virtual Cell ODE virtualcell/vcell-ode is a collection of numerical simulation libraries and protocols used to process ODEs in the Virtual Cell framework virtualcell/vcell).

Building VCell ODE with Conan on Windows

Windows builds require a native compiler. MinGW is not supported. Install Visual Studio Build Tools with the C++ workload and Windows SDK, plus Python 3.10 or newer. Conan 2, CMake 3.16 or newer, and Ninja 1.12 or newer are required; Conan installs CMake and Ninja as build requirements, so they do not need to be installed separately.

From a Visual Studio Developer PowerShell, install Conan and create a detected host profile:

py -m pip install --upgrade conan
$pythonScripts = py -c "import sysconfig; print(sysconfig.get_path('scripts'))"
$env:Path = "$pythonScripts;$env:Path"
conan profile detect --force

If PowerShell still cannot find conan, run the following once, then open a new PowerShell window:

$pythonScripts = py -c "import sysconfig; print(sysconfig.get_path('scripts'))"
$userPath = [Environment]::GetEnvironmentVariable('Path', 'User')
[Environment]::SetEnvironmentVariable('Path', "$userPath;$pythonScripts", 'User')

Build the solver without messaging:

conan install . --build=missing -o "&:include_messaging=False" -s compiler.cppstd=20
conan build . -s compiler.cppstd=20

The recipe invokes CMake and Ninja, and produces the executable and DLL under build/bin. To use the checked-in LLVM/Clang-CL profile instead, replace the install command with:

conan install . `
  --profile:host conan-profiles/CI-CD/Windows-AMD64_profile.txt `
  --profile:build default `
  --build=missing -o "&:include_messaging=False" -s:h compiler.cppstd=20
conan build . -s compiler.cppstd=20

The checked-in profile requires LLVM/Clang 21 (clang-cl) on PATH and Visual Studio 2022 Build Tools with the v143 toolset. The auto-detected MSVC profile is recommended when using the compiler supplied by Visual Studio. The checked-in profile is configured for Visual Studio 2022; it does not target Visual Studio 18.

Messaging is disabled automatically for Windows Conan builds. It remains enabled by default on Linux and macOS, where the libcurl dependency is supported. The include_messaging option can be used to disable it on those platforms when needed.

Release contract (SOLVER-RELEASE)

What VCell consumes from this repo, per VCell's solver-repo plan (docs/plan-solver-repos.md in virtualcell/vcell, §1). Executable: SundialsSolverStandalone_x64 (.exe on Windows), run as SundialsSolverStandalone_x64 <input.cvodeInput|input.idaInput> <output.ida> [-tid <n>]. The solver (CVODE or IDA) is chosen by the input's SOLVER line.

Releases are cut from master: bump version in pyproject.toml, merge, then publish a GitHub release with tag vX.Y.Z (it must equal the pyproject.toml version, or the build fails). cd.yml then attaches

asset contents
linux64.tgz x86_64, built on manylinux_2_28 (runs on glibc ≥ 2.28); glibc not bundled, other libraries (libc++, …) bundled with a $ORIGIN rpath
linux64arm.tgz aarch64, same
mac64.tgz universal (x86_64 + arm64) executable and dylibs, @loader_path references only, ad-hoc signed
win64.zip x86_64 .exe and DLLs
win64arm.zip arm64 .exe and DLLs
SHA256SUMS sha256 of each asset above

Each archive is flat: the executable, its bundled libraries, LICENSE and VERSION — no test binaries or static libraries — and is checked on a clean runner (and on Rocky Linux 8 for linux64.tgz) against the reference outputs before anything is attached. The release also publishes the Python wheels to PyPI.

The archive builds have messaging OFF (the desktop client reads progress from stdout); they still accept -tid <n> so VCell's command line is the same everywhere.

Container (container.yml, Dockerfile): ghcr.io/virtualcell/vcell-ode:<X.Y.Z> (and :latest), linux/amd64 + linux/arm64, a slim debian:trixie-slim runtime stage, built with messaging ON (the input's JMS_PARAM block plus -tid report status to VCell's broker). The amd64 image is also published as a SIF, oras://ghcr.io/virtualcell/vcell-ode_singularity:<X.Y.Z>. Pushes to master publish :master and :sha-<short>.

Entrypoint /usr/local/bin/vcell-solver-entrypoint (docker/entrypoint.sh): no argument or --help prints the version and executables and exits 0; SundialsSolverStandalone_x64 … is exec'd (exit code and signals pass through); anything else prints usage and exits 2. It writes nothing, runs as any uid, and works from a read-only SIF, e.g. as VCell's SlurmProxy runs it:

singularity run --containall --bind /path/to/simdata:/simdata vcell-ode_singularity_<X.Y.Z>.sif \
    SundialsSolverStandalone_x64 /simdata/SimID_1_0_.cvodeInput /simdata/SimID_1_0_.ida -tid 0

Reference outputs (tests/reference/): two CVODE inputs (one with discontinuities and events) and one IDA DAE input, with the output of the legacy vcell-solvers v0.0.44-dev4 Linux binary. compare_ida.py checks a run against them (atol 1e-8 × column scale; rtol 1e-5 row by row where the time grids coincide, 1e-4 when the adaptive steps differ and the run is interpolated onto the reference's time points). CI runs them against every archive, the Docker image (non-root, read-only root, -tid) and the SIF (apptainer run --containall, bind-mounted /simdata, -tid).

Metadata

Release files for pyvcell-odesolver 0.9.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for pyvcell-odesolver 0.9.5
File
pyvcell_odesolver-0.9.5-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
pyvcell_odesolver-0.9.5-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
pyvcell_odesolver-0.9.5-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details
pyvcell_odesolver-0.9.5-py3-none-manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64 Details
pyvcell_odesolver-0.9.5-py3-none-macosx_15_0_universal2.whl Python 3 none macOS 15.0+ universal2 (ARM64, x86-64) Details

Total release size: 3.6 MB

Release files / pyvcell_odesolver-0.9.5-py3-none-win_arm64.whl

Download URL pyvcell_odesolver-0.9.5-py3-none-win_arm64.whl
Size 399.0 kB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
2dc5859ff4d3dfe77014d80f7fb1e79345894c44218f7672f413f6ee8a2c85e9
BLAKE2b-256 checksum
How to use checksums
28885ddc7a253a85ea7547f289f0f7a888ad537fa4b0e2524a9f1194a78ca7c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release files / pyvcell_odesolver-0.9.5-py3-none-win_amd64.whl

Download URL pyvcell_odesolver-0.9.5-py3-none-win_amd64.whl
Size 458.4 kB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
438e3f2289dd1c8d98d4c031294aabe14f71282d81dc7cf68214c0b8faec1898
BLAKE2b-256 checksum
How to use checksums
b926de200b0a23dac526973a42632b3c1e44956166d1325e03e3d02d1c89ea4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release files / pyvcell_odesolver-0.9.5-py3-none-manylinux_2_28_x86_64.whl

Download URL pyvcell_odesolver-0.9.5-py3-none-manylinux_2_28_x86_64.whl
Size 1.2 MB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
e34923a8eb605c9b7f6de7a4a1b090bd7fb3fea5659da47f30819f0d606a184a
BLAKE2b-256 checksum
How to use checksums
7b5c6bc3bc2c95e36dfe41b54fc0e4d232228ac8095f7755a5a4ffe41db53d87
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release files / pyvcell_odesolver-0.9.5-py3-none-manylinux_2_28_aarch64.whl

Download URL pyvcell_odesolver-0.9.5-py3-none-manylinux_2_28_aarch64.whl
Size 1.1 MB
Tags Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
93d1a0e597d28a3c76d219ec84bf479c6548adeb7c4fb1d4a6610838790708ad
BLAKE2b-256 checksum
How to use checksums
6208eb4cb402ccaf22dea25726fc8764a7b5c427d5c22e0470a53d9532717ab9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release files / pyvcell_odesolver-0.9.5-py3-none-macosx_15_0_universal2.whl

Download URL pyvcell_odesolver-0.9.5-py3-none-macosx_15_0_universal2.whl
Size 473.0 kB
Tags Python 3 macOS 15.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
a348a89ba272b292712d30659915297daf42a4150f0e982f8c90045f6ab1b140
BLAKE2b-256 checksum
How to use checksums
3b46526d24d3187732719c58c504dc720276b54c5536daad57a8f92df8d71d72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release history Release notifications | RSS feed

0.9.6

5 release files

This release

0.9.5 This release

5 release files

0.9.4

5 release files

0.9.1

3 release files

0.9.0

20 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page