simind-python-connector 1.2.0__tar.gz → 2.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- simind_python_connector-2.0.1/.github/workflows/containers.yml +52 -0
- simind_python_connector-2.0.1/.github/workflows/docs.yml +53 -0
- simind_python_connector-2.0.1/.github/workflows/publish.yml +47 -0
- simind_python_connector-2.0.1/.github/workflows/tests.yml +91 -0
- simind_python_connector-2.0.1/.readthedocs.yaml +19 -0
- simind_python_connector-2.0.1/.zenodo.json +35 -0
- simind_python_connector-2.0.1/CHANGELOG.md +592 -0
- simind_python_connector-2.0.1/CITATION.cff +26 -0
- simind_python_connector-2.0.1/MANIFEST.in +67 -0
- simind_python_connector-2.0.1/PKG-INFO +149 -0
- simind_python_connector-2.0.1/README.md +98 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docker/README.md +5 -6
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docker/compose.yaml +8 -8
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docker/constraints.txt +0 -2
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docker/python/Dockerfile +3 -2
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docker/python/install_mpich_compat.sh +3 -1
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docker/pytomography/Dockerfile +18 -4
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docker/sirf/Dockerfile +16 -4
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docker/stir/Dockerfile +19 -4
- simind_python_connector-2.0.1/docs/LICENSE +195 -0
- simind_python_connector-2.0.1/docs/_gallery.py +65 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docs/api.rst +41 -11
- simind_python_connector-2.0.1/docs/backends.rst +92 -0
- simind_python_connector-2.0.1/docs/changelog.rst +866 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docs/conf.py +56 -5
- simind_python_connector-2.0.1/docs/contributing.rst +129 -0
- simind_python_connector-2.0.1/docs/datasets.rst +95 -0
- simind_python_connector-2.0.1/docs/examples.rst +36 -0
- simind_python_connector-2.0.1/docs/geometry.rst +194 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docs/index.rst +20 -3
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docs/installation.rst +22 -21
- simind_python_connector-2.0.1/docs/normalisation.rst +164 -0
- simind_python_connector-2.0.1/docs/phantoms.rst +126 -0
- simind_python_connector-2.0.1/docs/reconstruction.rst +295 -0
- simind_python_connector-2.0.1/docs/simind_validation.md +210 -0
- simind_python_connector-2.0.1/docs/spectub_cache_interference.md +143 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docs/testing.rst +121 -31
- simind_python_connector-2.0.1/docs/tutorial.rst +217 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docs/usage.rst +71 -77
- simind_python_connector-2.0.1/examples/README.rst +5 -0
- simind_python_connector-2.0.1/examples/backends/README.rst +2 -0
- simind_python_connector-2.0.1/examples/backends/plot_07a_stir_adaptor_osem.py +233 -0
- simind_python_connector-2.0.1/examples/backends/plot_07b_sirf_adaptor_osem.py +218 -0
- simind_python_connector-2.0.1/examples/backends/plot_07c_pytomography_adaptor_osem.py +209 -0
- simind_python_connector-2.0.1/examples/backends/plot_08a_stir_adaptor_from_dicom.py +86 -0
- simind_python_connector-2.0.1/examples/backends/plot_08b_sirf_adaptor_from_dicom.py +80 -0
- simind_python_connector-2.0.1/examples/backends/plot_08c_pytomography_adaptor_from_dicom.py +76 -0
- simind_python_connector-2.0.1/examples/cil/README.rst +2 -0
- simind_python_connector-2.0.1/examples/cil/plot_14_cil_scatter.py +365 -0
- simind_python_connector-2.0.1/examples/cil/plot_15_cil_rdp_svrg.py +438 -0
- simind_python_connector-2.0.1/examples/getting_started/README.rst +2 -0
- simind_python_connector-2.0.1/examples/getting_started/plot_01_basic_simulation.py +109 -0
- simind_python_connector-2.0.1/examples/getting_started/plot_02_runtime_switch_comparison.py +131 -0
- simind_python_connector-2.0.1/examples/getting_started/plot_03_multi_window.py +146 -0
- simind_python_connector-2.0.1/examples/getting_started/plot_04_custom_config.py +122 -0
- simind_python_connector-1.2.0/examples/05_scattwin_vs_penetrate_comparison.py → simind_python_connector-2.0.1/examples/getting_started/plot_05_scattwin_vs_penetrate_comparison.py +176 -129
- simind_python_connector-2.0.1/examples/getting_started/plot_06_schneider_density_conversion.py +226 -0
- simind_python_connector-2.0.1/examples/mc_scatter/README.rst +2 -0
- simind_python_connector-2.0.1/examples/mc_scatter/plot_11_mc_scatter_osem.py +376 -0
- simind_python_connector-2.0.1/examples/mc_scatter/plot_12_scatter_normalisation.py +558 -0
- simind_python_connector-2.0.1/examples/mc_scatter/plot_13_residual_correction.py +430 -0
- simind_python_connector-2.0.1/examples/phantoms/README.rst +2 -0
- simind_python_connector-2.0.1/examples/phantoms/plot_09_phantom_library.py +159 -0
- simind_python_connector-2.0.1/examples/phantoms/plot_10_nema_osem.py +256 -0
- simind_python_connector-2.0.1/examples/real_data/README.rst +53 -0
- simind_python_connector-2.0.1/examples/real_data/plot_16a_stir_ct_conversion.py +772 -0
- simind_python_connector-2.0.1/examples/real_data/plot_16b_sirf_ct_conversion.py +742 -0
- simind_python_connector-2.0.1/examples/real_data/plot_16c_pytomography_ct_conversion.py +851 -0
- simind_python_connector-2.0.1/examples/real_data/plot_17_y90_effective_energy.py +1036 -0
- simind_python_connector-2.0.1/examples/real_data/plot_18_y90_mc_scatter.py +2584 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/pyproject.toml +26 -19
- simind_python_connector-2.0.1/scripts/build_gallery.sh +79 -0
- simind_python_connector-2.0.1/scripts/check_gallery_current.py +29 -0
- simind_python_connector-2.0.1/scripts/check_simind_mpi.py +81 -0
- simind_python_connector-2.0.1/scripts/check_wheel_resources.py +116 -0
- simind_python_connector-2.0.1/scripts/make_y90_bundle.py +112 -0
- simind_python_connector-2.0.1/scripts/prepare_release.py +229 -0
- simind_python_connector-2.0.1/scripts/release.sh +97 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/scripts/run_all_examples.py +12 -12
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/scripts/run_container_examples.sh +19 -16
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/scripts/run_container_validation.sh +44 -18
- simind_python_connector-2.0.1/scripts/run_validation.sh +147 -0
- simind_python_connector-2.0.1/scripts/validation_report.py +103 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/__init__.py +13 -4
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/builders/__init__.py +2 -2
- simind_python_connector-2.0.1/simind_python_connector/builders/_native.py +92 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/builders/acquisition_builder.py +76 -93
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/builders/image_builder.py +17 -76
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/configs/__init__.py +12 -5
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/connectors/__init__.py +2 -4
- simind_python_connector-2.0.1/simind_python_connector/connectors/_native_adaptor.py +471 -0
- simind_python_connector-2.0.1/simind_python_connector/connectors/base.py +40 -0
- simind_python_connector-2.0.1/simind_python_connector/connectors/python_connector.py +1387 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/connectors/pytomography_adaptor.py +89 -49
- simind_python_connector-2.0.1/simind_python_connector/connectors/sirf_adaptor.py +43 -0
- simind_python_connector-2.0.1/simind_python_connector/connectors/stir_adaptor.py +45 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/converters/__init__.py +2 -2
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/converters/attenuation.py +43 -35
- simind_python_connector-2.0.1/simind_python_connector/converters/simind_to_stir.py +473 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/core/config.py +120 -156
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/core/executor.py +168 -183
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/core/types.py +3 -25
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/data/__init__.py +3 -5
- simind_python_connector-2.0.1/simind_python_connector/data/bone.atn +178 -0
- simind_python_connector-2.0.1/simind_python_connector/data/h2o.atn +84 -0
- simind_python_connector-2.0.1/simind_python_connector/datasets.py +67 -0
- simind_python_connector-2.0.1/simind_python_connector/normalisation.py +90 -0
- simind_python_connector-2.0.1/simind_python_connector/phantoms.py +390 -0
- simind_python_connector-2.0.1/simind_python_connector/recon/__init__.py +43 -0
- simind_python_connector-2.0.1/simind_python_connector/recon/cil.py +185 -0
- simind_python_connector-2.0.1/simind_python_connector/recon/corrections.py +150 -0
- simind_python_connector-2.0.1/simind_python_connector/recon/diagnostics.py +41 -0
- simind_python_connector-2.0.1/simind_python_connector/recon/osem.py +59 -0
- simind_python_connector-2.0.1/simind_python_connector/recon/projector.py +141 -0
- simind_python_connector-2.0.1/simind_python_connector/recon/updates.py +88 -0
- simind_python_connector-2.0.1/simind_python_connector/utils/__init__.py +69 -0
- simind_python_connector-2.0.1/simind_python_connector/utils/interfile.py +690 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/utils/simind_utils.py +8 -36
- simind_python_connector-2.0.1/simind_python_connector.egg-info/SOURCES.txt +213 -0
- simind_python_connector-2.0.1/tests/conftest.py +53 -0
- simind_python_connector-2.0.1/tests/fixtures/golden/circular.hs +37 -0
- simind_python_connector-2.0.1/tests/fixtures/golden/ignored_substrings.hs +5 -0
- simind_python_connector-2.0.1/tests/fixtures/golden/orbit.hs +39 -0
- simind_python_connector-2.0.1/tests/fixtures/golden/penetrate_component_12.hs +8 -0
- simind_python_connector-2.0.1/tests/recon/__init__.py +0 -0
- simind_python_connector-2.0.1/tests/recon/conftest.py +138 -0
- simind_python_connector-2.0.1/tests/recon/fakes.py +93 -0
- simind_python_connector-2.0.1/tests/recon/test_cil_functions.py +46 -0
- simind_python_connector-2.0.1/tests/recon/test_cil_sirf.py +229 -0
- simind_python_connector-2.0.1/tests/recon/test_corrections.py +179 -0
- simind_python_connector-2.0.1/tests/recon/test_diagnostics.py +60 -0
- simind_python_connector-2.0.1/tests/recon/test_import_boundary.py +38 -0
- simind_python_connector-2.0.1/tests/recon/test_osem_sirf.py +113 -0
- simind_python_connector-2.0.1/tests/recon/test_projector.py +193 -0
- simind_python_connector-2.0.1/tests/recon/test_residual.py +77 -0
- simind_python_connector-2.0.1/tests/recon/test_residual_cil.py +52 -0
- simind_python_connector-2.0.1/tests/recon/test_residual_sirf.py +137 -0
- simind_python_connector-2.0.1/tests/recon/test_updates.py +146 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/tests/test_acquisition_builder_unit.py +139 -34
- simind_python_connector-2.0.1/tests/test_attenuation_utils.py +68 -0
- simind_python_connector-2.0.1/tests/test_builders_lifetime.py +74 -0
- simind_python_connector-2.0.1/tests/test_builders_native.py +162 -0
- simind_python_connector-2.0.1/tests/test_configure_phantom.py +404 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/tests/test_connector_backend_separation.py +30 -42
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/tests/test_container_library_isolation.py +1 -1
- simind_python_connector-2.0.1/tests/test_container_scripts.py +375 -0
- simind_python_connector-2.0.1/tests/test_converter_golden.py +128 -0
- simind_python_connector-2.0.1/tests/test_datasets.py +71 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/tests/test_dicom_builder.py +54 -22
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/tests/test_energy_window_filename_simind.py +2 -1
- simind_python_connector-2.0.1/tests/test_examples_backend_separation.py +77 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/tests/test_executor.py +229 -186
- simind_python_connector-2.0.1/tests/test_gallery_config.py +114 -0
- simind_python_connector-2.0.1/tests/test_ground_truth_sirf.py +38 -0
- simind_python_connector-2.0.1/tests/test_image_builder_unit.py +108 -0
- simind_python_connector-2.0.1/tests/test_import_side_effects.py +31 -0
- simind_python_connector-2.0.1/tests/test_integration.py +38 -0
- simind_python_connector-2.0.1/tests/test_interfile.py +1334 -0
- simind_python_connector-2.0.1/tests/test_make_y90_bundle.py +82 -0
- simind_python_connector-2.0.1/tests/test_marker_policy.py +67 -0
- simind_python_connector-2.0.1/tests/test_measured_geometry_simind.py +252 -0
- simind_python_connector-2.0.1/tests/test_native_adaptors.py +1460 -0
- simind_python_connector-2.0.1/tests/test_nema_phantom.py +95 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/tests/test_non_square_slices_simind.py +8 -11
- simind_python_connector-2.0.1/tests/test_normalisation.py +98 -0
- simind_python_connector-2.0.1/tests/test_packaging_resources.py +165 -0
- simind_python_connector-2.0.1/tests/test_phantoms.py +102 -0
- simind_python_connector-2.0.1/tests/test_phantoms_simind.py +249 -0
- simind_python_connector-2.0.1/tests/test_python_connector.py +3618 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/tests/test_pytomography_adaptor.py +258 -110
- simind_python_connector-2.0.1/tests/test_release_regressions_simind.py +311 -0
- simind_python_connector-2.0.1/tests/test_release_tools.py +782 -0
- simind_python_connector-2.0.1/tests/test_runtime_switches.py +191 -0
- simind_python_connector-2.0.1/tests/test_schneider_density.py +322 -0
- simind_python_connector-2.0.1/tests/test_simind_mpi.py +29 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/tests/test_simind_to_stir_converter.py +235 -165
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/tests/test_simulation_config.py +104 -82
- simind_python_connector-2.0.1/tests/test_template_geometry_sirf.py +97 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/tests/test_utils_small.py +1 -61
- simind_python_connector-2.0.1/tests/test_validation_framework.py +129 -0
- simind_python_connector-2.0.1/tests/test_voxelise.py +130 -0
- simind_python_connector-2.0.1/tests/test_y90_ct_conversion.py +673 -0
- simind_python_connector-2.0.1/tests/test_y90_reconstruction.py +772 -0
- simind_python_connector-2.0.1/tests/test_y90_spectra.py +300 -0
- simind_python_connector-2.0.1/tests/validation/__init__.py +0 -0
- simind_python_connector-2.0.1/tests/validation/conftest.py +155 -0
- simind_python_connector-2.0.1/tests/validation/test_activity.py +98 -0
- simind_python_connector-2.0.1/tests/validation/test_anisotropic_voxels.py +110 -0
- simind_python_connector-2.0.1/tests/validation/test_backend_agreement.py +274 -0
- simind_python_connector-2.0.1/tests/validation/test_cil.py +288 -0
- simind_python_connector-2.0.1/tests/validation/test_interfile.py +130 -0
- simind_python_connector-2.0.1/tests/validation/test_measured_geometry.py +81 -0
- simind_python_connector-2.0.1/tests/validation/test_mpi.py +188 -0
- simind_python_connector-2.0.1/tests/validation/test_mu_map.py +168 -0
- simind_python_connector-2.0.1/tests/validation/test_phantoms.py +280 -0
- simind_python_connector-2.0.1/tests/validation/test_recon.py +418 -0
- simind_python_connector-2.0.1/tests/validation/test_runtime_switches.py +338 -0
- simind_python_connector-2.0.1/tests/validation/test_scale_to_reference.py +194 -0
- simind_python_connector-2.0.1/tests/validation/test_versions.py +85 -0
- simind_python_connector-2.0.1/uv.lock +2489 -0
- simind_python_connector-1.2.0/.dockerignore +0 -17
- simind_python_connector-1.2.0/MANIFEST.in +0 -20
- simind_python_connector-1.2.0/PKG-INFO +0 -301
- simind_python_connector-1.2.0/README.md +0 -259
- simind_python_connector-1.2.0/docs/backends.rst +0 -57
- simind_python_connector-1.2.0/docs/changelog.rst +0 -670
- simind_python_connector-1.2.0/docs/connector_modernization_plan.rst +0 -45
- simind_python_connector-1.2.0/docs/contributing.rst +0 -67
- simind_python_connector-1.2.0/docs/examples/01_basic_simulation.py +0 -95
- simind_python_connector-1.2.0/docs/examples/02_runtime_switch_comparison.py +0 -110
- simind_python_connector-1.2.0/docs/examples/03_multi_window.py +0 -122
- simind_python_connector-1.2.0/docs/examples/04_custom_config.py +0 -228
- simind_python_connector-1.2.0/docs/examples/05_scattwin_vs_penetrate_comparison.py +0 -478
- simind_python_connector-1.2.0/docs/examples/06_schneider_density_conversion.py +0 -322
- simind_python_connector-1.2.0/docs/examples/07A_stir_adaptor_osem.py +0 -208
- simind_python_connector-1.2.0/docs/examples/07B_sirf_adaptor_osem.py +0 -190
- simind_python_connector-1.2.0/docs/examples/07C_pytomography_adaptor_osem.py +0 -175
- simind_python_connector-1.2.0/docs/examples/08A_stir_adaptor_from_dicom.py +0 -64
- simind_python_connector-1.2.0/docs/examples/08B_sirf_adaptor_from_dicom.py +0 -64
- simind_python_connector-1.2.0/docs/examples/08C_pytomography_adaptor_from_dicom.py +0 -82
- simind_python_connector-1.2.0/docs/examples.rst +0 -125
- simind_python_connector-1.2.0/docs/geometry.rst +0 -122
- simind_python_connector-1.2.0/examples/01_basic_simulation.py +0 -95
- simind_python_connector-1.2.0/examples/02_runtime_switch_comparison.py +0 -110
- simind_python_connector-1.2.0/examples/03_multi_window.py +0 -122
- simind_python_connector-1.2.0/examples/04_custom_config.py +0 -228
- simind_python_connector-1.2.0/examples/06_schneider_density_conversion.py +0 -322
- simind_python_connector-1.2.0/examples/07A_stir_adaptor_osem.py +0 -208
- simind_python_connector-1.2.0/examples/07B_sirf_adaptor_osem.py +0 -190
- simind_python_connector-1.2.0/examples/07C_pytomography_adaptor_osem.py +0 -175
- simind_python_connector-1.2.0/examples/08A_stir_adaptor_from_dicom.py +0 -64
- simind_python_connector-1.2.0/examples/08B_sirf_adaptor_from_dicom.py +0 -64
- simind_python_connector-1.2.0/examples/08C_pytomography_adaptor_from_dicom.py +0 -82
- simind_python_connector-1.2.0/examples/_python_connector_helpers.py +0 -57
- simind_python_connector-1.2.0/examples/run_all_examples.sh +0 -246
- simind_python_connector-1.2.0/scripts/release.sh +0 -127
- simind_python_connector-1.2.0/simind_python_connector/_version.py +0 -3
- simind_python_connector-1.2.0/simind_python_connector/backends/__init__.py +0 -490
- simind_python_connector-1.2.0/simind_python_connector/backends/base.py +0 -342
- simind_python_connector-1.2.0/simind_python_connector/backends/sirf_backend.py +0 -305
- simind_python_connector-1.2.0/simind_python_connector/backends/stir_backend.py +0 -423
- simind_python_connector-1.2.0/simind_python_connector/connectors/_spacing.py +0 -187
- simind_python_connector-1.2.0/simind_python_connector/connectors/base.py +0 -73
- simind_python_connector-1.2.0/simind_python_connector/connectors/python_connector.py +0 -825
- simind_python_connector-1.2.0/simind_python_connector/connectors/sirf_adaptor.py +0 -208
- simind_python_connector-1.2.0/simind_python_connector/connectors/stir_adaptor.py +0 -211
- simind_python_connector-1.2.0/simind_python_connector/converters/dicom_to_stir.py +0 -3
- simind_python_connector-1.2.0/simind_python_connector/converters/simind_to_stir.py +0 -812
- simind_python_connector-1.2.0/simind_python_connector/data/bone.atn +0 -187
- simind_python_connector-1.2.0/simind_python_connector/data/h2o.atn +0 -92
- simind_python_connector-1.2.0/simind_python_connector/utils/__init__.py +0 -110
- simind_python_connector-1.2.0/simind_python_connector/utils/backend_access.py +0 -121
- simind_python_connector-1.2.0/simind_python_connector/utils/geometry_phantom.py +0 -42
- simind_python_connector-1.2.0/simind_python_connector/utils/import_helpers.py +0 -105
- simind_python_connector-1.2.0/simind_python_connector/utils/interfile_numpy.py +0 -226
- simind_python_connector-1.2.0/simind_python_connector/utils/interfile_parser.py +0 -185
- simind_python_connector-1.2.0/simind_python_connector/utils/io_utils.py +0 -14
- simind_python_connector-1.2.0/simind_python_connector/utils/sirf_stir_utils.py +0 -194
- simind_python_connector-1.2.0/simind_python_connector/utils/stir_utils.py +0 -484
- simind_python_connector-1.2.0/simind_python_connector.egg-info/PKG-INFO +0 -301
- simind_python_connector-1.2.0/simind_python_connector.egg-info/SOURCES.txt +0 -145
- simind_python_connector-1.2.0/simind_python_connector.egg-info/dependency_links.txt +0 -1
- simind_python_connector-1.2.0/simind_python_connector.egg-info/requires.txt +0 -19
- simind_python_connector-1.2.0/simind_python_connector.egg-info/top_level.txt +0 -1
- simind_python_connector-1.2.0/tests/conftest.py +0 -47
- simind_python_connector-1.2.0/tests/test_adaptor_release_simind.py +0 -159
- simind_python_connector-1.2.0/tests/test_anisotropic_voxels_simind.py +0 -54
- simind_python_connector-1.2.0/tests/test_arithmetic_operations.py +0 -84
- simind_python_connector-1.2.0/tests/test_attenuation_utils.py +0 -129
- simind_python_connector-1.2.0/tests/test_backends.py +0 -279
- simind_python_connector-1.2.0/tests/test_container_scripts.py +0 -198
- simind_python_connector-1.2.0/tests/test_image_builder_unit.py +0 -143
- simind_python_connector-1.2.0/tests/test_integration.py +0 -33
- simind_python_connector-1.2.0/tests/test_interfile_numpy.py +0 -328
- simind_python_connector-1.2.0/tests/test_interfile_parser.py +0 -60
- simind_python_connector-1.2.0/tests/test_native_adaptors.py +0 -839
- simind_python_connector-1.2.0/tests/test_native_geometry_real.py +0 -56
- simind_python_connector-1.2.0/tests/test_packaging_resources.py +0 -118
- simind_python_connector-1.2.0/tests/test_patch_release_simind.py +0 -535
- simind_python_connector-1.2.0/tests/test_python_connector.py +0 -1478
- simind_python_connector-1.2.0/tests/test_release_versioning.py +0 -71
- simind_python_connector-1.2.0/tests/test_schneider_density.py +0 -104
- simind_python_connector-1.2.0/tests/test_single_window_simind.py +0 -49
- simind_python_connector-1.2.0/tests/test_sirf_stir_utils.py +0 -56
- simind_python_connector-1.2.0/tests/test_stir_backend_arithmetic.py +0 -181
- simind_python_connector-1.2.0/tests/test_stir_utils_backend_choice_unit.py +0 -78
- simind_python_connector-1.2.0/tests/test_utils.py +0 -99
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/LICENSE +0 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docker/import_guard/sitecustomize.py +0 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docs/_static/.gitkeep +0 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/docs/intro.rst +0 -0
- {simind_python_connector-1.2.0/docs → simind_python_connector-2.0.1}/examples/_python_connector_helpers.py +0 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/scripts/fix.sh +0 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/setup.cfg +0 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/configs/AnyScan.yaml +0 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/configs/Discovery670.yaml +0 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/configs/Example.yaml +0 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/configs/MLD001_SCAN0.yaml +0 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/configs/input.smc +0 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/core/__init__.py +0 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/simind_python_connector/data/Schneider2000.json +0 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/tests/__init__.py +0 -0
- {simind_python_connector-1.2.0 → simind_python_connector-2.0.1}/tests/fixtures/minimal_variable_sections.smc +0 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: Container tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
schedule:
|
|
6
|
+
- cron: "0 3 * * 1"
|
|
7
|
+
pull_request:
|
|
8
|
+
paths:
|
|
9
|
+
- "simind_python_connector/recon/**"
|
|
10
|
+
- "simind_python_connector/connectors/**"
|
|
11
|
+
- "simind_python_connector/builders/**"
|
|
12
|
+
- "simind_python_connector/utils/interfile.py"
|
|
13
|
+
- "docker/**"
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
sirf:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
- uses: docker/setup-buildx-action@v3
|
|
21
|
+
- uses: docker/build-push-action@v6
|
|
22
|
+
with:
|
|
23
|
+
context: .
|
|
24
|
+
file: docker/sirf/Dockerfile
|
|
25
|
+
tags: simind-python-connector/sirf:ci
|
|
26
|
+
load: true
|
|
27
|
+
cache-from: type=gha,scope=sirf
|
|
28
|
+
cache-to: type=gha,mode=max,scope=sirf
|
|
29
|
+
- name: SIRF and CIL tests
|
|
30
|
+
run: >
|
|
31
|
+
docker run --rm -e CI=true -v "$PWD:/workspace" -w /workspace
|
|
32
|
+
simind-python-connector/sirf:ci
|
|
33
|
+
python -m pytest -q -m "(requires_sirf or requires_cil) and not requires_simind"
|
|
34
|
+
|
|
35
|
+
stir:
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/checkout@v4
|
|
39
|
+
- uses: docker/setup-buildx-action@v3
|
|
40
|
+
- uses: docker/build-push-action@v6
|
|
41
|
+
with:
|
|
42
|
+
context: .
|
|
43
|
+
file: docker/stir/Dockerfile
|
|
44
|
+
tags: simind-python-connector/stir:ci
|
|
45
|
+
load: true
|
|
46
|
+
cache-from: type=gha,scope=stir
|
|
47
|
+
cache-to: type=gha,mode=max,scope=stir
|
|
48
|
+
- name: STIR tests
|
|
49
|
+
run: >
|
|
50
|
+
docker run --rm -e CI=true -v "$PWD:/workspace" -w /workspace
|
|
51
|
+
simind-python-connector/stir:ci
|
|
52
|
+
python -m pytest -q -m "requires_stir and not requires_simind"
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
name: Documentation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main, develop, "release/**" ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main, develop, "release/**" ]
|
|
8
|
+
workflow_call:
|
|
9
|
+
inputs:
|
|
10
|
+
ref:
|
|
11
|
+
description: Ref (for example a release tag) to check out and document
|
|
12
|
+
required: false
|
|
13
|
+
type: string
|
|
14
|
+
default: ""
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
docs:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
with:
|
|
22
|
+
ref: ${{ inputs.ref || github.ref }}
|
|
23
|
+
- name: Set up Python
|
|
24
|
+
uses: actions/setup-python@v5
|
|
25
|
+
with:
|
|
26
|
+
python-version: "3.10"
|
|
27
|
+
- name: Install dependencies
|
|
28
|
+
run: |
|
|
29
|
+
python -m pip install --upgrade pip
|
|
30
|
+
pip install -e ".[dev]"
|
|
31
|
+
- name: Check the tag matches the documented version
|
|
32
|
+
run: |
|
|
33
|
+
# Python 3.10 (matched to Read the Docs) predates the TOML parser in
|
|
34
|
+
# the standard library, so read [project] version with pathlib/re.
|
|
35
|
+
version=$(python -c 'import pathlib, re; text = pathlib.Path("pyproject.toml").read_text(encoding="utf-8"); project = re.search(r"(?ms)^\[project\].*?(?=^\[|\Z)", text).group(0); print(re.search(r"(?m)^version\s*=\s*\"([^\"]+)\"", project).group(1))')
|
|
36
|
+
if [[ "$GITHUB_REF_NAME" == v* ]] && [ "$GITHUB_REF_NAME" != "v${version}" ]; then
|
|
37
|
+
echo "Tag $GITHUB_REF_NAME does not match version v${version}"
|
|
38
|
+
exit 1
|
|
39
|
+
fi
|
|
40
|
+
- name: Build the documentation without executing examples
|
|
41
|
+
env:
|
|
42
|
+
SIMIND_GALLERY_BACKEND: ""
|
|
43
|
+
run: |
|
|
44
|
+
python -m sphinx -b html -W --keep-going docs docs/_build/html
|
|
45
|
+
- name: Check the generated gallery indexes are committed
|
|
46
|
+
run: |
|
|
47
|
+
git status --porcelain -- docs/auto_examples
|
|
48
|
+
test -z "$(git status --porcelain -- docs/auto_examples)"
|
|
49
|
+
- name: Upload the built documentation
|
|
50
|
+
uses: actions/upload-artifact@v4
|
|
51
|
+
with:
|
|
52
|
+
name: documentation
|
|
53
|
+
path: docs/_build/html
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
tests:
|
|
9
|
+
uses: ./.github/workflows/tests.yml
|
|
10
|
+
with:
|
|
11
|
+
ref: ${{ github.event.release.tag_name }}
|
|
12
|
+
|
|
13
|
+
docs:
|
|
14
|
+
uses: ./.github/workflows/docs.yml
|
|
15
|
+
with:
|
|
16
|
+
ref: ${{ github.event.release.tag_name }}
|
|
17
|
+
|
|
18
|
+
publish:
|
|
19
|
+
needs: [tests, docs]
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
permissions:
|
|
22
|
+
id-token: write
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@v4
|
|
25
|
+
with:
|
|
26
|
+
ref: ${{ github.event.release.tag_name }}
|
|
27
|
+
- name: Set up Python
|
|
28
|
+
uses: actions/setup-python@v5
|
|
29
|
+
with:
|
|
30
|
+
python-version: "3.12"
|
|
31
|
+
- name: Check the tag matches the package version
|
|
32
|
+
run: |
|
|
33
|
+
version=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml', 'rb'))['project']['version'])")
|
|
34
|
+
if [ "$GITHUB_REF_NAME" != "v${version}" ]; then
|
|
35
|
+
echo "Tag $GITHUB_REF_NAME does not match version v${version}"
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
- name: Install build dependencies
|
|
39
|
+
run: |
|
|
40
|
+
python -m pip install --upgrade pip
|
|
41
|
+
pip install build twine
|
|
42
|
+
- name: Build package
|
|
43
|
+
run: python -m build
|
|
44
|
+
- name: Check package
|
|
45
|
+
run: twine check dist/*
|
|
46
|
+
- name: Publish to PyPI
|
|
47
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main, develop, "release/**" ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main, develop, "release/**" ]
|
|
8
|
+
workflow_call:
|
|
9
|
+
inputs:
|
|
10
|
+
ref:
|
|
11
|
+
description: Ref (for example a release tag) to check out and test
|
|
12
|
+
required: false
|
|
13
|
+
type: string
|
|
14
|
+
default: ""
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
test:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
strategy:
|
|
20
|
+
matrix:
|
|
21
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v4
|
|
24
|
+
with:
|
|
25
|
+
ref: ${{ inputs.ref || github.ref }}
|
|
26
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
27
|
+
uses: actions/setup-python@v5
|
|
28
|
+
with:
|
|
29
|
+
python-version: ${{ matrix.python-version }}
|
|
30
|
+
- name: Install dependencies
|
|
31
|
+
run: |
|
|
32
|
+
python -m pip install --upgrade pip
|
|
33
|
+
pip install -e ".[dev]"
|
|
34
|
+
- name: Lint and format check with ruff
|
|
35
|
+
run: |
|
|
36
|
+
ruff check .
|
|
37
|
+
ruff format --check .
|
|
38
|
+
- name: Check gallery outputs are current
|
|
39
|
+
run: python scripts/check_gallery_current.py
|
|
40
|
+
- name: Run CI-friendly tests
|
|
41
|
+
run: |
|
|
42
|
+
python -m pytest -m "not integration and not requires_sirf and not requires_stir and not requires_simind and not requires_pytomography and not requires_cil and not ci_skip and not validation and not macos_v9" --cov=simind_python_connector --cov-report=xml
|
|
43
|
+
- name: Upload coverage to Codecov
|
|
44
|
+
uses: codecov/codecov-action@v4
|
|
45
|
+
with:
|
|
46
|
+
file: ./coverage.xml
|
|
47
|
+
flags: unittests
|
|
48
|
+
name: codecov-umbrella
|
|
49
|
+
fail_ci_if_error: false
|
|
50
|
+
|
|
51
|
+
build:
|
|
52
|
+
runs-on: ubuntu-latest
|
|
53
|
+
steps:
|
|
54
|
+
- uses: actions/checkout@v4
|
|
55
|
+
with:
|
|
56
|
+
ref: ${{ inputs.ref || github.ref }}
|
|
57
|
+
- name: Set up Python
|
|
58
|
+
uses: actions/setup-python@v5
|
|
59
|
+
with:
|
|
60
|
+
python-version: "3.10"
|
|
61
|
+
- name: Install build dependencies
|
|
62
|
+
run: |
|
|
63
|
+
python -m pip install --upgrade pip
|
|
64
|
+
pip install build twine
|
|
65
|
+
- name: Build package
|
|
66
|
+
run: |
|
|
67
|
+
python -m build
|
|
68
|
+
- name: Check package
|
|
69
|
+
run: |
|
|
70
|
+
twine check dist/*
|
|
71
|
+
- name: Smoke-test wheel resources outside the checkout
|
|
72
|
+
run: |
|
|
73
|
+
repo="$GITHUB_WORKSPACE"
|
|
74
|
+
venv="$(mktemp -d)/wheel-env"
|
|
75
|
+
python -m venv "$venv"
|
|
76
|
+
"$venv/bin/python" -m pip install --quiet dist/*.whl
|
|
77
|
+
workdir="$(mktemp -d)"
|
|
78
|
+
cd "$workdir"
|
|
79
|
+
"$venv/bin/python" "$repo/scripts/check_wheel_resources.py" --repo "$repo"
|
|
80
|
+
|
|
81
|
+
container-core:
|
|
82
|
+
runs-on: ubuntu-latest
|
|
83
|
+
steps:
|
|
84
|
+
- uses: actions/checkout@v4
|
|
85
|
+
with:
|
|
86
|
+
ref: ${{ inputs.ref || github.ref }}
|
|
87
|
+
- name: Core container validation
|
|
88
|
+
run: bash scripts/run_container_validation.sh --only-core
|
|
89
|
+
|
|
90
|
+
- name: Core container examples (SIMIND optional)
|
|
91
|
+
run: bash scripts/run_container_examples.sh --only-core
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
|
|
3
|
+
build:
|
|
4
|
+
os: ubuntu-22.04
|
|
5
|
+
tools:
|
|
6
|
+
python: "3.10"
|
|
7
|
+
|
|
8
|
+
sphinx:
|
|
9
|
+
configuration: docs/conf.py
|
|
10
|
+
# Fail the public deployment on any warning (including a duplicate object
|
|
11
|
+
# description) so it matches the docs job in .github/workflows/docs.yml.
|
|
12
|
+
fail_on_warning: true
|
|
13
|
+
|
|
14
|
+
python:
|
|
15
|
+
install:
|
|
16
|
+
- method: pip
|
|
17
|
+
path: .
|
|
18
|
+
extra_requirements:
|
|
19
|
+
- dev
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "simind-python-connector: Python SIMIND Monte Carlo connector with STIR/SIRF/PyTomography adaptors",
|
|
3
|
+
"upload_type": "software",
|
|
4
|
+
"description": "A Python package providing SIMIND Monte Carlo simulation connector with adaptors for STIR/SIRF and PyTomography reconstruction frameworks. Enables Python-driven SIMIND simulations and data processing workflows.",
|
|
5
|
+
"creators": [
|
|
6
|
+
{
|
|
7
|
+
"name": "Porter, Sam",
|
|
8
|
+
"affiliation": "University College London",
|
|
9
|
+
"orcid": "0000-0002-1815-4716"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"name": "Varzakis, Efstathios (Stahis)",
|
|
13
|
+
"affiliation": "University College London",
|
|
14
|
+
"orcid": "0000-0003-3503-7754"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "Thielemans, Kris",
|
|
18
|
+
"affiliation": "University College London",
|
|
19
|
+
"orcid": "0000-0001-6353-9538"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"keywords": [
|
|
23
|
+
"SPECT",
|
|
24
|
+
"Monte Carlo",
|
|
25
|
+
"medical imaging",
|
|
26
|
+
"SIMIND",
|
|
27
|
+
"SIRF",
|
|
28
|
+
"STIR",
|
|
29
|
+
"PyTomography",
|
|
30
|
+
"Python"
|
|
31
|
+
],
|
|
32
|
+
"access_right": "open",
|
|
33
|
+
"license": "apache-2.0",
|
|
34
|
+
"version": "2.0.1"
|
|
35
|
+
}
|