This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 1.2.0 instead.
Reason given by maintainers: wrong version number
simind-python-connector
Python SIMIND Monte Carlo Connector.
A Python toolkit that lets you run SIMIND from Python and use the outputs in common reconstruction ecosystems (STIR, SIRF, PyTomography).
Disclaimer
This project is an independent Python connector toolkit and is not affiliated with, endorsed by, or maintained by the SIMIND project or Lund University.
SIMIND is not distributed with this package. You must separately obtain and install a licensed SIMIND installation.
Quick Links
- Full Documentation
- Installation
- Backend Support - adaptor dependency matrix
- Reconstruction with SIMIND corrections
What This Package Does
- Runs SIMIND from Python with a minimal, explicit API.
- Adapts SIMIND data for widely used Python reconstruction packages.
Key Features
- Connector-first API -
SimindPythonConnectorfor direct SIMIND execution from Python - Package Adaptors - STIR/SIRF/PyTomography adaptors for reconstruction workflows
- Native reconstruction workflows - Use STIR/SIRF/PyTomography reconstruction tools with generated SIMIND data
- Reconstruction with SIMIND corrections (optional) -
simind_python_connector.recon: Monte Carlo scatter and Fu & Qi residual correction in SIRF OSEM and CIL algorithms - Dual scoring support - SCATTWIN and PENETRATE
- DICOM builders - DICOM-driven setup utilities for scanner/input preparation
- Advanced Schneider2000 density conversion - 44-segment HU-to-density mapping
Installation
Basic Installation
pip install simind-python-connector
Import with:
import simind_python_connector
For example plotting dependencies:
pip install "simind-python-connector[examples]"
Adaptor Dependencies
SimindPythonConnector works without SIRF/STIR/PyTomography.
Install optional packages only for the adaptor paths you need:
- STIR Python for
StirSimindAdaptorworkflows (example 07A) - SIRF for
SirfSimindAdaptorworkflows (example 07B) - PyTomography for
PyTomographySimindAdaptorworkflows (example 07C)
Option 1: STIR Python (Recommended for basic usage)
Install from conda:
conda install -c conda-forge stir "numpy<2.0"
Note: If STIR from conda-forge fails with NumPy binary-compatibility errors, install numpy<2.
Or build from source:
git clone https://github.com/UCL/STIR.git
cd STIR
# Follow build instructions in the repository
Option 2: SIRF
Install from source:
git clone https://github.com/SyneRBI/SIRF.git
cd SIRF
# Follow build instructions in the repository
Note: SIRF includes STIR, so a separate STIR install is usually unnecessary.
Option 3: PyTomography
Install PyTomography for the PyTomography adaptor workflow:
pip install pytomography
SIMIND Requirement
SIMIND is not included with this package and must be installed separately.
Use the official SIMIND resources:
- SIMIND site (Medical Radiation Physics, Lund University): https://www.msf.lu.se/en/research/simind-monte-carlo-program
- SIMIND manual/docs: https://www.msf.lu.se/en/research/simind-monte-carlo-program/manual
For local use with this package's scripts, place your SIMIND installation under:
./simind
and make sure the executable is available at:
./simind/simind
and ensure SIMIND data files are available under:
./simind/smc_dir/
The Docker helper scripts use this layout and automatically wire SIMIND paths
when the binary exists at ./simind/simind.
For direct local runs outside the repository helpers, make sure the SIMIND
executable is available as simind on PATH.
Quick Start
import numpy as np
from simind_python_connector import SimindPythonConnector
from simind_python_connector.configs import get
source = np.zeros((32, 32, 32), dtype=np.float32) # z, y, x
source[12:20, 12:20, 12:20] = 1.0
mu_map = np.zeros_like(source)
mu_map[source > 0] = 0.15
connector = SimindPythonConnector(
config_source=get("Example.yaml"),
output_dir="output/basic",
output_prefix="case01",
quantization_scale=0.05,
)
connector.configure_voxel_phantom(
source=source,
mu_map=mu_map,
voxel_size_mm=4.0,
)
connector.set_energy_windows([126], [154], [0]) # Tc-99m ± 10%
connector.add_runtime_switch("FI", "tc99m")
connector.add_runtime_switch("CC", "ma-lehr")
connector.add_runtime_switch("NN", 1)
connector.add_runtime_switch("RR", 12345)
outputs = connector.run()
total = outputs["tot_w1"].projection
print(total.shape)
Advanced Density Conversion
from simind_python_connector.converters.attenuation import hu_to_density_schneider
import numpy as np
# Convert HU image to densities using Schneider2000 model
hu_image = np.array([[-1000, 0, 500], [800, 1200, 2000]])
density_map = hu_to_density_schneider(hu_image) # 44-segment clinical model
Pure Python Connector (NumPy Outputs)
from simind_python_connector import RuntimeOperator, SimindPythonConnector
from simind_python_connector.configs import get
connector = SimindPythonConnector(
config_source=get("AnyScan.yaml"),
output_dir="output/python_connector",
output_prefix="case01",
quantization_scale=1.0,
)
outputs = connector.run(RuntimeOperator(switches={"NN": 1, "RR": 12345}))
total = outputs["tot_w1"]
print(total.projection.shape)
print(total.header_path)
For minimal toy runs with smaller projection/image settings, use
get("Example.yaml").
quantization_scale controls source integer quantization before writing SIMIND
.smi files:
1.0: uses full internal source integer range (best numeric precision)< 1.0: reduces integer scale for faster toy runs but increases rounding error
SIMIND treats source maps as integer weights; absolute activity/time scaling is controlled separately by simulation settings.
Docker Environments
Dedicated container definitions are provided in docker/:
docker/stir/Dockerfiledocker/sirf/Dockerfiledocker/pytomography/Dockerfile
Use Docker Compose:
docker compose -f docker/compose.yaml build stir
docker compose -f docker/compose.yaml run --rm stir
Run per-backend validation and separated examples:
bash scripts/run_container_validation.sh
bash scripts/run_container_validation.sh --with-simind
bash scripts/run_container_examples.sh
Contributing
Please see the Contributing Guide.
License
Apache License 2.0
Metadata
Release files for simind-python-connector 3.0.0
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 | |
|---|---|---|---|---|
| simind_python_connector-3.0.0.tar.gz | 226.6 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| simind_python_connector-3.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 330.5 kB
Release files / simind_python_connector-3.0.0.tar.gz
| Download URL | simind_python_connector-3.0.0.tar.gz |
|---|---|
| Size | 226.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e3afc5c7ef8734d6d1bbac23739b7a813a7b599071cb73590df20c059ec5f7ca
|
|
BLAKE2b-256 checksum How to use checksums |
a0db8b3c8f6e1db2bb17c22bc25975ad27553df1348719b5c4e9f1a510dc12dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / simind_python_connector-3.0.0-py3-none-any.whl
| Download URL | simind_python_connector-3.0.0-py3-none-any.whl |
|---|---|
| Size | 103.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7831fa09780b818236b634abc2941a56875bc0c586777755e67c9e255f8f7f9a
|
|
BLAKE2b-256 checksum How to use checksums |
96041a7fdbc4b451689122ce0e4fb108ec308fb8b123829a4804ab4b85d05691
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logSecurity for simind-python-connector 3.0.0
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for simind_python_connector-3.0.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logA 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.