iints-sdk-python35 1.5.1__tar.gz → 1.5.3__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.5.1/src/iints_sdk_python35.egg-info → iints_sdk_python35-1.5.3}/PKG-INFO +31 -7
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/README.md +12 -1
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/pyproject.toml +24 -6
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/__init__.py +84 -7
- iints_sdk_python35-1.5.3/src/iints/analysis/__init__.py +129 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/baseline.py +2 -1
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/booth_demo.py +286 -0
- iints_sdk_python35-1.5.3/src/iints/analysis/eucys_results.py +549 -0
- iints_sdk_python35-1.5.3/src/iints/analysis/study_analysis.py +1289 -0
- iints_sdk_python35-1.5.3/src/iints/analysis/study_engine.py +441 -0
- iints_sdk_python35-1.5.3/src/iints/analysis/study_poster.py +344 -0
- iints_sdk_python35-1.5.3/src/iints/analysis/study_protocol.py +274 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/cli/cli.py +1837 -147
- iints_sdk_python35-1.5.3/src/iints/cli/patient_cli.py +535 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/nightscout.py +4 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/registry.py +36 -1
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/tidepool.py +5 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/highlevel.py +9 -3
- iints_sdk_python35-1.5.3/src/iints/live_patient/__init__.py +40 -0
- iints_sdk_python35-1.5.3/src/iints/live_patient/api.py +407 -0
- iints_sdk_python35-1.5.3/src/iints/live_patient/daemon.py +82 -0
- iints_sdk_python35-1.5.3/src/iints/live_patient/edge_benchmark.py +160 -0
- iints_sdk_python35-1.5.3/src/iints/live_patient/edge_ops.py +666 -0
- iints_sdk_python35-1.5.3/src/iints/live_patient/runtime.py +967 -0
- iints_sdk_python35-1.5.3/src/iints/live_patient/service_export.py +471 -0
- iints_sdk_python35-1.5.3/src/iints/live_patient/uno_q.py +413 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/scenarios/study_pack.py +4 -7
- iints_sdk_python35-1.5.3/src/iints/templates/uno_q/README.md +110 -0
- iints_sdk_python35-1.5.3/src/iints/templates/uno_q/iints_supervisor_bridge.ino +70 -0
- iints_sdk_python35-1.5.3/src/iints/utils/csv_safety.py +31 -0
- iints_sdk_python35-1.5.3/src/iints/utils/url_safety.py +33 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3/src/iints_sdk_python35.egg-info}/PKG-INFO +31 -7
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints_sdk_python35.egg-info/SOURCES.txt +18 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints_sdk_python35.egg-info/requires.txt +21 -5
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/tests/test_cli_booth_demo.py +6 -0
- iints_sdk_python35-1.5.3/tests/test_cli_cloud_import_security.py +131 -0
- iints_sdk_python35-1.5.3/tests/test_cli_edge_runtime.py +406 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/tests/test_cli_expo_tools.py +178 -0
- iints_sdk_python35-1.5.3/tests/test_cli_patient_runtime.py +225 -0
- iints_sdk_python35-1.5.1/src/iints/analysis/__init__.py +0 -46
- iints_sdk_python35-1.5.1/src/iints/analysis/study_analysis.py +0 -721
- iints_sdk_python35-1.5.1/src/iints/analysis/study_poster.py +0 -150
- iints_sdk_python35-1.5.1/src/iints/analysis/study_protocol.py +0 -310
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/LICENSE +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/LICENSE-MIT-IINTS-LEGACY +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/NOTICE +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/setup.cfg +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/ai/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/ai/assistant.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/ai/backends/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/ai/backends/base.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/ai/backends/mistral_api.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/ai/backends/ollama.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/ai/cli.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/ai/mdmp_guard.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/ai/model_catalog.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/ai/prepare.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/ai/prompts.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/algorithm_xray.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/carelink_workbench.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/clinical_benchmark.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/clinical_metrics.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/clinical_tir_analyzer.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/diabetes_metrics.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/edge_efficiency.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/edge_performance_monitor.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/explainability.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/explainable_ai.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/hardware_benchmark.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/metrics.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/population_report.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/poster.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/reporting.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/safety_index.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/sensor_filtering.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/analysis/validator.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/api/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/api/base_algorithm.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/api/registry.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/api/template_algorithm.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/assets/iints_logo.png +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/cli/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/algorithms/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/algorithms/battle_runner.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/algorithms/correction_bolus.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/algorithms/discovery.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/algorithms/fixed_basal_bolus.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/algorithms/hybrid_algorithm.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/algorithms/lstm_algorithm.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/algorithms/mock_algorithms.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/algorithms/pid_controller.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/algorithms/standard_pump_algo.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/device.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/device_manager.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/devices/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/devices/models.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/patient/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/patient/bergman_model.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/patient/models.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/patient/patient_factory.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/patient/profile.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/safety/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/safety/config.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/safety/input_validator.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/safety/supervisor.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/simulation/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/simulation/scenario_parser.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/simulator.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/core/supervisor.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/adapter.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/certify.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/column_mapper.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/contracts.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/datasets.json +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/demo/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/demo/demo_cgm.csv +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/guardians.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/importer.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/ingestor.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/mdmp_visualizer.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/quality_checker.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/runner.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/study_corruption.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/synthetic_mirror.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/universal_parser.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/virtual_patients/clinic_safe_baseline.yaml +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/virtual_patients/clinic_safe_hyper_challenge.yaml +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/virtual_patients/clinic_safe_hypo_prone.yaml +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/virtual_patients/clinic_safe_midnight.yaml +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/virtual_patients/clinic_safe_pizza.yaml +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/virtual_patients/clinic_safe_stress_meal.yaml +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/virtual_patients/default_patient.yaml +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/data/virtual_patients/patient_559_config.yaml +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/demo_assets.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/emulation/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/emulation/legacy_base.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/emulation/medtronic_780g.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/emulation/omnipod_5.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/emulation/tandem_controliq.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/learning/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/learning/autonomous_optimizer.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/learning/learning_system.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/mdmp/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/mdmp/backend.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/metrics.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/population/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/population/generator.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/population/runner.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/presets/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/presets/evidence_sources.yaml +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/presets/forecast_calibration_profiles.yaml +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/presets/golden_benchmark.yaml +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/presets/presets.json +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/presets/safety_contract_default.yaml +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/presets/validation_profiles.yaml +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/research/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/research/audit.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/research/calibration_gate.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/research/config.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/research/dataset.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/research/evaluation.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/research/losses.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/research/metrics.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/research/model_registry.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/research/predictor.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/scenarios/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/scenarios/generator.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/templates/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/templates/default_algorithm.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/templates/demos/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/templates/demos/live_stage_demo.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/templates/scenarios/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/templates/scenarios/chaos_insulin_stacking.json +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/templates/scenarios/chaos_runaway_ai.json +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/templates/scenarios/example_scenario.json +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/templates/scenarios/exercise_stress.json +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/utils/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/utils/plotting.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/utils/run_io.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/validation/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/validation/golden.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/validation/replay.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/validation/run_validation.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/validation/safety_contract.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/validation/schemas.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/visualization/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/visualization/cockpit.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints/visualization/uncertainty_cloud.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints_sdk_python35.egg-info/dependency_links.txt +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints_sdk_python35.egg-info/entry_points.txt +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/iints_sdk_python35.egg-info/top_level.txt +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_ai/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_ai/lineage.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/audit.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/bias_hooks.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/bundle.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/certification.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/cli.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/compare.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/conformance.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/contracts.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/crypto.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/data/conformance/vectors/delegation.json +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/data/conformance/vectors/fingerprint.json +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/data/conformance/vectors/grading.json +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/data/conformance/vectors/signing.json +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/delegate.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/diffing.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/drift.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/exceptions.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/fingerprint.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/fingerprint_store.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/hf.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/keys/mdmp_pub_v1.pem +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/llm_provenance.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/migrate.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/policy.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/prov.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/registry.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/runner.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/schema_export.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/synthetic.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/trust.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_core/visualizer.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_flavors/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_integrations/__init__.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_integrations/dvc.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_integrations/mlflow.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/src/mdmp_integrations/wandb.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/tests/test_bergman.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/tests/test_cli_carelink_workbench.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/tests/test_cli_demo_export.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/tests/test_cli_poster.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/tests/test_install_doctor.py +0 -0
- {iints_sdk_python35-1.5.1 → iints_sdk_python35-1.5.3}/tests/test_population.py +0 -0
{iints_sdk_python35-1.5.1/src/iints_sdk_python35.egg-info → iints_sdk_python35-1.5.3}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: iints-sdk-python35
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.3
|
|
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
|
License-Expression: Apache-2.0
|
|
@@ -17,22 +17,35 @@ Description-Content-Type: text/markdown
|
|
|
17
17
|
License-File: LICENSE
|
|
18
18
|
License-File: NOTICE
|
|
19
19
|
License-File: LICENSE-MIT-IINTS-LEGACY
|
|
20
|
-
Requires-Dist:
|
|
21
|
-
Requires-Dist: matplotlib>=3.5.0
|
|
20
|
+
Requires-Dist: fastapi>=0.115.0
|
|
22
21
|
Requires-Dist: numpy>=1.24.0
|
|
23
|
-
Requires-Dist: openpyxl>=3.0.0
|
|
24
22
|
Requires-Dist: pandas>=2.0.0
|
|
25
|
-
Requires-Dist: pillow>=12.1.1
|
|
26
23
|
Requires-Dist: pydantic>=2.0.0
|
|
27
24
|
Requires-Dist: PyYAML
|
|
28
25
|
Requires-Dist: rich>=12.0.0
|
|
29
26
|
Requires-Dist: scipy>=1.9.0
|
|
30
|
-
Requires-Dist: seaborn>=0.11.0
|
|
31
27
|
Requires-Dist: typer[all]
|
|
28
|
+
Requires-Dist: uvicorn>=0.30.0
|
|
29
|
+
Provides-Extra: edge
|
|
30
|
+
Requires-Dist: pyserial>=3.5; extra == "edge"
|
|
31
|
+
Provides-Extra: reports
|
|
32
|
+
Requires-Dist: fpdf2>=2.8.0; extra == "reports"
|
|
33
|
+
Requires-Dist: matplotlib>=3.5.0; extra == "reports"
|
|
34
|
+
Requires-Dist: openpyxl>=3.0.0; extra == "reports"
|
|
35
|
+
Requires-Dist: pillow>=12.1.1; extra == "reports"
|
|
36
|
+
Requires-Dist: seaborn>=0.11.0; extra == "reports"
|
|
37
|
+
Provides-Extra: full
|
|
38
|
+
Requires-Dist: fpdf2>=2.8.0; extra == "full"
|
|
39
|
+
Requires-Dist: matplotlib>=3.5.0; extra == "full"
|
|
40
|
+
Requires-Dist: openpyxl>=3.0.0; extra == "full"
|
|
41
|
+
Requires-Dist: pyserial>=3.5; extra == "full"
|
|
42
|
+
Requires-Dist: pillow>=12.1.1; extra == "full"
|
|
43
|
+
Requires-Dist: seaborn>=0.11.0; extra == "full"
|
|
32
44
|
Provides-Extra: dev
|
|
33
45
|
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
34
46
|
Requires-Dist: hypothesis>=6.0.0; extra == "dev"
|
|
35
47
|
Requires-Dist: flake8; extra == "dev"
|
|
48
|
+
Requires-Dist: httpx>=0.27.0; extra == "dev"
|
|
36
49
|
Requires-Dist: mypy; extra == "dev"
|
|
37
50
|
Requires-Dist: pandas-stubs; extra == "dev"
|
|
38
51
|
Requires-Dist: types-PyYAML; extra == "dev"
|
|
@@ -70,7 +83,16 @@ Docs: [python35.github.io/IINTS-SDK](https://python35.github.io/IINTS-SDK/)
|
|
|
70
83
|
python3 -m venv .venv
|
|
71
84
|
source .venv/bin/activate
|
|
72
85
|
python -m pip install -U pip
|
|
73
|
-
python -m pip install -U "iints-sdk-python35[mdmp]"
|
|
86
|
+
python -m pip install -U "iints-sdk-python35[full,mdmp]"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
For Raspberry Pi or UNO Q edge rigs, use `iints-sdk-python35[edge,mdmp]` and follow `docs/EDGE_HARDWARE.md`.
|
|
90
|
+
|
|
91
|
+
Edge workflow:
|
|
92
|
+
```bash
|
|
93
|
+
iints edge setup --output-dir iints_edge_demo --board raspberry_pi
|
|
94
|
+
iints edge status --workspace iints_edge_demo/patient_runtime
|
|
95
|
+
iints edge bundle --workspace iints_edge_demo/patient_runtime --output results/edge_runtime_bundle.zip
|
|
74
96
|
```
|
|
75
97
|
|
|
76
98
|
Sanity check:
|
|
@@ -90,6 +112,8 @@ iints ai report results/<run_id>
|
|
|
90
112
|
## Read Next
|
|
91
113
|
- Start here: `docs/GETTING_STARTED.md`
|
|
92
114
|
- Installation and paths: `docs/INSTALLATION.md`
|
|
115
|
+
- Edge hardware profiles: `docs/EDGE_HARDWARE.md`
|
|
116
|
+
- Raspberry Pi digital patient: `docs/DIGITAL_PATIENT_PI.md`
|
|
93
117
|
- Study analysis: `docs/STUDY_ANALYSIS.md`
|
|
94
118
|
- AI assistant: `docs/AI_ASSISTANT.md`
|
|
95
119
|
- Data certification: `docs/MDMP_QUICKSTART.md`
|
|
@@ -17,7 +17,16 @@ Docs: [python35.github.io/IINTS-SDK](https://python35.github.io/IINTS-SDK/)
|
|
|
17
17
|
python3 -m venv .venv
|
|
18
18
|
source .venv/bin/activate
|
|
19
19
|
python -m pip install -U pip
|
|
20
|
-
python -m pip install -U "iints-sdk-python35[mdmp]"
|
|
20
|
+
python -m pip install -U "iints-sdk-python35[full,mdmp]"
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
For Raspberry Pi or UNO Q edge rigs, use `iints-sdk-python35[edge,mdmp]` and follow `docs/EDGE_HARDWARE.md`.
|
|
24
|
+
|
|
25
|
+
Edge workflow:
|
|
26
|
+
```bash
|
|
27
|
+
iints edge setup --output-dir iints_edge_demo --board raspberry_pi
|
|
28
|
+
iints edge status --workspace iints_edge_demo/patient_runtime
|
|
29
|
+
iints edge bundle --workspace iints_edge_demo/patient_runtime --output results/edge_runtime_bundle.zip
|
|
21
30
|
```
|
|
22
31
|
|
|
23
32
|
Sanity check:
|
|
@@ -37,6 +46,8 @@ iints ai report results/<run_id>
|
|
|
37
46
|
## Read Next
|
|
38
47
|
- Start here: `docs/GETTING_STARTED.md`
|
|
39
48
|
- Installation and paths: `docs/INSTALLATION.md`
|
|
49
|
+
- Edge hardware profiles: `docs/EDGE_HARDWARE.md`
|
|
50
|
+
- Raspberry Pi digital patient: `docs/DIGITAL_PATIENT_PI.md`
|
|
40
51
|
- Study analysis: `docs/STUDY_ANALYSIS.md`
|
|
41
52
|
- AI assistant: `docs/AI_ASSISTANT.md`
|
|
42
53
|
- Data certification: `docs/MDMP_QUICKSTART.md`
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "iints-sdk-python35"
|
|
7
|
-
version = "1.5.
|
|
7
|
+
version = "1.5.3"
|
|
8
8
|
authors = [
|
|
9
9
|
{ name="Rune Bobbaers", email="rune.bobbaers@gmail.com" },
|
|
10
10
|
]
|
|
@@ -23,25 +23,41 @@ classifiers = [
|
|
|
23
23
|
"Development Status :: 5 - Production/Stable",
|
|
24
24
|
]
|
|
25
25
|
dependencies = [
|
|
26
|
-
"
|
|
27
|
-
"matplotlib>=3.5.0",
|
|
26
|
+
"fastapi>=0.115.0",
|
|
28
27
|
"numpy>=1.24.0",
|
|
29
|
-
"openpyxl>=3.0.0",
|
|
30
28
|
"pandas>=2.0.0",
|
|
31
|
-
"pillow>=12.1.1",
|
|
32
29
|
"pydantic>=2.0.0",
|
|
33
30
|
"PyYAML",
|
|
34
31
|
"rich>=12.0.0",
|
|
35
32
|
"scipy>=1.9.0",
|
|
36
|
-
"seaborn>=0.11.0",
|
|
37
33
|
"typer[all]",
|
|
34
|
+
"uvicorn>=0.30.0",
|
|
38
35
|
]
|
|
39
36
|
|
|
40
37
|
[project.optional-dependencies]
|
|
38
|
+
edge = [
|
|
39
|
+
"pyserial>=3.5",
|
|
40
|
+
]
|
|
41
|
+
reports = [
|
|
42
|
+
"fpdf2>=2.8.0",
|
|
43
|
+
"matplotlib>=3.5.0",
|
|
44
|
+
"openpyxl>=3.0.0",
|
|
45
|
+
"pillow>=12.1.1",
|
|
46
|
+
"seaborn>=0.11.0",
|
|
47
|
+
]
|
|
48
|
+
full = [
|
|
49
|
+
"fpdf2>=2.8.0",
|
|
50
|
+
"matplotlib>=3.5.0",
|
|
51
|
+
"openpyxl>=3.0.0",
|
|
52
|
+
"pyserial>=3.5",
|
|
53
|
+
"pillow>=12.1.1",
|
|
54
|
+
"seaborn>=0.11.0",
|
|
55
|
+
]
|
|
41
56
|
dev = [
|
|
42
57
|
"pytest>=7.0.0",
|
|
43
58
|
"hypothesis>=6.0.0",
|
|
44
59
|
"flake8",
|
|
60
|
+
"httpx>=0.27.0",
|
|
45
61
|
"mypy",
|
|
46
62
|
"pandas-stubs",
|
|
47
63
|
"types-PyYAML",
|
|
@@ -86,6 +102,8 @@ where = ["src"]
|
|
|
86
102
|
iints = [
|
|
87
103
|
"templates/*.py",
|
|
88
104
|
"templates/scenarios/*.json",
|
|
105
|
+
"templates/uno_q/*.ino",
|
|
106
|
+
"templates/uno_q/*.md",
|
|
89
107
|
"assets/*.png",
|
|
90
108
|
"data/*.json",
|
|
91
109
|
"data/virtual_patients/*.yaml",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# src/iints/__init__.py
|
|
2
2
|
|
|
3
3
|
import pandas as pd # Required for type hints like pd.DataFrame
|
|
4
|
-
from typing import Optional
|
|
4
|
+
from typing import Any, Optional
|
|
5
5
|
|
|
6
6
|
try:
|
|
7
7
|
from importlib.metadata import PackageNotFoundError, version
|
|
@@ -11,11 +11,18 @@ 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.5.
|
|
14
|
+
__version__ = "1.5.3"
|
|
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.
|
|
18
18
|
|
|
19
|
+
|
|
20
|
+
def _missing_reports_dependency(feature: str, exc: Exception) -> None:
|
|
21
|
+
raise ImportError(
|
|
22
|
+
f"{feature} requires the optional reporting stack. Install "
|
|
23
|
+
f"'iints-sdk-python35[reports]' or 'iints-sdk-python35[full]'."
|
|
24
|
+
) from exc
|
|
25
|
+
|
|
19
26
|
# API Components for Algorithm Development
|
|
20
27
|
from .api.base_algorithm import (
|
|
21
28
|
InsulinAlgorithm,
|
|
@@ -72,16 +79,75 @@ from .data.guardians import mdmp_gate, MDMPGateError
|
|
|
72
79
|
from .data.synthetic_mirror import generate_synthetic_mirror, SyntheticMirrorArtifact
|
|
73
80
|
from .data.study_corruption import AVAILABLE_STUDY_CORRUPTIONS, apply_study_corruptions, write_corrupted_study_csv
|
|
74
81
|
from .analysis.metrics import generate_benchmark_metrics # Added for benchmark
|
|
75
|
-
from .analysis.booth_demo import build_booth_demo
|
|
76
|
-
from .analysis.carelink_workbench import build_carelink_workbench
|
|
77
|
-
from .analysis.poster import generate_results_poster
|
|
78
|
-
from .analysis.reporting import ClinicalReportGenerator
|
|
79
82
|
from .analysis.study_protocol import build_study_protocol_payload, render_study_protocol_markdown, write_study_protocol_bundle
|
|
80
83
|
from .analysis.edge_efficiency import EnergyEstimate, estimate_energy_per_decision
|
|
81
84
|
from .ai import AIResponse, IINTSAssistant, MDMPGuard
|
|
82
|
-
from .
|
|
85
|
+
from .live_patient import (
|
|
86
|
+
create_edge_bundle,
|
|
87
|
+
export_edge_setup,
|
|
88
|
+
LivePatientDaemon,
|
|
89
|
+
PatientRuntimeConfig,
|
|
90
|
+
create_patient_app,
|
|
91
|
+
export_uno_q_bridge,
|
|
92
|
+
get_runtime_scenario_profile,
|
|
93
|
+
list_runtime_scenario_profiles,
|
|
94
|
+
run_edge_benchmark,
|
|
95
|
+
summarize_edge_workspace,
|
|
96
|
+
write_edge_update_script,
|
|
97
|
+
)
|
|
83
98
|
from .scenarios import ScenarioGeneratorConfig, generate_random_scenario
|
|
84
99
|
|
|
100
|
+
|
|
101
|
+
def run_simulation(*args: Any, **kwargs: Any) -> Any:
|
|
102
|
+
from .highlevel import run_simulation as _run_simulation
|
|
103
|
+
|
|
104
|
+
return _run_simulation(*args, **kwargs)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def run_full(*args: Any, **kwargs: Any) -> Any:
|
|
108
|
+
from .highlevel import run_full as _run_full
|
|
109
|
+
|
|
110
|
+
return _run_full(*args, **kwargs)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def run_population(*args: Any, **kwargs: Any) -> Any:
|
|
114
|
+
from .highlevel import run_population as _run_population
|
|
115
|
+
|
|
116
|
+
return _run_population(*args, **kwargs)
|
|
117
|
+
|
|
118
|
+
try:
|
|
119
|
+
from .analysis.booth_demo import build_booth_demo
|
|
120
|
+
except Exception as exc: # pragma: no cover - optional reports stack
|
|
121
|
+
_build_booth_demo_exc = exc
|
|
122
|
+
|
|
123
|
+
def build_booth_demo(*args, **kwargs): # type: ignore[misc,no-redef]
|
|
124
|
+
_missing_reports_dependency("build_booth_demo()", _build_booth_demo_exc)
|
|
125
|
+
|
|
126
|
+
try:
|
|
127
|
+
from .analysis.carelink_workbench import build_carelink_workbench
|
|
128
|
+
except Exception as exc: # pragma: no cover - optional reports stack
|
|
129
|
+
_build_carelink_workbench_exc = exc
|
|
130
|
+
|
|
131
|
+
def build_carelink_workbench(*args, **kwargs): # type: ignore[misc,no-redef]
|
|
132
|
+
_missing_reports_dependency("build_carelink_workbench()", _build_carelink_workbench_exc)
|
|
133
|
+
|
|
134
|
+
try:
|
|
135
|
+
from .analysis.poster import generate_results_poster
|
|
136
|
+
except Exception as exc: # pragma: no cover - optional reports stack
|
|
137
|
+
_generate_results_poster_exc = exc
|
|
138
|
+
|
|
139
|
+
def generate_results_poster(*args, **kwargs): # type: ignore[misc,no-redef]
|
|
140
|
+
_missing_reports_dependency("generate_results_poster()", _generate_results_poster_exc)
|
|
141
|
+
|
|
142
|
+
try:
|
|
143
|
+
from .analysis.reporting import ClinicalReportGenerator
|
|
144
|
+
except Exception as exc: # pragma: no cover - optional reports stack
|
|
145
|
+
_clinical_report_generator_exc = exc
|
|
146
|
+
|
|
147
|
+
class ClinicalReportGenerator: # type: ignore[no-redef]
|
|
148
|
+
def __init__(self, *args, **kwargs):
|
|
149
|
+
_missing_reports_dependency("ClinicalReportGenerator", _clinical_report_generator_exc)
|
|
150
|
+
|
|
85
151
|
# Population testing
|
|
86
152
|
from .population import (
|
|
87
153
|
PopulationGenerator,
|
|
@@ -202,6 +268,17 @@ __all__ = [
|
|
|
202
268
|
"AIResponse",
|
|
203
269
|
"IINTSAssistant",
|
|
204
270
|
"MDMPGuard",
|
|
271
|
+
"create_edge_bundle",
|
|
272
|
+
"export_edge_setup",
|
|
273
|
+
"LivePatientDaemon",
|
|
274
|
+
"PatientRuntimeConfig",
|
|
275
|
+
"create_patient_app",
|
|
276
|
+
"export_uno_q_bridge",
|
|
277
|
+
"get_runtime_scenario_profile",
|
|
278
|
+
"list_runtime_scenario_profiles",
|
|
279
|
+
"run_edge_benchmark",
|
|
280
|
+
"summarize_edge_workspace",
|
|
281
|
+
"write_edge_update_script",
|
|
205
282
|
# Reporting
|
|
206
283
|
"generate_report",
|
|
207
284
|
"generate_quickstart_report",
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
from .clinical_metrics import ClinicalMetricsCalculator, ClinicalMetricsResult
|
|
2
|
+
from .baseline import compute_metrics, run_baseline_comparison, write_baseline_comparison
|
|
3
|
+
from .study_engine import (
|
|
4
|
+
StudyAlgorithmSpec,
|
|
5
|
+
StudyArmSpec,
|
|
6
|
+
StudyDesignPayload,
|
|
7
|
+
StudyMatrixRow,
|
|
8
|
+
StudyProfileSpec,
|
|
9
|
+
build_algorithm_registry,
|
|
10
|
+
build_study_design_payload,
|
|
11
|
+
resolve_profile_specs,
|
|
12
|
+
)
|
|
13
|
+
from .study_protocol import (
|
|
14
|
+
build_study_protocol_payload,
|
|
15
|
+
render_study_protocol_markdown,
|
|
16
|
+
write_study_protocol_bundle,
|
|
17
|
+
)
|
|
18
|
+
from .study_analysis import (
|
|
19
|
+
analyze_run_directory,
|
|
20
|
+
analyze_study_directory,
|
|
21
|
+
compare_studies,
|
|
22
|
+
load_study_summary,
|
|
23
|
+
quality_badges_for_metrics,
|
|
24
|
+
StudyComparison,
|
|
25
|
+
StudyRunSummary,
|
|
26
|
+
StudySummary,
|
|
27
|
+
)
|
|
28
|
+
from .eucys_results import (
|
|
29
|
+
build_eucys_abstract_draft_markdown,
|
|
30
|
+
build_eucys_filled_abstract_markdown,
|
|
31
|
+
build_eucys_jury_qa_markdown,
|
|
32
|
+
build_eucys_limitations_and_ethics_markdown,
|
|
33
|
+
build_eucys_poster_outline_markdown,
|
|
34
|
+
generate_eucys_main_figure,
|
|
35
|
+
generate_eucys_results_bundle,
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _missing_reports_dependency(feature: str, exc: Exception) -> None:
|
|
40
|
+
raise ImportError(
|
|
41
|
+
f"{feature} requires the optional reporting stack. Install "
|
|
42
|
+
f"'iints-sdk-python35[reports]' or 'iints-sdk-python35[full]'."
|
|
43
|
+
) from exc
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
try:
|
|
47
|
+
from .booth_demo import build_booth_demo
|
|
48
|
+
except Exception as exc: # pragma: no cover - optional reports stack
|
|
49
|
+
_build_booth_demo_exc = exc
|
|
50
|
+
|
|
51
|
+
def build_booth_demo(*args, **kwargs): # type: ignore[misc,no-redef]
|
|
52
|
+
_missing_reports_dependency("build_booth_demo()", _build_booth_demo_exc)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
try:
|
|
56
|
+
from .carelink_workbench import build_carelink_workbench
|
|
57
|
+
except Exception as exc: # pragma: no cover - optional reports stack
|
|
58
|
+
_build_carelink_workbench_exc = exc
|
|
59
|
+
|
|
60
|
+
def build_carelink_workbench(*args, **kwargs): # type: ignore[misc,no-redef]
|
|
61
|
+
_missing_reports_dependency("build_carelink_workbench()", _build_carelink_workbench_exc)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
try:
|
|
65
|
+
from .poster import generate_results_poster
|
|
66
|
+
except Exception as exc: # pragma: no cover - optional reports stack
|
|
67
|
+
_generate_results_poster_exc = exc
|
|
68
|
+
|
|
69
|
+
def generate_results_poster(*args, **kwargs): # type: ignore[misc,no-redef]
|
|
70
|
+
_missing_reports_dependency("generate_results_poster()", _generate_results_poster_exc)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
try:
|
|
74
|
+
from .reporting import ClinicalReportGenerator
|
|
75
|
+
except Exception as exc: # pragma: no cover - optional reports stack
|
|
76
|
+
_clinical_report_generator_exc = exc
|
|
77
|
+
|
|
78
|
+
class ClinicalReportGenerator: # type: ignore[no-redef]
|
|
79
|
+
def __init__(self, *args, **kwargs):
|
|
80
|
+
_missing_reports_dependency("ClinicalReportGenerator", _clinical_report_generator_exc)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
try:
|
|
84
|
+
from .study_poster import generate_study_poster
|
|
85
|
+
except Exception as exc: # pragma: no cover - optional reports stack
|
|
86
|
+
_generate_study_poster_exc = exc
|
|
87
|
+
|
|
88
|
+
def generate_study_poster(*args, **kwargs): # type: ignore[misc,no-redef]
|
|
89
|
+
_missing_reports_dependency("generate_study_poster()", _generate_study_poster_exc)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
__all__ = [
|
|
93
|
+
"analyze_run_directory",
|
|
94
|
+
"analyze_study_directory",
|
|
95
|
+
"build_booth_demo",
|
|
96
|
+
"build_carelink_workbench",
|
|
97
|
+
"ClinicalMetricsCalculator",
|
|
98
|
+
"ClinicalMetricsResult",
|
|
99
|
+
"ClinicalReportGenerator",
|
|
100
|
+
"compute_metrics",
|
|
101
|
+
"compare_studies",
|
|
102
|
+
"build_eucys_abstract_draft_markdown",
|
|
103
|
+
"build_eucys_filled_abstract_markdown",
|
|
104
|
+
"build_eucys_jury_qa_markdown",
|
|
105
|
+
"build_eucys_limitations_and_ethics_markdown",
|
|
106
|
+
"build_eucys_poster_outline_markdown",
|
|
107
|
+
"generate_eucys_main_figure",
|
|
108
|
+
"resolve_profile_specs",
|
|
109
|
+
"generate_eucys_results_bundle",
|
|
110
|
+
"generate_results_poster",
|
|
111
|
+
"generate_study_poster",
|
|
112
|
+
"build_algorithm_registry",
|
|
113
|
+
"build_study_design_payload",
|
|
114
|
+
"build_study_protocol_payload",
|
|
115
|
+
"render_study_protocol_markdown",
|
|
116
|
+
"write_study_protocol_bundle",
|
|
117
|
+
"load_study_summary",
|
|
118
|
+
"quality_badges_for_metrics",
|
|
119
|
+
"run_baseline_comparison",
|
|
120
|
+
"StudyAlgorithmSpec",
|
|
121
|
+
"StudyArmSpec",
|
|
122
|
+
"StudyComparison",
|
|
123
|
+
"StudyDesignPayload",
|
|
124
|
+
"StudyMatrixRow",
|
|
125
|
+
"StudyProfileSpec",
|
|
126
|
+
"StudyRunSummary",
|
|
127
|
+
"StudySummary",
|
|
128
|
+
"write_baseline_comparison",
|
|
129
|
+
]
|
|
@@ -12,6 +12,7 @@ from iints.core.algorithms.pid_controller import PIDController
|
|
|
12
12
|
from iints.core.algorithms.standard_pump_algo import StandardPumpAlgorithm
|
|
13
13
|
from iints.core.patient.models import PatientModel
|
|
14
14
|
from iints.core.simulator import Simulator
|
|
15
|
+
from iints.utils.csv_safety import sanitize_csv_dataframe
|
|
15
16
|
from iints.validation import build_stress_events
|
|
16
17
|
|
|
17
18
|
|
|
@@ -88,5 +89,5 @@ def write_baseline_comparison(comparison: Dict[str, Any], output_dir: Path) -> D
|
|
|
88
89
|
json_path = output_dir / "baseline_comparison.json"
|
|
89
90
|
csv_path = output_dir / "baseline_comparison.csv"
|
|
90
91
|
json_path.write_text(json.dumps(comparison, indent=2))
|
|
91
|
-
pd.DataFrame(comparison.get("rows", [])).to_csv(csv_path, index=False)
|
|
92
|
+
sanitize_csv_dataframe(pd.DataFrame(comparison.get("rows", []))).to_csv(csv_path, index=False)
|
|
92
93
|
return {"json": str(json_path), "csv": str(csv_path)}
|