iints-sdk-python35 1.1.3__tar.gz → 1.3.0__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.
- {iints_sdk_python35-1.1.3/src/iints_sdk_python35.egg-info → iints_sdk_python35-1.3.0}/PKG-INFO +122 -2
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/README.md +121 -1
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/pyproject.toml +1 -1
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/__init__.py +15 -1
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/ai/prompts.py +16 -15
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/__init__.py +6 -0
- iints_sdk_python35-1.3.0/src/iints/analysis/booth_demo.py +439 -0
- iints_sdk_python35-1.3.0/src/iints/analysis/carelink_workbench.py +733 -0
- iints_sdk_python35-1.3.0/src/iints/analysis/poster.py +289 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/cli/cli.py +285 -1
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/__init__.py +8 -0
- iints_sdk_python35-1.3.0/src/iints/data/importer.py +602 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0/src/iints_sdk_python35.egg-info}/PKG-INFO +122 -2
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints_sdk_python35.egg-info/SOURCES.txt +6 -0
- iints_sdk_python35-1.3.0/tests/test_cli_booth_demo.py +33 -0
- iints_sdk_python35-1.3.0/tests/test_cli_carelink_workbench.py +46 -0
- iints_sdk_python35-1.3.0/tests/test_cli_poster.py +61 -0
- iints_sdk_python35-1.1.3/src/iints/data/importer.py +0 -275
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/LICENSE +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/setup.cfg +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/ai/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/ai/assistant.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/ai/backends/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/ai/backends/base.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/ai/backends/mistral_api.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/ai/backends/ollama.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/ai/cli.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/ai/mdmp_guard.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/ai/model_catalog.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/ai/prepare.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/algorithm_xray.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/baseline.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/clinical_benchmark.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/clinical_metrics.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/clinical_tir_analyzer.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/diabetes_metrics.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/edge_efficiency.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/edge_performance_monitor.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/explainability.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/explainable_ai.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/hardware_benchmark.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/metrics.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/population_report.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/reporting.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/safety_index.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/sensor_filtering.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/analysis/validator.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/api/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/api/base_algorithm.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/api/registry.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/api/template_algorithm.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/assets/iints_logo.png +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/cli/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/algorithms/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/algorithms/battle_runner.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/algorithms/correction_bolus.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/algorithms/discovery.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/algorithms/fixed_basal_bolus.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/algorithms/hybrid_algorithm.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/algorithms/lstm_algorithm.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/algorithms/mock_algorithms.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/algorithms/pid_controller.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/algorithms/standard_pump_algo.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/device.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/device_manager.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/devices/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/devices/models.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/patient/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/patient/bergman_model.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/patient/models.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/patient/patient_factory.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/patient/profile.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/safety/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/safety/config.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/safety/input_validator.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/safety/supervisor.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/simulation/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/simulation/scenario_parser.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/simulator.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/core/supervisor.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/adapter.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/column_mapper.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/contracts.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/datasets.json +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/demo/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/demo/demo_cgm.csv +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/guardians.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/ingestor.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/mdmp_visualizer.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/nightscout.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/quality_checker.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/registry.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/runner.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/synthetic_mirror.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/tidepool.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/universal_parser.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/virtual_patients/clinic_safe_baseline.yaml +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/virtual_patients/clinic_safe_hyper_challenge.yaml +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/virtual_patients/clinic_safe_hypo_prone.yaml +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/virtual_patients/clinic_safe_midnight.yaml +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/virtual_patients/clinic_safe_pizza.yaml +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/virtual_patients/clinic_safe_stress_meal.yaml +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/virtual_patients/default_patient.yaml +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/data/virtual_patients/patient_559_config.yaml +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/emulation/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/emulation/legacy_base.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/emulation/medtronic_780g.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/emulation/omnipod_5.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/emulation/tandem_controliq.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/highlevel.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/learning/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/learning/autonomous_optimizer.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/learning/learning_system.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/mdmp/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/mdmp/backend.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/metrics.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/population/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/population/generator.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/population/runner.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/presets/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/presets/evidence_sources.yaml +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/presets/forecast_calibration_profiles.yaml +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/presets/golden_benchmark.yaml +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/presets/presets.json +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/presets/safety_contract_default.yaml +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/presets/validation_profiles.yaml +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/research/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/research/audit.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/research/calibration_gate.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/research/config.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/research/dataset.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/research/evaluation.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/research/losses.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/research/metrics.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/research/model_registry.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/research/predictor.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/scenarios/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/scenarios/generator.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/templates/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/templates/default_algorithm.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/templates/scenarios/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/templates/scenarios/chaos_insulin_stacking.json +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/templates/scenarios/chaos_runaway_ai.json +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/templates/scenarios/example_scenario.json +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/templates/scenarios/exercise_stress.json +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/utils/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/utils/plotting.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/utils/run_io.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/validation/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/validation/golden.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/validation/replay.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/validation/run_validation.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/validation/safety_contract.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/validation/schemas.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/visualization/__init__.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/visualization/cockpit.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints/visualization/uncertainty_cloud.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints_sdk_python35.egg-info/dependency_links.txt +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints_sdk_python35.egg-info/entry_points.txt +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints_sdk_python35.egg-info/requires.txt +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/src/iints_sdk_python35.egg-info/top_level.txt +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/tests/test_bergman.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/tests/test_install_doctor.py +0 -0
- {iints_sdk_python35-1.1.3 → iints_sdk_python35-1.3.0}/tests/test_population.py +0 -0
{iints_sdk_python35-1.1.3/src/iints_sdk_python35.egg-info → iints_sdk_python35-1.3.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: iints-sdk-python35
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
4
4
|
Summary: A pre-clinical Edge-AI SDK for diabetes management validation.
|
|
5
5
|
Author-email: Rune Bobbaers <rune.bobbaers@gmail.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/python35/IINTS-SDK
|
|
@@ -81,6 +81,47 @@ cd iints_quickstart
|
|
|
81
81
|
iints presets run --name baseline_t1d --algo algorithms/example_algorithm.py
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
+
## CareLink Import
|
|
85
|
+
|
|
86
|
+
The SDK can now ingest Medtronic CareLink / MiniMed CSV exports and convert them into the standard IINTS schema:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
iints import-carelink \
|
|
90
|
+
--input-csv "/path/to/CareLink export.csv" \
|
|
91
|
+
--output-dir results/imported_carelink
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
This writes:
|
|
95
|
+
- `cgm_standard.csv`
|
|
96
|
+
- `scenario.json`
|
|
97
|
+
- `carelink_summary.json`
|
|
98
|
+
|
|
99
|
+
It extracts glucose, carb, and insulin events from the CareLink event log and aligns them onto an IINTS-ready timeline.
|
|
100
|
+
|
|
101
|
+
If you want a reusable personal-data workspace in one command, build a CareLink workbench:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
iints carelink-workbench \
|
|
105
|
+
--input-csv "/path/to/CareLink export.csv" \
|
|
106
|
+
--output-dir results/personal_carelink
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
This adds:
|
|
110
|
+
- `carelink_timeline.csv`
|
|
111
|
+
- `carelink_metrics.json`
|
|
112
|
+
- `carelink_dashboard.png`
|
|
113
|
+
- `carelink_poster.png`
|
|
114
|
+
- `carelink_dashboard.html`
|
|
115
|
+
- `ai/report_payload.json`
|
|
116
|
+
- `ai/trends_payload.json`
|
|
117
|
+
- `ai/anomalies_payload.json`
|
|
118
|
+
- `ai/step_riskiest.json`
|
|
119
|
+
|
|
120
|
+
That workbench is designed for three things:
|
|
121
|
+
- inspect your own data visually
|
|
122
|
+
- reuse the generated `scenario.json` inside IINTS experiments
|
|
123
|
+
- let the local AI assistant explain what the imported patterns mean
|
|
124
|
+
|
|
84
125
|
## AI Assistant (Ministral 3 Open-Weight via Ollama)
|
|
85
126
|
|
|
86
127
|
The SDK now includes a research-only AI assistant layer for explanations and run summaries.
|
|
@@ -122,6 +163,18 @@ iints ai prepare results/<run_id>
|
|
|
122
163
|
iints ai report results/<run_id>
|
|
123
164
|
```
|
|
124
165
|
|
|
166
|
+
For imported CareLink data, the matching flow is:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
iints carelink-workbench \
|
|
170
|
+
--input-csv "/path/to/CareLink export.csv" \
|
|
171
|
+
--output-dir results/personal_carelink
|
|
172
|
+
|
|
173
|
+
iints ai report results/personal_carelink --model ministral-3:3b
|
|
174
|
+
iints ai trends results/personal_carelink --model ministral-3:3b
|
|
175
|
+
iints ai explain results/personal_carelink --model ministral-3:3b
|
|
176
|
+
```
|
|
177
|
+
|
|
125
178
|
Direct JSON mode still works if you already have your own payloads and signed MDMP artifact:
|
|
126
179
|
|
|
127
180
|
```bash
|
|
@@ -136,10 +189,77 @@ Notes:
|
|
|
136
189
|
- Users can choose a larger or smaller local Mistral-family model with `--model ...`.
|
|
137
190
|
- Large JSON payloads are clipped automatically before prompt generation to keep local inference stable.
|
|
138
191
|
- `iints ai prepare <run_dir>` now creates AI-ready JSON payloads and, when MDMP is installed, a local development certificate plus keypair in `<run_dir>/ai/`.
|
|
192
|
+
- `iints carelink-workbench` now does the same kind of AI preparation for imported personal CareLink data and also generates a dashboard PNG/HTML pair.
|
|
139
193
|
- If Ollama closes the connection during generation, the SDK now surfaces an explicit recovery hint and points users toward `ministral-3:3b` for lower-memory systems.
|
|
140
194
|
- After `iints ai prepare`, you can point `iints ai explain|trends|anomalies|report` directly at the run directory.
|
|
195
|
+
- After `iints carelink-workbench`, you can point those same AI commands directly at the generated CareLink workspace directory.
|
|
141
196
|
- Output is research-only and not medical advice.
|
|
142
197
|
|
|
198
|
+
## Jury Poster / Demo Graphic
|
|
199
|
+
|
|
200
|
+
You can now generate a poster-style PNG directly from one to three real run bundles:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
iints poster \
|
|
204
|
+
--run-dir results/normal_run \
|
|
205
|
+
--run-dir results/meal_stress \
|
|
206
|
+
--run-dir results/supervisor_override \
|
|
207
|
+
--label "Normal Run" \
|
|
208
|
+
--label "Meal Stress Test" \
|
|
209
|
+
--label "Supervisor Override" \
|
|
210
|
+
--output-path results/posters/iints_results_poster.png
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
The poster shows:
|
|
214
|
+
- glucose curves with the target range highlighted
|
|
215
|
+
- meal events
|
|
216
|
+
- supervisor interventions
|
|
217
|
+
- panel summaries with TIR, hypo time, meal count, and intervention count
|
|
218
|
+
|
|
219
|
+
If you omit `--run-dir`, the CLI auto-discovers the latest run bundles under `./results`.
|
|
220
|
+
|
|
221
|
+
## Fair / Jury Demo
|
|
222
|
+
|
|
223
|
+
If you want one clean live demo for a booth, jury, or pitch session, use the built-in booth flow:
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
./scripts/run_booth_demo.sh
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
This generates:
|
|
230
|
+
- three run bundles (`Normal Run`, `Meal Stress Test`, `Supervisor Override`)
|
|
231
|
+
- a ready-to-show poster PNG
|
|
232
|
+
- a markdown jury talk track
|
|
233
|
+
- a plain-text live demo script for the stand
|
|
234
|
+
- optional AI-ready artifacts for the safety case
|
|
235
|
+
|
|
236
|
+
You can also run it through the CLI:
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
iints demo-booth --output-dir results/booth_demo
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Updating The SDK
|
|
243
|
+
|
|
244
|
+
If another machine is missing newer commands like `iints ai ...` or `iints demo-booth`, upgrade inside the active virtual environment:
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
source .venv/bin/activate
|
|
248
|
+
python -m pip install -U pip
|
|
249
|
+
python -m pip install -U "iints-sdk-python35[mdmp]==1.3.0"
|
|
250
|
+
hash -r
|
|
251
|
+
python -c "import iints; print(iints.__version__)"
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
If that machine still behaves like an old install, run:
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
iints-sdk-doctor
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Full guide:
|
|
261
|
+
- `docs/UPDATING.md`
|
|
262
|
+
|
|
143
263
|
Troubleshooting:
|
|
144
264
|
- If `iints ai ...` says `No such command 'ai'`, your environment usually still has a legacy `iints` package installed alongside `iints-sdk-python35`.
|
|
145
265
|
- Run `iints-sdk-doctor` first.
|
|
@@ -147,7 +267,7 @@ Troubleshooting:
|
|
|
147
267
|
|
|
148
268
|
```bash
|
|
149
269
|
python -m pip uninstall -y iints iints-sdk-python35
|
|
150
|
-
python -m pip install -U "iints-sdk-python35[mdmp]==1.
|
|
270
|
+
python -m pip install -U "iints-sdk-python35[mdmp]==1.3.0"
|
|
151
271
|
hash -r
|
|
152
272
|
```
|
|
153
273
|
|
|
@@ -30,6 +30,47 @@ cd iints_quickstart
|
|
|
30
30
|
iints presets run --name baseline_t1d --algo algorithms/example_algorithm.py
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
+
## CareLink Import
|
|
34
|
+
|
|
35
|
+
The SDK can now ingest Medtronic CareLink / MiniMed CSV exports and convert them into the standard IINTS schema:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
iints import-carelink \
|
|
39
|
+
--input-csv "/path/to/CareLink export.csv" \
|
|
40
|
+
--output-dir results/imported_carelink
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
This writes:
|
|
44
|
+
- `cgm_standard.csv`
|
|
45
|
+
- `scenario.json`
|
|
46
|
+
- `carelink_summary.json`
|
|
47
|
+
|
|
48
|
+
It extracts glucose, carb, and insulin events from the CareLink event log and aligns them onto an IINTS-ready timeline.
|
|
49
|
+
|
|
50
|
+
If you want a reusable personal-data workspace in one command, build a CareLink workbench:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
iints carelink-workbench \
|
|
54
|
+
--input-csv "/path/to/CareLink export.csv" \
|
|
55
|
+
--output-dir results/personal_carelink
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
This adds:
|
|
59
|
+
- `carelink_timeline.csv`
|
|
60
|
+
- `carelink_metrics.json`
|
|
61
|
+
- `carelink_dashboard.png`
|
|
62
|
+
- `carelink_poster.png`
|
|
63
|
+
- `carelink_dashboard.html`
|
|
64
|
+
- `ai/report_payload.json`
|
|
65
|
+
- `ai/trends_payload.json`
|
|
66
|
+
- `ai/anomalies_payload.json`
|
|
67
|
+
- `ai/step_riskiest.json`
|
|
68
|
+
|
|
69
|
+
That workbench is designed for three things:
|
|
70
|
+
- inspect your own data visually
|
|
71
|
+
- reuse the generated `scenario.json` inside IINTS experiments
|
|
72
|
+
- let the local AI assistant explain what the imported patterns mean
|
|
73
|
+
|
|
33
74
|
## AI Assistant (Ministral 3 Open-Weight via Ollama)
|
|
34
75
|
|
|
35
76
|
The SDK now includes a research-only AI assistant layer for explanations and run summaries.
|
|
@@ -71,6 +112,18 @@ iints ai prepare results/<run_id>
|
|
|
71
112
|
iints ai report results/<run_id>
|
|
72
113
|
```
|
|
73
114
|
|
|
115
|
+
For imported CareLink data, the matching flow is:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
iints carelink-workbench \
|
|
119
|
+
--input-csv "/path/to/CareLink export.csv" \
|
|
120
|
+
--output-dir results/personal_carelink
|
|
121
|
+
|
|
122
|
+
iints ai report results/personal_carelink --model ministral-3:3b
|
|
123
|
+
iints ai trends results/personal_carelink --model ministral-3:3b
|
|
124
|
+
iints ai explain results/personal_carelink --model ministral-3:3b
|
|
125
|
+
```
|
|
126
|
+
|
|
74
127
|
Direct JSON mode still works if you already have your own payloads and signed MDMP artifact:
|
|
75
128
|
|
|
76
129
|
```bash
|
|
@@ -85,10 +138,77 @@ Notes:
|
|
|
85
138
|
- Users can choose a larger or smaller local Mistral-family model with `--model ...`.
|
|
86
139
|
- Large JSON payloads are clipped automatically before prompt generation to keep local inference stable.
|
|
87
140
|
- `iints ai prepare <run_dir>` now creates AI-ready JSON payloads and, when MDMP is installed, a local development certificate plus keypair in `<run_dir>/ai/`.
|
|
141
|
+
- `iints carelink-workbench` now does the same kind of AI preparation for imported personal CareLink data and also generates a dashboard PNG/HTML pair.
|
|
88
142
|
- If Ollama closes the connection during generation, the SDK now surfaces an explicit recovery hint and points users toward `ministral-3:3b` for lower-memory systems.
|
|
89
143
|
- After `iints ai prepare`, you can point `iints ai explain|trends|anomalies|report` directly at the run directory.
|
|
144
|
+
- After `iints carelink-workbench`, you can point those same AI commands directly at the generated CareLink workspace directory.
|
|
90
145
|
- Output is research-only and not medical advice.
|
|
91
146
|
|
|
147
|
+
## Jury Poster / Demo Graphic
|
|
148
|
+
|
|
149
|
+
You can now generate a poster-style PNG directly from one to three real run bundles:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
iints poster \
|
|
153
|
+
--run-dir results/normal_run \
|
|
154
|
+
--run-dir results/meal_stress \
|
|
155
|
+
--run-dir results/supervisor_override \
|
|
156
|
+
--label "Normal Run" \
|
|
157
|
+
--label "Meal Stress Test" \
|
|
158
|
+
--label "Supervisor Override" \
|
|
159
|
+
--output-path results/posters/iints_results_poster.png
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
The poster shows:
|
|
163
|
+
- glucose curves with the target range highlighted
|
|
164
|
+
- meal events
|
|
165
|
+
- supervisor interventions
|
|
166
|
+
- panel summaries with TIR, hypo time, meal count, and intervention count
|
|
167
|
+
|
|
168
|
+
If you omit `--run-dir`, the CLI auto-discovers the latest run bundles under `./results`.
|
|
169
|
+
|
|
170
|
+
## Fair / Jury Demo
|
|
171
|
+
|
|
172
|
+
If you want one clean live demo for a booth, jury, or pitch session, use the built-in booth flow:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
./scripts/run_booth_demo.sh
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
This generates:
|
|
179
|
+
- three run bundles (`Normal Run`, `Meal Stress Test`, `Supervisor Override`)
|
|
180
|
+
- a ready-to-show poster PNG
|
|
181
|
+
- a markdown jury talk track
|
|
182
|
+
- a plain-text live demo script for the stand
|
|
183
|
+
- optional AI-ready artifacts for the safety case
|
|
184
|
+
|
|
185
|
+
You can also run it through the CLI:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
iints demo-booth --output-dir results/booth_demo
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Updating The SDK
|
|
192
|
+
|
|
193
|
+
If another machine is missing newer commands like `iints ai ...` or `iints demo-booth`, upgrade inside the active virtual environment:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
source .venv/bin/activate
|
|
197
|
+
python -m pip install -U pip
|
|
198
|
+
python -m pip install -U "iints-sdk-python35[mdmp]==1.3.0"
|
|
199
|
+
hash -r
|
|
200
|
+
python -c "import iints; print(iints.__version__)"
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
If that machine still behaves like an old install, run:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
iints-sdk-doctor
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Full guide:
|
|
210
|
+
- `docs/UPDATING.md`
|
|
211
|
+
|
|
92
212
|
Troubleshooting:
|
|
93
213
|
- If `iints ai ...` says `No such command 'ai'`, your environment usually still has a legacy `iints` package installed alongside `iints-sdk-python35`.
|
|
94
214
|
- Run `iints-sdk-doctor` first.
|
|
@@ -96,7 +216,7 @@ Troubleshooting:
|
|
|
96
216
|
|
|
97
217
|
```bash
|
|
98
218
|
python -m pip uninstall -y iints iints-sdk-python35
|
|
99
|
-
python -m pip install -U "iints-sdk-python35[mdmp]==1.
|
|
219
|
+
python -m pip install -U "iints-sdk-python35[mdmp]==1.3.0"
|
|
100
220
|
hash -r
|
|
101
221
|
```
|
|
102
222
|
|
|
@@ -11,7 +11,7 @@ except ImportError: # pragma: no cover - Python < 3.8 fallback
|
|
|
11
11
|
try:
|
|
12
12
|
__version__ = version("iints-sdk-python35")
|
|
13
13
|
except PackageNotFoundError: # pragma: no cover - source tree fallback
|
|
14
|
-
__version__ = "1.
|
|
14
|
+
__version__ = "1.3.0"
|
|
15
15
|
|
|
16
16
|
# Note to developers: this SDK is currently maintained by a single author.
|
|
17
17
|
# Please report bugs via GitHub issues and feel free to contribute fixes via PRs.
|
|
@@ -56,17 +56,24 @@ from .data.importer import (
|
|
|
56
56
|
export_demo_csv,
|
|
57
57
|
export_standard_csv,
|
|
58
58
|
guess_column_mapping,
|
|
59
|
+
import_carelink_csv,
|
|
60
|
+
import_carelink_timeline,
|
|
59
61
|
import_cgm_csv,
|
|
60
62
|
import_cgm_dataframe,
|
|
63
|
+
load_carelink_event_log,
|
|
61
64
|
load_demo_dataframe,
|
|
62
65
|
scenario_from_csv,
|
|
63
66
|
scenario_from_dataframe,
|
|
67
|
+
summarize_carelink_csv,
|
|
64
68
|
)
|
|
65
69
|
from .data.nightscout import NightscoutConfig, import_nightscout
|
|
66
70
|
from .data.tidepool import TidepoolClient, load_openapi_spec
|
|
67
71
|
from .data.guardians import mdmp_gate, MDMPGateError
|
|
68
72
|
from .data.synthetic_mirror import generate_synthetic_mirror, SyntheticMirrorArtifact
|
|
69
73
|
from .analysis.metrics import generate_benchmark_metrics # Added for benchmark
|
|
74
|
+
from .analysis.booth_demo import build_booth_demo
|
|
75
|
+
from .analysis.carelink_workbench import build_carelink_workbench
|
|
76
|
+
from .analysis.poster import generate_results_poster
|
|
70
77
|
from .analysis.reporting import ClinicalReportGenerator
|
|
71
78
|
from .analysis.edge_efficiency import EnergyEstimate, estimate_energy_per_decision
|
|
72
79
|
from .ai import AIResponse, IINTSAssistant, MDMPGuard
|
|
@@ -160,11 +167,15 @@ __all__ = [
|
|
|
160
167
|
"export_demo_csv",
|
|
161
168
|
"export_standard_csv",
|
|
162
169
|
"guess_column_mapping",
|
|
170
|
+
"import_carelink_csv",
|
|
171
|
+
"import_carelink_timeline",
|
|
163
172
|
"import_cgm_csv",
|
|
164
173
|
"import_cgm_dataframe",
|
|
174
|
+
"load_carelink_event_log",
|
|
165
175
|
"load_demo_dataframe",
|
|
166
176
|
"scenario_from_csv",
|
|
167
177
|
"scenario_from_dataframe",
|
|
178
|
+
"summarize_carelink_csv",
|
|
168
179
|
"NightscoutConfig",
|
|
169
180
|
"import_nightscout",
|
|
170
181
|
"TidepoolClient",
|
|
@@ -175,6 +186,8 @@ __all__ = [
|
|
|
175
186
|
"SyntheticMirrorArtifact",
|
|
176
187
|
# Analysis Metrics
|
|
177
188
|
"generate_benchmark_metrics",
|
|
189
|
+
"build_booth_demo",
|
|
190
|
+
"build_carelink_workbench",
|
|
178
191
|
"ClinicalReportGenerator",
|
|
179
192
|
"EnergyEstimate",
|
|
180
193
|
"estimate_energy_per_decision",
|
|
@@ -185,6 +198,7 @@ __all__ = [
|
|
|
185
198
|
"generate_report",
|
|
186
199
|
"generate_quickstart_report",
|
|
187
200
|
"generate_demo_report",
|
|
201
|
+
"generate_results_poster",
|
|
188
202
|
# High-level API
|
|
189
203
|
"run_simulation",
|
|
190
204
|
"run_full",
|
|
@@ -8,8 +8,9 @@ TaskName = Literal["explain_decision", "analyze_trends", "detect_anomalies", "ge
|
|
|
8
8
|
MAX_PROMPT_PAYLOAD_CHARS = 12000
|
|
9
9
|
|
|
10
10
|
SYSTEM_PROMPT = (
|
|
11
|
-
"You are the IINTS-AF research assistant for closed-loop insulin delivery simulations
|
|
12
|
-
"
|
|
11
|
+
"You are the IINTS-AF research assistant for closed-loop insulin delivery simulations "
|
|
12
|
+
"and imported glucose datasets. "
|
|
13
|
+
"Explain glycemic behavior clearly, conservatively, and in plain language. "
|
|
13
14
|
"Do not give medical advice, treatment instructions, or patient-specific recommendations. "
|
|
14
15
|
"State uncertainty when the input is incomplete. "
|
|
15
16
|
"For research use only."
|
|
@@ -17,39 +18,39 @@ SYSTEM_PROMPT = (
|
|
|
17
18
|
|
|
18
19
|
TASK_TEMPLATES: dict[TaskName, str] = {
|
|
19
20
|
"explain_decision": (
|
|
20
|
-
"Given this single
|
|
21
|
-
"1. What the
|
|
22
|
-
"2. Whether
|
|
23
|
-
"3.
|
|
21
|
+
"Given this single decision step or noteworthy glucose snapshot, explain:\n"
|
|
22
|
+
"1. What is happening in the data and why it stands out\n"
|
|
23
|
+
"2. Whether there are safety signals, supervision, or notable context clues\n"
|
|
24
|
+
"3. What a research user should pay attention to next\n\n"
|
|
24
25
|
"Respond in 3 short paragraphs.\n\n"
|
|
25
|
-
"
|
|
26
|
+
"Input JSON:\n{data}"
|
|
26
27
|
),
|
|
27
28
|
"analyze_trends": (
|
|
28
|
-
"Review this glucose-oriented
|
|
29
|
+
"Review this glucose-oriented payload and summarize the main glycemic trends.\n"
|
|
29
30
|
"Focus on direction, stability, excursions, and likely triggers.\n"
|
|
30
31
|
"Respond with:\n"
|
|
31
32
|
"- Trend summary\n"
|
|
32
33
|
"- Main risk signals\n"
|
|
33
34
|
"- Short operational takeaway\n\n"
|
|
34
|
-
"
|
|
35
|
+
"Payload JSON:\n{data}"
|
|
35
36
|
),
|
|
36
37
|
"detect_anomalies": (
|
|
37
|
-
"Inspect this run summary and identify unusual patterns, inconsistent values, or clinically relevant anomalies.\n"
|
|
38
|
+
"Inspect this run or imported-data summary and identify unusual patterns, inconsistent values, or clinically relevant anomalies.\n"
|
|
38
39
|
"Respond with:\n"
|
|
39
40
|
"- Detected anomalies\n"
|
|
40
41
|
"- Why each anomaly matters\n"
|
|
41
42
|
"- Whether follow-up validation is recommended\n\n"
|
|
42
|
-
"
|
|
43
|
+
"Summary JSON:\n{data}"
|
|
43
44
|
),
|
|
44
45
|
"generate_report": (
|
|
45
|
-
"Write a concise markdown report for this IINTS-AF simulation run.\n"
|
|
46
|
+
"Write a concise markdown report for this IINTS-AF simulation run or imported personal glucose dataset.\n"
|
|
46
47
|
"Include sections:\n"
|
|
47
48
|
"1. Executive summary\n"
|
|
48
49
|
"2. Glycemic behavior\n"
|
|
49
|
-
"3. Safety
|
|
50
|
-
"4. Notable events or anomalies\n"
|
|
50
|
+
"3. Safety, supervision, or device behavior\n"
|
|
51
|
+
"4. Notable events, patterns, or anomalies\n"
|
|
51
52
|
"5. Research-only conclusion\n\n"
|
|
52
|
-
"
|
|
53
|
+
"Input JSON:\n{data}"
|
|
53
54
|
),
|
|
54
55
|
}
|
|
55
56
|
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
from .clinical_metrics import ClinicalMetricsCalculator, ClinicalMetricsResult
|
|
2
2
|
from .baseline import compute_metrics, run_baseline_comparison, write_baseline_comparison
|
|
3
|
+
from .booth_demo import build_booth_demo
|
|
4
|
+
from .carelink_workbench import build_carelink_workbench
|
|
5
|
+
from .poster import generate_results_poster
|
|
3
6
|
from .reporting import ClinicalReportGenerator
|
|
4
7
|
|
|
5
8
|
__all__ = [
|
|
9
|
+
"build_booth_demo",
|
|
10
|
+
"build_carelink_workbench",
|
|
6
11
|
"ClinicalMetricsCalculator",
|
|
7
12
|
"ClinicalMetricsResult",
|
|
8
13
|
"ClinicalReportGenerator",
|
|
9
14
|
"compute_metrics",
|
|
15
|
+
"generate_results_poster",
|
|
10
16
|
"run_baseline_comparison",
|
|
11
17
|
"write_baseline_comparison",
|
|
12
18
|
]
|