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.6

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.6
File
pyvcell_odesolver-0.9.6-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
pyvcell_odesolver-0.9.6-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
pyvcell_odesolver-0.9.6-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details
pyvcell_odesolver-0.9.6-py3-none-manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64 Details
pyvcell_odesolver-0.9.6-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.6-py3-none-win_arm64.whl

Download URL pyvcell_odesolver-0.9.6-py3-none-win_arm64.whl
Size 400.9 kB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
65d125f862de33bf46e606794e26ab2037abd48ded69109883fb8aa616ef2664
BLAKE2b-256 checksum
How to use checksums
85f069222be1b4824e2076896fecfc425c4878f952af565d55d7a8148f7ff3a6
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.6-py3-none-win_amd64.whl

Download URL pyvcell_odesolver-0.9.6-py3-none-win_amd64.whl
Size 460.1 kB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
82c34dbdda1168763cb6aafff89cf0eb1ed998ba326670bafdce0628f900cf65
BLAKE2b-256 checksum
How to use checksums
6f49f868826d225ad733f485050a06fc1b1744e15619ace552d66c1f7bcd5e25
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.6-py3-none-manylinux_2_28_x86_64.whl

Download URL pyvcell_odesolver-0.9.6-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
6500d0e2360c7dfbe16d007c7e0339532b9df4123bf73065a7a3e4e79425c6f9
BLAKE2b-256 checksum
How to use checksums
a25b131e39a940287d792e453f7be7d937f2af62668f1019e7fd57ccf9ebf7ff
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.6-py3-none-manylinux_2_28_aarch64.whl

Download URL pyvcell_odesolver-0.9.6-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
4b447f4b81f0fcc9bc0a6d7c1714f37e34b0ad5ee4465bff5126ea59855e97ec
BLAKE2b-256 checksum
How to use checksums
06e26df82290098f9cca7c087740fd3d59db50221eebc709be269be1f3005a72
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.6-py3-none-macosx_15_0_universal2.whl

Download URL pyvcell_odesolver-0.9.6-py3-none-macosx_15_0_universal2.whl
Size 473.2 kB
Tags Python 3 macOS 15.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
af4bec32a14acb0dea621dbcca23c7dd18443be5767e5c6f4b6bde8b68ac36a4
BLAKE2b-256 checksum
How to use checksums
3d97f5ac7b51e04217f2c5c50dd7bf8515307b9be67574a197772cf4355c84d7
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

This release

0.9.6 This release

5 release files

0.9.5

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