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

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.7
File
pyvcell_odesolver-0.9.7-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
pyvcell_odesolver-0.9.7-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
pyvcell_odesolver-0.9.7-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
pyvcell_odesolver-0.9.7-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64, Linux glibc 2.27+ ARM64 Details
pyvcell_odesolver-0.9.7-py3-none-macosx_15_0_universal2.whl Python 3 none macOS 15.0+ universal2 (ARM64, x86-64) Details

Total release size: 4.8 MB

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

Download URL pyvcell_odesolver-0.9.7-py3-none-win_arm64.whl
Size 400.9 kB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
18f136d449fe67e7358d58c3dca67aef5577ebefc646c12a07c9bd400cc3e393
BLAKE2b-256 checksum
How to use checksums
5706a4a130119eb607acccb262a71fa7ab7462bdd686e9c1940c735f5d8ce182
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.22

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

Download URL pyvcell_odesolver-0.9.7-py3-none-win_amd64.whl
Size 460.1 kB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
6e0858957859fffbbd9a654da2871cfbc625b8466725fdd3f5e868696a6889fe
BLAKE2b-256 checksum
How to use checksums
c4363c2f9878cce88e4a054b767811230899265bc3e2d94c8313c9b4324ee31c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.22

Release files / pyvcell_odesolver-0.9.7-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pyvcell_odesolver-0.9.7-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
2856e937104d02350419a848802fe3a0d14e600a7296817496d81b2a8d5c7aa8
BLAKE2b-256 checksum
How to use checksums
1fe0618f9af5457d60a798c938b183cfb86fc7d59b9e85278f2982abffd0ffcb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.22

Release files / pyvcell_odesolver-0.9.7-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL pyvcell_odesolver-0.9.7-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 1.7 MB
Tags Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
88da517ce6132384e8cadc890deb0a66ee69e43a66cff4f0e4783f75c0421c05
BLAKE2b-256 checksum
How to use checksums
28acc97f68a94d9ef10b000e3c444c040e1af0833475a529b528ad4275251bc5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.22

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

Download URL pyvcell_odesolver-0.9.7-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
4900b254fff8a75d560421df9552eb889295b8d986f4cac8188686bd5f11fe80
BLAKE2b-256 checksum
How to use checksums
984cb21d2ec8a1e83d76698cdf8c5a1bd73a9e319b8092d4769eac82e5907a9f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.22

Security for pyvcell-odesolver 0.9.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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