Bloch Equation Simulator for Python
A fast Bloch equation simulator with a C core, Python API and interactive GUI, based on the solver by Brian Hargreaves (Stanford). Use it to explore spin physics in Free Mode, or to simulate complete Pulseq acquisitions on 3D phantoms in Sequence Mode.
Installation
Python package (GUI, Pulseq support and Python API):
pip install blochsimulator
blochsimulator-gui
In a Jupyter notebook, use %pip install blochsimulator so the package lands in
the notebook's own environment.
Desktop application for macOS and Windows (no Python needed): download from GitHub Releases. Builds target 64-bit systems; mainly tested on macOS 26.
macOS: the app is blocked on first launch
The app is not signed with an Apple Developer ID, so macOS quarantines it.
Move BlochSimulator.app to Applications and launch it. If it is blocked:
- Dismiss the warning.
- Open System Settings > Privacy & Security and scroll to Security.
- Click Open Anyway next to the
BlochSimulator.appmessage. - Launch BlochSimulator again.
Alternatively, if you trust the download, remove the quarantine flag:
xattr -cr /Applications/BlochSimulator.app
Demo
Sequence Mode: EPI variants on a spherical object, including multi-repetition and multi-slice acquisitions with B0 inhomogeneity.
Free Mode: a spin-echo simulation.
Features
Free Mode — understand spin behaviour over frequency and position:
- Endpoint or time-resolved simulation of configurable tissues (T1, T2, PD)
- RF pulses: rectangular, sinc, Gaussian, adiabatic half/full passage, BIR-4, or loaded from file
- FID, spin echo, gradient echo, inversion recovery, slice selection, EPI, SSFP
- Magnetization, signal, spectrum, spatial-profile, heatmap and 3D-vector views, GIF/MP4 export
- Parameter sweeps with final-state or full time-resolved result collection
Sequence Mode — simulate what the scanner would measure:
- Pulseq sequences, loaded or generated: EPI (bipolar/flyback), spiral, EPSI/MGE, CSI, FLASH, inversion recovery with T1 fit, PRESS, slice-selective FID, Cartesian 3D bSSFP, spectrally selective 3D bSSFP and Cartesian or radial multi-echo 3D bSSFP
- RF design including spectral-spatial pulses with per-metabolite pulse schedules
- Phantoms: 3D spectral phantoms with B0 maps, hyperpolarized pyruvate→lactate kinetics with inflow, and a mouse perfusion phantom for hyperpolarized ¹³C and for ¹H (tissue water, gadolinium DCE)
- B1 Tx/Rx fields: uniform, birdcage, surface coil
- Receiver noise calibrated from a measured phantom FID, to predict SNR of e.g. hyperpolarized in-vivo experiments
- Reconstruction Explorer for 2D/3D images, k-space and CSI spectra, with the phantom shown on the image grid
- PSF and spoiling analysis of the current sequence
- Export to
.seq, NetCDF/HDF5, Bruker raw data (experimental) and auto-generated Jupyter notebooks; complete projects as.blochproj(see Bloch project vs. exported results)
See the User Guide for how to use these and what to watch out for.
Bloch project vs. exported results
The GUI writes two kinds of files. Choose by what you want to do with them:
Bloch project (.blochproj) |
Exported results (.nc, .h5, .npz, Bruker, DICOM, NIfTI) |
|
|---|---|---|
| Written by | File → Save Project, Export selected… in the Simulations list, parameter loops with Results: Save to folder | Export Results |
| Purpose | Continue working: re-open the complete session in the GUI | Analyse the numbers of one result in other tools |
| Contains | Sequence, phantom, B1 fields, all GUI controls, the last Free Mode result and the last Sequence/Spin Probe result | Signal, k-space, images, magnetization, B1 maps and the parameters as JSON metadata of the current result |
| Re-open in the GUI | Yes (File → Open Project) | No (a .nc file can be viewed with Open result… in the Reconstruction Explorer) |
| Read without Bloch Simulator | No, needs blochsimulator.project_io.load_project |
Yes (xarray, h5py, NumPy, MATLAB, scanner viewers) |
Both keep the simulation parameters (flip angle, matrix, FOV, TR/TE, nucleus, B0). Only a project also keeps the phantom and B1 field objects themselves. Two example notebooks show how to load each kind, including these parameters:
- load_bloch_project.ipynb: parameters, phantom, B1 and every simulation inside a project.
- load_exported_results.ipynb: NetCDF, HDF5 and NPZ exports with their metadata. Free Mode HDF5 exports: read_hdf5_examples.py.
Several simulations in one project. A project can hold one Free Mode and one Sequence (or Spin Probe) result at the same time. Each result again contains many spins, voxels, pools or coils that can be selected by index:
from blochsimulator.project_io import load_project
project = load_project("simulation.blochproj")
# Free Mode: arrays of shape (time, position, frequency), one spin per pair
free_mode = project["legacy_result"]
if free_mode is not None:
mz_one_spin = free_mode["mz"][:, 0, 10] # position 0, frequency index 10
# Sequence mode: one result with signal, magnetization and per-pool data
result = project["sequence_result"]
if result is not None:
parameters = result.metadata["sequence_definitions"]
flip_angle_deg = parameters["FlipAngleDeg"]
voxel = result.final_magnetization[32, 32, 0] # Mx, My, Mz of one voxel
for index, pool in enumerate(result.pool_names):
pool_signal = result.species_signal[index] # signal of one metabolite
A parameter loop with Results: Save to folder or Export selected… in
the Simulations list writes one project per run into a folder. Every run records the varied parameter in
result.metadata["parameter_loop"] (loop_id, parameter_label, value,
unit, index), so single runs can be picked or stacked:
from pathlib import Path
runs = {}
for path in Path("loop_folder").glob("*.blochproj"):
result = load_project(path)["sequence_result"]
loop = result.metadata.get("parameter_loop")
if loop is not None:
runs[loop["value"]] = result
result_at_15 = runs[15.0] # e.g. the run with flip angle 15°
Python API
Exported notebooks reproduce any GUI simulation; see the
spin-echo reproduction and
analysis examples. The GUI can also be
started from a local Jupyter notebook with !blochsimulator-gui (not on remote
servers or Colab).
Basic simulation
import numpy as np
from blochsimulator import BlochSimulator, TissueParameters
# Create simulator
sim = BlochSimulator(use_parallel=True, num_threads=4)
# Define tissue parameters
tissue = TissueParameters(
name="Gray Matter",
t1=1.33, # seconds
t2=0.083 # seconds
)
# Create a simple 90-degree pulse
ntime = 100
dt = 1e-5 # 10 microseconds
time = np.arange(ntime) * dt
b1 = np.zeros(ntime, dtype=complex)
b1[0] = 0.0235 # 90-degree hard pulse
gradients = np.zeros((ntime, 3)) # No gradients
# Run simulation
result = sim.simulate(
sequence=(b1, gradients, time),
tissue=tissue,
mode=2 # Time-resolved output
)
# Plot results
sim.plot_magnetization()
More Python API examples
Load a saved project
from blochsimulator.project_io import load_project
project = load_project("simulation.blochproj")
phantom = project["phantom"]
result = project["sequence_result"]
See Bloch project vs. exported results and load_bloch_project.ipynb.
Spin echo sequence
from blochsimulator import BlochSimulator, SpinEcho, TissueParameters
sim = BlochSimulator()
# Create spin echo sequence
sequence = SpinEcho(te=20e-3, tr=500e-3) # 20ms TE, 500ms TR
# Simulate white matter
tissue = TissueParameters.white_matter(3.0)
# Run simulation with multiple frequencies (T2* effects)
frequencies = np.linspace(-50, 50, 11) # Hz
result = sim.simulate(sequence, tissue, frequencies=frequencies)
# Access magnetization components
mx, my, mz = result['mx'], result['my'], result['mz']
signal = result['signal']
Custom pulse design
from blochsimulator import design_rf_pulse
# Design a sinc pulse
b1, time = design_rf_pulse(
pulse_type='sinc',
duration=2e-3, # 2 ms
flip_angle=180, # degrees
time_bw_product=4, # Time-bandwidth product
npoints=200
)
# Apply phase
phase = np.pi/4 # 45 degrees
b1_phased = b1 * np.exp(1j * phase)
Parallel simulation
# Simulate multiple positions and frequencies in parallel
positions = np.random.randn(100, 3) * 0.01 # Position scale: 10 mm
frequencies = np.linspace(-200, 200, 41) # 41 frequencies
result = sim.simulate(
sequence=sequence,
tissue=tissue,
positions=positions,
frequencies=frequencies,
mode=0 # Endpoint only (faster)
)
# Result shape: (100 positions, 41 frequencies)
print(f"Signal shape: {result['signal'].shape}")
Xarray integration
For advanced analysis, you can convert simulation results directly to an
xarray.Dataset. This provides named dimensions, coordinates, and automatic
metadata tracking.
# Convert last result to xarray
ds = sim.get_results_as_xarray()
# Access data with named dimensions
# Dimensions: (time, position, frequency)
print(ds.mx.dims)
# Powerful selection and plotting
ds.signal.sel(frequency=0, method='nearest').plot()
# Metadata is preserved in attributes
print(ds.attrs['t1'], ds.attrs['te'])
Sequence library
Pre-defined sequences are available:
from blochsimulator import SpinEcho, GradientEcho
# Spin Echo
se = SpinEcho(te=30e-3, tr=1.0)
# Gradient Echo
gre = GradientEcho(te=5e-3, tr=10e-3, flip_angle=30)
# Compile to waveforms
b1, gradients, time = se.compile(dt=1e-6)
Tissue parameter library
Common tissues at different field strengths:
from blochsimulator import TissueParameters
# 3T parameters
gm = TissueParameters.gray_matter(3.0)
wm = TissueParameters.white_matter(3.0)
csf = TissueParameters.csf(3.0)
# 7T parameters
gm_7t = TissueParameters.gray_matter(7.0)
# Custom tissue
liver = TissueParameters(
name="Liver",
t1=0.812,
t2=0.042,
t2_star=0.028,
density=0.9
)
Development
For detailed packaging, release workflows, and CI/CD information, see the Developer Guide.
Developer setup and manual desktop build
Install from source
The Python package supports Python 3.10 or later. Desktop GUI development and
PyInstaller app builds use the shared Python 3.12 runtime declared in
.python-version, so the source GUI and packaged app do not silently use
different interpreters.
- Windows: Install Python from python.org and select Add Python to PATH. Install Visual Studio Build Tools with Desktop development with C++.
- macOS: Install Python from
python.org or with
brew install python. Install the compiler withxcode-select --install. For optional OpenMP acceleration, installlibompwith Homebrew. - Linux: Install Python and a compiler with
sudo apt install python3 python3-pip build-essentialon Ubuntu/Debian, or install the corresponding Python and Development Tools packages on Fedora.
Clone the repository and install it in editable mode:
git clone https://github.com/LucaNagel/bloch_sim_gui.git
cd bloch_sim_gui
pip install -e .
For desktop GUI development, use the shared launcher instead of invoking an
arbitrary python or python3 from PATH:
./scripts/run_gui.sh
Both this launcher and scripts/build_pyinstaller.sh use .venv-packaging.
The current repository is installed there in editable mode, preventing an old
installed BlochSimulator package from shadowing the working tree.
Set BLOCH_PYTHON=/path/to/python3.12 if Python 3.12 is not discoverable as
python3.12.
Verify the installation:
from blochsimulator import BlochSimulator, TissueParameters
sim = BlochSimulator()
tissue = TissueParameters.gray_matter(3.0)
print(f"T1: {tissue.t1:.3f}s, T2: {tissue.t2:.3f}s")
Conda environment for notebooks and the Python API
From the repository root, create an environment with an explicit Python version:
conda create -n bloch-simulator python=3.12 pip
conda activate bloch-simulator
python -m pip install -e .
Select this environment as the kernel in your notebook editor.
Pip installs h5py automatically because it is declared in pyproject.toml.
If no compatible pre-built wheel is available, pip attempts a source build,
which needs a separately installed HDF5 library. To use Conda's pre-built
h5py package and its HDF5 dependency, optionally add h5py to the
conda create command before running pip. See the
Conda setup notes
for details.
Build the desktop application
Standalone applications for macOS, Windows, and Linux are automatically built and attached to GitHub Releases whenever a new version tag is pushed. The instructions below are for manual local builds. One build per operating system is required.
Prerequisites:
- macOS: Xcode CLT;
brew install libomp - Windows: Python 3.10+ and MSVC Build Tools for the C extension
- Linux: gcc/g++; ensure
libgompis available
Quick build:
./scripts/build_pyinstaller.sh
The artifact is written to dist/BlochSimulator as a single binary, with an
.exe suffix on Windows.
The equivalent explicit commands use the same environment:
.venv-packaging/bin/python setup.py build_ext --inplace
.venv-packaging/bin/python -m PyInstaller bloch_gui.spec --noconfirm
Run the packaged application with ./dist/BlochSimulator on macOS/Linux or
dist\\BlochSimulator.exe on Windows.
Runtime data and exports:
rfpulses/is bundled automatically.- Exports default to per-user data directories:
- macOS:
~/Library/Application Support/BlochSimulator/exports - Windows:
%APPDATA%\\BlochSimulator\\exports - Linux:
~/.local/share/BlochSimulator/exports
- macOS:
- Override the location with
BLOCH_APP_DIRorBLOCH_EXPORT_DIR.
Project structure
blochsimulator/
├── src/
│ └── blochsimulator/
│ ├── __init__.py
│ ├── simulator.py # Core Python API
│ ├── gui.py # PyQt5 GUI
│ ├── bloch_core_modified.c # C implementation
│ ├── bloch_core.h # C header
│ ├── bloch_wrapper.pyx # Cython wrapper
│ └── ...
├── tests/ # Unit tests
├── docs/ # Sphinx documentation
├── pyproject.toml # Modern build config
├── setup.py # C-extension build config
├── MANIFEST.in # Source dist manifest
└── README.md
Troubleshooting build issues
- Missing compiler: Install gcc (Linux), Xcode (macOS), or Visual Studio (Windows).
- OpenMP not found: The code will still work, but without parallelization.
- Import error: Ensure that the
.soor.pydfile is in the expected package directory.
Contributing
Contributions are welcome. Please:
- Fork the repository.
- Create a feature branch.
- Add tests for new features.
- Submit a pull request.
Citation
If you use this simulator in your research, please cite:
@software{blochsimulator_python,
title={Python Bloch Equation Simulator GUI and API},
author={Luca Nagel},
year={2026},
url={https://github.com/LucaNagel/bloch_sim_gui}
}
Acknowledgments
This project is based on code originally developed by Brian Hargreaves at Stanford University. As of July 2026, the original source is unfortunately unavailable. A Python adaptation of the code is available here.
- Original Bloch simulator by Brian Hargreaves, Stanford University
- NumPy and SciPy communities
- xarray team
- PyQt/PySide developers
- OpenMP project
- Built partially with Codex, Claude Code, and Gemini CLI
License
This project is licensed under the GNU General Public License v3.0. You may copy, distribute, and modify the software under the terms of GPLv3. Modified versions distributed to others must also be licensed under GPLv3 and include the corresponding source code.
Contact
Metadata
Release files for blochsimulator 2.9.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| blochsimulator-2.9.5.tar.gz | 2.5 MB | Without provenance | Details for blochsimulator-2.9.5.tar.gz |
Built distributions (wheels)
Total release size: 52.7 MB
Release files / blochsimulator-2.9.5.tar.gz
| Download URL | blochsimulator-2.9.5.tar.gz |
|---|---|
| Size | 2.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2d3a62341937b81e3e0f83b66304fe0f02a2cf09869b1c43616dc9fe9a02573a
|
|
BLAKE2b-256 checksum How to use checksums |
c1c08ec662d8d85d4c79953907df50170c10d40cf666a486d934d62fb1e5d4b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / blochsimulator-2.9.5-cp314-cp314-win_amd64.whl
| Download URL | blochsimulator-2.9.5-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d300a90f6e878d1f421a531759e8f2a9d90c754792ae2285693319028f635a1e
|
|
BLAKE2b-256 checksum How to use checksums |
bb688f1e456d59157195a38492737637e0d22f80f28792c6784cc85f2e595333
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / blochsimulator-2.9.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | blochsimulator-2.9.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 5.0 MB |
| Tags | CPython 3.14 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
69d3a0abd6fb01e3a5f3ea82fdd5afbbfbcc836f808be675a0820acd09d3238d
|
|
BLAKE2b-256 checksum How to use checksums |
17d40d4e8b02ced4b81c7a9a6e77cc440e71a9a83f0e57dd08301a7f3b885452
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / blochsimulator-2.9.5-cp314-cp314-macosx_14_0_arm64.whl
| Download URL | blochsimulator-2.9.5-cp314-cp314-macosx_14_0_arm64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.14 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
271084074d85be0f77ad8f0746ae44c37ae667aab5a000526ba3af0f4d2fbcef
|
|
BLAKE2b-256 checksum How to use checksums |
2a2d31bb4fd961e8dbff4ed7c5a5c3d8897201007f6fb349ee6e2f51a809e739
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / blochsimulator-2.9.5-cp313-cp313-win_amd64.whl
| Download URL | blochsimulator-2.9.5-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
16b15cd8d68dd0858b7abf20af4f4c9892e4f4f52476dcc632d32ab725c911b6
|
|
BLAKE2b-256 checksum How to use checksums |
4c1410227441bb1cad3397b78f65f1d31a13cb36375d6a5769ff8d8d0a633de8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / blochsimulator-2.9.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | blochsimulator-2.9.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 5.0 MB |
| Tags | CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
077093f06d05d055d3984f6a7e267b9a2c83490cb94674fa9a426539c2898f51
|
|
BLAKE2b-256 checksum How to use checksums |
b08e3c41c1a0e88cfe3896120e6e8213840e4e6f6ff2cfe1a8f5ef0bcb961e5f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / blochsimulator-2.9.5-cp313-cp313-macosx_14_0_arm64.whl
| Download URL | blochsimulator-2.9.5-cp313-cp313-macosx_14_0_arm64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.13 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
6fed5c6f8f5f8ffedd187daa48317d91f60e740b1d44b8794aa5eab7a6429120
|
|
BLAKE2b-256 checksum How to use checksums |
d237db66271cca2f914f236288330f210764e802d68f5c972048185b25e83b63
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / blochsimulator-2.9.5-cp312-cp312-win_amd64.whl
| Download URL | blochsimulator-2.9.5-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
0e0960196996d6975d1ebf27ebadd0c3544fedf28a98c5e518cc0498b6f0fa8b
|
|
BLAKE2b-256 checksum How to use checksums |
7fe9230e502452d6c3bd95da47a1a11dd4541bf976e4c6dc7d8cb9261b86b204
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / blochsimulator-2.9.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | blochsimulator-2.9.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 5.0 MB |
| Tags | CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
2fbd5d2d731f7f5bf6507824924d72fef29c393fb61ea27eaef98193d7458b97
|
|
BLAKE2b-256 checksum How to use checksums |
6c4b36802ccd54225367c6c2c13cae744ef1c0349bc7cf10c940a7b035168253
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / blochsimulator-2.9.5-cp312-cp312-macosx_14_0_arm64.whl
| Download URL | blochsimulator-2.9.5-cp312-cp312-macosx_14_0_arm64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.12 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
59509ebb2b00020510294ca6aa776b77758b40534bb8c9c7a7021784410d03d7
|
|
BLAKE2b-256 checksum How to use checksums |
9ecd75b6deb0a698e1455c5ebd27c0f2763a0b781442f333769938aafd8de422
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / blochsimulator-2.9.5-cp311-cp311-win_amd64.whl
| Download URL | blochsimulator-2.9.5-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
8638a501ed17cdc2641ffdced32abae5683ad753e22a50a04c16b5e5b5286e06
|
|
BLAKE2b-256 checksum How to use checksums |
d6db7a5a41816f0108d40a2b09851205ce096ed2660d0a568f9ee9747d918c5b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / blochsimulator-2.9.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | blochsimulator-2.9.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 5.1 MB |
| Tags | CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c599157a5f0d4a036d2f6ce02a965b65d6e7b177ccc7569336bf1f44e109746e
|
|
BLAKE2b-256 checksum How to use checksums |
0ee812775d4e16d9d29fcac4d47b4daf1c8a14c482f752751adbcc760a3ae913
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / blochsimulator-2.9.5-cp311-cp311-macosx_14_0_arm64.whl
| Download URL | blochsimulator-2.9.5-cp311-cp311-macosx_14_0_arm64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.11 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
912b78225399d06c86a5964f5e0c421a266b90911ecf9ae017daa445e0848f51
|
|
BLAKE2b-256 checksum How to use checksums |
1c811586ee7ad1648c02a45791f8e83f0335aa04830eca756810f93501309ed3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / blochsimulator-2.9.5-cp310-cp310-win_amd64.whl
| Download URL | blochsimulator-2.9.5-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
9e05b054c454020f9965b368e46ee09c97cb764f3f4e40919cf0bbd430866e68
|
|
BLAKE2b-256 checksum How to use checksums |
5f4c4e4bba1772f3a25c0568b94e8d0f253f522d785a54ef6e4317c87e5b3772
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / blochsimulator-2.9.5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | blochsimulator-2.9.5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.9 MB |
| Tags | CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
6ee7aa57c17c774f38f22017f1ce2489fedc7d732374e60711ab6f385b2db628
|
|
BLAKE2b-256 checksum How to use checksums |
852ca1da231ab0e369ec36ae0b916f210f52a4ba230d3ab6e380f86080f4a322
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / blochsimulator-2.9.5-cp310-cp310-macosx_14_0_arm64.whl
| Download URL | blochsimulator-2.9.5-cp310-cp310-macosx_14_0_arm64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.10 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
63e4d1c84cd7ca779d34a73a6b3756d9132b701c8015c164cc7ef98efed28d16
|
|
BLAKE2b-256 checksum How to use checksums |
8c6725cc1fb982fe92d067bdb2c932107d1d6edc46048f18b375428e4b204d49
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for blochsimulator 2.9.5
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.