iints-sdk-python35 0.1.21__tar.gz → 0.1.22__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.
Files changed (145) hide show
  1. {iints_sdk_python35-0.1.21/src/iints_sdk_python35.egg-info → iints_sdk_python35-0.1.22}/PKG-INFO +57 -1
  2. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/README.md +56 -0
  3. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/pyproject.toml +1 -1
  4. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/__init__.py +7 -1
  5. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/cli/cli.py +551 -36
  6. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/__init__.py +46 -0
  7. iints_sdk_python35-0.1.22/src/iints/data/contracts.py +213 -0
  8. iints_sdk_python35-0.1.22/src/iints/data/guardians.py +119 -0
  9. iints_sdk_python35-0.1.22/src/iints/data/mdmp_visualizer.py +441 -0
  10. iints_sdk_python35-0.1.22/src/iints/data/runner.py +380 -0
  11. iints_sdk_python35-0.1.22/src/iints/data/synthetic_mirror.py +266 -0
  12. iints_sdk_python35-0.1.22/src/iints/mdmp/__init__.py +57 -0
  13. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/visualization/cockpit.py +1 -1
  14. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22/src/iints_sdk_python35.egg-info}/PKG-INFO +57 -1
  15. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints_sdk_python35.egg-info/SOURCES.txt +6 -0
  16. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/LICENSE +0 -0
  17. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/setup.cfg +0 -0
  18. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/__init__.py +0 -0
  19. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/algorithm_xray.py +0 -0
  20. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/baseline.py +0 -0
  21. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/clinical_benchmark.py +0 -0
  22. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/clinical_metrics.py +0 -0
  23. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/clinical_tir_analyzer.py +0 -0
  24. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/diabetes_metrics.py +0 -0
  25. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/edge_efficiency.py +0 -0
  26. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/edge_performance_monitor.py +0 -0
  27. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/explainability.py +0 -0
  28. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/explainable_ai.py +0 -0
  29. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/hardware_benchmark.py +0 -0
  30. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/metrics.py +0 -0
  31. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/population_report.py +0 -0
  32. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/reporting.py +0 -0
  33. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/safety_index.py +0 -0
  34. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/sensor_filtering.py +0 -0
  35. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/analysis/validator.py +0 -0
  36. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/api/__init__.py +0 -0
  37. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/api/base_algorithm.py +0 -0
  38. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/api/registry.py +0 -0
  39. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/api/template_algorithm.py +0 -0
  40. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/assets/iints_logo.png +0 -0
  41. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/cli/__init__.py +0 -0
  42. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/__init__.py +0 -0
  43. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/algorithms/__init__.py +0 -0
  44. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/algorithms/battle_runner.py +0 -0
  45. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/algorithms/correction_bolus.py +0 -0
  46. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/algorithms/discovery.py +0 -0
  47. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/algorithms/fixed_basal_bolus.py +0 -0
  48. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/algorithms/hybrid_algorithm.py +0 -0
  49. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/algorithms/lstm_algorithm.py +0 -0
  50. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/algorithms/mock_algorithms.py +0 -0
  51. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/algorithms/pid_controller.py +0 -0
  52. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/algorithms/standard_pump_algo.py +0 -0
  53. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/device.py +0 -0
  54. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/device_manager.py +0 -0
  55. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/devices/__init__.py +0 -0
  56. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/devices/models.py +0 -0
  57. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/patient/__init__.py +0 -0
  58. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/patient/bergman_model.py +0 -0
  59. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/patient/models.py +0 -0
  60. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/patient/patient_factory.py +0 -0
  61. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/patient/profile.py +0 -0
  62. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/safety/__init__.py +0 -0
  63. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/safety/config.py +0 -0
  64. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/safety/input_validator.py +0 -0
  65. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/safety/supervisor.py +0 -0
  66. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/simulation/__init__.py +0 -0
  67. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/simulation/scenario_parser.py +0 -0
  68. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/simulator.py +0 -0
  69. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/core/supervisor.py +0 -0
  70. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/adapter.py +0 -0
  71. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/column_mapper.py +0 -0
  72. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/datasets.json +0 -0
  73. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/demo/__init__.py +0 -0
  74. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/demo/demo_cgm.csv +0 -0
  75. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/importer.py +0 -0
  76. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/ingestor.py +0 -0
  77. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/nightscout.py +0 -0
  78. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/quality_checker.py +0 -0
  79. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/registry.py +0 -0
  80. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/tidepool.py +0 -0
  81. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/universal_parser.py +0 -0
  82. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/virtual_patients/clinic_safe_baseline.yaml +0 -0
  83. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/virtual_patients/clinic_safe_hyper_challenge.yaml +0 -0
  84. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/virtual_patients/clinic_safe_hypo_prone.yaml +0 -0
  85. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/virtual_patients/clinic_safe_midnight.yaml +0 -0
  86. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/virtual_patients/clinic_safe_pizza.yaml +0 -0
  87. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/virtual_patients/clinic_safe_stress_meal.yaml +0 -0
  88. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/virtual_patients/default_patient.yaml +0 -0
  89. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/data/virtual_patients/patient_559_config.yaml +0 -0
  90. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/emulation/__init__.py +0 -0
  91. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/emulation/legacy_base.py +0 -0
  92. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/emulation/medtronic_780g.py +0 -0
  93. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/emulation/omnipod_5.py +0 -0
  94. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/emulation/tandem_controliq.py +0 -0
  95. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/highlevel.py +0 -0
  96. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/learning/__init__.py +0 -0
  97. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/learning/autonomous_optimizer.py +0 -0
  98. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/learning/learning_system.py +0 -0
  99. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/metrics.py +0 -0
  100. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/population/__init__.py +0 -0
  101. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/population/generator.py +0 -0
  102. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/population/runner.py +0 -0
  103. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/presets/__init__.py +0 -0
  104. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/presets/evidence_sources.yaml +0 -0
  105. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/presets/forecast_calibration_profiles.yaml +0 -0
  106. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/presets/golden_benchmark.yaml +0 -0
  107. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/presets/presets.json +0 -0
  108. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/presets/safety_contract_default.yaml +0 -0
  109. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/presets/validation_profiles.yaml +0 -0
  110. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/research/__init__.py +0 -0
  111. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/research/audit.py +0 -0
  112. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/research/calibration_gate.py +0 -0
  113. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/research/config.py +0 -0
  114. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/research/dataset.py +0 -0
  115. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/research/evaluation.py +0 -0
  116. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/research/losses.py +0 -0
  117. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/research/metrics.py +0 -0
  118. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/research/model_registry.py +0 -0
  119. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/research/predictor.py +0 -0
  120. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/scenarios/__init__.py +0 -0
  121. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/scenarios/generator.py +0 -0
  122. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/templates/__init__.py +0 -0
  123. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/templates/default_algorithm.py +0 -0
  124. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/templates/scenarios/__init__.py +0 -0
  125. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/templates/scenarios/chaos_insulin_stacking.json +0 -0
  126. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/templates/scenarios/chaos_runaway_ai.json +0 -0
  127. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/templates/scenarios/example_scenario.json +0 -0
  128. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/templates/scenarios/exercise_stress.json +0 -0
  129. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/utils/__init__.py +0 -0
  130. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/utils/plotting.py +0 -0
  131. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/utils/run_io.py +0 -0
  132. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/validation/__init__.py +0 -0
  133. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/validation/golden.py +0 -0
  134. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/validation/replay.py +0 -0
  135. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/validation/run_validation.py +0 -0
  136. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/validation/safety_contract.py +0 -0
  137. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/validation/schemas.py +0 -0
  138. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/visualization/__init__.py +0 -0
  139. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints/visualization/uncertainty_cloud.py +0 -0
  140. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints_sdk_python35.egg-info/dependency_links.txt +0 -0
  141. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints_sdk_python35.egg-info/entry_points.txt +0 -0
  142. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints_sdk_python35.egg-info/requires.txt +0 -0
  143. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/src/iints_sdk_python35.egg-info/top_level.txt +0 -0
  144. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/tests/test_bergman.py +0 -0
  145. {iints_sdk_python35-0.1.21 → iints_sdk_python35-0.1.22}/tests/test_population.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iints-sdk-python35
3
- Version: 0.1.21
3
+ Version: 0.1.22
4
4
  Summary: A pre-clinical Edge-AI SDK for diabetes management validation.
5
5
  Author-email: Rune Bobbaers <rune.bobbaers@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/python35/IINTS-SDK
@@ -50,6 +50,7 @@ Dynamic: license-file
50
50
  # IINTS-AF SDK
51
51
  [![PyPI version](https://badge.fury.io/py/iints-sdk-python35.svg)](https://badge.fury.io/py/iints-sdk-python35)
52
52
  [![Python Package CI](https://github.com/python35/IINTS-SDK/actions/workflows/python-package.yml/badge.svg)](https://github.com/python35/IINTS-SDK/actions/workflows/python-package.yml)
53
+ [![Docs Site](https://github.com/python35/IINTS-SDK/actions/workflows/docs-site.yml/badge.svg)](https://github.com/python35/IINTS-SDK/actions/workflows/docs-site.yml)
53
54
  [![Site](https://img.shields.io/badge/site-IINTS--AF-0a66c2?style=flat&logo=firefox-browser&logoColor=white)](https://python35.github.io/IINTS-Site/index.html)
54
55
 
55
56
  IINTS-AF is a safety-first simulation SDK for insulin algorithm research.
@@ -92,6 +93,16 @@ cd iints_quickstart
92
93
  iints presets run --name baseline_t1d --algo algorithms/example_algorithm.py
93
94
  ```
94
95
 
96
+ Clinical-trial scaffold (MDMP-ready):
97
+ ```bash
98
+ iints init --project-name iints_trial --template clinical-trial
99
+ cd iints_trial
100
+ iints data contract-run contracts/clinical_mdmp_contract.yaml data/demo/diabetes_cgm.csv \
101
+ --output-json audit/contract_data_report.json \
102
+ --min-mdmp-grade research_grade --fail-on-noncompliant
103
+ iints data mdmp-visualizer audit/contract_data_report.json --output-html audit/mdmp_dashboard.html
104
+ ```
105
+
95
106
  One full run with artifacts:
96
107
  ```bash
97
108
  iints run-full \
@@ -128,9 +139,19 @@ outputs = iints.run_simulation(
128
139
  ```bash
129
140
  # Environment and validation checks
130
141
  iints doctor --smoke-run
142
+ iints study-ready --algo algorithms/example_algorithm.py --output-dir results/study_ready
131
143
  iints validation-profiles
132
144
  iints validate-run --results-csv results/run_full/results.csv --profile research_default
133
145
  iints contract-verify --output-json results/contract_report.json
146
+ iints data contract-template --output-path data_contract.yaml
147
+ iints data contract-run data_contract.yaml data/my_cgm.csv --output-json results/contract_data_report.json
148
+ iints data contract-run data_contract.yaml data/my_cgm.csv --min-mdmp-grade research_grade --fail-on-noncompliant
149
+ iints data synthetic-mirror data/my_cgm.csv data_contract.yaml --output-csv data/synthetic_mirror.csv --output-json results/synthetic_mirror_report.json
150
+ iints data mdmp-visualizer results/contract_data_report.json --output-html results/mdmp_dashboard.html
151
+ iints mdmp template --output-path mdmp_contract.yaml
152
+ iints mdmp validate mdmp_contract.yaml data/my_cgm.csv --output-json results/mdmp_report.json
153
+ iints mdmp synthetic-mirror data/my_cgm.csv mdmp_contract.yaml --output-csv data/synthetic_mirror.csv --output-json results/synthetic_mirror_report.json
154
+ iints mdmp visualizer results/mdmp_report.json --output-html results/mdmp_dashboard.html
134
155
  iints replay-check --algo algorithms/example_algorithm.py --output-json results/replay_check.json
135
156
  iints golden-benchmark --algo algorithms/example_algorithm.py --output-json results/golden_benchmark.json
136
157
 
@@ -145,15 +166,50 @@ iints research registry-list --registry models/registry.json
145
166
  iints research registry-promote --registry models/registry.json --run-id <run-id> --stage validated
146
167
  ```
147
168
 
169
+ `iints study-ready` produces a complete bundle by default:
170
+ - simulation outputs
171
+ - `validation_report.json`
172
+ - `sources_manifest.json`
173
+ - `SUMMARY.md` (human-readable quick review)
174
+
175
+ `iints data contract-run` writes deterministic fingerprints plus an MDMP grade:
176
+ - `draft`
177
+ - `research_grade`
178
+ - `clinical_grade`
179
+
180
+ `iints data mdmp-visualizer` turns a contract report JSON into a shareable single-file HTML dashboard for audit review.
181
+
182
+ `iints data synthetic-mirror` generates a privacy-safe synthetic dataset that keeps schema and broad statistical behavior, then validates it with the same MDMP gates.
183
+
184
+ ## MDMP as Separate Protocol Surface
185
+
186
+ MDMP now has a dedicated namespace:
187
+ - Python imports: `iints.mdmp`
188
+ - CLI commands: `iints mdmp ...`
189
+
190
+ The older `iints data ...` MDMP commands remain supported for backward compatibility.
191
+
192
+ MDMP Auto-Guardians enforce quality gates directly in Python pipelines:
193
+ ```python
194
+ import pandas as pd
195
+ from iints import mdmp_gate
196
+
197
+ @mdmp_gate("contracts/clinical_mdmp_contract.yaml", min_grade="clinical_grade")
198
+ def process(df: pd.DataFrame) -> int:
199
+ return len(df)
200
+ ```
201
+
148
202
  ## Demos and Notebooks
149
203
  - Demo scripts: [examples/demos](https://github.com/python35/IINTS-SDK/tree/main/examples/demos)
150
204
  - Notebook tutorials: [examples/notebooks](https://github.com/python35/IINTS-SDK/tree/main/examples/notebooks)
151
205
 
152
206
  ## Documentation
207
+ - Docs site (GitHub Pages): [https://python35.github.io/IINTS-SDK/](https://python35.github.io/IINTS-SDK/)
153
208
  - Manual (PDF): [docs/manuals/IINTS-AF_SDK_Manual.pdf](https://github.com/python35/IINTS-SDK/blob/main/docs/manuals/IINTS-AF_SDK_Manual.pdf)
154
209
  - Comprehensive guide: [docs/COMPREHENSIVE_GUIDE.md](https://github.com/python35/IINTS-SDK/blob/main/docs/COMPREHENSIVE_GUIDE.md)
155
210
  - Technical README: [docs/TECHNICAL_README.md](https://github.com/python35/IINTS-SDK/blob/main/docs/TECHNICAL_README.md)
156
211
  - Plain-language guide: [docs/PLAIN_LANGUAGE_GUIDE.md](https://github.com/python35/IINTS-SDK/blob/main/docs/PLAIN_LANGUAGE_GUIDE.md)
212
+ - MDMP (draft): [docs/MDMP.md](https://github.com/python35/IINTS-SDK/blob/main/docs/MDMP.md)
157
213
  - Evidence base (peer-reviewed sources): [docs/EVIDENCE_BASE.md](https://github.com/python35/IINTS-SDK/blob/main/docs/EVIDENCE_BASE.md)
158
214
  - Research track: [research/README.md](https://github.com/python35/IINTS-SDK/blob/main/research/README.md)
159
215
 
@@ -1,6 +1,7 @@
1
1
  # IINTS-AF SDK
2
2
  [![PyPI version](https://badge.fury.io/py/iints-sdk-python35.svg)](https://badge.fury.io/py/iints-sdk-python35)
3
3
  [![Python Package CI](https://github.com/python35/IINTS-SDK/actions/workflows/python-package.yml/badge.svg)](https://github.com/python35/IINTS-SDK/actions/workflows/python-package.yml)
4
+ [![Docs Site](https://github.com/python35/IINTS-SDK/actions/workflows/docs-site.yml/badge.svg)](https://github.com/python35/IINTS-SDK/actions/workflows/docs-site.yml)
4
5
  [![Site](https://img.shields.io/badge/site-IINTS--AF-0a66c2?style=flat&logo=firefox-browser&logoColor=white)](https://python35.github.io/IINTS-Site/index.html)
5
6
 
6
7
  IINTS-AF is a safety-first simulation SDK for insulin algorithm research.
@@ -43,6 +44,16 @@ cd iints_quickstart
43
44
  iints presets run --name baseline_t1d --algo algorithms/example_algorithm.py
44
45
  ```
45
46
 
47
+ Clinical-trial scaffold (MDMP-ready):
48
+ ```bash
49
+ iints init --project-name iints_trial --template clinical-trial
50
+ cd iints_trial
51
+ iints data contract-run contracts/clinical_mdmp_contract.yaml data/demo/diabetes_cgm.csv \
52
+ --output-json audit/contract_data_report.json \
53
+ --min-mdmp-grade research_grade --fail-on-noncompliant
54
+ iints data mdmp-visualizer audit/contract_data_report.json --output-html audit/mdmp_dashboard.html
55
+ ```
56
+
46
57
  One full run with artifacts:
47
58
  ```bash
48
59
  iints run-full \
@@ -79,9 +90,19 @@ outputs = iints.run_simulation(
79
90
  ```bash
80
91
  # Environment and validation checks
81
92
  iints doctor --smoke-run
93
+ iints study-ready --algo algorithms/example_algorithm.py --output-dir results/study_ready
82
94
  iints validation-profiles
83
95
  iints validate-run --results-csv results/run_full/results.csv --profile research_default
84
96
  iints contract-verify --output-json results/contract_report.json
97
+ iints data contract-template --output-path data_contract.yaml
98
+ iints data contract-run data_contract.yaml data/my_cgm.csv --output-json results/contract_data_report.json
99
+ iints data contract-run data_contract.yaml data/my_cgm.csv --min-mdmp-grade research_grade --fail-on-noncompliant
100
+ iints data synthetic-mirror data/my_cgm.csv data_contract.yaml --output-csv data/synthetic_mirror.csv --output-json results/synthetic_mirror_report.json
101
+ iints data mdmp-visualizer results/contract_data_report.json --output-html results/mdmp_dashboard.html
102
+ iints mdmp template --output-path mdmp_contract.yaml
103
+ iints mdmp validate mdmp_contract.yaml data/my_cgm.csv --output-json results/mdmp_report.json
104
+ iints mdmp synthetic-mirror data/my_cgm.csv mdmp_contract.yaml --output-csv data/synthetic_mirror.csv --output-json results/synthetic_mirror_report.json
105
+ iints mdmp visualizer results/mdmp_report.json --output-html results/mdmp_dashboard.html
85
106
  iints replay-check --algo algorithms/example_algorithm.py --output-json results/replay_check.json
86
107
  iints golden-benchmark --algo algorithms/example_algorithm.py --output-json results/golden_benchmark.json
87
108
 
@@ -96,15 +117,50 @@ iints research registry-list --registry models/registry.json
96
117
  iints research registry-promote --registry models/registry.json --run-id <run-id> --stage validated
97
118
  ```
98
119
 
120
+ `iints study-ready` produces a complete bundle by default:
121
+ - simulation outputs
122
+ - `validation_report.json`
123
+ - `sources_manifest.json`
124
+ - `SUMMARY.md` (human-readable quick review)
125
+
126
+ `iints data contract-run` writes deterministic fingerprints plus an MDMP grade:
127
+ - `draft`
128
+ - `research_grade`
129
+ - `clinical_grade`
130
+
131
+ `iints data mdmp-visualizer` turns a contract report JSON into a shareable single-file HTML dashboard for audit review.
132
+
133
+ `iints data synthetic-mirror` generates a privacy-safe synthetic dataset that keeps schema and broad statistical behavior, then validates it with the same MDMP gates.
134
+
135
+ ## MDMP as Separate Protocol Surface
136
+
137
+ MDMP now has a dedicated namespace:
138
+ - Python imports: `iints.mdmp`
139
+ - CLI commands: `iints mdmp ...`
140
+
141
+ The older `iints data ...` MDMP commands remain supported for backward compatibility.
142
+
143
+ MDMP Auto-Guardians enforce quality gates directly in Python pipelines:
144
+ ```python
145
+ import pandas as pd
146
+ from iints import mdmp_gate
147
+
148
+ @mdmp_gate("contracts/clinical_mdmp_contract.yaml", min_grade="clinical_grade")
149
+ def process(df: pd.DataFrame) -> int:
150
+ return len(df)
151
+ ```
152
+
99
153
  ## Demos and Notebooks
100
154
  - Demo scripts: [examples/demos](https://github.com/python35/IINTS-SDK/tree/main/examples/demos)
101
155
  - Notebook tutorials: [examples/notebooks](https://github.com/python35/IINTS-SDK/tree/main/examples/notebooks)
102
156
 
103
157
  ## Documentation
158
+ - Docs site (GitHub Pages): [https://python35.github.io/IINTS-SDK/](https://python35.github.io/IINTS-SDK/)
104
159
  - Manual (PDF): [docs/manuals/IINTS-AF_SDK_Manual.pdf](https://github.com/python35/IINTS-SDK/blob/main/docs/manuals/IINTS-AF_SDK_Manual.pdf)
105
160
  - Comprehensive guide: [docs/COMPREHENSIVE_GUIDE.md](https://github.com/python35/IINTS-SDK/blob/main/docs/COMPREHENSIVE_GUIDE.md)
106
161
  - Technical README: [docs/TECHNICAL_README.md](https://github.com/python35/IINTS-SDK/blob/main/docs/TECHNICAL_README.md)
107
162
  - Plain-language guide: [docs/PLAIN_LANGUAGE_GUIDE.md](https://github.com/python35/IINTS-SDK/blob/main/docs/PLAIN_LANGUAGE_GUIDE.md)
163
+ - MDMP (draft): [docs/MDMP.md](https://github.com/python35/IINTS-SDK/blob/main/docs/MDMP.md)
108
164
  - Evidence base (peer-reviewed sources): [docs/EVIDENCE_BASE.md](https://github.com/python35/IINTS-SDK/blob/main/docs/EVIDENCE_BASE.md)
109
165
  - Research track: [research/README.md](https://github.com/python35/IINTS-SDK/blob/main/research/README.md)
110
166
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "iints-sdk-python35"
7
- version = "0.1.21"
7
+ version = "0.1.22"
8
8
  authors = [
9
9
  { name="Rune Bobbaers", email="rune.bobbaers@gmail.com" },
10
10
  ]
@@ -3,7 +3,7 @@
3
3
  import pandas as pd # Required for type hints like pd.DataFrame
4
4
  from typing import Optional
5
5
 
6
- __version__ = "0.1.21"
6
+ __version__ = "0.1.22"
7
7
 
8
8
  # Note to developers: this SDK is currently maintained by a single author.
9
9
  # Please report bugs via GitHub issues and feel free to contribute fixes via PRs.
@@ -56,6 +56,8 @@ from .data.importer import (
56
56
  )
57
57
  from .data.nightscout import NightscoutConfig, import_nightscout
58
58
  from .data.tidepool import TidepoolClient, load_openapi_spec
59
+ from .data.guardians import mdmp_gate, MDMPGateError
60
+ from .data.synthetic_mirror import generate_synthetic_mirror, SyntheticMirrorArtifact
59
61
  from .analysis.metrics import generate_benchmark_metrics # Added for benchmark
60
62
  from .analysis.reporting import ClinicalReportGenerator
61
63
  from .analysis.edge_efficiency import EnergyEstimate, estimate_energy_per_decision
@@ -158,6 +160,10 @@ __all__ = [
158
160
  "import_nightscout",
159
161
  "TidepoolClient",
160
162
  "load_openapi_spec",
163
+ "mdmp_gate",
164
+ "MDMPGateError",
165
+ "generate_synthetic_mirror",
166
+ "SyntheticMirrorArtifact",
161
167
  # Analysis Metrics
162
168
  "generate_benchmark_metrics",
163
169
  "ClinicalReportGenerator",