iints-sdk-python35 1.5.22__tar.gz → 1.5.24__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.22/src/iints_sdk_python35.egg-info → iints_sdk_python35-1.5.24}/PKG-INFO +8 -1
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/README.md +5 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/pyproject.toml +6 -1
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/__init__.py +1 -1
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/patient/bergman_model.py +38 -10
- iints_sdk_python35-1.5.24/src/iints/research/stem_cell_optimizer.py +85 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/app.py +11 -0
- iints_sdk_python35-1.5.24/src/iints_desktop/assets/app_icon.icns +0 -0
- iints_sdk_python35-1.5.24/src/iints_desktop/assets/app_icon.ico +0 -0
- iints_sdk_python35-1.5.24/src/iints_desktop/assets/app_icon.png +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/cocoa_app.py +14 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/launcher.py +2 -1
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/local_ai.py +9 -8
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/qt_app.py +194 -336
- iints_sdk_python35-1.5.24/src/iints_desktop/terminal_utils.py +47 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24/src/iints_sdk_python35.egg-info}/PKG-INFO +8 -1
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_sdk_python35.egg-info/SOURCES.txt +5 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_sdk_python35.egg-info/requires.txt +2 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_bergman.py +1 -1
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_desktop_app.py +56 -11
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/LICENSE +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/LICENSE-MIT-IINTS-LEGACY +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/NOTICE +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/setup.cfg +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/ai/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/ai/assistant.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/ai/backends/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/ai/backends/base.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/ai/backends/mistral_api.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/ai/backends/ollama.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/ai/cli.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/ai/deterministic.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/ai/insights.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/ai/mdmp_guard.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/ai/model_catalog.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/ai/prepare.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/ai/prompts.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/algorithm_xray.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/baseline.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/booth_demo.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/carelink_workbench.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/clinical_benchmark.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/clinical_metrics.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/clinical_tir_analyzer.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/diabetes_metrics.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/edge_efficiency.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/edge_performance_monitor.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/eucys_results.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/evidence_bundle.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/explainability.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/explainable_ai.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/hardware_benchmark.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/metrics.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/population_report.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/poster.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/reporting.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/run_quality.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/safety_index.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/safety_visualizer.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/sensor_filtering.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/study_analysis.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/study_engine.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/study_experiment.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/study_poster.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/study_protocol.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/analysis/validator.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/api/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/api/base_algorithm.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/api/registry.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/api/template_algorithm.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/assets/iints_logo.png +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/cli/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/cli/cli.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/cli/patient_cli.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/algorithms/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/algorithms/battle_runner.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/algorithms/clinical_baseline.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/algorithms/correction_bolus.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/algorithms/discovery.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/algorithms/fixed_basal_bolus.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/algorithms/hybrid_algorithm.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/algorithms/imitation_controller.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/algorithms/lstm_algorithm.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/algorithms/mock_algorithms.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/algorithms/mpc_controller.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/algorithms/neural_controller.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/algorithms/pid_controller.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/algorithms/standard_pump_algo.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/clinical_metrics.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/device.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/device_manager.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/devices/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/devices/models.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/digital_twin.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/formula_registry.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/patient/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/patient/advanced_metabolic_model.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/patient/hovorka_model.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/patient/models.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/patient/patient_factory.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/patient/physiology.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/patient/profile.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/physiology_variation.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/safety/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/safety/config.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/safety/input_validator.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/safety/supervisor.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/simulation/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/simulation/scenario_parser.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/simulator.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/supervisor.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/units.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/adapter.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/certify.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/column_mapper.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/contracts/diabetes_cgm_mdmp_contract.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/contracts.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/datasets.json +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/demo/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/demo/demo_cgm.csv +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/evidence.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/guardians.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/importer.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/ingestor.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/mdmp_visualizer.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/medtronic_live.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/nightscout.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/physiology_residual_profiles.json +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/quality_checker.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/realism_dashboard.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/realism_governance.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/realism_reference.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/realism_references.json +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/realism_validator.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/registry.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/research_catalog.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/runner.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/study_corruption.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/synthetic_mirror.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/tidepool.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/universal_parser.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/virtual_patients/clinic_safe_baseline.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/virtual_patients/clinic_safe_hyper_challenge.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/virtual_patients/clinic_safe_hypo_prone.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/virtual_patients/clinic_safe_midnight.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/virtual_patients/clinic_safe_pizza.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/virtual_patients/clinic_safe_stress_meal.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/virtual_patients/default_patient.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/virtual_patients/patient_559_config.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/virtual_patients/reference_azt1d_t1d.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/virtual_patients/reference_free_living_t1d.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/data/virtual_patients/reference_hupa_ucm_t1d.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/demo_assets.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/emulation/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/emulation/legacy_base.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/emulation/medtronic_780g.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/emulation/omnipod_5.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/emulation/tandem_controliq.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/highlevel.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/jetson/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/jetson/endurance.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/jetson/research_pipeline.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/learning/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/learning/autonomous_optimizer.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/learning/learning_system.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/live_patient/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/live_patient/api.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/live_patient/daemon.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/live_patient/edge_benchmark.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/live_patient/edge_ops.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/live_patient/fpga.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/live_patient/long_study.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/live_patient/medtronic_direct.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/live_patient/pico_pump.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/live_patient/runtime.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/live_patient/service_export.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/live_patient/uno_q.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/mdmp/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/mdmp/backend.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/mdmp/eu_ai_pact.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/metrics.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/population/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/population/generator.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/population/runner.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/presets/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/presets/evidence_sources.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/presets/forecast_calibration_profiles.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/presets/golden_benchmark.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/presets/presets.json +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/presets/safety_contract_default.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/presets/validation_profiles.yaml +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/alphafold_engine.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/anatomy.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/audit.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/calibration_gate.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/config.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/control.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/control_eval.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/data_blend.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/dataset.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/evaluation.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/forecasting.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/genetics.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/genomics_engine.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/glucose_model.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/jetson_hf_trainer.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/local_ai.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/local_ai_gate.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/losses.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/metrics.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/model_registry.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/neural_control.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/pharmacology.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/physiology.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/physiology_calibration.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/predictor.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/results_manager.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/structure.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/research/tissue_stressor.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/scenarios/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/scenarios/generator.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/scenarios/study_pack.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/templates/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/templates/default_algorithm.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/templates/demos/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/templates/demos/live_stage_demo.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/templates/pico_pump/README.md +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/templates/pico_pump/code.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/templates/pico_pump/serial_protocol.txt +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/templates/scenarios/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/templates/scenarios/chaos_insulin_stacking.json +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/templates/scenarios/chaos_runaway_ai.json +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/templates/scenarios/example_scenario.json +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/templates/scenarios/exercise_stress.json +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/templates/uno_q/README.md +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/templates/uno_q/iints_supervisor_bridge.ino +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/tools/ai_realism_auditor.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/tools/digital_twin_calibrator.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/tools/theory_stress_lab.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/utils/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/utils/academic_artifacts.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/utils/csv_safety.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/utils/plotting.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/utils/run_io.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/utils/url_safety.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/validation/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/validation/golden.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/validation/replay.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/validation/run_doctor.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/validation/run_validation.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/validation/safety_contract.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/validation/schemas.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/visualization/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/visualization/cockpit.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/visualization/uncertainty_cloud.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/assets/alphafold/AF-P01275-F1-model_v4.cif +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/assets/alphafold/AF-P01308-F1-model_v4.cif +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/assets/alphafold/AF-P06213-F1-model_v6.cif +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/assets/alphafold/AF-P14672-F1-model_v6.cif +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/assets/alphafold/AF-P47871-F1-model_v6.cif +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/assets/alphafold/gcgr_3D.png +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/assets/alphafold/glucagon_3D.png +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/assets/alphafold/glut4_3D.png +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/assets/alphafold/insr_3D.png +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/assets/alphafold/insulin_3D.png +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/engine.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/fetcher.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/mdmp.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/molecule_viewer.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/molecules.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/render_3dmol.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_desktop/results.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_sdk_python35.egg-info/dependency_links.txt +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_sdk_python35.egg-info/entry_points.txt +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints_sdk_python35.egg-info/top_level.txt +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_ai/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_ai/lineage.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/audit.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/bias_hooks.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/bundle.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/certification.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/cli.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/compare.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/conformance.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/contracts.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/crypto.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/data/conformance/vectors/delegation.json +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/data/conformance/vectors/fingerprint.json +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/data/conformance/vectors/grading.json +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/data/conformance/vectors/signing.json +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/delegate.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/diffing.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/drift.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/exceptions.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/fingerprint.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/fingerprint_store.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/hf.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/keys/mdmp_pub_v1.pem +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/llm_provenance.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/migrate.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/policy.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/prov.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/registry.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/runner.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/schema_export.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/synthetic.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/trust.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_core/visualizer.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_flavors/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_integrations/__init__.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_integrations/dvc.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_integrations/mlflow.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/mdmp_integrations/wandb.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_ci_governance.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_cli_algorithm_loading.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_cli_booth_demo.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_cli_carelink_workbench.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_cli_cloud_import_security.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_cli_demo_export.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_cli_demo_live.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_cli_edge_runtime.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_cli_expo_tools.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_cli_fpga.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_cli_onboarding.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_cli_patient_runtime.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_cli_poster.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_cli_research_workflows.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_cli_run_summary.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_cli_theory_stress_lab.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_install_doctor.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_jetson_endurance.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_physiology_variation.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_plugin_system.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_population.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_presets_realism.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_research_realism_tools.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_scientific_fidelity.py +0 -0
- {iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/tests/test_simulator_calibration.py +0 -0
{iints_sdk_python35-1.5.22/src/iints_sdk_python35.egg-info → iints_sdk_python35-1.5.24}/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.24
|
|
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
|
|
@@ -71,6 +71,8 @@ Requires-Dist: cryptography<50.0.0,>=42.0.0; extra == "mdmp"
|
|
|
71
71
|
Provides-Extra: desktop
|
|
72
72
|
Requires-Dist: pyinstaller<7.0.0,>=6.11.0; extra == "desktop"
|
|
73
73
|
Requires-Dist: setuptools<81.0.0,>=77.0.0; extra == "desktop"
|
|
74
|
+
Requires-Dist: PySide6<7.0.0,>=6.7.0; extra == "desktop"
|
|
75
|
+
Requires-Dist: plotly<7.0.0,>=5.18.0; extra == "desktop"
|
|
74
76
|
Provides-Extra: desktop-qt
|
|
75
77
|
Requires-Dist: pyinstaller<7.0.0,>=6.11.0; extra == "desktop-qt"
|
|
76
78
|
Requires-Dist: setuptools<81.0.0,>=77.0.0; extra == "desktop-qt"
|
|
@@ -115,7 +117,12 @@ Current beta downloads:
|
|
|
115
117
|
| macOS | [`.dmg`](https://github.com/python35/IINTS-SDK/releases/download/desktop-beta-latest/IINTS-AF-Desktop-Beta-macos.dmg) |
|
|
116
118
|
| Linux | [executable](https://github.com/python35/IINTS-SDK/releases/download/desktop-beta-latest/IINTS-AF-Desktop-Beta-linux-x64) |
|
|
117
119
|
|
|
120
|
+
Python install, including the PySide6 desktop runtime:
|
|
118
121
|
|
|
122
|
+
```bash
|
|
123
|
+
python -m pip install -U "iints-sdk-python35[full,desktop,mdmp]"
|
|
124
|
+
iints-desktop
|
|
125
|
+
```
|
|
119
126
|
|
|
120
127
|
## License
|
|
121
128
|
|
|
@@ -31,7 +31,12 @@ Current beta downloads:
|
|
|
31
31
|
| macOS | [`.dmg`](https://github.com/python35/IINTS-SDK/releases/download/desktop-beta-latest/IINTS-AF-Desktop-Beta-macos.dmg) |
|
|
32
32
|
| Linux | [executable](https://github.com/python35/IINTS-SDK/releases/download/desktop-beta-latest/IINTS-AF-Desktop-Beta-linux-x64) |
|
|
33
33
|
|
|
34
|
+
Python install, including the PySide6 desktop runtime:
|
|
34
35
|
|
|
36
|
+
```bash
|
|
37
|
+
python -m pip install -U "iints-sdk-python35[full,desktop,mdmp]"
|
|
38
|
+
iints-desktop
|
|
39
|
+
```
|
|
35
40
|
|
|
36
41
|
## License
|
|
37
42
|
|
|
@@ -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.24"
|
|
8
8
|
authors = [
|
|
9
9
|
{ name="Rune Bobbaers", email="rune.bobbaers@gmail.com" },
|
|
10
10
|
]
|
|
@@ -88,6 +88,8 @@ mdmp = [
|
|
|
88
88
|
desktop = [
|
|
89
89
|
"pyinstaller>=6.11.0,<7.0.0",
|
|
90
90
|
"setuptools>=77.0.0,<81.0.0",
|
|
91
|
+
"PySide6>=6.7.0,<7.0.0",
|
|
92
|
+
"plotly>=5.18.0,<7.0.0",
|
|
91
93
|
]
|
|
92
94
|
desktop-qt = [
|
|
93
95
|
"pyinstaller>=6.11.0,<7.0.0",
|
|
@@ -125,6 +127,9 @@ where = ["src"]
|
|
|
125
127
|
|
|
126
128
|
[tool.setuptools.package-data]
|
|
127
129
|
iints_desktop = [
|
|
130
|
+
"assets/*.icns",
|
|
131
|
+
"assets/*.ico",
|
|
132
|
+
"assets/*.png",
|
|
128
133
|
"assets/alphafold/*.png",
|
|
129
134
|
"assets/alphafold/*.cif",
|
|
130
135
|
]
|
|
@@ -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.5.
|
|
14
|
+
__version__ = "1.5.24"
|
|
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.
|
{iints_sdk_python35-1.5.22 → iints_sdk_python35-1.5.24}/src/iints/core/patient/bergman_model.py
RENAMED
|
@@ -63,6 +63,11 @@ class BergmanParameters:
|
|
|
63
63
|
k_a_glucagon: float = 0.05 # 1/min
|
|
64
64
|
S_glucagon: float = 0.02 # sensitivity
|
|
65
65
|
|
|
66
|
+
# --- Stem Cell Graft (Research) ---
|
|
67
|
+
stem_cell_engraftment_percent: float = 0.0 # 0 for T1D, 100 for cure
|
|
68
|
+
stem_cell_subq_fraction: float = 0.0 # 0.0 = PV (immediate), 1.0 = subQ (delayed via S1)
|
|
69
|
+
immune_rejection_rate: float = 0.0 # 1/min decay of graft mass
|
|
70
|
+
|
|
66
71
|
# --- Gut absorption ---
|
|
67
72
|
tau_meal: float = 40.0 # min — gastric emptying time constant
|
|
68
73
|
k_abs: float = 0.05 # 1/min — intestinal absorption rate constant
|
|
@@ -96,6 +101,7 @@ class BergmanPatientModel:
|
|
|
96
101
|
carb_absorption_duration_minutes: float = 240.0,
|
|
97
102
|
max_glucose_rate_mgdl_per_min: float = 3.0,
|
|
98
103
|
bergman_params: Optional[BergmanParameters] = None,
|
|
104
|
+
**kwargs
|
|
99
105
|
) -> None:
|
|
100
106
|
# Store clinical knobs (for ratio queries and compatibility)
|
|
101
107
|
self.basal_insulin_rate = basal_insulin_rate
|
|
@@ -121,6 +127,10 @@ class BergmanPatientModel:
|
|
|
121
127
|
Gb=gb_default,
|
|
122
128
|
tau_meal=max(45.0, min(float(carb_absorption_duration_minutes) / 3.0, 100.0)),
|
|
123
129
|
k_abs=max(0.015, min(float(glucose_absorption_rate), 0.035)),
|
|
130
|
+
stem_cell_engraftment_percent=kwargs.get('stem_cell_engraftment_percent', 0.0),
|
|
131
|
+
stem_cell_subq_fraction=kwargs.get('stem_cell_subq_fraction', 0.0),
|
|
132
|
+
immune_rejection_rate=kwargs.get('immune_rejection_rate', 0.0),
|
|
133
|
+
gamma=0.005 if kwargs.get('stem_cell_engraftment_percent', 0.0) > 0 else 0.0
|
|
124
134
|
)
|
|
125
135
|
|
|
126
136
|
# Exercise book-keeping
|
|
@@ -159,6 +169,7 @@ class BergmanPatientModel:
|
|
|
159
169
|
0.0, # 10: Gamma (pg/mL) - Plasma Glucagon
|
|
160
170
|
0.0, # 11: x_gluc (1) - Glucagon action on EGP
|
|
161
171
|
0.0, # 12: HAAF (1) - Memory
|
|
172
|
+
(self.params.stem_cell_engraftment_percent / 100.0), # 13: M_graft (1) - Graft Mass
|
|
162
173
|
], dtype=np.float64)
|
|
163
174
|
|
|
164
175
|
self.reset()
|
|
@@ -183,7 +194,7 @@ class BergmanPatientModel:
|
|
|
183
194
|
"""Reset to initial conditions."""
|
|
184
195
|
self._state = np.array([
|
|
185
196
|
self.initial_glucose, 0.0, self.params.Ib, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
186
|
-
0.0, 0.0, 0.0, 0.0, 0.0
|
|
197
|
+
0.0, 0.0, 0.0, 0.0, 0.0, (self.params.stem_cell_engraftment_percent / 100.0)
|
|
187
198
|
], dtype=np.float64)
|
|
188
199
|
self.current_glucose = self.initial_glucose
|
|
189
200
|
self.insulin_on_board = 0.0
|
|
@@ -369,22 +380,27 @@ class BergmanPatientModel:
|
|
|
369
380
|
# Handle legacy snapshot coercions to 13-state vector
|
|
370
381
|
if ode_state.size == 4:
|
|
371
382
|
ode_state = np.array(
|
|
372
|
-
[ode_state[0], ode_state[1], ode_state[2], 0.0, 0.0, ode_state[3], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
|
|
383
|
+
[ode_state[0], ode_state[1], ode_state[2], 0.0, 0.0, ode_state[3], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, (self.params.stem_cell_engraftment_percent / 100.0)],
|
|
373
384
|
dtype=np.float64,
|
|
374
385
|
)
|
|
375
386
|
elif ode_state.size == 5:
|
|
376
387
|
ode_state = np.array(
|
|
377
|
-
[ode_state[0], ode_state[1], ode_state[2], ode_state[3], 0.0, ode_state[4], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
|
|
388
|
+
[ode_state[0], ode_state[1], ode_state[2], ode_state[3], 0.0, ode_state[4], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, (self.params.stem_cell_engraftment_percent / 100.0)],
|
|
378
389
|
dtype=np.float64,
|
|
379
390
|
)
|
|
380
391
|
elif ode_state.size == 7:
|
|
381
392
|
ode_state = np.array(
|
|
382
|
-
[ode_state[0], ode_state[1], ode_state[2], ode_state[3], 0.0, ode_state[4], ode_state[5], ode_state[6], 0.0, 0.0, 0.0, 0.0, 0.0],
|
|
393
|
+
[ode_state[0], ode_state[1], ode_state[2], ode_state[3], 0.0, ode_state[4], ode_state[5], ode_state[6], 0.0, 0.0, 0.0, 0.0, 0.0, (self.params.stem_cell_engraftment_percent / 100.0)],
|
|
383
394
|
dtype=np.float64,
|
|
384
395
|
)
|
|
385
396
|
elif ode_state.size == 8:
|
|
386
397
|
ode_state = np.array(
|
|
387
|
-
[ode_state[0], ode_state[1], ode_state[2], ode_state[3], ode_state[4], ode_state[5], ode_state[6], ode_state[7], 0.0, 0.0, 0.0, 0.0, 0.0],
|
|
398
|
+
[ode_state[0], ode_state[1], ode_state[2], ode_state[3], ode_state[4], ode_state[5], ode_state[6], ode_state[7], 0.0, 0.0, 0.0, 0.0, 0.0, (self.params.stem_cell_engraftment_percent / 100.0)],
|
|
399
|
+
dtype=np.float64,
|
|
400
|
+
)
|
|
401
|
+
elif ode_state.size == 13:
|
|
402
|
+
ode_state = np.array(
|
|
403
|
+
list(ode_state) + [(self.params.stem_cell_engraftment_percent / 100.0)],
|
|
388
404
|
dtype=np.float64,
|
|
389
405
|
)
|
|
390
406
|
self._state = ode_state
|
|
@@ -415,7 +431,7 @@ class BergmanPatientModel:
|
|
|
415
431
|
u_glucagon_pg_per_min: float,
|
|
416
432
|
current_time: float,
|
|
417
433
|
) -> np.ndarray:
|
|
418
|
-
G, X, I, Q_sto1, Q_sto2, Q_gut, S1, S2, Y1, Y2, Gamma, x_gluc, HAAF = y
|
|
434
|
+
G, X, I, Q_sto1, Q_sto2, Q_gut, S1, S2, Y1, Y2, Gamma, x_gluc, HAAF, M_graft = y
|
|
419
435
|
p = self.params
|
|
420
436
|
|
|
421
437
|
Vg_abs = p.Vg * p.body_weight_kg # dL
|
|
@@ -484,16 +500,28 @@ class BergmanPatientModel:
|
|
|
484
500
|
# --- dX/dt ---
|
|
485
501
|
dXdt = -p.p2 * X + p3_eff * max(I - p.Ib, 0.0)
|
|
486
502
|
|
|
503
|
+
# --- Stem Cell / Islet Secretion ---
|
|
504
|
+
# Gamma acts as base secretion rate for a 100% functional pancreas
|
|
505
|
+
# M_graft acts as the survival fraction multiplier.
|
|
506
|
+
total_secretion = p.gamma * M_graft * max(G - p.h, 0.0)
|
|
507
|
+
|
|
508
|
+
secretion_subq = total_secretion * p.stem_cell_subq_fraction
|
|
509
|
+
secretion_plasma = total_secretion * (1.0 - p.stem_cell_subq_fraction)
|
|
510
|
+
|
|
487
511
|
# --- dS1/dt, dS2/dt (Subcutaneous Insulin Absorption) ---
|
|
488
|
-
|
|
512
|
+
# Any SubQ implanted islet cells release into S1
|
|
513
|
+
dS1dt = u_insulin_mu_per_min + secretion_subq - p.k_a * S1
|
|
489
514
|
dS2dt = p.k_a * S1 - p.k_a * S2
|
|
490
515
|
|
|
491
516
|
# Rate of appearance of insulin into plasma (mU/min)
|
|
492
517
|
Ra_I = p.k_a * S2
|
|
493
518
|
|
|
494
519
|
# --- dI/dt ---
|
|
495
|
-
|
|
496
|
-
dIdt = -p.n * (I - p.Ib) +
|
|
520
|
+
# Any PV/Hepatic implanted islet cells release directly into plasma
|
|
521
|
+
dIdt = -p.n * (I - p.Ib) + secretion_plasma + Ra_I / Vi_abs
|
|
522
|
+
|
|
523
|
+
# --- dM_graft/dt ---
|
|
524
|
+
dM_graft_dt = -p.immune_rejection_rate * M_graft
|
|
497
525
|
|
|
498
526
|
# --- Dalla Man Multi-compartment Meal Kinetcs ---
|
|
499
527
|
gastric_emptying_rate = 1.0 / max(float(p.tau_meal), 1.0)
|
|
@@ -502,4 +530,4 @@ class BergmanPatientModel:
|
|
|
502
530
|
dQ_sto2_dt = solid_to_liquid_rate * Q_sto1 - gastric_emptying_rate * Q_sto2
|
|
503
531
|
dQ_gut_dt = gastric_emptying_rate * Q_sto2 - p.k_abs * Q_gut
|
|
504
532
|
|
|
505
|
-
return np.array([dGdt, dXdt, dIdt, dQ_sto1_dt, dQ_sto2_dt, dQ_gut_dt, dS1dt, dS2dt, dY1_dt, dY2_dt, dGamma_dt, dx_gluc_dt, dHAAF_dt])
|
|
533
|
+
return np.array([dGdt, dXdt, dIdt, dQ_sto1_dt, dQ_sto2_dt, dQ_gut_dt, dS1dt, dS2dt, dY1_dt, dY2_dt, dGamma_dt, dx_gluc_dt, dHAAF_dt, dM_graft_dt])
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
import pandas as pd
|
|
3
|
+
from typing import Dict, Any, List, Optional
|
|
4
|
+
from iints.core.simulator import Simulator
|
|
5
|
+
from iints.core.patient.bergman_model import BergmanPatientModel, BergmanParameters
|
|
6
|
+
from iints.core.algorithms.pid_controller import PIDController
|
|
7
|
+
from iints.core.devices.models import SensorModel, PumpModel
|
|
8
|
+
|
|
9
|
+
class StemCellOptimizer:
|
|
10
|
+
"""
|
|
11
|
+
Research optimization module for stem cell / islet cell graft simulations.
|
|
12
|
+
Runs batch simulations to evaluate graft survival and kinetics for T1D cures.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
def __init__(self, duration_minutes: int = 1440, time_step: int = 5):
|
|
16
|
+
self.duration_minutes = duration_minutes
|
|
17
|
+
self.time_step = time_step
|
|
18
|
+
|
|
19
|
+
def evaluate_graft_configuration(
|
|
20
|
+
self,
|
|
21
|
+
engraftment_percent: float,
|
|
22
|
+
subq_fraction: float,
|
|
23
|
+
immune_decay: float,
|
|
24
|
+
meal_schedule: List[Dict[str, float]],
|
|
25
|
+
seed: int = 42
|
|
26
|
+
) -> Dict[str, Any]:
|
|
27
|
+
"""
|
|
28
|
+
Runs a simulation for a specific stem cell graft configuration.
|
|
29
|
+
"""
|
|
30
|
+
# Create bergman parameters with stem cell settings
|
|
31
|
+
params = BergmanParameters(
|
|
32
|
+
stem_cell_engraftment_percent=engraftment_percent,
|
|
33
|
+
stem_cell_subq_fraction=subq_fraction,
|
|
34
|
+
immune_rejection_rate=immune_decay,
|
|
35
|
+
gamma=0.005 # Baseline healthy beta cell secretion rate
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
patient = BergmanPatientModel(
|
|
39
|
+
initial_glucose=100.0,
|
|
40
|
+
bergman_params=params
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
# We use a dummy controller since the patient is autonomously producing insulin
|
|
44
|
+
controller = PIDController()
|
|
45
|
+
sensor = SensorModel(noise_std=1.0, seed=seed)
|
|
46
|
+
pump = PumpModel()
|
|
47
|
+
|
|
48
|
+
from iints.validation import build_stress_events
|
|
49
|
+
|
|
50
|
+
simulator = Simulator(
|
|
51
|
+
patient_model=patient, # type: ignore
|
|
52
|
+
algorithm=controller,
|
|
53
|
+
sensor_model=sensor,
|
|
54
|
+
pump_model=pump,
|
|
55
|
+
)
|
|
56
|
+
for event in build_stress_events(meal_schedule):
|
|
57
|
+
simulator.add_stress_event(event)
|
|
58
|
+
|
|
59
|
+
df, stats = simulator.run_batch(duration_minutes=self.duration_minutes)
|
|
60
|
+
|
|
61
|
+
# Calculate TIR
|
|
62
|
+
if not df.empty:
|
|
63
|
+
bg_col = "bg" if "bg" in df.columns else "CGM" if "CGM" in df.columns else "glucose" if "glucose" in df.columns else df.columns[1]
|
|
64
|
+
tir_mask = (df[bg_col] >= 70) & (df[bg_col] <= 180)
|
|
65
|
+
tir = tir_mask.mean() * 100.0
|
|
66
|
+
|
|
67
|
+
hypo_mask = df[bg_col] < 70
|
|
68
|
+
hypo = hypo_mask.mean() * 100.0
|
|
69
|
+
|
|
70
|
+
hyper_mask = df[bg_col] > 180
|
|
71
|
+
hyper = hyper_mask.mean() * 100.0
|
|
72
|
+
else:
|
|
73
|
+
tir, hypo, hyper = 0.0, 0.0, 0.0
|
|
74
|
+
|
|
75
|
+
return {
|
|
76
|
+
"tir_percent": tir,
|
|
77
|
+
"hypo_percent": hypo,
|
|
78
|
+
"hyper_percent": hyper,
|
|
79
|
+
"max_glucose": df[bg_col].max() if not df.empty else 0.0,
|
|
80
|
+
"min_glucose": df[bg_col].min() if not df.empty else 0.0,
|
|
81
|
+
"engraftment_percent": engraftment_percent,
|
|
82
|
+
"subq_fraction": subq_fraction,
|
|
83
|
+
"immune_decay": immune_decay,
|
|
84
|
+
"df": df
|
|
85
|
+
}
|
|
@@ -5,6 +5,7 @@ import sys
|
|
|
5
5
|
import threading
|
|
6
6
|
import tkinter as tk
|
|
7
7
|
import webbrowser
|
|
8
|
+
from importlib import resources
|
|
8
9
|
from pathlib import Path
|
|
9
10
|
from tkinter import filedialog, messagebox, ttk
|
|
10
11
|
|
|
@@ -26,6 +27,7 @@ class IINTSDesktopApp:
|
|
|
26
27
|
self.root.title("IINTS-AF Desktop")
|
|
27
28
|
self.root.geometry("980x720")
|
|
28
29
|
self.root.minsize(860, 620)
|
|
30
|
+
self._apply_app_icon()
|
|
29
31
|
|
|
30
32
|
self.presets = list_desktop_presets()
|
|
31
33
|
self.preset_by_title = {preset.title: preset for preset in self.presets}
|
|
@@ -42,6 +44,15 @@ class IINTSDesktopApp:
|
|
|
42
44
|
self._build_ui()
|
|
43
45
|
self.root.after(200, self._poll_messages)
|
|
44
46
|
|
|
47
|
+
def _apply_app_icon(self) -> None:
|
|
48
|
+
try:
|
|
49
|
+
icon_ref = resources.files("iints_desktop").joinpath("assets", "app_icon.png")
|
|
50
|
+
if icon_ref.is_file():
|
|
51
|
+
self._window_icon = tk.PhotoImage(file=str(icon_ref))
|
|
52
|
+
self.root.iconphoto(True, self._window_icon)
|
|
53
|
+
except Exception:
|
|
54
|
+
pass
|
|
55
|
+
|
|
45
56
|
def _build_ui(self) -> None:
|
|
46
57
|
self._configure_style()
|
|
47
58
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import queue
|
|
4
4
|
import sys
|
|
5
5
|
import threading
|
|
6
|
+
from importlib import resources
|
|
6
7
|
from pathlib import Path
|
|
7
8
|
from typing import Any
|
|
8
9
|
|
|
@@ -40,6 +41,7 @@ def main() -> int:
|
|
|
40
41
|
NSMakeRect,
|
|
41
42
|
NSMiniaturizableWindowMask,
|
|
42
43
|
NSModalResponseOK,
|
|
44
|
+
NSImage,
|
|
43
45
|
NSOpenPanel,
|
|
44
46
|
NSPopUpButton,
|
|
45
47
|
NSResizableWindowMask,
|
|
@@ -67,6 +69,7 @@ def main() -> int:
|
|
|
67
69
|
last_result: DesktopRunResult | None
|
|
68
70
|
|
|
69
71
|
def applicationDidFinishLaunching_(self, _notification: Any) -> None:
|
|
72
|
+
self._apply_app_icon()
|
|
70
73
|
self.presets = list_desktop_presets()
|
|
71
74
|
self.messages = queue.Queue()
|
|
72
75
|
self.last_result = None
|
|
@@ -80,6 +83,17 @@ def main() -> int:
|
|
|
80
83
|
def applicationShouldTerminateAfterLastWindowClosed_(self, _sender: Any) -> bool:
|
|
81
84
|
return True
|
|
82
85
|
|
|
86
|
+
@objc.python_method
|
|
87
|
+
def _apply_app_icon(self) -> None:
|
|
88
|
+
try:
|
|
89
|
+
icon_ref = resources.files("iints_desktop").joinpath("assets", "app_icon.png")
|
|
90
|
+
if icon_ref.is_file():
|
|
91
|
+
image = NSImage.alloc().initWithContentsOfFile_(str(icon_ref))
|
|
92
|
+
if image is not None:
|
|
93
|
+
NSApplication.sharedApplication().setApplicationIconImage_(image)
|
|
94
|
+
except Exception:
|
|
95
|
+
pass
|
|
96
|
+
|
|
83
97
|
@objc.python_method
|
|
84
98
|
def _label(self, parent: Any, text: str, frame: tuple[float, float, float, float], *, size: float = 13.0, bold: bool = False) -> Any:
|
|
85
99
|
field = NSTextField.alloc().initWithFrame_(NSMakeRect(*frame))
|
|
@@ -29,7 +29,8 @@ def main() -> int | None:
|
|
|
29
29
|
return qt_main()
|
|
30
30
|
|
|
31
31
|
print(
|
|
32
|
-
"PySide6 is not installed; falling back to the Tkinter desktop app."
|
|
32
|
+
"PySide6 is not installed; falling back to the Tkinter desktop app. "
|
|
33
|
+
'Install the full desktop app with: python -m pip install -U "iints-sdk-python35[full,desktop,mdmp]"',
|
|
33
34
|
file=sys.stderr,
|
|
34
35
|
)
|
|
35
36
|
from iints_desktop.app import main as tk_main
|
|
@@ -49,16 +49,17 @@ class LocalAIStartResult:
|
|
|
49
49
|
SYSTEM_PROMPT = """You are a highly advanced Medical Data Scientist and Computational Biologist analyzing output from the IINTS-AF closed-loop insulin simulator.
|
|
50
50
|
|
|
51
51
|
CRITICAL INSTRUCTIONS:
|
|
52
|
-
1. Speak with absolute professional authority and scientific rigor. Do NOT sound like an AI assistant.
|
|
53
|
-
2.
|
|
54
|
-
3.
|
|
55
|
-
4. Structure your response explicitly using these exact headers:
|
|
52
|
+
1. Speak with absolute professional authority and scientific rigor. Do NOT sound like an AI assistant.
|
|
53
|
+
2. PROHIBITED PHRASES: "Here is an analysis", "As an AI", "In conclusion", "I can help with that". Start immediately with the facts.
|
|
54
|
+
3. Analyze the provided clinical simulation data. Extract meaningful physiological insights, glycemic control patterns (Time in Range, Coefficient of Variation), and algorithmic behaviors.
|
|
55
|
+
4. Structure your response explicitly using these exact headers (do not use other headers):
|
|
56
56
|
Clinical Overview
|
|
57
57
|
Biomathematical Observations
|
|
58
58
|
Algorithmic Behavior
|
|
59
59
|
Conclusions
|
|
60
|
-
5. Use highly specific scientific terminology (e.g., exogenous insulin kinetics, hepatic glucose production
|
|
61
|
-
6.
|
|
60
|
+
5. Use highly specific scientific terminology (e.g., exogenous insulin kinetics, hepatic glucose production).
|
|
61
|
+
6. Present findings in dense, hard-hitting bullet points. Do not write fluffy paragraphs.
|
|
62
|
+
7. Acknowledge that the IINTS-AF simulator is for research and education only. It is Not a medical device. Do not provide diagnosis, insulin dosing, or treatment advice.
|
|
62
63
|
"""
|
|
63
64
|
|
|
64
65
|
|
|
@@ -284,7 +285,7 @@ def format_ai_answer(text: str) -> str:
|
|
|
284
285
|
"algorithmic behavior",
|
|
285
286
|
"conclusions"
|
|
286
287
|
}:
|
|
287
|
-
line = line.rstrip(
|
|
288
|
+
line = f"\n=== {line.rstrip(':').upper()} ==="
|
|
288
289
|
lines.append(line)
|
|
289
290
|
return "\n".join(lines).strip()
|
|
290
291
|
|
|
@@ -302,7 +303,7 @@ def ask_local_ai(
|
|
|
302
303
|
backend = OllamaBackend(
|
|
303
304
|
model_name=model,
|
|
304
305
|
base_url=host,
|
|
305
|
-
timeout_seconds=
|
|
306
|
+
timeout_seconds=900.0,
|
|
306
307
|
temperature=0.1,
|
|
307
308
|
top_p=0.8,
|
|
308
309
|
num_predict=1000,
|