API Reference
This page is generated from the Python source tree by tools/docs/generate_api_reference.py.
Do not edit it by hand; regenerate it after public module changes.
Documented modules: 191
Package Index
| Package |
Modules |
ai |
11 |
analysis |
30 |
api |
4 |
cli |
3 |
core |
36 |
data |
25 |
demo_assets |
1 |
emulation |
5 |
highlevel |
1 |
jetson |
3 |
learning |
3 |
live_patient |
12 |
mdmp |
3 |
metrics |
1 |
population |
3 |
presets |
1 |
research |
20 |
root |
1 |
scenarios |
3 |
templates |
6 |
tools |
3 |
utils |
6 |
validation |
7 |
visualization |
3 |
Module Index
ai
analysis
api
cli
core
data
demo_assets
emulation
highlevel
jetson
learning
live_patient
mdmp
metrics
population
presets
research
root
scenarios
templates
utils
validation
visualization
iints
- Source:
src/iints/__init__.py
- Summary: No module docstring.
- Explicit exports:
InsulinAlgorithm, AlgorithmInput, AlgorithmResult, AlgorithmMetadata, WhyLogEntry, Simulator, StressEvent, PatientModel, DeviceManager, PatientFactory, PatientProfile, SimulationLimitError, SafetySupervisor, SafetyConfig, SensorModel, PumpModel, SENSOR_PROFILES, create_sensor_model, StandardPumpAlgorithm, ConstantDoseAlgorithm, RandomDoseAlgorithm, RunawayAIAlgorithm, StackingAIAlgorithm, DataIngestor, ImportResult, export_demo_csv, export_standard_csv, guess_column_mapping, import_carelink_csv, import_carelink_timeline, import_cgm_csv, import_cgm_dataframe, load_carelink_event_log, load_demo_dataframe, scenario_from_csv, scenario_from_dataframe, summarize_carelink_csv, NightscoutConfig, import_nightscout, TidepoolClient, TidepoolConfig, import_tidepool, load_openapi_spec, mdmp_gate, MDMPGateError, generate_synthetic_mirror, SyntheticMirrorArtifact, AVAILABLE_STUDY_CORRUPTIONS, apply_study_corruptions, write_corrupted_study_csv, generate_benchmark_metrics, build_booth_demo, build_carelink_workbench, build_study_protocol_payload, render_study_protocol_markdown, write_study_protocol_bundle, ClinicalReportGenerator, EnergyEstimate, estimate_energy_per_decision, AIResponse, IINTSAssistant, MDMPGuard, create_edge_bundle, export_edge_setup, LivePatientDaemon, PatientRuntimeConfig, create_patient_app, export_uno_q_bridge, get_runtime_scenario_profile, list_runtime_scenario_profiles, run_edge_benchmark, summarize_edge_workspace, write_edge_update_script, generate_report, generate_quickstart_report, generate_demo_report, generate_agp_report, generate_agp_assets, generate_results_poster, run_simulation, run_full, run_population, ScenarioGeneratorConfig, generate_random_scenario, PopulationGenerator, PopulationConfig, ParameterDistribution, PopulationRunner, PopulationResult, PatientResult, BergmanPatientModel
Public Functions
run_simulation(*args: Any, **kwargs: Any) -> Any
run_full(*args: Any, **kwargs: Any) -> Any
run_population(*args: Any, **kwargs: Any) -> Any
generate_report(simulation_results: 'pd.DataFrame', output_path: Optional[str] = None, safety_report: Optional[dict] = None) -> Optional[str]
generate_quickstart_report(simulation_results: 'pd.DataFrame', output_path: Optional[str] = None, safety_report: Optional[dict] = None) -> Optional[str]
generate_demo_report(simulation_results: 'pd.DataFrame', output_path: Optional[str] = None, safety_report: Optional[dict] = None) -> Optional[str]
generate_agp_report(simulation_results: 'pd.DataFrame', output_path: Optional[str] = None, safety_report: Optional[dict] = None, subject_name: str = 'Research simulation', summary_json_path: Optional[str] = None) -> Optional[str]
generate_agp_assets(simulation_results: 'pd.DataFrame', output_dir: Optional[str] = None, subject_name: str = 'Research simulation', summary_json_path: Optional[str] = None, export_svg: bool = True) -> Optional[dict]
iints.ai
- Source:
src/iints/ai/__init__.py
- Summary: No module docstring.
- Explicit exports:
AIResponse, IINTSAssistant, DEFAULT_MINISTRAL_MODEL, DEFAULT_OLLAMA_HOST, OllamaBackend, GuardResult, MDMPGuard, DEFAULT_MISTRAL_API_MODEL, DEFAULT_MISTRAL_API_REASONING_EFFORT, LocalMistralModelProfile, MistralAPIMigrationProfile, list_local_mistral_models, list_mistral_api_migrations, migrate_mistral_api_model, prepare_ai_ready_artifacts
No public classes, functions, or all-caps constants are declared directly in this module.
iints.ai.assistant
- Source:
src/iints/ai/assistant.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
AIResponse |
AIResponse |
No module docstring. |
IINTSAssistant |
IINTSAssistant |
Research-only LLM assistant gated by MDMP certification. |
AIResponse methods
to_dict(self) -> dict[str, Any]
IINTSAssistant methods
explain_decision(self, step: dict[str, Any]) -> AIResponse
analyze_trends(self, glucose_payload: list[Any] | dict[str, Any]) -> AIResponse
detect_anomalies(self, results: dict[str, Any]) -> AIResponse
generate_report(self, run: dict[str, Any]) -> AIResponse
review_realism(self, run: dict[str, Any]) -> AIResponse
predict_insulin(self, payload: dict[str, Any]) -> AIResponse
iints.ai.backends
- Source:
src/iints/ai/backends/__init__.py
- Summary: No module docstring.
- Explicit exports:
CompletionBackend, DEFAULT_MINISTRAL_MODEL, DEFAULT_OLLAMA_HOST, OllamaBackend, MistralAPIBackend
No public classes, functions, or all-caps constants are declared directly in this module.
iints.ai.backends.base
- Source:
src/iints/ai/backends/base.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
CompletionBackend |
CompletionBackend(Protocol) |
No module docstring. |
CompletionBackend methods
available(self) -> bool
complete(self, *, system_prompt: str, user_prompt: str) -> str
iints.ai.backends.mistral_api
- Source:
src/iints/ai/backends/mistral_api.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
MistralAPIBackend |
MistralAPIBackend |
No module docstring. |
MistralAPIBackend methods
available(self) -> bool
complete(self, *, system_prompt: str, user_prompt: str) -> str
iints.ai.backends.ollama
- Source:
src/iints/ai/backends/ollama.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
OllamaBackend |
OllamaBackend |
No module docstring. |
OllamaBackend methods
available(self) -> bool
server_version(self) -> str | None
version_supported(self) -> tuple[bool | None, str | None]
list_models(self) -> list[str]
resolve_model_name(self) -> str | None
ensure_model_ready(self) -> str
healthcheck(self) -> dict[str, object]
smoke_test(self) -> dict[str, object]
complete(self, *, system_prompt: str, user_prompt: str) -> str
Public Constants
DEFAULT_MINISTRAL_MODEL
DEFAULT_OLLAMA_HOST
LEGACY_MINISTRAL_MODEL
MINISTRAL_MODEL_ALIASES
MIN_OLLAMA_VERSION_FOR_MINISTRAL_3
iints.ai.cli
- Source:
src/iints/ai/cli.py
- Summary: No module docstring.
Public Functions
models() -> None
prepare(run_dir: Annotated[Path, typer.Argument(help='Run output directory containing results.csv and run_metadata.json.')], create_dev_mdmp_cert: Annotated[bool, typer.Option('--create-dev-mdmp-cert/--no-create-dev-mdmp-cert', help='Generate a local development MDMP certificate and keypair for AI commands.')] = True, grade: Annotated[str, typer.Option(help='Grade to embed in the local development MDMP certificate.')] = 'research_grade', expires_days: Annotated[int, typer.Option(help='Certificate expiry window in days for local development certs.')] = 30, key_dir: Annotated[Optional[Path], typer.Option(help='Optional directory to store the generated local MDMP keypair.')] = None) -> None
local_check(model: Annotated[str, typer.Option(help='Ollama model name to validate locally.')] = DEFAULT_MINISTRAL_MODEL, ollama_host: Annotated[Optional[str], typer.Option(help='Override the Ollama base URL.')] = None, timeout_seconds: Annotated[float, typer.Option(help='HTTP timeout for Ollama health checks.')] = 120.0, smoke_test: Annotated[bool, typer.Option('--smoke-test/--no-smoke-test', help='Run a tiny generation request after health checks to prove the model can actually answer.')] = True) -> None
explain(input_json: Annotated[Path, typer.Argument(help='Prepared run directory or JSON file with a single simulation step or decision context.')], mdmp_cert: Annotated[Optional[Path], typer.Option(help='Signed MDMP artifact required before AI analysis can run.')] = None, mode: Annotated[str, typer.Option(help="AI backend mode. Use 'local' for Ollama/Ministral.")] = 'auto', model: Annotated[str, typer.Option(help='Ollama model name to use.')] = DEFAULT_MINISTRAL_MODEL, minimum_grade: Annotated[str, typer.Option(help='Minimum MDMP grade required to allow analysis.')] = 'research_grade', public_key: Annotated[Optional[Path], typer.Option(help='Explicit MDMP public key for verification.')] = None, trust_store: Annotated[Optional[Path], typer.Option(help='MDMP trust store for verification.')] = None, ollama_host: Annotated[Optional[str], typer.Option(help='Override the Ollama base URL.')] = None, timeout_seconds: Annotated[float, typer.Option(help='HTTP timeout for Ollama generation requests.')] = 120.0, output: Annotated[Optional[Path], typer.Option(help='Optional file path to save the explanation.')] = None) -> None
trends(input_json: Annotated[Path, typer.Argument(help='Prepared run directory or JSON file with glucose trace data or a run payload.')], mdmp_cert: Annotated[Optional[Path], typer.Option(help='Signed MDMP artifact required before AI analysis can run.')] = None, mode: Annotated[str, typer.Option(help="AI backend mode. Use 'local' for Ollama/Ministral.")] = 'auto', model: Annotated[str, typer.Option(help='Ollama model name to use.')] = DEFAULT_MINISTRAL_MODEL, minimum_grade: Annotated[str, typer.Option(help='Minimum MDMP grade required to allow analysis.')] = 'research_grade', public_key: Annotated[Optional[Path], typer.Option(help='Explicit MDMP public key for verification.')] = None, trust_store: Annotated[Optional[Path], typer.Option(help='MDMP trust store for verification.')] = None, ollama_host: Annotated[Optional[str], typer.Option(help='Override the Ollama base URL.')] = None, timeout_seconds: Annotated[float, typer.Option(help='HTTP timeout for Ollama generation requests.')] = 120.0, output: Annotated[Optional[Path], typer.Option(help='Optional file path to save the analysis.')] = None) -> None
anomalies(input_json: Annotated[Path, typer.Argument(help='Prepared run directory or JSON file with simulation results or run summary.')], mdmp_cert: Annotated[Optional[Path], typer.Option(help='Signed MDMP artifact required before AI analysis can run.')] = None, mode: Annotated[str, typer.Option(help="AI backend mode. Use 'local' for Ollama/Ministral.")] = 'auto', model: Annotated[str, typer.Option(help='Ollama model name to use.')] = DEFAULT_MINISTRAL_MODEL, minimum_grade: Annotated[str, typer.Option(help='Minimum MDMP grade required to allow analysis.')] = 'research_grade', public_key: Annotated[Optional[Path], typer.Option(help='Explicit MDMP public key for verification.')] = None, trust_store: Annotated[Optional[Path], typer.Option(help='MDMP trust store for verification.')] = None, ollama_host: Annotated[Optional[str], typer.Option(help='Override the Ollama base URL.')] = None, timeout_seconds: Annotated[float, typer.Option(help='HTTP timeout for Ollama generation requests.')] = 120.0, output: Annotated[Optional[Path], typer.Option(help='Optional file path to save the anomaly summary.')] = None) -> None
report(input_json: Annotated[Path, typer.Argument(help='Prepared run directory or JSON file with run-level simulation outputs.')], mdmp_cert: Annotated[Optional[Path], typer.Option(help='Signed MDMP artifact required before AI analysis can run.')] = None, mode: Annotated[str, typer.Option(help="AI backend mode. Use 'local' for Ollama/Ministral.")] = 'auto', model: Annotated[str, typer.Option(help='Ollama model name to use.')] = DEFAULT_MINISTRAL_MODEL, minimum_grade: Annotated[str, typer.Option(help='Minimum MDMP grade required to allow analysis.')] = 'research_grade', public_key: Annotated[Optional[Path], typer.Option(help='Explicit MDMP public key for verification.')] = None, trust_store: Annotated[Optional[Path], typer.Option(help='MDMP trust store for verification.')] = None, ollama_host: Annotated[Optional[str], typer.Option(help='Override the Ollama base URL.')] = None, timeout_seconds: Annotated[float, typer.Option(help='HTTP timeout for Ollama generation requests.')] = 120.0, output: Annotated[Optional[Path], typer.Option(help='Optional file path to save the markdown report.')] = None) -> None
review(input_json: Annotated[Path, typer.Argument(help='Prepared run directory or JSON file with run-level simulation outputs.')], mdmp_cert: Annotated[Optional[Path], typer.Option(help='Signed MDMP artifact required before AI analysis can run.')] = None, mode: Annotated[str, typer.Option(help="AI backend mode. Use 'local' for Ollama/Ministral.")] = 'auto', model: Annotated[str, typer.Option(help='Ollama model name to use.')] = DEFAULT_MINISTRAL_MODEL, minimum_grade: Annotated[str, typer.Option(help='Minimum MDMP grade required to allow analysis.')] = 'research_grade', public_key: Annotated[Optional[Path], typer.Option(help='Explicit MDMP public key for verification.')] = None, trust_store: Annotated[Optional[Path], typer.Option(help='MDMP trust store for verification.')] = None, ollama_host: Annotated[Optional[str], typer.Option(help='Override the Ollama base URL.')] = None, timeout_seconds: Annotated[float, typer.Option(help='HTTP timeout for Ollama generation requests.')] = 120.0, output: Annotated[Optional[Path], typer.Option(help='Optional file path to save the realism review.')] = None) -> None
iints.ai.mdmp_guard
- Source:
src/iints/ai/mdmp_guard.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
GuardResult |
GuardResult |
No module docstring. |
MDMPGuard |
MDMPGuard |
Enforce a valid MDMP-signed artifact before AI analysis can run. |
GuardResult methods
to_dict(self) -> dict[str, Any]
MDMPGuard methods
check(self) -> GuardResult
wrap(self, response: str) -> str
iints.ai.model_catalog
- Source:
src/iints/ai/model_catalog.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
LocalMistralModelProfile |
LocalMistralModelProfile |
No module docstring. |
MistralAPIMigrationProfile |
MistralAPIMigrationProfile |
No module docstring. |
Public Functions
list_local_mistral_models() -> list[LocalMistralModelProfile]
list_mistral_api_migrations() -> list[MistralAPIMigrationProfile]
migrate_mistral_api_model(model_name: str) -> tuple[str, str | None, bool]
Public Constants
DEFAULT_MISTRAL_API_MODEL
DEFAULT_MISTRAL_API_REASONING_EFFORT
DEFAULT_MISTRAL_MODERATION_MODEL
DEFAULT_MISTRAL_OCR_MODEL
DEFAULT_MISTRAL_TRANSCRIBE_MODEL
LOCAL_MISTRAL_MODEL_PROFILES
MISTRAL_API_MIGRATION_PROFILES
STRONG_MISTRAL_API_MODEL
iints.ai.prepare
- Source:
src/iints/ai/prepare.py
- Summary: No module docstring.
Public Functions
prepare_ai_ready_artifacts(run_dir: str | Path, *, create_dev_mdmp_cert: bool = True, grade: str = 'research_grade', expires_days: int = 30, key_dir: str | Path | None = None) -> dict[str, str]
iints.ai.prompts
- Source:
src/iints/ai/prompts.py
- Summary: No module docstring.
Public Functions
build_prompt(task: TaskName, payload: Any) -> tuple[str, str]
Public Constants
MAX_PROMPT_PAYLOAD_CHARS
SYSTEM_PROMPT
TASK_TEMPLATES
iints.analysis
- Source:
src/iints/analysis/__init__.py
- Summary: No module docstring.
- Explicit exports:
analyze_run_directory, analyze_study_directory, build_booth_demo, build_carelink_workbench, build_evidence_bundle, ClinicalMetricsCalculator, ClinicalMetricsResult, ClinicalReportGenerator, EVIDENCE_SCOPE, compute_metrics, compare_studies, build_eucys_abstract_draft_markdown, build_eucys_filled_abstract_markdown, build_eucys_jury_qa_markdown, build_eucys_limitations_and_ethics_markdown, build_eucys_poster_outline_markdown, generate_eucys_main_figure, resolve_profile_specs, generate_eucys_results_bundle, generate_results_poster, generate_study_poster, build_algorithm_registry, build_study_design_payload, build_study_protocol_payload, build_study_experiment_template, render_study_protocol_markdown, render_study_experiment_yaml, write_study_protocol_bundle, load_study_experiment_config, load_study_summary, quality_badges_for_metrics, run_baseline_comparison, StudyAlgorithmSpec, StudyArmSpec, StudyComparison, StudyDesignPayload, StudyExperimentConfig, StudyMatrixRow, StudyProfileSpec, StudyRunSummary, StudySummary, write_baseline_comparison
No public classes, functions, or all-caps constants are declared directly in this module.
iints.analysis.algorithm_xray
- Source:
src/iints/analysis/algorithm_xray.py
- Summary: Algorithm X-Ray - IINTS-AF Make invisible medical decisions visible through decision replay and what-if analysis
Public Classes
| Class |
Signature |
Summary |
DecisionPoint |
DecisionPoint |
Single decision point in algorithm timeline |
AlgorithmXRay |
AlgorithmXRay |
X-ray vision into algorithm decision-making process |
DecisionPoint methods
AlgorithmXRay methods
get_quality_report_summary(self) -> Dict[str, Any]
analyze_decision(self, glucose_mgdl: float, glucose_history: List[float], insulin_history: List[float], time_minutes: int) -> DecisionPoint
calculate_personality_profile(self, decision_history: List[DecisionPoint]) -> Dict
generate_decision_replay(self, start_index: int = 0, end_index: Optional[int] = None) -> Dict
compare_what_if_scenarios(self, decision_point: DecisionPoint) -> Dict
export_xray_report(self, filepath: str)
Public Functions
iints.analysis.baseline
- Source:
src/iints/analysis/baseline.py
- Summary: No module docstring.
Public Functions
compute_metrics(results_df: pd.DataFrame) -> Dict[str, float]
run_baseline_comparison(patient_params: Dict[str, Any], stress_event_payloads: List[Dict[str, Any]], duration: int, time_step: int, primary_label: str, primary_results: pd.DataFrame, primary_safety: Dict[str, Any], compare_standard_pump: bool = True, seed: Optional[int] = None) -> Dict[str, Any]
write_baseline_comparison(comparison: Dict[str, Any], output_dir: Path) -> Dict[str, str]
iints.analysis.booth_demo
- Source:
src/iints/analysis/booth_demo.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
BoothScenarioSpec |
BoothScenarioSpec |
No module docstring. |
ShowcaseRunSpec |
ShowcaseRunSpec |
No module docstring. |
Public Functions
build_booth_demo(output_dir: str | Path = './results/booth_demo', *, patient_config: str | Path | dict[str, Any] = 'default_patient', duration_minutes: int = 360, time_step: int = 5, seed: int = 42, prepare_ai: bool = True, create_dev_mdmp_cert: bool = True) -> dict[str, str]
iints.analysis.carelink_workbench
- Source:
src/iints/analysis/carelink_workbench.py
- Summary: No module docstring.
Public Functions
build_carelink_workbench(input_csv: str | Path, *, output_dir: str | Path = './results/carelink_workbench', scenario_name: str = 'Imported CareLink Scenario', scenario_version: str = '1.0', carb_threshold: float = 0.1, create_dev_mdmp_cert: bool = True, grade: str = 'research_grade', expires_days: int = 30, key_dir: str | Path | None = None) -> dict[str, str]
iints.analysis.clinical_benchmark
- Source:
src/iints/analysis/clinical_benchmark.py
- Summary: Clinical Benchmark System Compares AI algorithms against real-world clinical outcomes
Public Classes
| Class |
Signature |
Summary |
ClinicalBenchmark |
ClinicalBenchmark |
Clinical benchmark comparison system |
ClinicalBenchmark methods
run_ohio_benchmark(self)
export_benchmark_results(self, results, filename = 'clinical_benchmark.json')
Public Functions
iints.analysis.clinical_metrics
- Source:
src/iints/analysis/clinical_metrics.py
- Summary: Clinical Metrics Calculator - IINTS-AF Standard clinical metrics for diabetes algorithm comparison.
Public Classes
| Class |
Signature |
Summary |
ClinicalMetricsResult |
ClinicalMetricsResult |
Comprehensive clinical metrics result |
ClinicalMetricsCalculator |
ClinicalMetricsCalculator |
Calculate standard clinical metrics for diabetes management. |
ClinicalMetricsResult methods
to_dict(self) -> Dict
get_summary(self) -> str
get_rating(self) -> str
ClinicalMetricsCalculator methods
calculate_tir(self, glucose: pd.Series, low: float, high: float) -> float
calculate_all_tir_metrics(self, glucose: pd.Series) -> Dict[str, float]
calculate_gmi(self, glucose: pd.Series) -> float
calculate_cv(self, glucose: pd.Series) -> float
calculate_hypoglycemia_index(self, glucose: pd.Series, timestamp: Optional[pd.Series] = None) -> float
calculate_lbgi(self, glucose: pd.Series) -> float
calculate_hbgi(self, glucose: pd.Series) -> float
calculate_readings_per_day(self, glucose: pd.Series, duration_hours: float) -> float
calculate_data_coverage(self, glucose: pd.Series, expected_interval_minutes: int = 5, duration_hours: float = 24) -> float
calculate(self, glucose: pd.Series, timestamp: Optional[pd.Series] = None, duration_hours: Optional[float] = None) -> ClinicalMetricsResult
compare_metrics(self, metrics1: ClinicalMetricsResult, metrics2: ClinicalMetricsResult) -> Dict[str, Tuple[float, str]]
Public Functions
iints.analysis.clinical_tir_analyzer
- Source:
src/iints/analysis/clinical_tir_analyzer.py
- Summary: Professional 5-Zone TIR Analysis - IINTS-AF Implements Medtronic clinical standard for glucose zone classification
Public Classes
| Class |
Signature |
Summary |
ClinicalTIRAnalyzer |
ClinicalTIRAnalyzer |
Professional 5-zone Time in Range analysis following clinical standards |
ClinicalTIRAnalyzer methods
analyze_glucose_zones(self, glucose_values)
Public Functions
iints.analysis.diabetes_metrics
- Source:
src/iints/analysis/diabetes_metrics.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
DiabetesMetrics |
DiabetesMetrics |
Professional diabetes metrics for algorithm evaluation. |
DiabetesMetrics methods
time_in_range(glucose_values, lower = 70, upper = 180)
coefficient_of_variation(glucose_values)
blood_glucose_risk_index(glucose_values, risk_type = 'high')
calculate_all_metrics(df, baseline = 120)
iints.analysis.edge_efficiency
- Source:
src/iints/analysis/edge_efficiency.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
EnergyEstimate |
EnergyEstimate |
No module docstring. |
Public Functions
estimate_energy_per_decision(power_watts: float, latency_ms: float, decisions_per_day: int = 288) -> EnergyEstimate
- Source:
src/iints/analysis/edge_performance_monitor.py
- Summary: Edge AI Performance Monitor - IINTS-AF Jetson Nano performance validation for medical device standards
Public Classes
| Class |
Signature |
Summary |
EdgeAIPerformanceMonitor |
EdgeAIPerformanceMonitor |
Monitor Jetson Nano performance for medical device validation |
start_monitoring(self)
measure_inference_latency(self, inference_function, input_data, iterations = 100)
generate_performance_report(self)
export_performance_data(self, filepath)
Public Functions
mock_ai_inference(input_data)
main()
iints.analysis.eucys_results
- Source:
src/iints/analysis/eucys_results.py
- Summary: No module docstring.
Public Functions
build_eucys_limitations_and_ethics_markdown() -> str
build_eucys_abstract_draft_markdown() -> str
build_eucys_poster_outline_markdown() -> str
build_eucys_jury_qa_markdown() -> str
build_eucys_filled_abstract_markdown(*, root_summary: dict[str, Any], clean_summary: dict[str, Any], study_design: dict[str, Any]) -> str
generate_eucys_main_figure(clean_summary: dict[str, Any], *, output_path: str | Path, csv_output_path: str | Path | None = None) -> dict[str, str]
generate_eucys_results_bundle(study_root: str | Path, *, output_dir: str | Path | None = None) -> dict[str, str]
Public Constants
iints.analysis.evidence_bundle
- Source:
src/iints/analysis/evidence_bundle.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
EvidenceRun |
EvidenceRun |
No module docstring. |
EvidenceRun methods
to_dict(self) -> Dict[str, Any]
Public Functions
build_evidence_bundle(run_dirs: Iterable[tuple[str, Path]], *, output_dir: Path, title: str = 'IINTS Research Evidence Bundle', local_ai_dir: Optional[Path] = None, pump_bundle_dir: Optional[Path] = None) -> Dict[str, Any]
Public Constants
iints.analysis.explainability
- Source:
src/iints/analysis/explainability.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
ExplainabilityAnalyzer |
ExplainabilityAnalyzer |
Provides tools for analyzing and explaining the behavior of insulin algorithms. This module implements 'AI as explainability tool' by performing sensitivity analysis. |
ExplainabilityAnalyzer methods
calculate_glucose_variability(self) -> Dict[str, float]
analyze_insulin_response(self, algorithm_type: str = '') -> Dict[str, Any]
perform_sensitivity_analysis(self, algorithm_instance: Any, parameter_name: str, original_value: float, perturbations: List[float], simulation_run_func: Callable[[Any, List[Any], int], pd.DataFrame], fixed_events: Optional[List[Any]] = None, duration_minutes: int = 1440) -> Dict[float, Dict[str, Union[float, str]]]
iints.analysis.explainable_ai
- Source:
src/iints/analysis/explainable_ai.py
- Summary: Explainable AI Audit Trail - IINTS-AF Clinical decision transparency system for medical AI validation
Public Classes
| Class |
Signature |
Summary |
ClinicalAuditTrail |
ClinicalAuditTrail |
Explainable AI system for clinical decision transparency |
ClinicalAuditTrail methods
generate_ollama_insight(self, times, glucose, ffa, ketones, insulin)
log_decision(self, timestamp, glucose_current, glucose_trend, insulin_decision, algorithm_confidence, safety_override = False, context = None)
generate_clinical_summary(self, hours = 24)
export_audit_trail(self, filepath)
Public Functions
iints.analysis.hardware_benchmark
- Source:
src/iints/analysis/hardware_benchmark.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
PerformanceMetrics |
PerformanceMetrics |
No module docstring. |
HardwareBenchmark |
HardwareBenchmark |
Hardware performance monitoring for Jetson and other platforms. |
HardwareBenchmark methods
start_monitoring(self)
stop_monitoring(self)
benchmark_algorithm(self, algorithm, test_data, iterations = 100)
get_current_metrics(self) -> Dict
get_metrics_summary(self) -> Dict
export_metrics(self, filename: str)
clear_metrics(self)
iints.analysis.metrics
- Source:
src/iints/analysis/metrics.py
- Summary: No module docstring.
Public Functions
calculate_tir(df: pd.DataFrame, lower_bound: float = 70.0, upper_bound: float = 180.0) -> float
calculate_hypoglycemia(df: pd.DataFrame, threshold: float = 70.0) -> float
calculate_hyperglycemia(df: pd.DataFrame, threshold: float = 180.0) -> float
calculate_average_glucose(df: pd.DataFrame) -> float
generate_benchmark_metrics(df: pd.DataFrame) -> Dict[str, float]
iints.analysis.population_report
- Source:
src/iints/analysis/population_report.py
- Summary: Population Report Generator — IINTS-AF ======================================== Generates a PDF report with aggregate statistics and visualisations for a Monte Carlo population evaluation run.
Public Classes
| Class |
Signature |
Summary |
PopulationReportGenerator |
PopulationReportGenerator |
Generate a PDF report for population simulation results. |
PopulationReportGenerator methods
generate_pdf(self, summary_df: pd.DataFrame, aggregate_metrics: Dict[str, Any], aggregate_safety: Dict[str, Any], output_path: str, title: str = 'IINTS-AF Population Evaluation Report') -> str
iints.analysis.poster
- Source:
src/iints/analysis/poster.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
PosterScenario |
PosterScenario |
No module docstring. |
PosterScenario methods
to_dict(self) -> dict[str, Any]
Public Functions
generate_results_poster(run_dirs: Sequence[str | Path] | None = None, *, labels: Sequence[str] | None = None, output_path: str | Path = './results/posters/iints_results_poster.png', poster_title: str = '288 Decisions. Every Day. We Test Them All.', subtitle: str = 'Three IINTS-AF scenarios showing control, stress handling, and supervisor protection.', results_root: str | Path = './results', auto_limit: int = 3, summary_output_path: str | Path | None = None) -> dict[str, str]
iints.analysis.reporting
- Source:
src/iints/analysis/reporting.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
ClinicalReportGenerator |
ClinicalReportGenerator |
Generate a clean, publication-ready PDF report. |
ClinicalReportGenerator methods
generate_agp_pdf(self, simulation_data: pd.DataFrame, output_path: str, *, title: str = 'IINTS Research AGP-Style Report', subject_name: str = 'Research simulation', safety_report: Optional[Dict[str, Any]] = None, target_low: float = 70.0, target_high: float = 180.0, summary_json_path: Optional[str] = None) -> str
export_agp_assets(self, simulation_data: pd.DataFrame, output_dir: str, *, subject_name: str = 'Research simulation', target_low: float = 70.0, target_high: float = 180.0, summary_json_path: Optional[str] = None, export_svg: bool = True) -> Dict[str, str]
export_plots(self, simulation_data: pd.DataFrame, output_dir: str) -> Dict[str, str]
generate_pdf(self, simulation_data: pd.DataFrame, safety_report: Dict[str, Any], output_path: str, title: str = 'IINTS-AF Clinical Report') -> str
generate_demo_pdf(self, simulation_data: pd.DataFrame, safety_report: Dict[str, Any], output_path: str, title: str = 'IINTS-AF Demo Report') -> str
Public Constants
iints.analysis.run_quality
- Source:
src/iints/analysis/run_quality.py
- Summary: No module docstring.
Public Functions
standardize_simulation_for_realism(results_df: pd.DataFrame) -> pd.DataFrame
write_run_quality_artifacts(results_df: pd.DataFrame, output_dir: str | Path, *, run_label: Optional[str] = None, safety_report: Optional[Dict[str, Any]] = None, realism_reference: Optional[str] = 'auto') -> Dict[str, Any]
iints.analysis.safety_index
- Source:
src/iints/analysis/safety_index.py
- Summary: IINTS-AF Safety Index ===================== A single composite metric (0–100) that summarises the clinical safety of an insulin dosing algorithm's output. Higher is safer.
Public Classes
| Class |
Signature |
Summary |
SafetyIndexResult |
SafetyIndexResult |
Result of the IINTS Safety Index computation. |
SafetyIndexResult methods
Public Functions
compute_safety_index(results_df: pd.DataFrame, safety_report: Dict, duration_minutes: int, weights: Optional[Dict[str, float]] = None, time_step_minutes: float = 5.0) -> SafetyIndexResult
safety_weights_from_cli(w_below54: Optional[float] = None, w_below70: Optional[float] = None, w_supervisor: Optional[float] = None, w_recovery: Optional[float] = None, w_tail: Optional[float] = None) -> Dict[str, float]
Public Constants
DEFAULT_WEIGHTS
NORM_SCALES
iints.analysis.safety_visualizer
- Source:
src/iints/analysis/safety_visualizer.py
- Summary: No module docstring.
Public Functions
summarize_safety_trace(results_df: pd.DataFrame, safety_report: Optional[Dict[str, Any]] = None) -> Dict[str, Any]
build_safety_visualizer_html(results_df: pd.DataFrame, safety_report: Optional[Dict[str, Any]] = None, *, title: str = 'IINTS Safety Contract Visualizer') -> str
write_safety_visualizer(results_df: pd.DataFrame, output_html: str | Path, *, output_json: str | Path | None = None, safety_report: Optional[Dict[str, Any]] = None, title: str = 'IINTS Safety Contract Visualizer') -> Dict[str, str]
iints.analysis.sensor_filtering
- Source:
src/iints/analysis/sensor_filtering.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
SensorNoiseModel |
SensorNoiseModel |
Realistic sensor noise with drift and filtering. |
KalmanFilter |
KalmanFilter |
Simple Kalman filter for glucose smoothing. |
MovingAverageFilter |
MovingAverageFilter |
Simple moving average filter. |
SensorNoiseModel methods
add_noise(self, true_glucose, time_step)
KalmanFilter methods
update(self, measurement)
MovingAverageFilter methods
iints.analysis.study_analysis
- Source:
src/iints/analysis/study_analysis.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
StudyRunSummary |
StudyRunSummary |
No module docstring. |
StudySummary |
StudySummary |
No module docstring. |
StudyComparison |
StudyComparison |
No module docstring. |
StudyRunSummary methods
to_dict(self) -> dict[str, Any]
StudySummary methods
to_dict(self) -> dict[str, Any]
StudyComparison methods
to_dict(self) -> dict[str, Any]
Public Functions
quality_badges_for_metrics(metrics: dict[str, float], *, certified: bool | None = None) -> list[str]
analyze_run_directory(run_dir: Path) -> StudyRunSummary
analyze_study_directory(study_dir: Path, *, external_reference_metrics: Path | None = None) -> StudySummary
load_study_summary(path: str | Path) -> StudySummary
compare_studies(left: str | Path, right: str | Path, *, left_label: str | None = None, right_label: str | None = None) -> StudyComparison
Public Constants
CALIBRATION_METRICS
CORE_METRIC_KEYS
PAIRWISE_METRICS
iints.analysis.study_engine
- Source:
src/iints/analysis/study_engine.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
StudyProfileSpec |
StudyProfileSpec |
No module docstring. |
StudyAlgorithmSpec |
StudyAlgorithmSpec |
No module docstring. |
StudyArmSpec |
StudyArmSpec |
No module docstring. |
StudyMatrixRow |
StudyMatrixRow |
No module docstring. |
StudyDesignPayload |
StudyDesignPayload |
No module docstring. |
StudyProfileSpec methods
to_dict(self) -> dict[str, str]
StudyAlgorithmSpec methods
to_dict(self) -> dict[str, str]
StudyArmSpec methods
to_dict(self) -> dict[str, Any]
StudyMatrixRow methods
to_dict(self) -> dict[str, Any]
StudyDesignPayload methods
to_dict(self) -> dict[str, Any]
Public Functions
slugify_study_token(value: str) -> str
resolve_profile_specs(profile_set: str = DEFAULT_PROFILE_SET) -> list[StudyProfileSpec]
build_algorithm_registry(*, candidate_algorithm: str, candidate_source_type: str = 'path', candidate_source_ref: str | None = None, include_default_baselines: bool = True, extra_algorithms: list[str] | None = None) -> list[StudyAlgorithmSpec]
build_study_design_payload(*, preset: str = 'default', title: str = 'IINTS Scientific Validation Protocol', primary_hypothesis: str | None = None, scenarios: list[str] | None = None, seeds: list[int] | None = None, candidate_algorithm: str = 'your_algorithm', include_default_baselines: bool = True, extra_algorithms: list[str] | None = None, profile_set: str = DEFAULT_PROFILE_SET, external_reference_label: str = 'CareLink personal workbench metrics', candidate_source_type: str = 'path', candidate_source_ref: str | None = None) -> StudyDesignPayload
Public Constants
DEFAULT_BASELINE_ALGORITHMS
DEFAULT_HYPOTHESES
DEFAULT_METRICS
DEFAULT_PROFILE_SET
DEFAULT_RESEARCH_QUESTION
iints.analysis.study_experiment
- Source:
src/iints/analysis/study_experiment.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
StudyExperimentConfig |
StudyExperimentConfig |
No module docstring. |
Public Functions
load_study_experiment_config(path: str | Path) -> StudyExperimentConfig
build_study_experiment_template(*, preset: str, title: str, profile_set: str, seeds: list[int], candidate_algorithm: str, scenarios: list[str], include_default_baselines: bool, extra_algorithms: list[str] | None = None, external_reference_label: str = 'CareLink personal workbench metrics', default_output_dir: str | None = None) -> dict[str, Any]
render_study_experiment_yaml(payload: dict[str, Any]) -> str
iints.analysis.study_poster
- Source:
src/iints/analysis/study_poster.py
- Summary: No module docstring.
Public Functions
generate_study_poster(summary_input: str | Path | StudySummary, *, output_path: str | Path = 'results/study_poster.png', title: str = 'IINTS Study Results', subtitle: str = 'Simulation evidence across runs, safety behavior, and certification quality.', summary_output_path: str | Path | None = None) -> dict[str, str]
iints.analysis.study_protocol
- Source:
src/iints/analysis/study_protocol.py
- Summary: No module docstring.
Public Functions
build_study_protocol_payload(*, preset: str = 'default', title: str = 'IINTS Scientific Validation Protocol', primary_hypothesis: str | None = None, scenarios: list[str] | None = None, seeds: list[int] | None = None, algorithms: list[str] | None = None, corruption_modes: list[str] | None = None, external_reference_label: str = 'CareLink personal workbench metrics', profile_set: str = DEFAULT_PROFILE_SET, include_default_baselines: bool = True, extra_algorithms: list[str] | None = None) -> dict[str, Any]
render_study_protocol_markdown(payload: dict[str, Any]) -> str
write_study_protocol_bundle(output_dir: str | Path, *, preset: str = 'default', title: str = 'IINTS Scientific Validation Protocol', primary_hypothesis: str | None = None, scenarios: list[str] | None = None, seeds: list[int] | None = None, algorithms: list[str] | None = None, corruption_modes: list[str] | None = None, external_reference_label: str = 'CareLink personal workbench metrics', profile_set: str = DEFAULT_PROFILE_SET, include_default_baselines: bool = True, extra_algorithms: list[str] | None = None) -> dict[str, str]
Public Constants
DEFAULT_CORRUPTION_MODES
DEFAULT_SCENARIOS
iints.analysis.validator
- Source:
src/iints/analysis/validator.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
ReliabilityLevel |
ReliabilityLevel(Enum) |
No module docstring. |
ValidationResult |
ValidationResult |
No module docstring. |
DataIntegrityValidator |
DataIntegrityValidator |
Validates data integrity for reverse engineering analysis. |
AlgorithmicDriftDetector |
AlgorithmicDriftDetector |
Detects when AI algorithms drift from safe baseline behavior. |
StatisticalReliabilityChecker |
StatisticalReliabilityChecker |
Checks statistical reliability of Monte Carlo results. |
ReverseEngineeringValidator |
ReverseEngineeringValidator |
Main validator for reverse engineering analysis. |
DataIntegrityValidator methods
validate_glucose_data(self, glucose_values: List[float], timestamps: List[float]) -> ValidationResult
validate_insulin_data(self, insulin_values: List[float]) -> ValidationResult
AlgorithmicDriftDetector methods
detect_drift(self, ai_outputs: List[float], baseline_outputs: List[float]) -> ValidationResult
StatisticalReliabilityChecker methods
check_monte_carlo_reliability(self, results: List[List[float]]) -> ValidationResult
ReverseEngineeringValidator methods
validate_simulation_results(self, simulation_df: pd.DataFrame, baseline_results: Optional[List[float]] = None, monte_carlo_results: Optional[List[List[float]]] = None) -> Dict[str, ValidationResult]
generate_reliability_report(self, validation_results: Dict[str, ValidationResult]) -> Dict[str, Any]
iints.api
- Source:
src/iints/api/__init__.py
- Summary: No module docstring.
No public classes, functions, or all-caps constants are declared directly in this module.
iints.api.base_algorithm
- Source:
src/iints/api/base_algorithm.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
AlgorithmInput |
AlgorithmInput |
Dataclass for inputs to the insulin prediction algorithm. |
AlgorithmMetadata |
AlgorithmMetadata |
Metadata for algorithm registration and identification |
AlgorithmResult |
AlgorithmResult |
Result of an insulin prediction with uncertainty |
WhyLogEntry |
WhyLogEntry |
Single entry in the Why Log explaining a decision reason |
InsulinAlgorithm |
InsulinAlgorithm(ABC) |
Abstract base class for insulin delivery algorithms. |
AlgorithmResult methods
WhyLogEntry methods
InsulinAlgorithm methods
set_isf(self, isf: float)
set_icr(self, icr: float)
get_algorithm_metadata(self) -> AlgorithmMetadata
set_algorithm_metadata(self, metadata: AlgorithmMetadata)
calculate_uncertainty(self, data: AlgorithmInput) -> float
calculate_confidence_interval(self, data: AlgorithmInput, prediction: float, uncertainty: float) -> tuple
explain_prediction(self, data: AlgorithmInput, prediction: Dict[str, Any]) -> str
predict_insulin(self, data: AlgorithmInput) -> Dict[str, Any]
get_why_log(self) -> List[WhyLogEntry]
get_why_log_text(self) -> str
reset(self)
get_state(self) -> Dict[str, Any]
set_state(self, state: Dict[str, Any])
iints.api.registry
- Source:
src/iints/api/registry.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
AlgorithmListing |
AlgorithmListing |
No module docstring. |
LocalPluginRecord |
LocalPluginRecord |
No module docstring. |
LocalPluginRecord methods
from_dict(cls, payload: Mapping[str, Any]) -> 'LocalPluginRecord'
to_dict(self) -> dict[str, Any]
Public Functions
get_plugin_home() -> Path
get_plugin_registry_path() -> Path
list_local_plugin_records(kind: str | None = None) -> list[LocalPluginRecord]
install_file_plugin(kind: str, source_path: str | Path, name: str | None = None) -> LocalPluginRecord
install_algorithm_plugin(source_path: str | Path, name: str | None = None) -> LocalPluginRecord
uninstall_local_plugin(name: str, kind: str | None = None, *, remove_file: bool = False) -> bool
list_algorithm_plugins() -> List[AlgorithmListing]
Public Constants
IINTS_PLUGIN_HOME_ENV
PLUGIN_REGISTRY_SCHEMA_VERSION
SUPPORTED_LOCAL_PLUGIN_KINDS
iints.api.template_algorithm
- Source:
src/iints/api/template_algorithm.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
TemplateAlgorithm |
TemplateAlgorithm(InsulinAlgorithm) |
This is a template for a user-defined insulin delivery algorithm. It demonstrates the required structure and provides a basic, safe implementation of a correction and meal bolus logic. |
TemplateAlgorithm methods
get_algorithm_metadata(self) -> AlgorithmMetadata
predict_insulin(self, data: AlgorithmInput) -> Dose
reset(self)
iints.cli
- Source:
src/iints/cli/__init__.py
- Summary: No module docstring.
No public classes, functions, or all-caps constants are declared directly in this module.
iints.cli.cli
- Source:
src/iints/cli/cli.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
BrandedTyperGroup |
BrandedTyperGroup(TyperGroup) |
No module docstring. |
BrandedTyperGroup methods
get_help(self, ctx)
list_commands(self, ctx)
Public Functions
app_callback(ctx: typer.Context, version: Annotated[bool, typer.Option('--version', help='Show the installed SDK version and exit.', is_eager=True)] = False)
evaluate(algo: Annotated[Path, typer.Option(help='Path to the algorithm Python file')], population: Annotated[int, typer.Option(help='Number of virtual patients to simulate')] = 100, patient_config_name: Annotated[str, typer.Option('--patient-config', help='Base patient configuration name')] = 'default_patient', patient_config_path: Annotated[Optional[Path], typer.Option('--patient-config-path', help='Path to base patient config YAML')] = None, scenario_path: Annotated[Optional[Path], typer.Option('--scenario', help='Path to scenario JSON')] = None, duration: Annotated[int, typer.Option(help='Simulation duration in minutes')] = 720, time_step: Annotated[int, typer.Option(help='Time step in minutes')] = 5, output_dir: Annotated[Optional[Path], typer.Option(help='Output directory')] = None, max_workers: Annotated[Optional[int], typer.Option(help='Max parallel workers (default: all cores)')] = None, seed: Annotated[Optional[int], typer.Option(help='Random seed for reproducibility')] = None, patient_model: Annotated[str, typer.Option('--patient-model', help='Patient model: auto, bergman, custom, simglucose')] = 'auto')
doctor(smoke_run: Annotated[bool, typer.Option(help='Run a short deterministic smoke simulation')] = False, smoke_duration: Annotated[int, typer.Option(help='Smoke simulation duration in minutes')] = 30, full: Annotated[bool, typer.Option('--full', help='Run extra environment checks that help beginners debug setup issues')] = False, suggest: Annotated[bool, typer.Option('--suggest', help='Print concrete next commands based on what doctor finds')] = False)
update_sdk(source: Annotated[str, typer.Option(help='Update source: auto, pypi, or github. Auto tries PyPI first and falls back to GitHub main.')] = 'auto', install_extras: Annotated[str, typer.Option('--extras', help='Comma-separated extras to install, e.g. full,mdmp,research,edge. Use empty string for none.')] = 'full,mdmp,research,edge', github_ref: Annotated[str, typer.Option('--github-ref', help='Git ref used with --source github or as the auto fallback.')] = 'main', user: Annotated[bool, typer.Option('--user/--no-user', help='Pass --user to pip for user-site installs.')] = False, pre: Annotated[bool, typer.Option('--pre/--no-pre', help='Allow pre-release versions.')] = False, upgrade_pip: Annotated[bool, typer.Option('--upgrade-pip/--no-upgrade-pip', help='Upgrade pip before installing IINTS.')] = False, repair: Annotated[bool, typer.Option('--repair/--no-repair', help='Uninstall legacy/conflicting IINTS packages before reinstalling.')] = False, force_reinstall: Annotated[bool, typer.Option('--force-reinstall/--no-force-reinstall', help='Ask pip to reinstall even if the version appears current.')] = False, no_cache_dir: Annotated[bool, typer.Option('--no-cache-dir/--use-pip-cache', help="Disable pip's wheel/download cache for this update.")] = False, dry_run: Annotated[bool, typer.Option('--dry-run', help='Print the pip command without executing it.')] = False, yes: Annotated[bool, typer.Option('--yes', '-y', help='Run without asking for confirmation.')] = False, verify: Annotated[bool, typer.Option('--verify/--no-verify', help='Verify the installed package version after the update command completes.')] = True) -> None
delete_sdk(everything: Annotated[bool, typer.Option('--everything/--standard', help='Remove packages, user data, local generated outputs, and a detected IINTS source checkout.')] = False, packages: Annotated[bool, typer.Option('--packages/--no-packages', help='Uninstall IINTS Python packages from the active Python environment.')] = True, user_data: Annotated[bool, typer.Option('--user-data/--no-user-data', help='Remove user-level IINTS config, plugin, and cache folders.')] = True, local_outputs: Annotated[bool, typer.Option('--local-outputs/--no-local-outputs', help='Also remove known generated IINTS output folders in the current directory.')] = False, source_checkout: Annotated[bool, typer.Option('--source-checkout/--no-source-checkout', help='Also remove the detected local IINTS-SDK source checkout, if running from one.')] = False, extra_path: Annotated[Optional[List[Path]], typer.Option('--path', help='Extra IINTS-owned path to remove. Refuses home, root, and current working directory.')] = None, dry_run: Annotated[bool, typer.Option('--dry-run', help='Show what would be removed without deleting anything.')] = False, yes: Annotated[bool, typer.Option('--yes', '-y', help='Delete without asking for confirmation.')] = False) -> None
run_doctor(algo: Annotated[Optional[Path], typer.Option(help='Algorithm Python file to inspect.')] = None, patient_config_path: Annotated[Optional[Path], typer.Option(help='Patient YAML used for the run.')] = None, scenario_path: Annotated[Optional[Path], typer.Option('--scenario-path', '--scenario', help='Scenario JSON used for the run.')] = None, duration: Annotated[int, typer.Option(help='Requested duration in minutes.')] = 1440, time_step: Annotated[int, typer.Option(help='Simulation time step in minutes.')] = 5, output_dir: Annotated[Optional[Path], typer.Option(help='Output directory to preflight.')] = None, patient_config_name: Annotated[str, typer.Option(help='Packaged patient profile name, if not using a YAML path.')] = 'default_patient', output_json: Annotated[Optional[Path], typer.Option(help='Optional JSON report path.')] = None, fail_on_warning: Annotated[bool, typer.Option(help='Exit with code 1 when any warning is found.')] = False) -> None
evidence_build(run: Annotated[List[str], typer.Option('--run', help='Repeatable run input in label=path form, for example normal=results/normal.')], output_dir: Annotated[Path, typer.Option(help='Output directory for the evidence bundle.')] = Path('results/evidence_bundle'), title: Annotated[str, typer.Option(help='Human-readable bundle title.')] = 'IINTS Research Evidence Bundle', local_ai_dir: Annotated[Optional[Path], typer.Option(help='Optional local AI lab output directory.')] = None, pump_bundle_dir: Annotated[Optional[Path], typer.Option(help='Optional Pico pump bundle directory.')] = None) -> None
validation_profiles(profiles_path: Annotated[Optional[Path], typer.Option(help='Optional custom profiles YAML')] = None)
replay_check(algo: Annotated[Path, typer.Option(help='Path to the algorithm Python file')], predictor_path: Annotated[Optional[Path], typer.Option('--predictor', help='Optional predictor checkpoint (.pt)')] = None, patient_config_name: Annotated[str, typer.Option(help='Patient config name')] = 'default_patient', patient_config_path: Annotated[Optional[Path], typer.Option(help='Patient config YAML path')] = None, scenario_path: Annotated[Optional[Path], typer.Option(help='Path to scenario JSON')] = None, duration: Annotated[int, typer.Option(help='Simulation duration in minutes')] = 240, time_step: Annotated[int, typer.Option(help='Simulation time step in minutes')] = 5, seed: Annotated[int, typer.Option(help='Deterministic seed')] = 42, repeats: Annotated[int, typer.Option(help='Replay runs to compare')] = 2, output_json: Annotated[Optional[Path], typer.Option(help='Optional output JSON path')] = None, fail_on_mismatch: Annotated[bool, typer.Option(help='Exit code 1 if replay mismatch is detected')] = True)
golden_benchmark(algo: Annotated[Path, typer.Option(help='Path to the algorithm Python file')], predictor_path: Annotated[Optional[Path], typer.Option('--predictor', help='Optional predictor checkpoint (.pt)')] = None, pack_path: Annotated[Optional[Path], typer.Option(help='Optional golden benchmark YAML path')] = None, output_dir: Annotated[Optional[Path], typer.Option(help='Optional output directory for benchmark runs')] = None, seed: Annotated[int, typer.Option(help='Random seed')] = 42, duration_override: Annotated[Optional[int], typer.Option(help='Optional duration override (minutes)')] = None, output_json: Annotated[Optional[Path], typer.Option(help='Write benchmark report JSON')] = None, fail_on_check: Annotated[bool, typer.Option(help='Exit code 1 when any scenario fails')] = True)
validate_run(results_csv: Annotated[Path, typer.Option(help='Path to simulation results CSV')], profile: Annotated[str, typer.Option(help='Validation profile id')] = 'research_default', safety_report_path: Annotated[Optional[Path], typer.Option(help='Optional safety report JSON')] = None, duration_minutes: Annotated[Optional[int], typer.Option(help='Override run duration (minutes)')] = None, profiles_path: Annotated[Optional[Path], typer.Option(help='Optional custom profiles YAML')] = None, output_json: Annotated[Optional[Path], typer.Option(help='Write validation report JSON')] = None, fail_on_check: Annotated[bool, typer.Option(help='Exit with code 1 when required checks fail')] = True)
analyze(study_dir: Annotated[Path, typer.Argument(help='Directory containing one or more run folders.')], output_json: Annotated[Path, typer.Option(help='Write aggregated study summary JSON')] = Path('results/study_summary.json'), output_markdown: Annotated[Optional[Path], typer.Option(help='Optional markdown summary path')] = None, output_csv: Annotated[Optional[Path], typer.Option(help='Optional evidence-table CSV path')] = None, output_evidence_markdown: Annotated[Optional[Path], typer.Option(help='Optional evidence-table markdown path')] = None, carelink_metrics: Annotated[Optional[Path], typer.Option(help='Optional CareLink metrics JSON or workbench directory for external plausibility comparison')] = None) -> None
compare_study(left: Annotated[Path, typer.Argument(help='Left study directory or study summary JSON')], right: Annotated[Path, typer.Argument(help='Right study directory or study summary JSON')], output_json: Annotated[Path, typer.Option(help='Write comparison JSON')] = Path('results/study_comparison.json'), output_markdown: Annotated[Optional[Path], typer.Option(help='Optional markdown comparison path')] = None, left_label: Annotated[Optional[str], typer.Option(help='Optional display label for the left study')] = None, right_label: Annotated[Optional[str], typer.Option(help='Optional display label for the right study')] = None) -> None
poster_study(study_input: Annotated[Path, typer.Argument(help='Study directory or study summary JSON')], output_path: Annotated[Path, typer.Option(help='Output PNG path')] = Path('results/study_poster.png'), title: Annotated[str, typer.Option(help='Poster title')] = 'IINTS Study Results', subtitle: Annotated[str, typer.Option(help='Poster subtitle')] = 'Simulation evidence across runs, safety behavior, and certification quality.') -> None
demo_expo(output_dir: Annotated[Path, typer.Option(help='Directory for the expo demo bundle')] = Path('results/expo_demo'), patient_config: Annotated[str, typer.Option(help='Patient profile name or path-like identifier')] = 'default_patient', duration_minutes: Annotated[int, typer.Option(help='Scenario duration in minutes')] = 360, seed: Annotated[int, typer.Option(help='Random seed for reproducible expo runs')] = 42) -> None
run_study(ctx: typer.Context, algo: Annotated[Optional[Path], typer.Option(help='Path to the algorithm Python file')] = None, experiment: Annotated[Optional[Path], typer.Option(help='Optional study experiment YAML file')] = None, output_dir: Annotated[Path, typer.Option(help='Root directory for the study bundle')] = Path('results/study_bundle'), preset: Annotated[str, typer.Option(help='Study preset: default or eucys')] = 'default', profile_set: Annotated[str, typer.Option(help='Patient profile set to evaluate')] = DEFAULT_PROFILE_SET, scenarios: Annotated[str, typer.Option(help='Optional comma-separated scenario slugs to run')] = '', seeds: Annotated[str, typer.Option(help='Comma-separated seed list')] = '1,2,3,4,5', duration: Annotated[Optional[int], typer.Option(help='Override scenario duration in minutes')] = None, time_step: Annotated[int, typer.Option(help='Simulation time step in minutes')] = 5, carelink_metrics: Annotated[Optional[Path], typer.Option(help='Optional CareLink metrics JSON or workbench directory for plausibility comparison')] = None, prepare_ai: Annotated[bool, typer.Option(help='Generate AI-ready artifacts for non-corrupted study arms')] = True, reference_csv: Annotated[Optional[Path], typer.Option(help='Optional source CSV to corrupt and archive alongside the study protocol')] = None, include_default_baselines: Annotated[bool, typer.Option('--include-default-baselines/--no-include-default-baselines', help='Include the default baseline registry in the study matrix')] = True, extra_algorithms: Annotated[str, typer.Option(help='Comma-separated additional comparison algorithm labels')] = '', external_reference_label: Annotated[str, typer.Option(help='Label for the plausibility reference lane')] = 'CareLink personal workbench metrics', gate_profile: Annotated[Optional[str], typer.Option(help='Optional calibration gate profile id')] = None, gate_profiles_path: Annotated[Optional[Path], typer.Option(help='Optional calibration gate profiles YAML path')] = None, fail_on_gate: Annotated[bool, typer.Option(help='Exit with code 1 when any run fails the calibration gate')] = False) -> None
run_eucys_study(algo: Annotated[Path, typer.Option(help='Path to the algorithm Python file')], patient_config_name: Annotated[str, typer.Option(help='Legacy option kept for compatibility; the EUCYS preset now uses the fixed clinic_safe_core profile set')] = 'default_patient', patient_config_path: Annotated[Optional[Path], typer.Option(help='Legacy option kept for compatibility; the EUCYS preset now uses the fixed clinic_safe_core profile set')] = None, output_dir: Annotated[Path, typer.Option(help='Root directory for the EUCYS study bundle')] = Path('results/eucys_study'), seeds: Annotated[str, typer.Option(help='Comma-separated seed list')] = '1,2,3,4,5,6,7,8,9,10', duration: Annotated[Optional[int], typer.Option(help='Override scenario duration in minutes')] = None, time_step: Annotated[int, typer.Option(help='Simulation time step in minutes')] = 5, carelink_metrics: Annotated[Optional[Path], typer.Option(help='Optional CareLink metrics JSON or workbench directory for plausibility comparison')] = None, prepare_ai: Annotated[bool, typer.Option(help='Generate AI-ready artifacts for certified study arms')] = True, reference_csv: Annotated[Optional[Path], typer.Option(help='Optional source CSV to corrupt and archive alongside the study protocol')] = None, include_default_baselines: Annotated[bool, typer.Option('--include-default-baselines/--no-include-default-baselines', help='Include the default baseline registry in the EUCYS matrix')] = True, gate_profile: Annotated[Optional[str], typer.Option(help='Optional calibration gate profile id')] = None, gate_profiles_path: Annotated[Optional[Path], typer.Option(help='Optional calibration gate profiles YAML path')] = None, fail_on_gate: Annotated[bool, typer.Option(help='Exit with code 1 when any run fails the calibration gate')] = False) -> None
eucys_results(study_dir: Annotated[Path, typer.Argument(help='Root directory of a completed EUCYS or run-study bundle.')], output_dir: Annotated[Optional[Path], typer.Option(help='Optional output directory for the packaged EUCYS results bundle. Defaults to <study_dir>/EUCYS_RESULTS.')] = None) -> None
study_protocol(ctx: typer.Context, output_dir: Annotated[Path, typer.Option(help='Directory where the protocol bundle should be written')] = Path('results/study_protocol'), experiment: Annotated[Optional[Path], typer.Option(help='Optional study experiment YAML file to seed the protocol bundle')] = None, preset: Annotated[str, typer.Option(help='Protocol preset: default or eucys')] = 'default', title: Annotated[str, typer.Option(help='Protocol title')] = 'IINTS Scientific Validation Protocol', primary_hypothesis: Annotated[Optional[str], typer.Option(help='Optional override for the primary H1 hypothesis')] = None, seeds: Annotated[str, typer.Option(help='Comma-separated seed list')] = '1,2,3,4,5', algorithms: Annotated[str, typer.Option(help='Comma-separated candidate+comparison algorithms (legacy; first entry becomes the candidate)')] = 'your_algorithm', scenarios: Annotated[str, typer.Option(help='Comma-separated scenario names')] = 'baseline_day,meal_challenge,exercise_challenge,supervisor_override', profile_set: Annotated[str, typer.Option(help='Patient profile set to encode in the study protocol')] = DEFAULT_PROFILE_SET, include_default_baselines: Annotated[bool, typer.Option('--include-default-baselines/--no-include-default-baselines', help='Include the default baseline registry in the protocol bundle')] = True, extra_algorithms: Annotated[str, typer.Option(help='Comma-separated additional algorithm labels for the protocol bundle')] = '', corruption_modes: Annotated[str, typer.Option(help='Comma-separated corruption modes for the protocol plan')] = ','.join(AVAILABLE_STUDY_CORRUPTIONS), external_reference_label: Annotated[str, typer.Option(help='Label for the real-world plausibility reference')] = 'CareLink personal workbench metrics') -> None
contract_verify(contract_path: Annotated[Optional[Path], typer.Option(help='Optional YAML safety-contract file')] = None, glucose_min: Annotated[float, typer.Option(help='Minimum glucose to test (mg/dL)')] = 50.0, glucose_max: Annotated[float, typer.Option(help='Maximum glucose to test (mg/dL)')] = 160.0, glucose_step: Annotated[float, typer.Option(help='Glucose grid step (mg/dL)')] = 5.0, trend_min: Annotated[float, typer.Option(help='Minimum trend to test (mg/dL/min)')] = -5.0, trend_max: Annotated[float, typer.Option(help='Maximum trend to test (mg/dL/min)')] = 3.0, trend_step: Annotated[float, typer.Option(help='Trend grid step (mg/dL/min)')] = 0.5, proposed_doses: Annotated[str, typer.Option(help='Comma-separated proposed insulin doses (U)')] = '0.0,0.5,1.0,2.0,4.0', iob_values: Annotated[Optional[str], typer.Option(help='Optional comma-separated current IOB values (U)')] = None, output_json: Annotated[Optional[Path], typer.Option(help='Write contract verification report JSON')] = None, fail_on_violation: Annotated[bool, typer.Option(help='Exit with code 1 when any contract violation is found')] = True)
certify_run(algo: Annotated[Path, typer.Option(help='Path to the algorithm Python file')], profile: Annotated[str, typer.Option(help='Validation profile id')] = 'research_default', predictor_path: Annotated[Optional[Path], typer.Option('--predictor', help='Optional predictor checkpoint (.pt) for dual-guard forecasting')] = None, patient_config_name: Annotated[str, typer.Option(help='Name of the patient configuration')] = 'default_patient', patient_config_path: Annotated[Optional[Path], typer.Option(help='Path to a patient config YAML')] = None, scenario_path: Annotated[Optional[Path], typer.Option(help='Path to scenario JSON')] = None, duration: Annotated[int, typer.Option(help='Simulation duration in minutes')] = 720, time_step: Annotated[int, typer.Option(help='Simulation time step in minutes')] = 5, output_dir: Annotated[Path, typer.Option(help='Directory to save outputs')] = Path('results/certified_run'), seed: Annotated[Optional[int], typer.Option(help='Random seed')] = None, export_sources: Annotated[bool, typer.Option(help='Write sources_manifest.json with peer-reviewed references.')] = True, source_category: Annotated[Optional[str], typer.Option(help='Optional evidence source category filter (guideline, trial, model, ...).')] = None, write_summary: Annotated[bool, typer.Option(help='Write SUMMARY.md with key artifacts and next steps.')] = True, fail_on_check: Annotated[bool, typer.Option(help='Exit code 1 when validation profile fails')] = True)
study_ready(algo: Annotated[Path, typer.Option(help='Path to the algorithm Python file')], scenario_path: Annotated[Optional[Path], typer.Option(help='Path to scenario JSON')] = None, output_dir: Annotated[Path, typer.Option(help='Directory to save outputs')] = Path('results/study_ready'), duration: Annotated[int, typer.Option(help='Simulation duration in minutes')] = 720, time_step: Annotated[int, typer.Option(help='Simulation time step in minutes')] = 5, seed: Annotated[Optional[int], typer.Option(help='Random seed')] = None, profile: Annotated[str, typer.Option(help='Validation profile id')] = 'research_default', predictor_path: Annotated[Optional[Path], typer.Option('--predictor', help='Optional predictor checkpoint (.pt)')] = None, patient_config_name: Annotated[str, typer.Option(help='Patient configuration name')] = 'default_patient', patient_config_path: Annotated[Optional[Path], typer.Option(help='Optional patient config YAML path')] = None, fail_on_check: Annotated[bool, typer.Option(help='Exit code 1 when validation profile fails')] = True)
init(project_name: Annotated[str, typer.Option(help='Name of the project directory')] = 'my_iints_project', template: Annotated[str, typer.Option(help='Project template: research or clinical-trial')] = 'research')
quickstart(project_name: Annotated[str, typer.Option(help='Name of the project directory')] = 'iints_quickstart')
demo(demo_kind: Annotated[Optional[str], typer.Argument(help='Optional story preset: doctor, eucys, booth, live, quick, or full. Example:iints demo eucys.')] = None, output_dir: Annotated[Path, typer.Option(help='Directory where demo outputs should be written')] = Path('results/demo'), mode: Annotated[str, typer.Option('--mode', help='Demo mode: live, quick, or full')] = 'live', quick_mode: Annotated[bool, typer.Option('--quick', help='Shortcut for --mode quick')] = False, full_mode: Annotated[bool, typer.Option('--full', help='Shortcut for --mode full')] = False, presentation_mode: Annotated[bool, typer.Option('--presentation/--simulation-only', help='Default starts the full presentation demo; use --simulation-only for the old one-run starter simulation.')] = True, preset: Annotated[Optional[str], typer.Option(help='Optional preset override. Defaults to quickstart_meal for quick and realistic_reference_day for full.')] = None, seed: Annotated[int, typer.Option(help='Deterministic seed for the bundled demo')] = 42, compare_baselines: Annotated[bool, typer.Option(help='Include built-in baselines in the demo output')] = True, audience: Annotated[str, typer.Option(help='Presenter framing for the live demo: mixed, clinical, engineering, or jury.')] = 'jury', prepare_ai: Annotated[bool, typer.Option('--prepare-ai/--skip-ai', help='Prepare optional local-AI artifacts during the live demo.')] = False, build_evidence: Annotated[bool, typer.Option('--evidence/--no-evidence', help='Build a public research evidence bundle after the demo.')] = True, full_code: Annotated[bool, typer.Option('--full-code/--preview-code', help='Print the whole exported live demo script instead of the curated preview.')] = False, overwrite: Annotated[bool, typer.Option('--overwrite/--no-overwrite', help='Allow replacing previously exported live demo files.')] = True, stage_mode: Annotated[bool, typer.Option('--stage/--technical', help='Default keeps the live demo audience-safe; --technical shows more raw execution detail.')] = True, dry_run: Annotated[bool, typer.Option('--dry-run', help='Show the plan without running the demo')] = False)
start(goal: Annotated[str, typer.Option('--goal', help='What you want to do: demo, project, study, edge, or data. Aliases like pi, research, and quickstart also work.')] = 'demo', run_now: Annotated[bool, typer.Option('--run', help='Run the safe starter action for demo, project, or edge instead of only printing the plan.')] = False, output_dir: Annotated[Path, typer.Option(help='Output directory for --goal demo.')] = Path('results/demo'), project_name: Annotated[str, typer.Option(help='Project folder name for --goal project.')] = 'iints_quickstart', edge_output_dir: Annotated[Path, typer.Option(help='Edge project folder for --goal edge.')] = Path('iints_pi_demo'), board: Annotated[str, typer.Option(help='Edge board for --goal edge: raspberry_pi or uno_q.')] = 'raspberry_pi') -> None
onboard(output_dir: Annotated[Path, typer.Option(help='Root directory for the canonical onboarding outputs.')] = Path('results/onboarding'), run_safe_steps: Annotated[bool, typer.Option('--run-safe-steps', help='Run doctor, demo, import-demo, and realism-check.')] = False) -> None
guide()
new_algo(name: Annotated[str, typer.Option(help='Name of the new algorithm')], author: Annotated[str, typer.Option(help='Author of the algorithm')], output_dir: Annotated[Path, typer.Option(help='Directory to save the new algorithm file')] = Path('.'))
presets_list()
presets_show(name: Annotated[str, typer.Option(help='Preset name (e.g., baseline_t1d)')])
presets_run(name: Annotated[str, typer.Option(help='Preset name (e.g., baseline_t1d)')], algo: Annotated[Path, typer.Option(help='Path to the algorithm Python file')], predictor_path: Annotated[Optional[Path], typer.Option('--predictor', help='Optional predictor checkpoint (.pt) for dual-guard forecasting')] = None, output_dir: Annotated[Optional[Path], typer.Option(help='Directory to save outputs')] = None, compare_baselines: Annotated[bool, typer.Option(help='Run PID and standard pump baselines in the background')] = True, seed: Annotated[Optional[int], typer.Option(help='Random seed for deterministic runs')] = None, patient_model_type: Annotated[str, typer.Option('--patient-model', help='Patient model: auto, bergman, custom, simglucose')] = 'auto', sensor_profile: Annotated[Optional[str], typer.Option(help=f"Sensor artifact profile: {', '.join(sorted(SENSOR_PROFILES))}")] = None, sensor_noise_std: Annotated[Optional[float], typer.Option('--sensor-noise-std', help='CGM noise std (mg/dL)')] = None, sensor_lag_minutes: Annotated[Optional[int], typer.Option('--sensor-lag-minutes', help='CGM lag (minutes)')] = None, sensor_dropout_prob: Annotated[Optional[float], typer.Option('--sensor-dropout-prob', help='CGM dropout probability (0-1)')] = None, sensor_bias: Annotated[Optional[float], typer.Option('--sensor-bias', help='CGM bias (mg/dL)')] = None, safety_min_glucose: Annotated[Optional[float], typer.Option('--safety-min-glucose', help='Min plausible glucose (mg/dL)')] = None, safety_max_glucose: Annotated[Optional[float], typer.Option('--safety-max-glucose', help='Max plausible glucose (mg/dL)')] = None, safety_max_glucose_delta_per_5_min: Annotated[Optional[float], typer.Option('--safety-max-glucose-delta-per-5-min', help='Max glucose delta per 5 min (mg/dL)')] = None, safety_hypoglycemia_threshold: Annotated[Optional[float], typer.Option('--safety-hypo-threshold', help='Hypoglycemia threshold (mg/dL)')] = None, safety_severe_hypoglycemia_threshold: Annotated[Optional[float], typer.Option('--safety-severe-hypo-threshold', help='Severe hypoglycemia threshold (mg/dL)')] = None, safety_hyperglycemia_threshold: Annotated[Optional[float], typer.Option('--safety-hyper-threshold', help='Hyperglycemia threshold (mg/dL)')] = None, safety_max_insulin_per_bolus: Annotated[Optional[float], typer.Option('--safety-max-bolus', help='Max insulin per bolus (U)')] = None, safety_glucose_rate_alarm: Annotated[Optional[float], typer.Option('--safety-glucose-rate-alarm', help='Glucose rate alarm (mg/dL/min)')] = None, safety_max_insulin_per_hour: Annotated[Optional[float], typer.Option('--safety-max-insulin-per-hour', help='Max insulin per 60 min (U)')] = None, safety_max_iob: Annotated[Optional[float], typer.Option('--safety-max-iob', help='Max insulin on board (U)')] = None, safety_trend_stop: Annotated[Optional[float], typer.Option('--safety-trend-stop', help='Negative trend cutoff (mg/dL/min)')] = None, safety_hypo_cutoff: Annotated[Optional[float], typer.Option('--safety-hypo-cutoff', help='Hard hypo cutoff (mg/dL)')] = None, safety_critical_glucose_threshold: Annotated[Optional[float], typer.Option('--safety-critical-glucose', help='Critical glucose threshold (mg/dL)')] = None, safety_critical_glucose_duration_minutes: Annotated[Optional[int], typer.Option('--safety-critical-duration', help='Critical glucose duration (minutes)')] = None, safety_predictor_uncertainty_gate_enabled: Annotated[Optional[bool], typer.Option('--safety-predictor-uncertainty-gate', help='Enable predictor uncertainty gate')] = None, safety_predictor_uncertainty_max_std_mgdl: Annotated[Optional[float], typer.Option('--safety-predictor-max-std', help='Max allowed predictor std (mg/dL) before fallback')] = None, safety_predictor_ood_gate_enabled: Annotated[Optional[bool], typer.Option('--safety-predictor-ood-gate', help='Enable predictor OOD gate')] = None, safety_predictor_ood_zscore_threshold: Annotated[Optional[float], typer.Option('--safety-predictor-ood-z', help='Predictor OOD z-score threshold')] = None, safety_predictor_ood_max_feature_fraction: Annotated[Optional[float], typer.Option('--safety-predictor-ood-feature-fraction', help='Max fraction of features allowed OOD')] = None)
presets_create(name: Annotated[str, typer.Option(help='Preset name (snake_case)')], output_dir: Annotated[Path, typer.Option(help='Output directory for preset files')] = Path('./presets'), initial_glucose: Annotated[float, typer.Option(help='Initial glucose (mg/dL)')] = 140.0, basal_insulin_rate: Annotated[float, typer.Option(help='Basal insulin rate (U/hr)')] = 0.5, insulin_sensitivity: Annotated[float, typer.Option(help='Insulin sensitivity (mg/dL per U)')] = 50.0, carb_factor: Annotated[float, typer.Option(help='Carb factor (g per U)')] = 10.0)
run_wizard()
profiles_presets()
profiles_create(name: Annotated[str, typer.Option(help='Profile name (file stem)')], output_dir: Annotated[Path, typer.Option(help='Output directory for the profile YAML')] = Path('./patient_profiles'), preset: Annotated[Optional[str], typer.Option(help='Optional starter preset: stable-demo, stress-test, or endurance.')] = None, isf: Annotated[float, typer.Option(help='Insulin Sensitivity Factor (mg/dL per unit)')] = 50.0, icr: Annotated[float, typer.Option(help='Insulin-to-carb ratio (grams per unit)')] = 10.0, basal_rate: Annotated[float, typer.Option(help='Basal insulin rate (U/hr)')] = 0.8, initial_glucose: Annotated[float, typer.Option(help='Initial glucose (mg/dL)')] = 120.0, dawn_strength: Annotated[float, typer.Option(help='Dawn phenomenon strength (mg/dL per hour)')] = 0.0, dawn_start: Annotated[float, typer.Option(help='Dawn phenomenon start hour (0-23)')] = 4.0, dawn_end: Annotated[float, typer.Option(help='Dawn phenomenon end hour (0-24)')] = 8.0)
scenarios_generate(name: Annotated[str, typer.Option(help='Scenario name')] = 'Generated Scenario', output_path: Annotated[Path, typer.Option(help='Output JSON path')] = Path('./scenarios/generated_scenario.json'), duration_minutes: Annotated[int, typer.Option(help='Scenario duration in minutes')] = 1440, seed: Annotated[Optional[int], typer.Option(help='Random seed')] = None, meal_count: Annotated[int, typer.Option(help='Number of meal events')] = 3, meal_min_grams: Annotated[float, typer.Option(help='Min meal size (g carbs)')] = 30.0, meal_max_grams: Annotated[float, typer.Option(help='Max meal size (g carbs)')] = 80.0, exercise_count: Annotated[int, typer.Option(help='Number of exercise events')] = 0, sensor_error_count: Annotated[int, typer.Option(help='Number of sensor error events')] = 0)
scenarios_wizard()
scenarios_migrate(input_path: Annotated[Path, typer.Argument(help='Scenario JSON to migrate')], output_path: Annotated[Optional[Path], typer.Option(help='Output path (default: overwrite input)')] = None)
scenarios_export_study_pack(output_dir: Annotated[Path, typer.Option(help='Directory to write the official study pack')] = Path('scenarios/study_pack'), seeds: Annotated[str, typer.Option(help='Comma-separated seed list to include in the pack manifest')] = '1,2,3,4,5,6,7,8,9,10', preset: Annotated[str, typer.Option(help='Study-pack preset: official or eucys')] = 'official')
run(algo: Annotated[Optional[Path], typer.Option(help='Path to the algorithm Python file. Leave blank to use the built-in Clinical Baseline.')] = None, preset: Annotated[Optional[str], typer.Option(help='Optional built-in preset such as baseline_t1d. This fills the patient profile and scenario unless you override them.')] = None, predictor_path: Annotated[Optional[Path], typer.Option('--predictor', help='Optional predictor checkpoint (.pt) for dual-guard forecasting')] = None, patient_config_name: Annotated[str, typer.Option(help="Name of the patient configuration (for example 'default_patient' or 'clinic_safe_baseline')")] = 'default_patient', patient_config_path: Annotated[Optional[Path], typer.Option(help='Path to a patient config YAML (overrides --patient-config-name)')] = None, scenario_path: Annotated[Optional[Path], typer.Option('--scenario', '--scenario-path', help='Path to the scenario JSON file (for example scenarios/example_scenario.json)')] = None, duration: Annotated[int, typer.Option(help='Simulation duration in minutes')] = 720, time_step: Annotated[int, typer.Option(help='Simulation time step in minutes')] = 5, output_dir: Annotated[Optional[Path], typer.Option(help='Directory to save simulation results')] = None, compare_baselines: Annotated[bool, typer.Option(help='Run built-in baselines in the background for comparison')] = True, seed: Annotated[Optional[int], typer.Option(help='Random seed for deterministic runs')] = None, patient_model_type: Annotated[str, typer.Option('--patient-model', help='Patient model: auto, bergman, custom, simglucose')] = 'auto', sensor_profile: Annotated[Optional[str], typer.Option(help=f"Sensor artifact profile: {', '.join(sorted(SENSOR_PROFILES))}")] = None, sensor_noise_std: Annotated[Optional[float], typer.Option('--sensor-noise-std', help='CGM noise std (mg/dL)')] = None, sensor_lag_minutes: Annotated[Optional[int], typer.Option('--sensor-lag-minutes', help='CGM lag (minutes)')] = None, sensor_dropout_prob: Annotated[Optional[float], typer.Option('--sensor-dropout-prob', help='CGM dropout probability (0-1)')] = None, sensor_bias: Annotated[Optional[float], typer.Option('--sensor-bias', help='CGM bias (mg/dL)')] = None, safety_min_glucose: Annotated[Optional[float], typer.Option('--safety-min-glucose', help='Min plausible glucose (mg/dL)')] = None, safety_max_glucose: Annotated[Optional[float], typer.Option('--safety-max-glucose', help='Max plausible glucose (mg/dL)')] = None, safety_max_glucose_delta_per_5_min: Annotated[Optional[float], typer.Option('--safety-max-glucose-delta-per-5-min', help='Max glucose delta per 5 min (mg/dL)')] = None, safety_hypoglycemia_threshold: Annotated[Optional[float], typer.Option('--safety-hypo-threshold', help='Hypoglycemia threshold (mg/dL)')] = None, safety_severe_hypoglycemia_threshold: Annotated[Optional[float], typer.Option('--safety-severe-hypo-threshold', help='Severe hypoglycemia threshold (mg/dL)')] = None, safety_hyperglycemia_threshold: Annotated[Optional[float], typer.Option('--safety-hyper-threshold', help='Hyperglycemia threshold (mg/dL)')] = None, safety_max_insulin_per_bolus: Annotated[Optional[float], typer.Option('--safety-max-bolus', help='Max insulin per bolus (U)')] = None, safety_glucose_rate_alarm: Annotated[Optional[float], typer.Option('--safety-glucose-rate-alarm', help='Glucose rate alarm (mg/dL/min)')] = None, safety_max_insulin_per_hour: Annotated[Optional[float], typer.Option('--safety-max-insulin-per-hour', help='Max insulin per 60 min (U)')] = None, safety_max_iob: Annotated[Optional[float], typer.Option('--safety-max-iob', help='Max insulin on board (U)')] = None, safety_trend_stop: Annotated[Optional[float], typer.Option('--safety-trend-stop', help='Negative trend cutoff (mg/dL/min)')] = None, safety_hypo_cutoff: Annotated[Optional[float], typer.Option('--safety-hypo-cutoff', help='Hard hypo cutoff (mg/dL)')] = None, safety_critical_glucose_threshold: Annotated[Optional[float], typer.Option('--safety-critical-glucose', help='Critical glucose threshold (mg/dL)')] = None, safety_critical_glucose_duration_minutes: Annotated[Optional[int], typer.Option('--safety-critical-duration', help='Critical glucose duration (minutes)')] = None, safety_predictor_uncertainty_gate_enabled: Annotated[Optional[bool], typer.Option('--safety-predictor-uncertainty-gate', help='Enable predictor uncertainty gate')] = None, safety_predictor_uncertainty_max_std_mgdl: Annotated[Optional[float], typer.Option('--safety-predictor-max-std', help='Max allowed predictor std (mg/dL) before fallback')] = None, safety_predictor_ood_gate_enabled: Annotated[Optional[bool], typer.Option('--safety-predictor-ood-gate', help='Enable predictor OOD gate')] = None, safety_predictor_ood_zscore_threshold: Annotated[Optional[float], typer.Option('--safety-predictor-ood-z', help='Predictor OOD z-score threshold')] = None, safety_predictor_ood_max_feature_fraction: Annotated[Optional[float], typer.Option('--safety-predictor-ood-feature-fraction', help='Max fraction of features allowed OOD')] = None, wizard: Annotated[bool, typer.Option('--wizard', help='Ask a few questions and build the run interactively')] = False, dry_run: Annotated[bool, typer.Option('--dry-run', help='Validate the setup and print the run plan without executing the simulation')] = False)
run_full(algo: Annotated[Path, typer.Option(help='Path to the algorithm Python file')], predictor_path: Annotated[Optional[Path], typer.Option('--predictor', help='Optional predictor checkpoint (.pt) for dual-guard forecasting')] = None, patient_config_name: Annotated[str, typer.Option(help="Name of the patient configuration (e.g., 'default_patient')")] = 'default_patient', patient_config_path: Annotated[Optional[Path], typer.Option(help='Path to a patient config YAML (overrides --patient-config-name)')] = None, scenario_path: Annotated[Optional[Path], typer.Option(help='Path to the scenario JSON file')] = None, duration: Annotated[int, typer.Option(help='Simulation duration in minutes')] = 720, time_step: Annotated[int, typer.Option(help='Simulation time step in minutes')] = 5, output_dir: Annotated[Optional[Path], typer.Option(help='Directory to save results + audit + report')] = None, seed: Annotated[Optional[int], typer.Option(help='Random seed for deterministic runs')] = None, safety_min_glucose: Annotated[Optional[float], typer.Option('--safety-min-glucose', help='Min plausible glucose (mg/dL)')] = None, safety_max_glucose: Annotated[Optional[float], typer.Option('--safety-max-glucose', help='Max plausible glucose (mg/dL)')] = None, safety_max_glucose_delta_per_5_min: Annotated[Optional[float], typer.Option('--safety-max-glucose-delta-per-5-min', help='Max glucose delta per 5 min (mg/dL)')] = None, safety_hypoglycemia_threshold: Annotated[Optional[float], typer.Option('--safety-hypo-threshold', help='Hypoglycemia threshold (mg/dL)')] = None, safety_severe_hypoglycemia_threshold: Annotated[Optional[float], typer.Option('--safety-severe-hypo-threshold', help='Severe hypoglycemia threshold (mg/dL)')] = None, safety_hyperglycemia_threshold: Annotated[Optional[float], typer.Option('--safety-hyper-threshold', help='Hyperglycemia threshold (mg/dL)')] = None, safety_max_insulin_per_bolus: Annotated[Optional[float], typer.Option('--safety-max-bolus', help='Max insulin per bolus (U)')] = None, safety_glucose_rate_alarm: Annotated[Optional[float], typer.Option('--safety-glucose-rate-alarm', help='Glucose rate alarm (mg/dL/min)')] = None, safety_max_insulin_per_hour: Annotated[Optional[float], typer.Option('--safety-max-insulin-per-hour', help='Max insulin per 60 min (U)')] = None, safety_max_iob: Annotated[Optional[float], typer.Option('--safety-max-iob', help='Max insulin on board (U)')] = None, safety_trend_stop: Annotated[Optional[float], typer.Option('--safety-trend-stop', help='Negative trend cutoff (mg/dL/min)')] = None, safety_hypo_cutoff: Annotated[Optional[float], typer.Option('--safety-hypo-cutoff', help='Hard hypo cutoff (mg/dL)')] = None, safety_critical_glucose_threshold: Annotated[Optional[float], typer.Option('--safety-critical-glucose', help='Critical glucose threshold (mg/dL)')] = None, safety_critical_glucose_duration_minutes: Annotated[Optional[int], typer.Option('--safety-critical-duration', help='Critical glucose duration (minutes)')] = None, safety_predictor_uncertainty_gate_enabled: Annotated[Optional[bool], typer.Option('--safety-predictor-uncertainty-gate', help='Enable predictor uncertainty gate')] = None, safety_predictor_uncertainty_max_std_mgdl: Annotated[Optional[float], typer.Option('--safety-predictor-max-std', help='Max allowed predictor std (mg/dL) before fallback')] = None, safety_predictor_ood_gate_enabled: Annotated[Optional[bool], typer.Option('--safety-predictor-ood-gate', help='Enable predictor OOD gate')] = None, safety_predictor_ood_zscore_threshold: Annotated[Optional[float], typer.Option('--safety-predictor-ood-z', help='Predictor OOD z-score threshold')] = None, safety_predictor_ood_max_feature_fraction: Annotated[Optional[float], typer.Option('--safety-predictor-ood-feature-fraction', help='Max fraction of features allowed OOD')] = None)
run_parallel(algo: Annotated[Path, typer.Option(help='Path to the algorithm Python file')], predictor_path: Annotated[Optional[Path], typer.Option('--predictor', help='Optional predictor checkpoint (.pt) for dual-guard forecasting')] = None, scenarios_dir: Annotated[Optional[Path], typer.Option(help='Directory with scenario JSON files')] = None, scenario_paths: Annotated[List[Path], typer.Option('--scenario-path', help='Scenario JSON path (repeatable)')] = [], patient_config_name: Annotated[str, typer.Option(help='Patient config name')] = 'default_patient', patient_config_path: Annotated[Optional[Path], typer.Option(help='Patient config YAML path')] = None, patient_configs_dir: Annotated[Optional[Path], typer.Option(help='Directory of patient YAML configs')] = None, duration: Annotated[int, typer.Option(help='Simulation duration in minutes')] = 720, time_step: Annotated[int, typer.Option(help='Simulation time step in minutes')] = 5, output_dir: Annotated[Path, typer.Option(help='Root directory for batch outputs')] = Path('./results/batch'), max_workers: Annotated[Optional[int], typer.Option(help='Max parallel workers')] = None, seed: Annotated[Optional[int], typer.Option(help='Base seed for deterministic runs')] = None, compare_baselines: Annotated[bool, typer.Option(help='Run PID + standard pump baselines')] = False, export_audit: Annotated[bool, typer.Option(help='Export audit trails')] = False, generate_report: Annotated[bool, typer.Option(help='Generate PDF reports')] = False, safety_min_glucose: Annotated[Optional[float], typer.Option('--safety-min-glucose')] = None, safety_max_glucose: Annotated[Optional[float], typer.Option('--safety-max-glucose')] = None, safety_max_glucose_delta_per_5_min: Annotated[Optional[float], typer.Option('--safety-max-glucose-delta-per-5-min')] = None, safety_hypoglycemia_threshold: Annotated[Optional[float], typer.Option('--safety-hypo-threshold')] = None, safety_severe_hypoglycemia_threshold: Annotated[Optional[float], typer.Option('--safety-severe-hypo-threshold')] = None, safety_hyperglycemia_threshold: Annotated[Optional[float], typer.Option('--safety-hyper-threshold')] = None, safety_max_insulin_per_bolus: Annotated[Optional[float], typer.Option('--safety-max-bolus')] = None, safety_glucose_rate_alarm: Annotated[Optional[float], typer.Option('--safety-glucose-rate-alarm')] = None, safety_max_insulin_per_hour: Annotated[Optional[float], typer.Option('--safety-max-insulin-per-hour')] = None, safety_max_iob: Annotated[Optional[float], typer.Option('--safety-max-iob')] = None, safety_trend_stop: Annotated[Optional[float], typer.Option('--safety-trend-stop')] = None, safety_hypo_cutoff: Annotated[Optional[float], typer.Option('--safety-hypo-cutoff')] = None, safety_critical_glucose_threshold: Annotated[Optional[float], typer.Option('--safety-critical-glucose')] = None, safety_critical_glucose_duration_minutes: Annotated[Optional[int], typer.Option('--safety-critical-duration')] = None, safety_predictor_uncertainty_gate_enabled: Annotated[Optional[bool], typer.Option('--safety-predictor-uncertainty-gate')] = None, safety_predictor_uncertainty_max_std_mgdl: Annotated[Optional[float], typer.Option('--safety-predictor-max-std')] = None, safety_predictor_ood_gate_enabled: Annotated[Optional[bool], typer.Option('--safety-predictor-ood-gate')] = None, safety_predictor_ood_zscore_threshold: Annotated[Optional[float], typer.Option('--safety-predictor-ood-z')] = None, safety_predictor_ood_max_feature_fraction: Annotated[Optional[float], typer.Option('--safety-predictor-ood-feature-fraction')] = None)
scorecard(algo: Annotated[Path, typer.Option(help='Path to the algorithm Python file')], profile: Annotated[str, typer.Option(help='Validation profile id')] = 'research_default', predictor_path: Annotated[Optional[Path], typer.Option('--predictor', help='Optional predictor checkpoint (.pt)')] = None, presets_csv: Annotated[Optional[str], typer.Option(help='Comma-separated preset names (default: all bundled presets)')] = None, output_dir: Annotated[Path, typer.Option(help='Output directory for scorecard artifacts')] = Path('results/scorecard'), seed: Annotated[Optional[int], typer.Option(help='Base random seed')] = 42)
poster(run_dir: Annotated[List[Path], typer.Option('--run-dir', help='Run bundle directory containing results.csv. Repeat up to three times.')] = [], label: Annotated[List[str], typer.Option('--label', help='Optional poster label aligned to each --run-dir (for example: Normal Run, Meal Stress Test, Supervisor Override).')] = [], output_path: Annotated[Path, typer.Option(help='PNG output path for the poster graphic.')] = Path('./results/posters/iints_results_poster.png'), summary_output_path: Annotated[Optional[Path], typer.Option(help='Optional JSON sidecar summary path.')] = None, title: Annotated[str, typer.Option(help='Main poster headline.')] = '288 Decisions. Every Day. We Test Them All.', subtitle: Annotated[str, typer.Option(help='Supporting poster subtitle.')] = 'Three IINTS-AF scenarios showing control, stress handling, and supervisor protection.', results_root: Annotated[Path, typer.Option(help='Root folder used when no --run-dir values are supplied.')] = Path('./results'))
demo_booth(output_dir: Annotated[Path, typer.Option(help='Directory where the fair-ready demo bundle should be written.')] = Path('./results/booth_demo'), duration: Annotated[int, typer.Option(help='Simulation duration in minutes for each booth scenario.')] = 360, time_step: Annotated[int, typer.Option(help='Simulation step size in minutes.')] = 5, seed: Annotated[int, typer.Option(help='Deterministic random seed.')] = 42, prepare_ai: Annotated[bool, typer.Option('--prepare-ai/--no-prepare-ai', help='Prepare AI-ready artifacts for the Supervisor Override run.')] = True) -> None
demo_export(output_dir: Annotated[Path, typer.Option(help='Directory where the bundled live stage demo files should be written.')] = Path('./iints_demo'), overwrite: Annotated[bool, typer.Option('--overwrite/--no-overwrite', help='Allow overwriting exported demo files.')] = False) -> None
demo_live(output_dir: Annotated[Path, typer.Option(help='Root directory for the exported code and generated live-demo results.')] = Path('./results/live_demo'), run_demo: Annotated[bool, typer.Option('--run/--no-run', help='Run the exported demo after showing the code preview.')] = True, prepare_ai: Annotated[bool, typer.Option('--prepare-ai/--skip-ai', help='Prepare optional local-AI artifacts during the demo run.')] = False, full_code: Annotated[bool, typer.Option('--full-code/--preview-code', help='Print the whole exported script instead of the curated preview.')] = False, overwrite: Annotated[bool, typer.Option('--overwrite/--no-overwrite', help='Allow replacing previously exported demo code files.')] = True, audience: Annotated[str, typer.Option('--audience', help='Presenter framing: mixed, clinical, engineering, or jury. Aliases like doctor and engineer also work.')] = 'mixed', stage_mode: Annotated[bool, typer.Option('--stage/--technical', help='Stage mode hides noisy subprocess logs and prints a clean audience-facing flow.')] = True, build_evidence: Annotated[bool, typer.Option('--evidence/--no-evidence', help='Build a public research evidence bundle after the live run.')] = True, story_mode: Annotated[str, typer.Option('--story', help='Demo story layer: sdk, doctor, eucys, or booth. Positional shortcuts also work viaiints demo doctor.')] = 'sdk') -> None
report(results_csv: Annotated[Path, typer.Option(help='Path to a simulation results CSV')], output_path: Annotated[Path, typer.Option(help='Output PDF path')] = Path('./results/clinical_report.pdf'), safety_report_path: Annotated[Optional[Path], typer.Option(help='Optional safety report JSON path')] = None, audit_output_dir: Annotated[Optional[Path], typer.Option(help='Optional audit output directory')] = None, bundle_dir: Annotated[Optional[Path], typer.Option(help='If set, write PDF + plots + audit into this folder')] = None, style: Annotated[str, typer.Option(help='Report style: standard or agp')] = 'standard', subject_name: Annotated[str, typer.Option(help='Subject/run label shown on AGP-style reports')] = 'Research simulation', summary_json_path: Annotated[Optional[Path], typer.Option(help='Optional AGP summary JSON output path')] = None, agp_png: Annotated[bool, typer.Option('--png/--no-png', help='For AGP reports, export agp_profile.png and daily_profiles.png.')] = False, agp_svg: Annotated[bool, typer.Option('--svg/--no-svg', help='For AGP reports, export vector SVG assets alongside PNG assets.')] = True)
safety_visualize(results_csv: Annotated[Path, typer.Option(help='Path to a simulation results CSV')], output_html: Annotated[Path, typer.Option(help='Output standalone HTML visualizer path')] = Path('./results/safety_visualizer.html'), output_json: Annotated[Optional[Path], typer.Option(help='Optional machine-readable JSON summary path')] = None, safety_report_path: Annotated[Optional[Path], typer.Option(help='Optional safety report JSON path')] = None, title: Annotated[str, typer.Option(help='HTML page title')] = 'IINTS Safety Contract Visualizer') -> None
validate(scenario_path: Annotated[Path, typer.Option(help='Path to a scenario JSON file')], patient_config_path: Annotated[Optional[Path], typer.Option(help='Optional patient config YAML to validate')] = None)
data_list()
data_info(dataset_id: Annotated[str, typer.Argument(help='Dataset id (seeiints data list)')])
data_cite(dataset_id: Annotated[str, typer.Argument(help='Dataset id (seeiints data list)')])
data_fetch(dataset_id: Annotated[str, typer.Argument(help='Dataset id (seeiints data list)')], output_dir: Annotated[Optional[Path], typer.Option(help='Output directory (default: data_packs/official/<id>)')] = None, extract: Annotated[bool, typer.Option(help='Extract zip files if present')] = True, verify: Annotated[bool, typer.Option(help='Verify pinned SHA-256 hashes and emit SHA256SUMS.txt. Public sources without published hashes now require --no-verify.')] = True)
data_research_plan(output_dir: Annotated[Path, typer.Option(help='Output folder for the dataset acquisition plan and source matrix.')] = Path('data_packs/research_dataset_plan'), dataset: Annotated[List[str], typer.Option('--dataset', help='Optional dataset id to include. Repeat for a custom subset; default includes the full curated IINTS research list.')] = []) -> None
data_contract_template(output_path: Annotated[Path, typer.Option(help='Where to write the starter contract YAML')] = Path('data_contract.yaml'))
data_certify_template(output_path: Annotated[Path, typer.Option(help='Where to write the starter certification contract YAML')] = Path('data_contract.yaml'))
data_contract_run(contract_path: Annotated[Path, typer.Argument(help='Path to contract YAML')], input_csv: Annotated[Path, typer.Argument(help='Path to input CSV')], output_json: Annotated[Optional[Path], typer.Option(help='Optional output report JSON path')] = None, apply_builtin_transforms: Annotated[bool, typer.Option(help='Apply built-in unit conversion transforms from the contract')] = True, fail_on_noncompliant: Annotated[bool, typer.Option(help='Exit code 1 when compliance checks fail')] = False, min_mdmp_grade: Annotated[Optional[str], typer.Option(help='Optional MDMP grade gate (draft, research_grade, clinical_grade)')] = None)
data_certify(contract_path: Annotated[Path, typer.Argument(help='Path to certification contract YAML')], input_csv: Annotated[Path, typer.Argument(help='Path to input CSV')], output_json: Annotated[Optional[Path], typer.Option(help='Optional output report JSON path')] = None, apply_builtin_transforms: Annotated[bool, typer.Option(help='Apply built-in unit conversion transforms from the contract')] = True, fail_on_noncompliant: Annotated[bool, typer.Option(help='Exit code 1 when compliance checks fail')] = False, min_mdmp_grade: Annotated[Optional[str], typer.Option(help='Optional certification grade gate (draft, research_grade, clinical_grade, ai_ready)')] = None)
data_eu_ai_pact_review(report_json: Annotated[Path, typer.Argument(help='Path to an MDMP/data certification JSON report')], output_json: Annotated[Optional[Path], typer.Option(help='Optional output governance review JSON path')] = None, strict: Annotated[bool, typer.Option('--strict/--core-only', help='Strict checks include high-risk readiness controls; core-only checks the three AI Pact core themes.')] = True, fail_on_blocked: Annotated[bool, typer.Option(help='Exit code 1 when the governance review is blocked')] = False)
data_realism_check(input_csv: Annotated[Path, typer.Argument(help='Path to CSV in generic/dexcom/libre/carelink format')], output_json: Annotated[Optional[Path], typer.Option(help='Optional output report JSON path')] = None, output_html: Annotated[Optional[Path], typer.Option(help='Optional output dashboard HTML path')] = None, data_format: Annotated[str, typer.Option(help='Data format preset: generic, dexcom, libre, carelink')] = 'generic', time_unit: Annotated[str, typer.Option(help='Timestamp unit for numeric timestamps: minutes or seconds')] = 'minutes', expected_interval_minutes: Annotated[int, typer.Option(help='Expected reading interval in minutes')] = 5, min_meal_grams: Annotated[float, typer.Option(help='Minimum carbs (g) that count as a meal event')] = 10.0, reference: Annotated[Optional[str], typer.Option(help='Optional realism reference profile or dataset id (for example free_living_t1d, azt1d, hupa_ucm).')] = None, min_realism_verdict: Annotated[Optional[str], typer.Option(help='Optional gate: likely_realistic or needs_review. Exit code 1 if the report is worse.')] = None, strict_real_data_gate: Annotated[bool, typer.Option('--strict-real-data-gate/--no-strict-real-data-gate', help='Apply the stricter evidence-readiness gate for real-data/local-AI use.')] = False, mapping: Annotated[List[str], typer.Option('--map', help='Column mapping key=value (e.g., timestamp=Time, glucose=SGV)')] = [])
data_mdmp_visualizer(report_json: Annotated[Path, typer.Argument(help='Path to contract-run JSON report')], output_html: Annotated[Path, typer.Option(help='Output HTML path')] = Path('results/mdmp_dashboard.html'), title: Annotated[str, typer.Option(help='Dashboard title')] = 'IINTS MDMP Certification Dashboard')
data_certify_visualizer(report_json: Annotated[Path, typer.Argument(help='Path to certification report JSON')], output_html: Annotated[Path, typer.Option(help='Output HTML path')] = Path('results/mdmp_dashboard.html'), title: Annotated[str, typer.Option(help='Dashboard title')] = 'IINTS Data Certification Dashboard')
data_corrupt_for_study(input_csv: Annotated[Path, typer.Argument(help='Source CSV that will be deliberately corrupted for ablation studies')], output_csv: Annotated[Path, typer.Option(help='Output CSV path for the corrupted dataset')] = Path('results/corrupted_study.csv'), mode: Annotated[List[str], typer.Option('--mode', help='Corruption mode to apply. Repeat --mode for multiple operators.')] = ['timestamp_shift'], manifest_output: Annotated[Optional[Path], typer.Option(help='Optional corruption manifest JSON path')] = None, seed: Annotated[int, typer.Option(help='Random seed for deterministic corruption')] = 42, timestamp_shift_minutes: Annotated[int, typer.Option(help='Minutes to shift timestamps for the timestamp_shift mode')] = 60, missing_fraction: Annotated[float, typer.Option(help='Fraction of rows to remove for missing_block')] = 0.1, duplicate_fraction: Annotated[float, typer.Option(help='Fraction of rows to duplicate for duplicate_rows')] = 0.05, spike_fraction: Annotated[float, typer.Option(help='Fraction of glucose rows to spike for glucose_spikes')] = 0.03, spike_magnitude_mgdl: Annotated[float, typer.Option(help='Spike magnitude in mg/dL for glucose_spikes')] = 60.0) -> None
data_synthetic_mirror(input_csv: Annotated[Path, typer.Argument(help='Source CSV (validated real dataset)')], contract_path: Annotated[Path, typer.Argument(help='Contract YAML path used as schema/range guard')], output_csv: Annotated[Path, typer.Option(help='Output synthetic CSV path')] = Path('data/synthetic_mirror.csv'), output_json: Annotated[Optional[Path], typer.Option(help='Optional synthetic mirror report JSON')] = Path('results/synthetic_mirror_report.json'), rows: Annotated[Optional[int], typer.Option(help='Optional number of rows to generate')] = None, seed: Annotated[int, typer.Option(help='Random seed for deterministic synthesis')] = 42, noise_scale: Annotated[float, typer.Option(help='Numeric perturbation scale as fraction of source std-dev')] = 0.05, min_mdmp_grade: Annotated[Optional[str], typer.Option(help='Optional MDMP grade gate for generated synthetic dataset')] = 'research_grade', fail_on_noncompliant: Annotated[bool, typer.Option(help='Exit code 1 when generated dataset fails compliance')] = True)
mdmp_template(output_path: Annotated[Path, typer.Option(help='Where to write the MDMP contract YAML')] = Path('mdmp_contract.yaml'))
mdmp_validate(contract_path: Annotated[Path, typer.Argument(help='Path to MDMP contract YAML')], input_csv: Annotated[Path, typer.Argument(help='Path to input CSV')], output_json: Annotated[Optional[Path], typer.Option(help='Optional output report JSON path')] = None, apply_builtin_transforms: Annotated[bool, typer.Option(help='Apply built-in unit conversion transforms (default: off for explicit MDMP operation)')] = False, fail_on_noncompliant: Annotated[bool, typer.Option(help='Exit code 1 when compliance checks fail')] = False, min_mdmp_grade: Annotated[Optional[str], typer.Option(help='Optional MDMP grade gate (draft, research_grade, clinical_grade)')] = None)
mdmp_visualizer(report_json: Annotated[Path, typer.Argument(help='Path to MDMP validation report JSON')], output_html: Annotated[Path, typer.Option(help='Output HTML path')] = Path('results/mdmp_dashboard.html'), title: Annotated[str, typer.Option(help='Dashboard title')] = 'IINTS MDMP Certification Dashboard')
mdmp_synthetic_mirror(input_csv: Annotated[Path, typer.Argument(help='Source CSV')], contract_path: Annotated[Path, typer.Argument(help='MDMP contract YAML')], output_csv: Annotated[Path, typer.Option(help='Output synthetic CSV path')] = Path('data/synthetic_mirror.csv'), output_json: Annotated[Optional[Path], typer.Option(help='Optional synthetic mirror report JSON')] = Path('results/synthetic_mirror_report.json'), rows: Annotated[Optional[int], typer.Option(help='Optional number of rows to generate')] = None, seed: Annotated[int, typer.Option(help='Random seed')] = 42, noise_scale: Annotated[float, typer.Option(help='Numeric perturbation scale')] = 0.05, min_mdmp_grade: Annotated[Optional[str], typer.Option(help='Optional MDMP grade gate')] = 'research_grade', fail_on_noncompliant: Annotated[bool, typer.Option(help='Exit code 1 when generated dataset fails compliance')] = True)
sources(category: Annotated[Optional[str], typer.Option(help='Filter by source category (guideline, trial, model, dataset, ...).')] = None, output_json: Annotated[Optional[Path], typer.Option(help='Optional JSON output path.')] = None)
research_prepare_azt1d(input_dir: Annotated[Path, typer.Option(help='Root directory containing AZT1D Subject folders')] = Path('data_packs/public/azt1d/AZT1D 2025/CGM Records'), output: Annotated[Path, typer.Option(help='Output dataset path (CSV or Parquet)')] = Path('data_packs/public/azt1d/processed/azt1d_merged.csv'), report: Annotated[Path, typer.Option(help='Quality report output path')] = Path('data_packs/public/azt1d/quality_report.json'), time_step: Annotated[int, typer.Option(help='Expected CGM sample interval (minutes)')] = 5, max_gap_multiplier: Annotated[float, typer.Option(help='Segment-break gap multiplier')] = 2.5, dia_minutes: Annotated[float, typer.Option(help='Insulin action duration (minutes)')] = 240.0, peak_minutes: Annotated[float, typer.Option(help='IOB peak time (minutes, OpenAPS bilinear)')] = 75.0, carb_absorb_minutes: Annotated[float, typer.Option(help='Carb absorption duration (minutes)')] = 120.0, max_basal: Annotated[float, typer.Option(help='Clip basal values above this (U/hr)')] = 20.0, max_bolus: Annotated[float, typer.Option(help='Clip bolus values above this (U)')] = 30.0, max_carbs: Annotated[float, typer.Option(help='Clip carb grams above this')] = 200.0, basal_is_rate: Annotated[bool, typer.Option(help='Treat Basal column as U/hr (convert to U/step)')] = True)
research_prepare_ohio(input_dir: Annotated[Path, typer.Option(help='Local OhioT1DM root containing 2018/2020 train/test XML folders. Do not commit this folder.')] = Path('OhioT1DM-volledig'), output: Annotated[Path, typer.Option(help='Output dataset path (CSV or Parquet)')] = Path('data_packs/public/ohio_t1dm_full/processed/ohio_train.csv'), report: Annotated[Path, typer.Option(help='Quality report output path')] = Path('data_packs/public/ohio_t1dm_full/processed/ohio_train_quality_report.json'), years: Annotated[str, typer.Option(help='Comma-separated years to include, e.g. 2018,2020')] = '2018,2020', splits: Annotated[str, typer.Option(help='Comma-separated Ohio splits to include: train,test')] = 'train', time_step: Annotated[int, typer.Option(help='Expected CGM sample interval (minutes)')] = 5, max_gap_multiplier: Annotated[float, typer.Option(help='Segment-break gap multiplier')] = 2.5, dia_minutes: Annotated[float, typer.Option(help='Insulin action duration (minutes)')] = 240.0, peak_minutes: Annotated[float, typer.Option(help='IOB peak time (minutes, OpenAPS bilinear)')] = 75.0, carb_absorb_minutes: Annotated[float, typer.Option(help='Carb absorption duration (minutes)')] = 120.0, max_basal: Annotated[float, typer.Option(help='Clip basal values above this (U/hr)')] = 20.0, max_bolus: Annotated[float, typer.Option(help='Clip bolus insulin units above this')] = 30.0, max_carbs: Annotated[float, typer.Option(help='Clip carb grams above this')] = 200.0, icr_default: Annotated[float, typer.Option(help='Fallback ICR (g/U)')] = 10.0, isf_default: Annotated[float, typer.Option(help='Fallback ISF (mg/dL per U)')] = 50.0, filter_meals_without_rise: Annotated[bool, typer.Option('--filter-meals-without-rise/--keep-all-meals', help='Filter meal events that do not show a post-meal glucose rise.')] = True, meal_rise_threshold: Annotated[float, typer.Option(help='Minimum post-meal glucose rise to keep a meal event.')] = 10.0, meal_pre_window: Annotated[float, typer.Option(help='Minutes before meal used for baseline glucose.')] = 10.0, meal_post_window: Annotated[float, typer.Option(help='Minutes after meal used for rise detection.')] = 90.0)
research_prepare_hupa(input_dir: Annotated[Path, typer.Option(help='Root directory containing HUPA-UCM CSV files')] = Path('data_packs/public/hupa_ucm'), output: Annotated[Path, typer.Option(help='Output dataset path (CSV or Parquet)')] = Path('data_packs/public/hupa_ucm/processed/hupa_ucm_merged.csv'), report: Annotated[Path, typer.Option(help='Quality report output path')] = Path('data_packs/public/hupa_ucm/quality_report.json'), time_step: Annotated[int, typer.Option(help='Expected CGM sample interval (minutes)')] = 5, max_gap_multiplier: Annotated[float, typer.Option(help='Segment-break gap multiplier')] = 2.5, dia_minutes: Annotated[float, typer.Option(help='Insulin action duration (minutes)')] = 240.0, peak_minutes: Annotated[float, typer.Option(help='IOB peak time (minutes, OpenAPS bilinear)')] = 75.0, carb_absorb_minutes: Annotated[float, typer.Option(help='Carb absorption duration (minutes)')] = 120.0, max_insulin: Annotated[float, typer.Option(help='Clip insulin units above this')] = 30.0, max_carbs: Annotated[float, typer.Option(help='Clip carb grams above this')] = 200.0, carb_serving_grams: Annotated[float, typer.Option(help='Carb serving size (g) for carb_input')] = 10.0, basal_is_rate: Annotated[bool, typer.Option(help='Treat basal_rate as U/hr (convert to U/step)')] = False, icr_default: Annotated[float, typer.Option(help='Fallback ICR (g/U)')] = 10.0, isf_default: Annotated[float, typer.Option(help='Fallback ISF (mg/dL per U)')] = 50.0, basal_default: Annotated[float, typer.Option(help='Fallback basal rate (U/hr)')] = 0.0, meal_window_min: Annotated[float, typer.Option(help='Meal→insulin matching window (minutes)')] = 30.0, isf_window_min: Annotated[float, typer.Option(help='ISF estimation window (minutes)')] = 60.0, min_meal_carbs: Annotated[float, typer.Option(help='Minimum carbs to consider a meal (g)')] = 5.0, min_bolus: Annotated[float, typer.Option(help='Minimum insulin to consider a bolus (U)')] = 0.1)
research_quality(report: Annotated[Path, typer.Option(help='Path to quality_report.json produced by prepare-azt1d')] = Path('data_packs/public/azt1d/quality_report.json'))
research_blend_datasets(source: Annotated[List[str], typer.Option('--source', help='Repeatable dataset source in label=path form, for example azt1d=data/azt1d.csv.')], output: Annotated[Path, typer.Option(help='Output blended predictor dataset path')] = Path('data_packs/processed/predictor_blend.csv'), manifest: Annotated[Path, typer.Option(help='Output blend manifest JSON path')] = Path('data_packs/processed/predictor_blend_manifest.json')) -> None
research_build_control_dataset(run: Annotated[List[str], typer.Option('--run', help='Repeatable run input in label=path form; path may contain raw/steps.csv or results.csv.')], output: Annotated[Path, typer.Option(help='Output controller teacher dataset CSV')] = Path('data_packs/processed/controller_teacher_dataset.csv'), manifest: Annotated[Path, typer.Option(help='Output controller dataset manifest JSON')] = Path('data_packs/processed/controller_teacher_manifest.json')) -> None
research_train_controller(data: Annotated[Path, typer.Option(help='Controller teacher dataset CSV')], output: Annotated[Path, typer.Option(help='Output local controller JSON')] = Path('models/controller_imitation.json'), metrics_output: Annotated[Path, typer.Option(help='Output training metrics JSON')] = Path('models/controller_imitation_metrics.json'), ridge_lambda: Annotated[float, typer.Option(help='Ridge regularization strength')] = 0.001) -> None
research_train_neural_controller(data: Annotated[Path, typer.Option(help='Controller teacher dataset CSV')], output: Annotated[Path, typer.Option(help='Output neural controller checkpoint')] = Path('models/controller_neural.pt'), metrics_output: Annotated[Path, typer.Option(help='Output neural controller metrics JSON')] = Path('models/controller_neural_metrics.json'), epochs: Annotated[int, typer.Option(help='Training epochs')] = 120, hidden_size: Annotated[List[int], typer.Option('--hidden-size', help='Repeatable hidden layer size, for example --hidden-size 64.')] = []) -> None
research_evaluate_controller(model: Annotated[Path, typer.Option(help='Controller model path')], model_kind: Annotated[str, typer.Option(help='Controller type: linear or neural')] = 'linear', output_dir: Annotated[Path, typer.Option(help='Output evaluation directory')] = Path('results/controller_evaluation'), preset: Annotated[List[str], typer.Option('--preset', help='Repeatable held-out preset name.')] = [], seed: Annotated[List[int], typer.Option('--seed', help='Repeatable evaluation seed.')] = [], duration_minutes: Annotated[int, typer.Option(help='Duration per closed-loop run in minutes')] = 1440) -> None
research_local_ai_lab(run: Annotated[List[str], typer.Option('--run', help='Repeatable run input in label=path form; path may contain a Jetson endurance bundle.')], output_dir: Annotated[Path, typer.Option(help='Output directory for datasets, models, and reports')] = Path('results/local_ai_lab'), train_predictor: Annotated[bool, typer.Option('--train-predictor/--skip-predictor', help='Train the local glucose predictor from the generated predictor dataset.')] = True, train_neural: Annotated[bool, typer.Option('--train-neural/--skip-neural', help='Train the PyTorch controller in addition to the auditable linear controller.')] = True, evaluate: Annotated[bool, typer.Option('--evaluate/--skip-evaluation', help='Run held-out closed-loop evaluation after training.')] = True, predictor_config: Annotated[Optional[Path], typer.Option(help='Optional predictor config YAML. Defaults to research/configs/predictor.yaml.')] = None, duration_minutes: Annotated[int, typer.Option(help='Duration per held-out controller-evaluation run.')] = 1440)
manage_results(root: Annotated[Path, typer.Option('--root', help='Results root to index. Use this when your results folder starts getting too large.')] = Path('results'), output_dir: Annotated[Optional[Path], typer.Option('--output-dir', help='Index output directory. Defaults to <root>/_iints_results_index.')] = None, include_raw: Annotated[bool, typer.Option('--include-raw/--metadata-only', help='Also concatenate every results.csv into all_results_long.csv. This can become large.')] = False) -> None
research_results_index(root: Annotated[Path, typer.Option('--root', help='Results root to index. Defaults to the normal ./results folder.')] = Path('results'), output_dir: Annotated[Optional[Path], typer.Option('--output-dir', help='Index output directory. Defaults to <root>/_iints_results_index.')] = None, include_raw: Annotated[bool, typer.Option('--include-raw/--metadata-only', help='Also concatenate every results.csv into all_results_long.csv. This can become large.')] = False) -> None
research_export_onnx(model: Annotated[Path, typer.Option(help='Predictor checkpoint (.pt)')] = Path('models/hupa_finetuned_v2/predictor.pt'), out: Annotated[Path, typer.Option(help='Output ONNX file path')] = Path('models/predictor.onnx'))
research_audit_split(data: Annotated[Path, typer.Option(help='Prepared dataset path (CSV/Parquet)')], history_steps: Annotated[int, typer.Option(help='History window length')] = 48, horizon_steps: Annotated[int, typer.Option(help='Forecast horizon length')] = 6, feature_columns_csv: Annotated[str, typer.Option(help='Comma-separated feature columns')] = 'glucose_actual_mgdl,patient_iob_units,patient_cob_grams,effective_isf,effective_icr,effective_basal_rate_u_per_hr,glucose_trend_mgdl_min', target_column: Annotated[str, typer.Option(help='Target column')] = 'glucose_actual_mgdl', subject_column: Annotated[str, typer.Option(help='Subject ID column')] = 'subject_id', segment_column: Annotated[Optional[str], typer.Option(help='Segment column (optional)')] = 'segment_id', output_json: Annotated[Optional[Path], typer.Option(help='Write audit report JSON')] = None)
research_evaluate_forecast(input_csv: Annotated[Path, typer.Option(help='CSV with observed/predicted columns')], observed_column: Annotated[str, typer.Option(help='Observed glucose column')] = 'glucose_actual_mgdl', predicted_column: Annotated[str, typer.Option(help='Predicted glucose column')] = 'predicted_glucose_ai_30min', predicted_std_column: Annotated[Optional[str], typer.Option(help='Optional prediction std column')] = 'predictor_uncertainty_std_mgdl', gate_profile: Annotated[Optional[str], typer.Option(help='Optional calibration gate profile id')] = None, gate_profiles_path: Annotated[Optional[Path], typer.Option(help='Optional calibration gate profiles YAML path')] = None, fail_on_gate: Annotated[bool, typer.Option(help='Exit code 1 when calibration gate fails')] = False, output_json: Annotated[Optional[Path], typer.Option(help='Write metrics JSON')] = None)
research_forecast_run(input_path: Annotated[Path, typer.Option('--input', help='Run directory or CSV. Accepts results.csv, raw/steps.csv, or research/predictor_training.csv.')], output_dir: Annotated[Path, typer.Option(help='Output directory for forecast evidence')] = Path('results/glucose_forecast'), predictor_path: Annotated[Optional[Path], typer.Option('--predictor', help='Optional trained predictor checkpoint (.pt)')] = None, history_minutes: Annotated[int, typer.Option(help='History window in minutes')] = 240, horizon_minutes: Annotated[int, typer.Option(help='Forecast horizon in minutes')] = 30, time_step_minutes: Annotated[int, typer.Option(help='Expected sample interval in minutes')] = 5, hidden_biology: Annotated[str, typer.Option('--hidden-biology', help='Optional hidden-biology stress test: none or insulin-antibody.')] = 'none', antibody_binding_fraction: Annotated[Optional[float], typer.Option('--antibody-binding-fraction', help='Research-only insulin-antibody binding fraction override for --hidden-biology insulin-antibody.')] = None, antibody_release_fraction: Annotated[Optional[float], typer.Option('--antibody-release-fraction', help='Research-only bound-insulin release fraction override for --hidden-biology insulin-antibody.')] = None, mc_samples: Annotated[int, typer.Option(help='MC dropout samples when the predictor supports uncertainty')] = 30)
research_glucose_model_build_dataset(input_paths: Annotated[List[Path], typer.Option('--input', '-i', help='Prepared glucose dataset CSV/Parquet. Repeat for Ohio, AZT1D, simulator exports, etc.')], output_dir: Annotated[Path, typer.Option(help='Output folder for normalized training dataset, manifest, and config.')] = Path('models/iints-glucose-forecast-v0/dataset'), labels_csv: Annotated[Optional[str], typer.Option('--labels', help='Optional comma-separated labels matching --input order, e.g. ohio_train,sim_10k.')] = None, profile: Annotated[str, typer.Option(help='Training profile: smoke, quick, long, or paper.')] = 'long', output_format: Annotated[str, typer.Option(help='Dataset output format: csv or parquet.')] = 'csv', history_minutes: Annotated[int, typer.Option(help='Model history window in minutes.')] = 360, horizon_minutes: Annotated[int, typer.Option(help='Prediction horizon in minutes.')] = 120, time_step_minutes: Annotated[int, typer.Option(help='Expected CGM sample interval in minutes.')] = 5) -> None
research_glucose_model_init(output_dir: Annotated[Path, typer.Option(help='Output directory for the glucose model starter files.')] = Path('models/iints-glucose-forecast-v0'), profile: Annotated[str, typer.Option(help='Training profile: smoke, quick, long, or paper.')] = 'long', history_minutes: Annotated[int, typer.Option(help='Model history window in minutes.')] = 360, horizon_minutes: Annotated[int, typer.Option(help='Prediction horizon in minutes.')] = 120, time_step_minutes: Annotated[int, typer.Option(help='Expected CGM sample interval in minutes.')] = 5) -> None
research_glucose_model_train(data: Annotated[Path, typer.Option(help='Normalized glucose training dataset CSV/Parquet.')], output_dir: Annotated[Path, typer.Option(help='Output directory for predictor.pt and training_report.json.')] = Path('models/iints-glucose-forecast-v0'), config: Annotated[Optional[Path], typer.Option(help='Config YAML. If omitted, one is generated.')] = None, profile: Annotated[str, typer.Option(help='Generated config profile: smoke, quick, long, or paper.')] = 'long', epochs: Annotated[Optional[int], typer.Option(help='Override training.epochs for long local runs.')] = None, batch_size: Annotated[Optional[int], typer.Option(help='Override training.batch_size.')] = None, learning_rate: Annotated[Optional[float], typer.Option(help='Override training.learning_rate.')] = None, warm_start: Annotated[Optional[Path], typer.Option(help='Optional predictor.pt warm-start checkpoint.')] = None, export_hf: Annotated[bool, typer.Option('--export-hf/--no-export-hf', help='Build a Hugging Face-ready folder after training.')] = True, repo_id: Annotated[Optional[str], typer.Option(help='Optional Hugging Face repo id for model card hints.')] = None, dataset_manifest: Annotated[Optional[Path], typer.Option(help='Optional dataset manifest for HF public metadata.')] = None, comparison_dir: Annotated[Optional[Path], typer.Option(help='Optional glucose-model compare output directory to bundle with the Hugging Face export.')] = None) -> None
research_glucose_model_export_hf(model_dir: Annotated[Path, typer.Option(help='Directory containing predictor.pt and training_report.json.')] = Path('models/iints-glucose-forecast-v0'), output_dir: Annotated[Path, typer.Option(help='Output directory for the Hugging Face-ready bundle.')] = Path('models/iints-glucose-forecast-v0/huggingface'), repo_id: Annotated[Optional[str], typer.Option(help='Optional Hugging Face repo id, e.g. user/iints-glucose-forecast-v0.')] = None, dataset_manifest: Annotated[Optional[Path], typer.Option(help='Optional private manifest to redact into public metadata.')] = None, comparison_dir: Annotated[Optional[Path], typer.Option(help='Optional glucose-model compare output directory to include comparison metrics and reports.')] = None) -> None
research_glucose_model_compare(data: Annotated[Path, typer.Option(help='Normalized glucose dataset CSV/Parquet to evaluate on.')], output_dir: Annotated[Path, typer.Option(help='Output directory for comparison reports.')] = Path('results/glucose_model_comparison'), model_specs: Annotated[Optional[List[str]], typer.Option('--model', '-m', help='Model checkpoint as label=path/to/predictor.pt. Repeat for MSE/Band/PINN models.')] = None, config: Annotated[Optional[Path], typer.Option(help='Comparison config YAML. Defaults to glucose-model quick config.')] = None, include_baselines: Annotated[bool, typer.Option('--include-baselines/--no-baselines', help='Compare transparent LastValue/LinearTrend/Physiology baselines.')] = True, mc_samples: Annotated[int, typer.Option(help='MC dropout samples for checkpoint uncertainty. Use 0 to disable.')] = 0, max_roc_mgdl_min: Annotated[float, typer.Option(help='Maximum plausible predicted glucose rate-of-change in mg/dL/min.')] = 10.0) -> None
research_glucose_model_jetson_train_hf(dataset: Annotated[Path, typer.Option(help='Normalized glucose training dataset CSV/Parquet built by glucose-model build-dataset.')] = Path('models/iints-glucose-forecast-v0/dataset/glucose_training_dataset.csv'), repo_id: Annotated[Optional[str], typer.Option('--repo-id', help='Hugging Face model repo id, e.g. username/iints-glucose-forecast-v0.')] = 'IINTS/iints-glucose-forecast-v0', local_base_dir: Annotated[Optional[Path], typer.Option(help='Use an already downloaded base model folder instead of downloading from Hugging Face.')] = None, work_dir: Annotated[Path, typer.Option(help='Jetson training workspace for downloads, trials, champion, and leaderboard.')] = Path('models/jetson_hf_training'), revision: Annotated[Optional[str], typer.Option(help='Optional Hugging Face revision/tag/branch to download.')] = None, profile: Annotated[str, typer.Option(help='Fallback config profile when the HF repo has no glucose_model_config.yaml.')] = 'quick', max_trials: Annotated[int, typer.Option(help='Number of trials. Use 0 to keep training until Ctrl+C.')] = 1, epochs: Annotated[int, typer.Option(help='Fine-tune epochs per trial.')] = 8, batch_size: Annotated[int, typer.Option(help='Batch size per trial; keep modest on Jetson Nano.')] = 64, timeout_minutes: Annotated[float, typer.Option(help='Timeout for each train/compare subprocess.')] = 45.0, cooldown_seconds: Annotated[float, typer.Option(help='Pause between trials to keep Jetson thermals stable.')] = 10.0, min_lr: Annotated[float, typer.Option(help='Minimum sampled learning rate for fine-tuning.')] = 1e-05, max_lr: Annotated[float, typer.Option(help='Maximum sampled learning rate for fine-tuning.')] = 0.0005, min_pinn_lambda: Annotated[float, typer.Option(help='Minimum sampled PINN loss weight.')] = 0.05, max_pinn_lambda: Annotated[float, typer.Option(help='Maximum sampled PINN loss weight.')] = 0.8, min_score_improvement: Annotated[float, typer.Option(help='Required composite-score improvement before replacing the local champion.')] = 0.0, physiology_weight: Annotated[float, typer.Option(help='Composite score penalty weight for physiological violations.')] = 0.1, hypo_weight: Annotated[float, typer.Option(help='Composite score penalty weight for missed/false hypo behavior.')] = 0.2, seed: Annotated[int, typer.Option(help='Random seed for reproducible trial configs.')] = 42, dataset_manifest: Annotated[Optional[Path], typer.Option(help='Optional dataset manifest to redact into the HF export bundle.')] = None, upload_mode: Annotated[str, typer.Option(help='Upload behavior: none, pr, or direct. Default is safe local-only.')] = 'none', private_upload: Annotated[bool, typer.Option('--private-upload/--public-upload', help='Mark HF upload private when upload is enabled.')] = True, force_download: Annotated[bool, typer.Option('--force-download/--reuse-download', help='Re-download the HF base model even if cached locally.')] = False, hf_home: Annotated[Optional[Path], typer.Option(help='Optional HF_HOME cache directory. Defaults inside the Jetson work dir.')] = None) -> None
research_parity_check(model: Annotated[Path, typer.Option(help='Predictor checkpoint (.pt)')], onnx: Annotated[Path, typer.Option(help='Exported ONNX model path')], samples: Annotated[int, typer.Option(help='Random sample count for parity check')] = 64, tolerance: Annotated[float, typer.Option(help='Maximum allowed absolute error')] = 0.001, seed: Annotated[int, typer.Option(help='Random seed')] = 42, output_json: Annotated[Optional[Path], typer.Option(help='Write parity report JSON')] = None)
research_registry_list(registry: Annotated[Path, typer.Option(help='Path to model registry JSON')] = Path('models/registry.json'), stage: Annotated[Optional[str], typer.Option(help='Optional stage filter (candidate/validated/production/archived)')] = None, limit: Annotated[int, typer.Option(help='Max rows to print')] = 30)
research_registry_promote(registry: Annotated[Path, typer.Option(help='Path to model registry JSON')] = Path('models/registry.json'), run_id: Annotated[str, typer.Option(help='Run ID to promote')] = '', stage: Annotated[str, typer.Option(help='Target stage (validated/production/archived/candidate)')] = 'validated', force: Annotated[bool, typer.Option(help='Allow production promotion without validated stage')] = False, output_json: Annotated[Optional[Path], typer.Option(help='Write promotion result JSON')] = None)
import_data(input_csv: Annotated[Path, typer.Option(help='Path to CGM CSV file')], output_dir: Annotated[Path, typer.Option(help='Output directory for scenario + standard CSV')] = Path('./results/imported'), data_format: Annotated[str, typer.Option(help='Data format preset: generic, dexcom, libre, carelink')] = 'generic', scenario_name: Annotated[str, typer.Option(help='Scenario name')] = 'Imported CGM Scenario', scenario_version: Annotated[str, typer.Option(help='Scenario version')] = '1.0', time_unit: Annotated[str, typer.Option(help='Timestamp unit: minutes or seconds')] = 'minutes', carb_threshold: Annotated[float, typer.Option(help='Minimum carbs (g) to create a meal event')] = 0.1, scenario_path: Annotated[Optional[Path], typer.Option(help='Optional output scenario path')] = None, data_path: Annotated[Optional[Path], typer.Option(help='Optional output standard CSV path')] = None, mapping: Annotated[List[str], typer.Option('--map', help='Column mapping key=value (e.g., timestamp=Time, glucose=SGV)')] = [])
import_carelink(input_csv: Annotated[Path, typer.Option(help='Path to a Medtronic CareLink CSV export')], output_dir: Annotated[Path, typer.Option(help='Output directory for imported CareLink artifacts')] = Path('./results/imported_carelink'), scenario_name: Annotated[str, typer.Option(help='Scenario name')] = 'Imported CareLink Scenario', scenario_version: Annotated[str, typer.Option(help='Scenario version')] = '1.0', scenario_path: Annotated[Optional[Path], typer.Option(help='Optional output scenario path')] = None, data_path: Annotated[Optional[Path], typer.Option(help='Optional output standard CSV path')] = None, summary_path: Annotated[Optional[Path], typer.Option(help='Optional output summary JSON path')] = None, carb_threshold: Annotated[float, typer.Option(help='Minimum carbs (g) to create a meal event')] = 0.1)
carelink_workbench(input_csv: Annotated[Path, typer.Option(help='Path to a Medtronic CareLink CSV export')], output_dir: Annotated[Path, typer.Option(help='Output directory for the personal CareLink workspace')] = Path('./results/carelink_workbench'), scenario_name: Annotated[str, typer.Option(help='Scenario name for the generated experiment scenario')] = 'Imported CareLink Scenario', scenario_version: Annotated[str, typer.Option(help='Scenario version')] = '1.0', carb_threshold: Annotated[float, typer.Option(help='Minimum carbs (g) to create a meal event')] = 0.1, create_dev_mdmp_cert: Annotated[bool, typer.Option('--create-dev-mdmp-cert/--no-create-dev-mdmp-cert', help='Generate a local development MDMP certificate and keypair for the AI assistant.')] = True, grade: Annotated[str, typer.Option(help='Grade to embed in the local development MDMP certificate.')] = 'research_grade', expires_days: Annotated[int, typer.Option(help='Certificate expiry window in days for local development certs.')] = 30, key_dir: Annotated[Optional[Path], typer.Option(help='Optional directory for the generated local MDMP keypair.')] = None) -> None
import_wizard()
import_demo(output_dir: Annotated[Path, typer.Option(help='Output directory for scenario + CSV')] = Path('./results/demo_import'), scenario_name: Annotated[str, typer.Option(help='Scenario name')] = 'Demo CGM Scenario', export_raw: Annotated[bool, typer.Option(help='Export the raw demo CSV into output dir')] = True)
import_nightscout_cmd(url: Annotated[str, typer.Option(help='Nightscout base URL. Use https for non-local hosts.')], output_dir: Annotated[Path, typer.Option(help='Output directory for scenario + CSV')] = Path('./results/nightscout_import'), api_secret: Annotated[Optional[str], typer.Option(help='API secret (if required)')] = None, api_secret_env: Annotated[Optional[str], typer.Option(help='Environment variable name containing the Nightscout API secret.')] = None, api_secret_file: Annotated[Optional[Path], typer.Option(help='Path to a file containing the Nightscout API secret.')] = None, token: Annotated[Optional[str], typer.Option(help='API token (if required)')] = None, token_env: Annotated[Optional[str], typer.Option(help='Environment variable name containing the Nightscout API token.')] = None, token_file: Annotated[Optional[Path], typer.Option(help='Path to a file containing the Nightscout API token.')] = None, start: Annotated[Optional[str], typer.Option(help='Start time (ISO string)')] = None, end: Annotated[Optional[str], typer.Option(help='End time (ISO string)')] = None, limit: Annotated[Optional[int], typer.Option(help='Limit number of entries')] = None, scenario_name: Annotated[str, typer.Option(help='Scenario name')] = 'Nightscout Import')
import_tidepool_cmd(base_url: Annotated[str, typer.Option(help='Tidepool API base URL. Use https for non-local hosts.')] = 'https://api.tidepool.org', token: Annotated[Optional[str], typer.Option(help='Tidepool session token')] = None, token_env: Annotated[Optional[str], typer.Option(help='Environment variable name containing the Tidepool session token.')] = None, token_file: Annotated[Optional[Path], typer.Option(help='Path to a file containing the Tidepool session token.')] = None, user_id: Annotated[Optional[str], typer.Option(help='Optional Tidepool user id. Defaults to the current authenticated user.')] = None, start: Annotated[Optional[str], typer.Option(help='Optional ISO-8601 start timestamp.')] = None, end: Annotated[Optional[str], typer.Option(help='Optional ISO-8601 end timestamp.')] = None, output_dir: Annotated[Path, typer.Option(help='Directory for imported scenario and standard CSV.')] = Path('results/tidepool_import'), scenario_name: Annotated[str, typer.Option(help='Scenario name written into scenario.json.')] = 'Tidepool Import')
medtronic_live_cmd(base_url: Annotated[str, typer.Option(help='Authorized Medtronic/CareLink live relay base URL. Use https for non-local hosts.')], endpoint_path: Annotated[str, typer.Option(help='Read-only JSON endpoint path on the authorized relay.')] = '/carelink/live', output_dir: Annotated[Path, typer.Option(help='Directory for live timeline, standard CSV, and latest snapshot JSON.')] = Path('./results/medtronic_live'), token: Annotated[Optional[str], typer.Option(help='Bearer token for the authorized relay.')] = None, token_env: Annotated[Optional[str], typer.Option(help='Environment variable name containing the bearer token.')] = None, token_file: Annotated[Optional[Path], typer.Option(help='Path to a file containing the bearer token.')] = None, device_id: Annotated[Optional[str], typer.Option(help='Optional pump/device id query parameter.')] = None, patient_id: Annotated[Optional[str], typer.Option(help='Optional patient id query parameter.')] = None, since: Annotated[Optional[str], typer.Option(help='Optional ISO-8601 lower-bound query parameter.')] = None, limit: Annotated[Optional[int], typer.Option(help='Optional max records query parameter.')] = None, samples: Annotated[int, typer.Option(help='Number of polling samples. Use 0 to poll until interrupted.')] = 1, poll_seconds: Annotated[float, typer.Option(help='Seconds between polling samples.')] = 30.0, source: Annotated[str, typer.Option(help='Source label written into IINTS outputs.')] = 'medtronic_carelink_live') -> None
medtronic_pump_direct_cmd(transport: Annotated[str, typer.Option(help='Direct pump transport: simulated or official-module.')] = 'simulated', official_factory: Annotated[Optional[str], typer.Option(help='Approved internal factory reference for official-module mode, e.g. package.module:create_transport.')] = None, read_only_confirm: Annotated[Optional[str], typer.Option(help='Required confirmation string for official-module hardware transport.')] = None, output_dir: Annotated[Path, typer.Option(help='Directory for pump_timeline.csv, cgm_standard.csv, and pump_latest.json.')] = Path('./results/medtronic_pump_direct'), samples: Annotated[int, typer.Option(help='Number of snapshots to read. Use 0 to poll until interrupted.')] = 1, poll_seconds: Annotated[float, typer.Option(help='Seconds between snapshots.')] = 30.0, simulated_seed: Annotated[int, typer.Option(help='Seed for simulated bench transport.')] = 42, simulated_start_glucose_mgdl: Annotated[float, typer.Option(help='Initial glucose for simulated bench transport.')] = 118.0, simulated_step_minutes: Annotated[float, typer.Option(help='Minutes advanced per simulated snapshot.')] = 5.0) -> None
check_deps()
algorithms_list()
algorithms_info(name: Annotated[str, typer.Argument(help='Algorithm display name')])
plugin_install(path: Annotated[Path, typer.Argument(help='Path to a local InsulinAlgorithm .py file')], name: Annotated[Optional[str], typer.Option(help='Optional display name override')] = None)
plugin_register_algo(path: Annotated[Path, typer.Argument(help='Path to a local InsulinAlgorithm .py file')], name: Annotated[Optional[str], typer.Option(help='Optional display name override')] = None)
plugin_register_patient_model(path: Annotated[Path, typer.Argument(help='Path to a local patient model .py file')], name: Annotated[Optional[str], typer.Option(help='Optional display name override')] = None)
plugin_register_data_source(path: Annotated[Path, typer.Argument(help='Path to a local data source .py file')], name: Annotated[Optional[str], typer.Option(help='Optional display name override')] = None)
plugin_register_validator(path: Annotated[Path, typer.Argument(help='Path to a local validator .py file')], name: Annotated[Optional[str], typer.Option(help='Optional display name override')] = None)
plugin_list(kind: Annotated[Optional[str], typer.Option(help='Filter by kind: algorithm, patient_model, data_source, validator')] = None)
plugin_uninstall(name: Annotated[str, typer.Argument(help='Local plugin display name')], kind: Annotated[Optional[str], typer.Option(help='Optional kind filter')] = None, remove_file: Annotated[bool, typer.Option(help='Also delete the copied plugin file from the plugin home')] = False)
patientmodel_list()
jetson_doctor()
jetson_theory_stress_run(output_dir: Annotated[Path, typer.Option(help='Output directory for Theory Stress Lab artifacts')] = Path('results/theory_stress_lab'), profile: Annotated[str, typer.Option(help='Run profile: jetson, ci, or deep')] = 'jetson', seed: Annotated[int, typer.Option(help='Deterministic seed for reproducible scenario generation')] = 42, repeats: Annotated[int, typer.Option(help='Repeat the configured check suite with shifted seeds')] = 1, duration_minutes: Annotated[float, typer.Option(help='Labelled run duration for the report metadata')] = 30.0, fail_on_weakness: Annotated[bool, typer.Option(help='Exit with code 1 when any invariant fails')] = False)
jetson_endurance_start(algo: Annotated[Path, typer.Option('--algo', help='Path to an InsulinAlgorithm Python file')], predictor_path: Annotated[Optional[Path], typer.Option('--predictor', help='Optional LSTM predictor checkpoint')] = None, duration: Annotated[str, typer.Option(help='Duration such as 1h, 24h, 7d, 30d')] = '24h', output_dir: Annotated[Path, typer.Option(help='Output directory for the endurance study')] = Path('results/jetson_endurance'), profile: Annotated[str, typer.Option(help='Endurance profile name')] = 'mixed_adversarial', seed: Annotated[int, typer.Option(help='Deterministic simulation seed')] = 42, patient_model: Annotated[str, typer.Option(help='Patient model name passed to PatientFactory')] = 'bergman', sensor_profile: Annotated[str, typer.Option(help='Sensor profile for the simulated CGM stream')] = 'free_living_cgm', custom_profile: Annotated[Optional[Path], typer.Option(help='YAML file for --profile custom')] = None, time_step: Annotated[int, typer.Option(help='Simulation step size in minutes')] = 5, checkpoint_interval: Annotated[int, typer.Option(help='Checkpoint interval in simulated minutes.')] = 360, hardware_sample_interval: Annotated[int, typer.Option(help='Hardware telemetry interval in simulated minutes.')] = 60, status_interval_steps: Annotated[int, typer.Option(help='How often to persist status and partial CSV data.')] = 25, wall_clock: Annotated[bool, typer.Option('--wall-clock/--accelerated', help='Use real wall-clock pacing so 1d takes an actual 24 hours instead of finishing as fast as possible.')] = False, research_export: Annotated[bool, typer.Option('--research-export/--no-research-export', help='Write a predictor-training dataset and research manifest next to the normal endurance artifacts.')] = True, finalize_research: Annotated[bool, typer.Option('--finalize-research/--no-finalize-research', help='After the endurance run, train local research models and write a held-out evaluation report.')] = False, resume: Annotated[bool, typer.Option(help='Resume from the latest snapshot in the output directory')] = False)
jetson_endurance_finalize_research(output_dir: Annotated[Path, typer.Option(help='Completed endurance output directory')], train_predictor: Annotated[bool, typer.Option('--train-predictor/--skip-predictor', help='Train a glucose predictor from the exported endurance dataset when enough rows are available.')] = True, train_neural: Annotated[bool, typer.Option('--train-neural/--skip-neural', help='Train the PyTorch controller in addition to the auditable linear baseline.')] = True, duration_minutes: Annotated[int, typer.Option(help='Closed-loop evaluation duration per held-out run in minutes.')] = 1440)
jetson_endurance_status(output_dir: Annotated[Path, typer.Option(help='Endurance output directory')])
jetson_endurance_monitor(output_dir: Annotated[Path, typer.Option(help='Endurance output directory')], watch: Annotated[bool, typer.Option(help='Refresh while the run is active')] = False, interval_seconds: Annotated[int, typer.Option(help='Refresh interval for --watch')] = 5)
jetson_endurance_stop(output_dir: Annotated[Path, typer.Option(help='Endurance output directory')], generate_report: Annotated[bool, typer.Option(help='Ask the runner to finalize reports before stopping')] = False)
jetson_endurance_export(output_dir: Annotated[Path, typer.Option(help='Endurance output directory')], output: Annotated[Path, typer.Option(help='Destination zip archive')])
jetson_endurance_install_service(algo: Annotated[Path, typer.Option('--algo', help='Path to an InsulinAlgorithm Python file')], duration: Annotated[str, typer.Option(help='Duration such as 24h, 7d, 30d')] = '7d', output_dir: Annotated[Path, typer.Option(help='Output directory for the endurance study')] = Path('results/jetson_endurance'), predictor_path: Annotated[Optional[Path], typer.Option('--predictor', help='Optional LSTM predictor checkpoint')] = None, profile: Annotated[str, typer.Option(help='Endurance profile name')] = 'mixed_adversarial', seed: Annotated[int, typer.Option(help='Deterministic simulation seed')] = 42, wall_clock: Annotated[bool, typer.Option('--wall-clock/--accelerated', help='Write a service that paces the run in real time instead of accelerated simulation time.')] = False, service_path: Annotated[Optional[Path], typer.Option(help='Where to write the systemd unit file')] = None)
docs_algo(algo_path: Annotated[Path, typer.Option(help='Path to the algorithm Python file to document')])
benchmark(algo_to_benchmark: Annotated[Path, typer.Option(help='Path to the AI algorithm Python file to benchmark')], patient_configs_dir: Annotated[Path, typer.Option(help='Directory containing patient configuration YAML files')] = Path('src/iints/data/virtual_patients'), scenarios_dir: Annotated[Path, typer.Option(help='Directory containing scenario JSON files')] = Path('scenarios'), duration: Annotated[int, typer.Option(help='Simulation duration in minutes for each run')] = 720, time_step: Annotated[int, typer.Option(help='Simulation time step in minutes')] = 5, output_dir: Annotated[Optional[Path], typer.Option(help='Directory to save all benchmark results')] = None, seed: Annotated[Optional[int], typer.Option(help='Base seed for deterministic runs')] = None)
edge_benchmark(algo: Annotated[Path, typer.Option(help='Path to the insulin algorithm Python file used for the edge benchmark.')], output_json: Annotated[Path, typer.Option(help='Output JSON path for the hardware benchmark results.')] = Path('results/edge_benchmark.json'), patient_config: Annotated[str, typer.Option(help='Patient configuration name or YAML path.')] = 'default_patient', patient_model: Annotated[str, typer.Option('--patient-model', help='Patient model type.')] = 'auto', scenario_profile: Annotated[str, typer.Option(help='Digital patient scenario profile.')] = 'normal_day', steps: Annotated[int, typer.Option(help='Number of simulated steps used for throughput measurement.')] = 72, platform_name: Annotated[str, typer.Option('--platform', help="Platform label written into the benchmark report. Use 'auto' to detect locally.")] = 'auto', api_host: Annotated[str, typer.Option(help='Host used for the local dashboard probe.')] = '127.0.0.1', api_port: Annotated[int, typer.Option(help='Port used for the local dashboard probe.')] = 8766, seed: Annotated[Optional[int], typer.Option(help='Optional deterministic seed override.')] = None) -> None
edge_setup(output_dir: Annotated[Path, typer.Option(help='Directory where the edge-ready project scaffold should be written.')] = Path('iints_edge_demo'), board: Annotated[str, typer.Option(help='Edge board target: raspberry_pi or uno_q.')] = 'raspberry_pi', workspace_name: Annotated[str, typer.Option(help='Workspace folder name used for the persistent patient runtime.')] = 'patient_runtime', scenario_profile: Annotated[str, typer.Option(help='Initial live scenario profile.')] = 'normal_day', patient_config: Annotated[str, typer.Option(help='Patient configuration name or YAML path.')] = 'default_patient', patient_model: Annotated[str, typer.Option('--patient-model', help='Patient model type.')] = 'auto', mode: Annotated[str, typer.Option(help='Clock mode for the generated edge project.')] = 'demo-time', speed: Annotated[str, typer.Option(help='Acceleration factor for demo-time mode. Accepts 60 or 60x.')] = '60x', api_host: Annotated[str, typer.Option(help='Dashboard host to bake into the generated runtime config.')] = '127.0.0.1', api_port: Annotated[int, typer.Option(help='Dashboard port to bake into the generated runtime config.')] = 8765, seed: Annotated[Optional[int], typer.Option(help='Optional deterministic seed override.')] = None, service_name: Annotated[str, typer.Option(help='systemd service name without the .service suffix.')] = 'iints-digital-patient', user_name: Annotated[Optional[str], typer.Option(help='Linux user that should own the generated systemd service.')] = None, uno_bridge_port: Annotated[Optional[str], typer.Option(help='Optional UNO Q serial port to bake into a generated bridge systemd service.')] = None, uno_bridge_service_name: Annotated[str, typer.Option(help='UNO Q bridge systemd service name without the .service suffix.')] = 'iints-uno-q-bridge') -> None
edge_quickstart(board: Annotated[str, typer.Option(help='Edge board target: raspberry_pi or uno_q.')] = 'raspberry_pi', output_dir: Annotated[Optional[Path], typer.Option(help='Project directory to create. Defaults to iints_pi_demo or iints_uno_q_demo.')] = None, scenario_profile: Annotated[str, typer.Option(help='Initial live scenario profile.')] = 'expo_hot_start', patient_config: Annotated[str, typer.Option(help='Patient configuration name or YAML path.')] = 'default_patient', patient_model: Annotated[str, typer.Option('--patient-model', help='Patient model type.')] = 'auto', mode: Annotated[str, typer.Option(help='Clock mode for the generated edge project.')] = 'demo-time', speed: Annotated[str, typer.Option(help='Acceleration factor for demo-time mode. Accepts 60 or 60x.')] = '60x', api_host: Annotated[str, typer.Option(help='Dashboard host to bake into the generated runtime config.')] = '127.0.0.1', api_port: Annotated[int, typer.Option(help='Dashboard port to bake into the generated runtime config.')] = 8765, seed: Annotated[Optional[int], typer.Option(help='Optional deterministic seed override.')] = None, start: Annotated[bool, typer.Option('--start/--no-start', help='Start the Linux-side digital patient after creating the project.')] = True, reset: Annotated[bool, typer.Option(help='Reset runtime state when starting.')] = True, foreground: Annotated[bool, typer.Option(help='Run in the foreground instead of spawning the daemon.')] = False, bridge_port: Annotated[str, typer.Option(help='UNO Q bridge port for printed commands and optional testing. Use auto for autodetect.')] = 'auto', test_bridge: Annotated[bool, typer.Option(help='After setup, run one UNO Q bridge test if a board is connected.')] = False, max_steps: Annotated[Optional[int], typer.Option('--max-steps', hidden=True)] = None) -> None
edge_install(board: Annotated[str, typer.Option(help='Edge board target: raspberry_pi or uno_q.')] = 'raspberry_pi', output_dir: Annotated[Optional[Path], typer.Option(help='Project directory to create. Defaults to iints_pi_demo or iints_uno_q_demo.')] = None, scenario_profile: Annotated[str, typer.Option(help='Initial live scenario profile.')] = 'expo_hot_start', patient_config: Annotated[str, typer.Option(help='Patient configuration name or YAML path.')] = 'default_patient', patient_model: Annotated[str, typer.Option('--patient-model', help='Patient model type.')] = 'auto', mode: Annotated[str, typer.Option(help='Clock mode for the generated edge project.')] = 'demo-time', speed: Annotated[str, typer.Option(help='Acceleration factor for demo-time mode. Accepts 60 or 60x.')] = '60x', api_host: Annotated[str, typer.Option(help='Dashboard host to bake into the generated runtime config.')] = '127.0.0.1', api_port: Annotated[int, typer.Option(help='Dashboard port to bake into the generated runtime config.')] = 8765, seed: Annotated[Optional[int], typer.Option(help='Optional deterministic seed override.')] = None, install_python_extras: Annotated[bool, typer.Option('--install-python-extras/--no-install-python-extras', help='Install or upgrade the SDK edge extras in the current Python environment.')] = True, package_spec: Annotated[str, typer.Option(help='Package spec used when installing edge extras.')] = 'iints-sdk-python35[edge,mdmp]', start: Annotated[bool, typer.Option('--start/--no-start', help='Start the Linux-side digital patient after setup.')] = True, reset: Annotated[bool, typer.Option(help='Reset runtime state when starting.')] = True, foreground: Annotated[bool, typer.Option(help='Run the patient runtime in the foreground instead of spawning the daemon.')] = False, bridge_port: Annotated[str, typer.Option(help='UNO Q serial port. Use auto if exactly one board is connected.')] = 'auto', flash: Annotated[bool, typer.Option(help='Flash the generated UNO Q bridge sketch with Arduino CLI.')] = False, fqbn: Annotated[Optional[str], typer.Option(help='Arduino CLI FQBN used when --flash is set.')] = None, arduino_cli: Annotated[str, typer.Option(help='Arduino CLI executable name or path.')] = 'arduino-cli', test_bridge: Annotated[bool, typer.Option(help='Run one UNO Q bridge test after setup/flash.')] = False, dry_run: Annotated[bool, typer.Option(help='Write the project scaffold but skip pip install, start, flash, and bridge test.')] = False, max_steps: Annotated[Optional[int], typer.Option('--max-steps', hidden=True)] = None) -> None
edge_deploy(host: Annotated[str, typer.Option(help='Remote Raspberry Pi hostname or IP address.')], user_name: Annotated[Optional[str], typer.Option('--user', help='Optional remote SSH username.')] = None, ssh_port: Annotated[int, typer.Option(help='SSH port used for the remote Raspberry Pi.')] = 22, remote_dir: Annotated[str, typer.Option(help='Target project directory on the Raspberry Pi.')] = '~/iints_pi_demo', local_output_dir: Annotated[Path, typer.Option(help='Local scaffold directory that will also be synced to the Pi.')] = Path('iints_pi_demo'), board: Annotated[str, typer.Option(help='Edge board target: raspberry_pi or uno_q.')] = 'raspberry_pi', workspace_name: Annotated[str, typer.Option(help='Workspace folder name used for the persistent patient runtime.')] = 'patient_runtime', scenario_profile: Annotated[str, typer.Option(help='Initial live scenario profile deployed to the Pi.')] = 'expo_hot_start', patient_config: Annotated[str, typer.Option(help='Patient configuration name or YAML path.')] = 'default_patient', patient_model: Annotated[str, typer.Option('--patient-model', help='Patient model type.')] = 'auto', mode: Annotated[str, typer.Option(help='Clock mode for the generated edge project.')] = 'demo-time', speed: Annotated[str, typer.Option(help='Acceleration factor for demo-time mode. Accepts 60 or 60x.')] = '60x', api_host: Annotated[str, typer.Option(help='Dashboard host to bake into the generated runtime config. Keep 127.0.0.1 when using Raspberry Pi Connect.')] = '127.0.0.1', api_port: Annotated[int, typer.Option(help='Dashboard port to bake into the generated runtime config.')] = 8765, seed: Annotated[Optional[int], typer.Option(help='Optional deterministic seed override.')] = None, service_name: Annotated[str, typer.Option(help='systemd service name without the .service suffix.')] = 'iints-digital-patient', install_autostart: Annotated[bool, typer.Option(help='Install the generated systemd service, watchdog timer, and desktop autostart on the Pi.')] = True, start_runtime: Annotated[bool, typer.Option(help='Start the Maker Faire runtime after deployment.')] = True, enable_connect_linger: Annotated[bool, typer.Option(help='Runloginctl enable-lingeron the Pi so Raspberry Pi Connect remote shell keeps working after reboots.')] = True, ssh_timeout_seconds: Annotated[float, typer.Option(help='Timeout per remote SSH step in seconds.')] = 300.0, ssh_retries: Annotated[int, typer.Option(help='How many times to retry a failing SSH step before giving up.')] = 1, uno_bridge_port: Annotated[Optional[str], typer.Option(help='Optional UNO Q serial port on the Pi, for example /dev/ttyACM0. Generates and installs a bridge service.')] = None, uno_bridge_service_name: Annotated[str, typer.Option(help='UNO Q bridge systemd service name without the .service suffix.')] = 'iints-uno-q-bridge', flash_uno_bridge: Annotated[bool, typer.Option(help='Flash the UNO Q bridge sketch remotely after syncing the project. Requires --uno-bridge-port and --uno-fqbn.')] = False, uno_fqbn: Annotated[Optional[str], typer.Option(help='Arduino CLI FQBN used when --flash-uno-bridge is enabled.')] = None, arduino_cli: Annotated[str, typer.Option(help='Arduino CLI executable name or path on the Raspberry Pi.')] = 'arduino-cli', dry_run: Annotated[bool, typer.Option(help='Show the remote deployment plan without executing SSH commands.')] = False, verbose: Annotated[bool, typer.Option(help='Print the raw remote SSH command and deploy stdout for debugging.')] = False) -> None
edge_offline_bundle(output: Annotated[Path, typer.Option(help='Tarball written for offline USB-stick installs.')] = Path('iints_offline.tar.gz'), board: Annotated[str, typer.Option(help='Edge board target baked into the scaffold: raspberry_pi or uno_q.')] = 'raspberry_pi', workspace_name: Annotated[str, typer.Option(help='Workspace folder name used for the persistent patient runtime.')] = 'patient_runtime', scenario_profile: Annotated[str, typer.Option(help='Initial live scenario profile baked into the scaffold.')] = 'expo_hot_start', patient_config: Annotated[str, typer.Option(help='Patient configuration name or YAML path.')] = 'default_patient', patient_model: Annotated[str, typer.Option('--patient-model', help='Patient model type.')] = 'auto', mode: Annotated[str, typer.Option(help='Clock mode baked into the generated edge project.')] = 'demo-time', speed: Annotated[str, typer.Option(help='Acceleration factor for demo-time mode. Accepts 60 or 60x.')] = '60x', api_host: Annotated[str, typer.Option(help='Dashboard host baked into the runtime config. Keep 127.0.0.1 for Pi Connect setups.')] = '127.0.0.1', api_port: Annotated[int, typer.Option(help='Dashboard port baked into the runtime config.')] = 8765, seed: Annotated[Optional[int], typer.Option(help='Optional deterministic seed override.')] = None) -> None
edge_study(algo: Annotated[Path, typer.Option(help='Path to the algorithm Python file.')], output_dir: Annotated[Path, typer.Option(help='Root directory for the Pi-generated study bundle.')] = Path('results/pi_study'), preset: Annotated[str, typer.Option(help='Study preset: default or eucys.')] = 'default', profile_set: Annotated[str, typer.Option(help='Patient profile set to evaluate on the Pi.')] = DEFAULT_PROFILE_SET, scenarios: Annotated[str, typer.Option(help='Optional comma-separated scenario slugs to run.')] = '', seeds: Annotated[str, typer.Option(help='Comma-separated seed list.')] = '1,2,3,4,5', duration: Annotated[Optional[int], typer.Option(help='Override scenario duration in minutes.')] = None, time_step: Annotated[int, typer.Option(help='Simulation time step in minutes.')] = 5, include_default_baselines: Annotated[bool, typer.Option('--include-default-baselines/--no-include-default-baselines', help='Include the default baseline registry in the Pi study matrix.')] = True, extra_algorithms: Annotated[str, typer.Option(help='Comma-separated additional comparison algorithm labels.')] = '', prepare_ai: Annotated[bool, typer.Option(help='Generate AI-ready artifacts for non-corrupted study arms.')] = False) -> None
edge_long_study(config: Annotated[Path, typer.Option(help='YAML config describing the multi-day edge study.')], project_dir: Annotated[Path, typer.Option(help='Edge project directory that contains the algorithms folder and runtime scaffold.')] = Path('.'), resume: Annotated[bool, typer.Option(help='Resume from the next incomplete day by inspecting long_study_index.csv.')] = False) -> None
edge_study_snapshot(project_dir: Annotated[Path, typer.Option(help='Edge project directory used to resolve relative study paths.')] = Path('.'), input_dir: Annotated[Path, typer.Option(help='Long-study directory to snapshot.')] = Path('results/long_study'), output: Annotated[Path, typer.Option(help='Output directory or .tar.gz path for the snapshot archive.')] = Path('snapshots')) -> None
edge_study_export(project_dir: Annotated[Path, typer.Option(help='Edge project directory used to resolve relative study paths.')] = Path('.'), input_dir: Annotated[Path, typer.Option(help='Long-study directory to export.')] = Path('results/long_study'), output: Annotated[Path, typer.Option(help='Zip archive written for transfer to another device.')] = Path('results/long_study_export.zip')) -> None
edge_doctor(board: Annotated[str, typer.Option(help='Board target to validate: raspberry_pi or uno_q.')] = 'raspberry_pi', project_dir: Annotated[Optional[Path], typer.Option(help='Optional edge project directory created byiints edge setup.')] = None, workspace_name: Annotated[str, typer.Option(help='Workspace folder inside the edge project.')] = 'patient_runtime') -> None
edge_remote_status(host: Annotated[str, typer.Option(help='Remote Raspberry Pi hostname or IP address.')], user_name: Annotated[Optional[str], typer.Option('--user', help='Optional remote SSH username.')] = None, ssh_port: Annotated[int, typer.Option(help='SSH port used for the remote Raspberry Pi.')] = 22, remote_dir: Annotated[str, typer.Option(help='Target project directory on the Raspberry Pi.')] = '~/iints_pi_demo', ssh_timeout_seconds: Annotated[float, typer.Option(help='Timeout per remote SSH step in seconds.')] = 60.0, ssh_retries: Annotated[int, typer.Option(help='How many times to retry a failing SSH step before giving up.')] = 0) -> None
edge_remote_reset(host: Annotated[str, typer.Option(help='Remote Raspberry Pi hostname or IP address.')], user_name: Annotated[Optional[str], typer.Option('--user', help='Optional remote SSH username.')] = None, ssh_port: Annotated[int, typer.Option(help='SSH port used for the remote Raspberry Pi.')] = 22, remote_dir: Annotated[str, typer.Option(help='Target project directory on the Raspberry Pi.')] = '~/iints_pi_demo', scenario_profile: Annotated[Optional[str], typer.Option(help='Optional profile to load after reset.')] = None, seed: Annotated[Optional[int], typer.Option(help='Optional deterministic seed override for the reset profile.')] = None, ssh_timeout_seconds: Annotated[float, typer.Option(help='Timeout per remote SSH step in seconds.')] = 60.0, ssh_retries: Annotated[int, typer.Option(help='How many times to retry a failing SSH step before giving up.')] = 0) -> None
edge_remote_stop(host: Annotated[str, typer.Option(help='Remote Raspberry Pi hostname or IP address.')], user_name: Annotated[Optional[str], typer.Option('--user', help='Optional remote SSH username.')] = None, ssh_port: Annotated[int, typer.Option(help='SSH port used for the remote Raspberry Pi.')] = 22, remote_dir: Annotated[str, typer.Option(help='Target project directory on the Raspberry Pi.')] = '~/iints_pi_demo', ssh_timeout_seconds: Annotated[float, typer.Option(help='Timeout per remote SSH step in seconds.')] = 60.0, ssh_retries: Annotated[int, typer.Option(help='How many times to retry a failing SSH step before giving up.')] = 0) -> None
edge_up(project_dir: Annotated[Path, typer.Option(help='Edge project directory created byiints edge setup.')] = Path('.'), workspace_name: Annotated[str, typer.Option(help='Workspace folder inside the edge project.')] = 'patient_runtime', foreground: Annotated[bool, typer.Option(help='Run the digital patient in the foreground instead of spawning the daemon.')] = False, reset: Annotated[bool, typer.Option(help='Reset the runtime state before starting.')] = False, max_steps: Annotated[Optional[int], typer.Option('--max-steps', hidden=True)] = None) -> None
makerfaire_up(project_dir: Annotated[Path, typer.Option(help='Edge project directory created byiints edge setup.')] = Path('.'), workspace_name: Annotated[str, typer.Option(help='Workspace folder inside the edge project.')] = 'patient_runtime', scenario_profile: Annotated[str, typer.Option(help='Booth-ready scenario profile. Defaults to expo_hot_start.')] = 'expo_hot_start', seed: Annotated[Optional[int], typer.Option(help='Optional deterministic seed override for the booth reset/start.')] = None, reset: Annotated[bool, typer.Option(help='Reset into the booth profile when the runtime is already running.')] = True, foreground: Annotated[bool, typer.Option(help='Run in the foreground instead of using the background daemon.')] = False, show_kiosk: Annotated[bool, typer.Option(help='Print the kiosk panel after startup so you can copy the Pi display URL quickly.')] = True) -> None
makerfaire_autostart(project_dir: Annotated[Path, typer.Option(help='Edge project directory created byiints edge setup.')] = Path('.'), workspace_name: Annotated[str, typer.Option(help='Workspace folder inside the edge project.')] = 'patient_runtime') -> None
makerfaire_watchdog(project_dir: Annotated[Path, typer.Option(help='Edge project directory created byiints edge setup.')] = Path('.'), workspace_name: Annotated[str, typer.Option(help='Workspace folder inside the edge project.')] = 'patient_runtime', scenario_profile: Annotated[str, typer.Option(help='Booth-safe scenario profile to restore if the runtime must be restarted.')] = 'expo_hot_start', seed: Annotated[Optional[int], typer.Option(help='Optional deterministic seed override used when the watchdog has to restart the runtime.')] = None, quiet: Annotated[bool, typer.Option(help='Print only minimal output. Useful for watchdog scripts and timers.')] = False) -> None
edge_kiosk(project_dir: Annotated[Optional[Path], typer.Option(help='Optional edge project directory created byiints edge setup.')] = None, workspace: Annotated[Optional[Path], typer.Option(help='Optional runtime workspace override.')] = None, workspace_name: Annotated[str, typer.Option(help='Workspace folder inside the edge project.')] = 'patient_runtime') -> None
edge_reset(project_dir: Annotated[Optional[Path], typer.Option(help='Optional edge project directory created byiints edge setup.')] = None, workspace: Annotated[Optional[Path], typer.Option(help='Optional runtime workspace override.')] = None, workspace_name: Annotated[str, typer.Option(help='Workspace folder inside the edge project.')] = 'patient_runtime', scenario_profile: Annotated[Optional[str], typer.Option(help='Optional profile to load after reset. Defaults to expo_hot_start.')] = None, seed: Annotated[Optional[int], typer.Option(help='Optional deterministic seed override for the reset profile.')] = None) -> None
edge_stop(project_dir: Annotated[Optional[Path], typer.Option(help='Optional edge project directory created byiints edge setup.')] = None, workspace: Annotated[Optional[Path], typer.Option(help='Optional runtime workspace override.')] = None, workspace_name: Annotated[str, typer.Option(help='Workspace folder inside the edge project.')] = 'patient_runtime') -> None
edge_service(project_dir: Annotated[Optional[Path], typer.Option(help='Optional edge project directory created byiints edge setup.')] = None, workspace: Annotated[Optional[Path], typer.Option(help='Optional runtime workspace override.')] = None, workspace_name: Annotated[str, typer.Option(help='Workspace folder inside the edge project.')] = 'patient_runtime', output: Annotated[Optional[Path], typer.Option(help='Optional output service file path.')] = None, service_name: Annotated[str, typer.Option(help='systemd service name without the .service suffix.')] = 'iints-digital-patient', user_name: Annotated[Optional[str], typer.Option(help='Linux user that should run the service. Defaults to the current shell user.')] = None, python_path: Annotated[Optional[Path], typer.Option(help='Python executable used in ExecStart. Defaults to the current interpreter.')] = None) -> None
edge_status(workspace: Annotated[Optional[Path], typer.Option(help='Workspace directory for the persistent digital patient state.')] = None, project_dir: Annotated[Optional[Path], typer.Option(help='Optional edge project directory created byiints edge setup.')] = None, workspace_name: Annotated[str, typer.Option(help='Workspace folder inside the edge project.')] = 'patient_runtime') -> None
edge_bundle(workspace: Annotated[Optional[Path], typer.Option(help='Workspace directory for the persistent digital patient state.')] = None, project_dir: Annotated[Optional[Path], typer.Option(help='Optional edge project directory created byiints edge setup.')] = None, workspace_name: Annotated[str, typer.Option(help='Workspace folder inside the edge project.')] = 'patient_runtime', output: Annotated[Path, typer.Option(help='ZIP archive written for workstation-side analysis.')] = Path('results/edge_runtime_bundle.zip'), include_log: Annotated[bool, typer.Option(help='Include the patient log in the archive.')] = True, include_database: Annotated[bool, typer.Option(help='Include the SQLite runtime database in the archive.')] = True) -> None
edge_update(output_script: Annotated[Path, typer.Option(help='Where to write the edge update shell script.')] = Path('update_edge_runtime.sh'), profile: Annotated[str, typer.Option(help='Install profile to upgrade: edge or full.')] = 'edge', version_pin: Annotated[Optional[str], typer.Option(help='Optional exact SDK version pin, for example 1.5.2.')] = None) -> None
edge_hardware_bridge(board: Annotated[str, typer.Option(help='Hardware bridge target. Currently supported: uno_q.')] = 'uno_q', output_dir: Annotated[Path, typer.Option(help='Directory where the hardware bridge scaffold should be written.')] = Path('uno_q_bridge')) -> None
fpga_setup(output_dir: Annotated[Path, typer.Option(help='Directory where the FPGA lab workspace should be written.')] = Path('iints_fpga_lab')) -> None
fpga_doctor() -> None
fpga_simulate(events: Annotated[Optional[Path], typer.Option(help='Optional JSON/CSV event file. Defaults to bundled FPGA demo events.')] = None, output_dir: Annotated[Path, typer.Option(help='Output directory for FPGA comparison artifacts.')] = Path('results/fpga_mock_run'), transport: Annotated[str, typer.Option(help='FPGA transport: mock or serial.')] = 'mock', port: Annotated[Optional[str], typer.Option(help='Serial port when --transport serial is used.')] = None, baudrate: Annotated[int, typer.Option(help='Serial baudrate for FPGA JSON-lines transport.')] = FPGA_DEFAULT_BAUDRATE, timeout_seconds: Annotated[float, typer.Option(help='Serial timeout per event in seconds.')] = 1.5) -> None
fpga_export_events(results_csv: Annotated[Path, typer.Option(help='Existing IINTS results CSV to convert into FPGA event JSON.')], output_events: Annotated[Path, typer.Option(help='Output FPGA events JSON path.')] = Path('results/fpga_events_from_results.json'), stride: Annotated[int, typer.Option(help='Use every Nth results row when exporting events.')] = 1, max_events: Annotated[Optional[int], typer.Option(help='Maximum exported events. Use 0 for no limit.')] = 288) -> None
fpga_replay(results_csv: Annotated[Path, typer.Option(help='Existing IINTS results CSV to replay through FPGA mode.')], output_dir: Annotated[Path, typer.Option(help='Output directory for replay artifacts.')] = Path('results/fpga_replay'), transport: Annotated[str, typer.Option(help='FPGA transport: mock or serial.')] = 'mock', port: Annotated[Optional[str], typer.Option(help='Serial port when --transport serial is used.')] = None, baudrate: Annotated[int, typer.Option(help='Serial baudrate for FPGA JSON-lines transport.')] = FPGA_DEFAULT_BAUDRATE, timeout_seconds: Annotated[float, typer.Option(help='Serial timeout per event in seconds.')] = 1.5, stride: Annotated[int, typer.Option(help='Use every Nth results row when generating events.')] = 1, max_events: Annotated[Optional[int], typer.Option(help='Maximum replayed events. Use 0 for no limit.')] = 288) -> None
fpga_run(events: Annotated[Optional[Path], typer.Option(help='Optional JSON/CSV event file. Defaults to bundled FPGA demo events.')] = None, output_dir: Annotated[Path, typer.Option(help='Output directory for FPGA comparison artifacts.')] = Path('results/fpga_run'), transport: Annotated[str, typer.Option(help='FPGA transport: mock or serial.')] = 'mock', port: Annotated[Optional[str], typer.Option(help='Serial port when --transport serial is used.')] = None, baudrate: Annotated[int, typer.Option(help='Serial baudrate for FPGA JSON-lines transport.')] = FPGA_DEFAULT_BAUDRATE, timeout_seconds: Annotated[float, typer.Option(help='Serial timeout per event in seconds.')] = 1.5) -> None
fpga_compare(run_dir: Annotated[Path, typer.Option(help='FPGA run directory containing fpga_comparison.json.')]) -> None
fpga_report(run_dir: Annotated[Path, typer.Option(help='FPGA run directory containing fpga_report.md.')]) -> None
fpga_demo(output_dir: Annotated[Path, typer.Option(help='Output directory for the complete FPGA demo bundle.')] = Path('results/fpga_demo')) -> None
fpga_start(output_dir: Annotated[Path, typer.Option(help='Output directory for the guided FPGA quickstart bundle.')] = Path('results/fpga_start')) -> None
edge_pump_init(output_dir: Annotated[Path, typer.Option(help='Directory where the Pico pump lab workspace should be written.')] = Path('iints_pico_pump_lab'), algorithm: Annotated[Optional[Path], typer.Option(help='Optional existing SDK algorithm to copy into the lab workspace.')] = None) -> None
edge_pump_firmware(output_dir: Annotated[Path, typer.Option(help='Directory where locked Pico bench firmware should be written.')] = Path('pico_pump_firmware')) -> None
edge_pump_package(algorithm: Annotated[Path, typer.Option(help='SDK algorithm Python file to package for bench-only Pico testing.')], output_dir: Annotated[Path, typer.Option(help='Output bundle directory.')] = Path('pico_pump_bundle'), safety_contract: Annotated[Optional[Path], typer.Option(help='Optional zero-delivery safety contract JSON.')] = None, label: Annotated[str, typer.Option(help='Human-readable bundle label written into the manifest.')] = 'pico_pump_bench') -> None
edge_pump_upload(bundle_dir: Annotated[Path, typer.Option(help='Bundle directory fromiints edge pump package.')], mount_dir: Annotated[Path, typer.Option(help='Mounted writable Pico/CircuitPython-style drive or a test folder.')], bench_only_confirm: Annotated[str, typer.Option(help=f'Must be exactly: {PICO_PUMP_CONFIRMATION}')] = '', write: Annotated[bool, typer.Option('--write', help='Actually copy files. Without this flag, only prints the copy plan.')] = False) -> None
edge_pump_serial_test(port: Annotated[str, typer.Option(help='Serial port for the Pico bench firmware, for example /dev/ttyACM0 or /dev/tty.usbmodem*.')], baudrate: Annotated[int, typer.Option(help='Serial baud rate used by the Pico bench firmware.')] = PICO_PUMP_BAUDRATE, timeout_seconds: Annotated[float, typer.Option(help='Read timeout per command in seconds.')] = 1.5) -> None
pump_init(output_dir: Annotated[Path, typer.Option(help='Directory where the Pico pump lab workspace should be written.')] = Path('iints_pico_pump_lab'), algorithm: Annotated[Optional[Path], typer.Option(help='Optional existing SDK algorithm to copy into the lab workspace.')] = None) -> None
pump_compile(algorithm: Annotated[Path, typer.Option(help='SDK algorithm Python file to compile/package for bench-only Pico testing.')], output_dir: Annotated[Path, typer.Option(help='Output bundle directory.')] = Path('pico_pump_bundle'), safety_contract: Annotated[Optional[Path], typer.Option(help='Optional zero-delivery safety contract JSON.')] = None, label: Annotated[str, typer.Option(help='Human-readable bundle label written into the manifest.')] = 'pico_pump_bench') -> None
pump_bench_test(bundle_dir: Annotated[Path, typer.Option(help='Bundle directory fromiints pump compile.')], output_json: Annotated[Optional[Path], typer.Option(help='Optional JSON report path.')] = None, port: Annotated[Optional[str], typer.Option(help='Optional Pico serial port for an additional non-actuating smoke test.')] = None, baudrate: Annotated[int, typer.Option(help='Serial baud rate used by the Pico bench firmware.')] = PICO_PUMP_BAUDRATE, timeout_seconds: Annotated[float, typer.Option(help='Read timeout per serial command in seconds.')] = 1.5) -> None
pump_upload(bundle_dir: Annotated[Path, typer.Option(help='Bundle directory fromiints pump compile.')], mount_dir: Annotated[Path, typer.Option(help='Mounted writable Pico/CircuitPython-style drive or a test folder.')], bench_only_confirm: Annotated[str, typer.Option(help=f'Must be exactly: {PICO_PUMP_CONFIRMATION}')] = '', write: Annotated[bool, typer.Option('--write', help='Actually copy files. Without this flag, only prints the copy plan.')] = False) -> None
edge_bridge_test(port: Annotated[Optional[str], typer.Option(help='Serial port for the UNO Q STM32 side. Useautoor omit it if exactly one port is connected.')] = None, baudrate: Annotated[int, typer.Option(help='Serial baud rate used by the UNO Q bridge sketch.')] = UNO_Q_BRIDGE_BAUDRATE, delay_seconds: Annotated[float, typer.Option(help='Pause between test states in seconds.')] = 0.75) -> None
edge_bridge_run(port: Annotated[Optional[str], typer.Option(help='Serial port for the UNO Q STM32 side. Useautoor omit it if exactly one port is connected.')] = None, workspace: Annotated[Optional[Path], typer.Option(help='Workspace directory for the persistent digital patient state.')] = None, project_dir: Annotated[Optional[Path], typer.Option(help='Optional edge project directory created byiints edge setup.')] = None, workspace_name: Annotated[str, typer.Option(help='Workspace folder inside the edge project.')] = 'patient_runtime', baudrate: Annotated[int, typer.Option(help='Serial baud rate used by the UNO Q bridge sketch.')] = UNO_Q_BRIDGE_BAUDRATE, poll_interval: Annotated[float, typer.Option(help='Polling interval in seconds while following runtime status.')] = 1.0, once: Annotated[bool, typer.Option(help='Send the current state once and exit.')] = False, max_cycles: Annotated[Optional[int], typer.Option('--max-cycles', hidden=True)] = None) -> None
edge_bridge_flash(port: Annotated[str, typer.Option(help='Serial port used to upload the UNO Q bridge sketch.')], fqbn: Annotated[str, typer.Option(help='Arduino CLI FQBN for the UNO Q board package.')], project_dir: Annotated[Path, typer.Option(help='Edge project directory created byiints edge setup.')] = Path('.'), sketch_dir: Annotated[Optional[Path], typer.Option(help='Optional bridge sketch directory. Defaults to <project-dir>/uno_q_bridge.')] = None, arduino_cli: Annotated[str, typer.Option(help='Arduino CLI executable name or path.')] = 'arduino-cli') -> None
edge_benchmark_alias(algo: Annotated[Path, typer.Option(help='Path to the insulin algorithm Python file used for the edge benchmark.')], output_json: Annotated[Path, typer.Option(help='Output JSON path for the hardware benchmark results.')] = Path('results/edge_benchmark.json'), patient_config: Annotated[str, typer.Option(help='Patient configuration name or YAML path.')] = 'default_patient', patient_model: Annotated[str, typer.Option('--patient-model', help='Patient model type.')] = 'auto', scenario_profile: Annotated[str, typer.Option(help='Digital patient scenario profile.')] = 'normal_day', steps: Annotated[int, typer.Option(help='Number of simulated steps used for throughput measurement.')] = 72, platform_name: Annotated[str, typer.Option('--platform', help="Platform label written into the benchmark report. Use 'auto' to detect locally.")] = 'auto', api_host: Annotated[str, typer.Option(help='Host used for the local dashboard probe.')] = '127.0.0.1', api_port: Annotated[int, typer.Option(help='Port used for the local dashboard probe.')] = 8766, seed: Annotated[Optional[int], typer.Option(help='Optional deterministic seed override.')] = None) -> None
Public Constants
APP_HELP
IINTS_ASCII_LOGO
iints.cli.patient_cli
- Source:
src/iints/cli/patient_cli.py
- Summary: No module docstring.
Public Functions
scenarios() -> None
start(algo: Annotated[Path, typer.Option(help='Path to the insulin algorithm Python file.')], patient_config: Annotated[str, typer.Option(help='Patient configuration name or YAML path.')] = 'default_patient', patient_model: Annotated[str, typer.Option('--patient-model', help='Patient model type: auto, bergman, custom, simglucose.')] = 'auto', scenario_profile: Annotated[str, typer.Option(help='Live day profile: school_day, normal_day, sport_day, bad_carb_count, night_hypo_risk, relaxed_day, expo_hot_start.')] = 'normal_day', workspace: Annotated[Path, typer.Option(help='Workspace directory for the persistent digital patient state.')] = Path('./digital_patient_runtime'), mode: Annotated[str, typer.Option(help='Clock mode: real-time or demo-time.')] = 'demo-time', speed: Annotated[str, typer.Option(help='Acceleration factor for demo-time mode. Accepts values like 60 or 60x.')] = '60x', api_host: Annotated[str, typer.Option(help='Host for the FastAPI dashboard service. Loopback is the safe default; non-loopback requires --allow-remote-api plus a token.')] = '127.0.0.1', api_port: Annotated[int, typer.Option(help='Port for the local FastAPI dashboard service.')] = 8765, allow_remote_api: Annotated[bool, typer.Option(help='Allow the dashboard API to listen on a non-loopback host. Use this only with --api-token-env, --api-token-file, or --api-token.')] = False, api_token: Annotated[Optional[str], typer.Option(help='Bearer token for dashboard and control access. Prefer --api-token-env or --api-token-file in shared environments.')] = None, api_token_env: Annotated[Optional[str], typer.Option(help='Environment variable name that stores the dashboard/control bearer token.')] = None, api_token_file: Annotated[Optional[Path], typer.Option(help='Path to a file containing the dashboard/control bearer token.')] = None, seed: Annotated[Optional[int], typer.Option(help='Optional deterministic simulation seed.')] = None, foreground: Annotated[bool, typer.Option('--foreground', hidden=True)] = False, max_steps: Annotated[Optional[int], typer.Option('--max-steps', hidden=True)] = None, reset: Annotated[bool, typer.Option('--reset', hidden=True)] = False) -> None
status(workspace: Annotated[Path, typer.Option(help='Workspace directory for the persistent digital patient state.')] = Path('./digital_patient_runtime')) -> None
inject_meal(carbs: Annotated[float, typer.Option(help='Carbohydrate amount to inject immediately into the live patient.')], workspace: Annotated[Path, typer.Option(help='Workspace directory for the persistent digital patient state.')] = Path('./digital_patient_runtime')) -> None
pause(workspace: Annotated[Path, typer.Option(help='Workspace directory for the persistent digital patient state.')] = Path('./digital_patient_runtime')) -> None
resume(workspace: Annotated[Path, typer.Option(help='Workspace directory for the persistent digital patient state.')] = Path('./digital_patient_runtime')) -> None
expo_reset(scenario_profile: Annotated[Optional[str], typer.Option(help='Optional profile to load after reset. Defaults to expo_hot_start.')] = None, seed: Annotated[Optional[int], typer.Option(help='Optional deterministic seed override for the reset profile.')] = None, workspace: Annotated[Path, typer.Option(help='Workspace directory for the persistent digital patient state.')] = Path('./digital_patient_runtime')) -> None
stop(workspace: Annotated[Path, typer.Option(help='Workspace directory for the persistent digital patient state.')] = Path('./digital_patient_runtime')) -> None
export_service(workspace: Annotated[Path, typer.Option(help='Workspace directory for the persistent digital patient state.')] = Path('./digital_patient_runtime'), output: Annotated[Optional[Path], typer.Option(help='Optional output service file path.')] = None, service_name: Annotated[str, typer.Option(help='systemd service name without the .service suffix.')] = 'iints-digital-patient', user_name: Annotated[Optional[str], typer.Option(help='Linux user that should run the service. Defaults to the current shell user.')] = None, python_path: Annotated[Optional[Path], typer.Option(help='Python executable used in ExecStart. Defaults to the current interpreter.')] = None) -> None
export_uno_bridge(output_dir: Annotated[Path, typer.Option(help='Directory where the UNO Q bridge scaffold should be written.')] = Path('./uno_q_bridge')) -> None
hardware_bridge(board: Annotated[str, typer.Option(help='Hardware bridge target. Currently supported: uno_q.')] = 'uno_q', output_dir: Annotated[Path, typer.Option(help='Directory where the hardware bridge scaffold should be written.')] = Path('./uno_q_bridge')) -> None
kiosk(workspace: Annotated[Path, typer.Option(help='Workspace directory for the persistent digital patient state.')] = Path('./digital_patient_runtime')) -> None
review(workspace: Annotated[Path, typer.Option(help='Workspace directory for the persistent digital patient state.')] = Path('./digital_patient_runtime'), model: Annotated[str, typer.Option(help='Local Ollama model used for the realism review.')] = DEFAULT_MINISTRAL_MODEL, mdmp_cert: Annotated[Optional[Path], typer.Option(help='Optional MDMP certificate path. If omitted, the live bundle gets a local dev cert.')] = None, output: Annotated[Optional[Path], typer.Option(help='Optional output markdown file for the review.')] = None, ollama_host: Annotated[Optional[str], typer.Option(help='Optional Ollama base URL override.')] = None, minimum_grade: Annotated[str, typer.Option(help='Minimum MDMP grade required before review runs.')] = 'research_grade') -> None
iints.core
- Source:
src/iints/core/__init__.py
- Summary: No module docstring.
No public classes, functions, or all-caps constants are declared directly in this module.
iints.core.algorithms
- Source:
src/iints/core/algorithms/__init__.py
- Summary: No module docstring.
No public classes, functions, or all-caps constants are declared directly in this module.
iints.core.algorithms.battle_runner
- Source:
src/iints/core/algorithms/battle_runner.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
BattleRunner |
BattleRunner |
Runs a battle between different insulin algorithms. |
BattleRunner methods
run_battle(self, isf_override: Optional[float] = None, icr_override: Optional[float] = None) -> Tuple[Dict[str, Any], Dict[str, pd.DataFrame]]
print_battle_report(self, battle_report: Dict[str, Any])
iints.core.algorithms.clinical_baseline
- Source:
src/iints/core/algorithms/clinical_baseline.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
ClinicalBaselineAlgorithm |
ClinicalBaselineAlgorithm(InsulinAlgorithm) |
Conservative clinician-style baseline. |
ClinicalBaselineAlgorithm methods
predict_insulin(self, data: AlgorithmInput) -> Dict[str, Any]
iints.core.algorithms.correction_bolus
- Source:
src/iints/core/algorithms/correction_bolus.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
CorrectionBolus |
CorrectionBolus(InsulinAlgorithm) |
An insulin algorithm that calculates a meal bolus based on carbohydrates and adds a correction bolus if current glucose is above a target. |
CorrectionBolus methods
predict_insulin(self, data: AlgorithmInput) -> Dict[str, Any]
iints.core.algorithms.discovery
- Source:
src/iints/core/algorithms/discovery.py
- Summary: No module docstring.
Public Functions
discover_algorithms() -> Dict[str, Type[InsulinAlgorithm]]
iints.core.algorithms.fixed_basal_bolus
- Source:
src/iints/core/algorithms/fixed_basal_bolus.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
FixedBasalBolus |
FixedBasalBolus(InsulinAlgorithm) |
A simple insulin algorithm that delivers a fixed basal rate and a meal bolus based on carbohydrate intake. |
FixedBasalBolus methods
predict_insulin(self, data: AlgorithmInput) -> Dict[str, Any]
iints.core.algorithms.hybrid_algorithm
- Source:
src/iints/core/algorithms/hybrid_algorithm.py
- Summary: No module docstring.
No public classes, functions, or all-caps constants are declared directly in this module.
iints.core.algorithms.imitation_controller
- Source:
src/iints/core/algorithms/imitation_controller.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
ExperimentalImitationController |
ExperimentalImitationController(InsulinAlgorithm) |
Research-only local policy that imitates previously supervised insulin actions. |
ExperimentalImitationController methods
predict_insulin(self, data: AlgorithmInput) -> Dict[str, Any]
iints.core.algorithms.lstm_algorithm
- Source:
src/iints/core/algorithms/lstm_algorithm.py
- Summary: No module docstring.
No public classes, functions, or all-caps constants are declared directly in this module.
iints.core.algorithms.mock_algorithms
- Source:
src/iints/core/algorithms/mock_algorithms.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
ConstantDoseAlgorithm |
ConstantDoseAlgorithm(InsulinAlgorithm) |
Always returns a fixed insulin dose for CI and smoke testing. |
RandomDoseAlgorithm |
RandomDoseAlgorithm(InsulinAlgorithm) |
Returns a random dose within a safe range for stochastic testing. |
RunawayAIAlgorithm |
RunawayAIAlgorithm(InsulinAlgorithm) |
Delivers a maximal bolus during glucose decline to stress-test supervisor. |
StackingAIAlgorithm |
StackingAIAlgorithm(InsulinAlgorithm) |
Delivers repeated boluses over consecutive steps to simulate stacking. |
ConstantDoseAlgorithm methods
get_algorithm_metadata(self) -> AlgorithmMetadata
predict_insulin(self, data: AlgorithmInput) -> Dict[str, Any]
RandomDoseAlgorithm methods
get_algorithm_metadata(self) -> AlgorithmMetadata
predict_insulin(self, data: AlgorithmInput) -> Dict[str, Any]
RunawayAIAlgorithm methods
get_algorithm_metadata(self) -> AlgorithmMetadata
predict_insulin(self, data: AlgorithmInput) -> Dict[str, Any]
StackingAIAlgorithm methods
get_algorithm_metadata(self) -> AlgorithmMetadata
reset(self) -> None
predict_insulin(self, data: AlgorithmInput) -> Dict[str, Any]
iints.core.algorithms.mpc_controller
- Source:
src/iints/core/algorithms/mpc_controller.py
- Summary: Model Predictive Controller (MPC) — IINTS-AF ============================================= Uses an internal ODE model (Bergman Minimal Model) to predict glucose trajectory and scipy.optimize to calculate the mathematically optimal insulin dose that minimizes glucose deviation from target.
Public Classes
| Class |
Signature |
Summary |
MPCController |
MPCController(InsulinAlgorithm) |
Agentic Physics-Informed MPC. Simulates the biological ODEs into the future to find the safest dose. |
MPCController methods
predict_insulin(self, data: AlgorithmInput) -> Dict[str, Any]
reset(self) -> None
get_algorithm_info(self) -> Dict[str, Any]
iints.core.algorithms.neural_controller
- Source:
src/iints/core/algorithms/neural_controller.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
ExperimentalNeuralController |
ExperimentalNeuralController(InsulinAlgorithm) |
Research-only PyTorch policy trained from safety-supervised teacher actions. |
ExperimentalNeuralController methods
predict_insulin(self, data: AlgorithmInput) -> Dict[str, Any]
iints.core.algorithms.pid_controller
- Source:
src/iints/core/algorithms/pid_controller.py
- Summary: Industry-Standard PID Controller - IINTS-AF Simple PID implementation for algorithm comparison
Public Classes
| Class |
Signature |
Summary |
PIDController |
PIDController(InsulinAlgorithm) |
Industry-standard PID controller for glucose management |
PIDController methods
predict_insulin(self, data: AlgorithmInput)
reset(self)
get_algorithm_info(self)
iints.core.algorithms.standard_pump_algo
- Source:
src/iints/core/algorithms/standard_pump_algo.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
StandardPumpAlgorithm |
StandardPumpAlgorithm(InsulinAlgorithm) |
A simplified algorithm representing a standard insulin pump. It delivers a fixed basal rate and a simple bolus based on carbs, with minimal correction for high glucose. |
StandardPumpAlgorithm methods
predict_insulin(self, data: AlgorithmInput) -> Dict[str, Any]
iints.core.device
- Source:
src/iints/core/device.py
- Summary: No module docstring.
No public classes, functions, or all-caps constants are declared directly in this module.
iints.core.device_manager
- Source:
src/iints/core/device_manager.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
DeviceManager |
DeviceManager |
Manages hardware device detection for cross-platform compatibility. Detects MPS (Apple Silicon), CUDA (NVIDIA GPUs), or falls back to CPU. |
DeviceManager methods
iints.core.devices
- Source:
src/iints/core/devices/__init__.py
- Summary: No module docstring.
- Explicit exports:
SensorModel, PumpModel, SENSOR_PROFILES, create_sensor_model
No public classes, functions, or all-caps constants are declared directly in this module.
iints.core.devices.models
- Source:
src/iints/core/devices/models.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
SensorReading |
SensorReading |
No module docstring. |
SensorModel |
SensorModel |
Sensor error model for CGM readings. |
PumpDelivery |
PumpDelivery |
No module docstring. |
PumpModel |
PumpModel |
Pump error model for insulin delivery. |
SensorModel methods
reset(self) -> None
read(self, true_glucose: float, current_time: float) -> SensorReading
get_state(self) -> Dict[str, Any]
set_state(self, state: Dict[str, Any]) -> None
PumpModel methods
reset(self) -> None
deliver(self, requested_units: float, time_step_minutes: float) -> PumpDelivery
get_state(self) -> Dict[str, Any]
set_state(self, state: Dict[str, Any]) -> None
Public Functions
create_sensor_model(*, profile: str = 'clinical_cgm', seed: Optional[int] = None, **overrides: Any) -> SensorModel
Public Constants
iints.core.digital_twin
- Source:
src/iints/core/digital_twin.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
DigitalTwinCalibrator |
DigitalTwinCalibrator |
AI-driven Calibration Engine for creating a personalized Digital Twin. It takes historical data (CGM, carbs, insulin) and uses scipy optimization (L-BFGS-B) to find the metabolic "Big 5" parameters that minimize the RMSE between the simulation and real patient data. |
DigitalTwinCalibrator methods
fit(self, history: List[Dict[str, Any]]) -> HovorkaParameters
export_profile(self, filepath: str) -> None
iints.core.patient
- Source:
src/iints/core/patient/__init__.py
- Summary: No module docstring.
- Explicit exports:
PatientProfile, PatientModel, BergmanPatientModel, AdvancedMetabolicModel
No public classes, functions, or all-caps constants are declared directly in this module.
- Source:
src/iints/core/patient/advanced_metabolic_model.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
AdvancedMetabolicModel |
AdvancedMetabolicModel(BergmanPatientModel) |
Advanced Metabolic Model for IINTS-AF. Extends the 13-state Bergman model to an 18-state model including: - F: Free Fatty Acids (FFA) (mmol/L) - K: Ketone Bodies (mmol/L) - Beta: Residual Beta-cell mass fraction (0.0 to 1.0) - Q_fat: Fat stomach pool (grams) - Q_prot: Protein stomach pool (grams) |
reset(self) -> None
get_patient_state(self) -> Dict[str, float]
set_state(self, state: Dict[str, Any]) -> None
update(self, time_step: float = 0.0, delivered_insulin: float = 0.0, carb_intake: float = 0.0, delivered_glucagon_mg: float = 0.0, current_time: Optional[float] = None, **kwargs: Any) -> float
start_illness(self, severity: float) -> None
stop_illness(self) -> None
start_menstrual_cycle(self, current_time_minutes: float = 0.0) -> None
stop_menstrual_cycle(self) -> None
trigger_event(self, event_type: str, value: Any) -> None
get_state(self) -> Dict[str, Any]
iints.core.patient.bergman_model
- Source:
src/iints/core/patient/bergman_model.py
- Summary: Bergman Minimal Model — IINTS-AF ================================== ODE-based patient model inspired by the Bergman Minimal Model with an additional gut absorption compartment for realistic carbohydrate dynamics.
Public Classes
| Class |
Signature |
Summary |
BergmanParameters |
BergmanParameters |
Physiological parameters for the Bergman Minimal Model. |
BergmanPatientModel |
BergmanPatientModel |
ODE-based patient model providing the same interface as CustomPatientModel for drop-in use with the IINTS Simulator. |
BergmanPatientModel methods
reset(self) -> None
start_exercise(self, intensity: float) -> None
stop_exercise(self) -> None
start_stress(self, intensity: float) -> None
stop_stress(self) -> None
update(self, time_step: float, delivered_insulin: float, carb_intake: float = 0.0, delivered_glucagon_mg: float = 0.0, current_time: Optional[float] = None, **kwargs) -> float
get_current_glucose(self) -> float
trigger_event(self, event_type: str, value: Any) -> None
get_patient_state(self) -> Dict[str, float]
get_ratio_state(self) -> Dict[str, float]
set_ratio_state(self, isf: Optional[float] = None, icr: Optional[float] = None, basal_rate: Optional[float] = None, dia_minutes: Optional[float] = None) -> None
get_state(self) -> Dict[str, Any]
set_state(self, state: Dict[str, Any]) -> None
iints.core.patient.hovorka_model
- Source:
src/iints/core/patient/hovorka_model.py
- Summary: Improved Hovorka Model - IINTS-AF ================================== Based on standard Hovorka artificial pancreas equations and extended to match the IINTS simulator's interface.
Public Classes
| Class |
Signature |
Summary |
HovorkaParameters |
HovorkaParameters |
Physiological parameters for the Hovorka Model. |
HovorkaPatientModel |
HovorkaPatientModel |
No module docstring. |
HovorkaPatientModel methods
reset(self) -> None
start_exercise(self, intensity: float) -> None
stop_exercise(self) -> None
start_stress(self, intensity: float) -> None
stop_stress(self) -> None
update(self, time_step: float, delivered_insulin: float, carb_intake: float = 0.0, delivered_glucagon_mg: float = 0.0, current_time: Optional[float] = None, **kwargs) -> float
get_current_glucose(self) -> float
trigger_event(self, event_type: str, value: Any) -> None
get_patient_state(self) -> Dict[str, float]
get_ratio_state(self) -> Dict[str, float]
set_ratio_state(self, isf: Optional[float] = None, icr: Optional[float] = None, basal_rate: Optional[float] = None, dia_minutes: Optional[float] = None) -> None
get_state(self) -> Dict[str, Any]
set_state(self, state: Dict[str, Any]) -> None
iints.core.patient.models
- Source:
src/iints/core/patient/models.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
CustomPatientModel |
CustomPatientModel |
A simplified patient model for simulating blood glucose dynamics. This model is intended for educational and stress-testing purposes, not for clinical accuracy. |
CustomPatientModel methods
reset(self)
start_exercise(self, intensity: float)
stop_exercise(self)
start_stress(self, intensity: float)
stop_stress(self)
update(self, time_step: float, delivered_insulin: float, carb_intake: float = 0.0, current_time: Optional[float] = None, **kwargs) -> float
get_current_glucose(self) -> float
trigger_event(self, event_type: str, value: Any)
get_patient_state(self) -> Dict[str, float]
get_ratio_state(self) -> Dict[str, float]
set_ratio_state(self, isf: Optional[float] = None, icr: Optional[float] = None, basal_rate: Optional[float] = None, dia_minutes: Optional[float] = None) -> None
get_state(self) -> Dict[str, Any]
set_state(self, state: Dict[str, Any]) -> None
iints.core.patient.patient_factory
- Source:
src/iints/core/patient/patient_factory.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
PatientFactory |
PatientFactory |
Factory for creating different types of patient models. |
SimglucosePatientWrapper |
SimglucosePatientWrapper |
Wrapper for simglucose patients to match CustomPatientModel interface. |
PatientFactory methods
create_patient(patient_type = 'auto', patient_id = None, initial_glucose = 120.0, **kwargs)
get_patient_diversity_set()
SimglucosePatientWrapper methods
reset(self)
get_current_glucose(self)
update(self, time_step, delivered_insulin, carb_intake = 0.0, **kwargs)
insulin_on_board(self)
carbs_on_board(self)
trigger_event(self, event_type, value)
get_patient_state(self)
iints.core.patient.profile
- Source:
src/iints/core/patient/profile.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
PatientProfile |
PatientProfile |
User-facing patient profile that maps to the simulator config. |
PatientProfilePreset |
PatientProfilePreset |
Named starter profile with a concise purpose statement. |
PatientProfile methods
to_patient_config(self) -> Dict[str, Any]
PatientProfilePreset methods
build_profile(self) -> PatientProfile
Public Functions
get_patient_profile_preset(name: str) -> PatientProfilePreset
Public Constants
iints.core.physiology_variation
- Source:
src/iints/core/physiology_variation.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
EmpiricalResidualProfile |
EmpiricalResidualProfile |
No module docstring. |
EmpiricalResidualModel |
EmpiricalResidualModel |
Small additive model-discrepancy layer sampled from real CGM day residuals. |
EmpiricalResidualProfile methods
from_dict(cls, payload: dict[str, Any]) -> 'EmpiricalResidualProfile'
EmpiricalResidualModel methods
from_profile_id(cls, profile_id: str, *, seed: int | None = None, scale: float = 1.0, max_residual_rate_mgdl_per_min: float | None = 0.75) -> 'EmpiricalResidualModel'
reset(self) -> None
offset_at(self, current_time_minutes: float) -> float
get_state(self) -> dict[str, Any]
set_state(self, state: dict[str, Any]) -> None
Public Functions
load_empirical_residual_profiles() -> list[EmpiricalResidualProfile]
get_empirical_residual_profile(profile_id: str) -> EmpiricalResidualProfile
iints.core.safety
- Source:
src/iints/core/safety/__init__.py
- Summary: No module docstring.
- Explicit exports:
SafetyConfig, SafetySupervisor, InputValidator
No public classes, functions, or all-caps constants are declared directly in this module.
iints.core.safety.config
- Source:
src/iints/core/safety/config.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
SafetyConfig |
SafetyConfig |
Central safety configuration for simulator, input validation, and supervisor. |
Public Constants
SENSOR_GLUCOSE_MAX_MGDL
SENSOR_GLUCOSE_MIN_MGDL
SENSOR_MAX_GLUCOSE_DELTA_PER_5_MIN_MGDL
SENSOR_MAX_GLUCOSE_RATE_PER_MIN_MGDL
SIMULATION_GLUCOSE_CEILING_MGDL
SIMULATION_GLUCOSE_FLOOR_MGDL
- Source:
src/iints/core/safety/input_validator.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
InputValidator |
InputValidator |
A biological validation filter for sensor inputs to ensure they are physiologically plausible before being used by an algorithm. This component makes the system robust against common sensor errors. |
reset(self) -> None
get_state(self) -> Dict[str, Any]
set_state(self, state: Dict[str, Any]) -> None
validate_glucose(self, glucose_value: float, current_time: float) -> float
validate_insulin(self, dose: float) -> float
iints.core.safety.supervisor
- Source:
src/iints/core/safety/supervisor.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
IndependentSupervisor |
IndependentSupervisor(FullSupervisor) |
Safety supervisor that operates independently to validate insulin delivery. Enforces hard constraints on insulin delivery to prevent hypoglycemia and other hazards. |
IndependentSupervisor methods
validate_insulin_dose(self, proposed_dose: float, current_glucose: float, active_insulin: float, time_since_last_dose: float) -> float
iints.core.simulation
- Source:
src/iints/core/simulation/__init__.py
- Summary: No module docstring.
No public classes, functions, or all-caps constants are declared directly in this module.
iints.core.simulation.scenario_parser
- Source:
src/iints/core/simulation/scenario_parser.py
- Summary: No module docstring.
Public Functions
parse_scenario(file_path: str) -> Tuple[Dict[str, Any], List[StressEvent]]
iints.core.simulator
- Source:
src/iints/core/simulator.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
SimulationLimitError |
SimulationLimitError(RuntimeError) |
Raised when a simulation violates critical safety limits. |
StressEvent |
StressEvent |
Represents a discrete event that can occur during a simulation for stress testing. |
Simulator |
Simulator |
Orchestrates the interaction between a patient model and an insulin algorithm over a simulated period, including stress-test scenarios. |
Simulator methods
add_stress_event(self, event: StressEvent) -> None
run(self, duration_minutes: int) -> Tuple[pd.DataFrame, Dict[str, Any]]
run_batch(self, duration_minutes: int) -> Tuple[pd.DataFrame, Dict[str, Any]]
export_audit_trail(self, simulation_results_df: pd.DataFrame, output_dir: str) -> Dict[str, str]
run_live(self, duration_minutes: int) -> Generator[Dict[str, Any], None, None]
save_state(self) -> Dict[str, Any]
load_state(self, state: Dict[str, Any]) -> None
iints.core.supervisor
- Source:
src/iints/core/supervisor.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
SafetyLevel |
SafetyLevel(Enum) |
No module docstring. |
SafetyViolation |
SafetyViolation |
No module docstring. |
SafetyDecision |
SafetyDecision |
No module docstring. |
IndependentSupervisor |
IndependentSupervisor |
Independent safety supervisor that operates separately from algorithms. Implements hard safety limits and emergency overrides. |
IndependentSupervisor methods
evaluate_safety(self, current_glucose: float, proposed_insulin: float, current_time: float, current_iob: float = 0.0, predicted_glucose_30min: Optional[float] = None, basal_insulin_units: Optional[float] = None, basal_limit_units: Optional[float] = None) -> Dict[str, Any]
get_safety_report(self) -> Dict[str, Any]
reset(self) -> None
get_state(self) -> Dict[str, Any]
set_state(self, state: Dict[str, Any]) -> None
iints.data
- Source:
src/iints/data/__init__.py
- Summary: IINTS-AF Data Module Universal data ingestion and quality validation.
- Explicit exports:
DataAdapter, ColumnMapper, ColumnMapping, ImportResult, export_demo_csv, export_standard_csv, guess_column_mapping, import_carelink_csv, import_carelink_timeline, import_cgm_csv, import_cgm_dataframe, load_carelink_event_log, load_demo_dataframe, scenario_from_csv, scenario_from_dataframe, summarize_carelink_csv, DataQualityChecker, QualityReport, DataGap, DataAnomaly, REALISM_VERDICT_ORDER, MealResponse, RealismCheck, RealismReport, realism_verdict_meets_minimum, validate_realism_csv, validate_realism_dataset, write_realism_report, RealDataGateProfile, RealDataGateResult, STRICT_REAL_DATA_RESEARCH_PROFILE, review_real_data_realism, rank_real_data_sources, ReferenceBand, ReferenceComparison, RealismReferenceProfile, get_realism_reference, list_realism_reference_ids, load_realism_reference_registry, build_realism_dashboard_html, write_realism_dashboard, certify_csv, certify_dataset, render_certification_dashboard, write_certification_dashboard, write_certification_report, AVAILABLE_STUDY_CORRUPTIONS, apply_study_corruptions, write_corrupted_study_csv, UniversalParser, StandardDataPack, ParseResult, load_dataset_registry, get_dataset, list_dataset_ids, fetch_dataset, DEFAULT_RESEARCH_DATASET_IDS, build_research_dataset_matrix, resolve_research_dataset_entries, write_research_dataset_plan, NightscoutConfig, import_nightscout, TidepoolClient, TidepoolConfig, fetch_tidepool_dataframe, import_tidepool, load_openapi_spec, MedtronicLiveClient, MedtronicLiveConfig, fetch_medtronic_live_dataframe, fetch_medtronic_live_timeline, import_medtronic_live, normalize_medtronic_live_payload, StreamSpec, FeatureSpec, LabelSpec, ValidationSpec, ProcessSpec, ModelReadyContract, compile_contract, parse_contract, load_contract_yaml, ContractRunner, ValidationResult, CheckResult, MDMP_PROTOCOL_VERSION, MDMP_GRADE_ORDER, classify_mdmp_grade, mdmp_grade_meets_minimum, dataframe_fingerprint, build_mdmp_dashboard_html, mdmp_gate, MDMPGateError, generate_synthetic_mirror, SyntheticMirrorArtifact
No public classes, functions, or all-caps constants are declared directly in this module.
iints.data.adapter
- Source:
src/iints/data/adapter.py
- Summary: IINTS-AF Universal Data Adapter Professional data import layer with schema validation
Public Classes
| Class |
Signature |
Summary |
DataAdapter |
DataAdapter |
Universal data adapter for IINTS-AF framework |
DataAdapter methods
load_data_pack(self, pack_name: str) -> Dict
load_ohio_dataset(self, patient_id: str) -> pd.DataFrame
get_available_ohio_patients(self) -> List[str]
clinical_benchmark_comparison(self, patient_id: str, algorithms: List[str]) -> Dict[str, Any]
Public Functions
iints.data.certify
- Source:
src/iints/data/certify.py
- Summary: No module docstring.
Public Functions
certify_dataset(contract: Any | str | Path, dataframe: pd.DataFrame, *, apply_builtin_transforms: bool = True) -> MDMPValidationResult
certify_csv(contract_path: str | Path, input_csv: str | Path, *, apply_builtin_transforms: bool = True) -> MDMPValidationResult
render_certification_dashboard(report: Mapping[str, Any] | MDMPValidationResult, *, title: str = 'IINTS Data Certification Dashboard') -> str
write_certification_report(report: Mapping[str, Any] | MDMPValidationResult, output_path: str | Path) -> Path
write_certification_dashboard(report: Mapping[str, Any] | MDMPValidationResult, output_path: str | Path, *, title: str = 'IINTS Data Certification Dashboard') -> Path
iints.data.column_mapper
- Source:
src/iints/data/column_mapper.py
- Summary: Column Mapper - IINTS-AF Maps various column names to standard IINTS format
Public Classes
| Class |
Signature |
Summary |
ColumnMapping |
ColumnMapping |
Result of column mapping operation |
ColumnMapper |
ColumnMapper |
Maps various column name aliases to standard IINTS format. |
ColumnMapper methods
detect_source(self, columns: List[str]) -> Optional[str]
normalize_column_name(self, column_name: str) -> str
find_standard_mapping(self, column_name: str) -> Optional[str]
map_columns(self, columns: List[str]) -> ColumnMapping
apply_mapping(self, df, mapping: ColumnMapping) -> 'pd.DataFrame'
get_recommended_parser(self, source: str) -> str
get_source_info(self, source: str) -> Dict
Public Functions
iints.data.contracts
- Source:
src/iints/data/contracts.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
StreamSpec |
StreamSpec |
No module docstring. |
FeatureSpec |
FeatureSpec |
No module docstring. |
LabelSpec |
LabelSpec |
No module docstring. |
ValidationSpec |
ValidationSpec |
No module docstring. |
ProcessSpec |
ProcessSpec |
No module docstring. |
ModelReadyContract |
ModelReadyContract |
No module docstring. |
StreamSpec methods
to_dict(self) -> Dict[str, Any]
FeatureSpec methods
to_dict(self) -> Dict[str, Any]
LabelSpec methods
to_dict(self) -> Dict[str, Any]
ValidationSpec methods
to_dict(self) -> Dict[str, Any]
ProcessSpec methods
to_dict(self) -> Dict[str, Any]
ModelReadyContract methods
to_dict(self) -> Dict[str, Any]
fingerprint(self) -> str
Public Functions
canonicalize_contract(payload: Dict[str, Any]) -> str
compile_contract(payload: Dict[str, Any]) -> Dict[str, Any]
parse_contract(payload: Dict[str, Any]) -> ModelReadyContract
load_contract_yaml(path: Path) -> ModelReadyContract
iints.data.demo
- Source:
src/iints/data/demo/__init__.py
- Summary: No module docstring.
No public classes, functions, or all-caps constants are declared directly in this module.
iints.data.evidence
- Source:
src/iints/data/evidence.py
- Summary: No module docstring.
Public Functions
rank_real_data_sources() -> List[Dict[str, Any]]
Public Constants
CONTROLLED_ACCESS_MARKERS
OPEN_ACCESS_MARKERS
iints.data.guardians
- Source:
src/iints/data/guardians.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
MDMPGateError |
MDMPGateError(RuntimeError) |
No module docstring. |
Public Functions
mdmp_gate(contract: ContractInput, *, min_grade: str = 'research_grade', fail_mode: GateFailMode = 'raise', dataframe_arg: Optional[str] = None, apply_builtin_transforms: bool = True, transform_hooks: Optional[Iterable[Callable[[pd.DataFrame], pd.DataFrame]]] = None, on_result: Optional[Callable[[ValidationResult], None]] = None) -> Callable[[Callable[..., Any]], Callable[..., Any]]
Public Constants
iints.data.importer
- Source:
src/iints/data/importer.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
ImportResult |
ImportResult |
No module docstring. |
Public Functions
summarize_carelink_csv(path: Union[str, Path]) -> Dict[str, Any]
load_carelink_event_log(path: Union[str, Path]) -> tuple[pd.DataFrame, Dict[str, Any]]
import_carelink_timeline(path: Union[str, Path], *, source: Optional[str] = None, event_tolerance_minutes: float = 7.5) -> pd.DataFrame
import_carelink_csv(path: Union[str, Path], *, source: Optional[str] = None, event_tolerance_minutes: float = 7.5) -> pd.DataFrame
guess_column_mapping(columns: Iterable[str], data_format: str = 'generic') -> Dict[str, Optional[str]]
validate_import_schema(columns: Iterable[str], data_format: str, column_map: Optional[Dict[str, str]] = None) -> None
import_cgm_dataframe(df: pd.DataFrame, data_format: str = 'generic', column_map: Optional[Dict[str, str]] = None, time_unit: str = 'minutes', source: Optional[str] = None) -> pd.DataFrame
import_cgm_csv(path: Union[str, Path], data_format: str = 'generic', column_map: Optional[Dict[str, str]] = None, time_unit: str = 'minutes', source: Optional[str] = None) -> pd.DataFrame
scenario_from_dataframe(df: pd.DataFrame, scenario_name: str, scenario_version: str = '1.0', description: str = 'Imported CGM scenario', carb_threshold: float = 0.1, absorption_delay_minutes: int = 10, duration_minutes: int = 60) -> Dict[str, Any]
scenario_from_csv(path: Union[str, Path], scenario_name: str = 'Imported CGM Scenario', scenario_version: str = '1.0', data_format: str = 'generic', column_map: Optional[Dict[str, str]] = None, time_unit: str = 'minutes', carb_threshold: float = 0.1) -> ImportResult
export_standard_csv(df: pd.DataFrame, output_path: Union[str, Path]) -> str
load_demo_dataframe() -> pd.DataFrame
export_demo_csv(output_path: Union[str, Path]) -> str
Public Constants
DEFAULT_MAPPINGS
IMPORT_FORMAT_SCHEMAS
iints.data.ingestor
- Source:
src/iints/data/ingestor.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
DataIngestor |
DataIngestor |
Standardized Data Bridge for ingesting various diabetes datasets into a universal IINTS-AF format. |
DataIngestor methods
get_patient_model(self, file_path: Union[str, Path], data_type: str) -> pd.DataFrame
iints.data.mdmp_visualizer
- Source:
src/iints/data/mdmp_visualizer.py
- Summary: No module docstring.
Public Functions
build_mdmp_dashboard_html(report: Dict[str, Any], *, title: str = 'IINTS MDMP Certification Dashboard', generated_at_utc: Optional[str] = None) -> str
iints.data.medtronic_live
- Source:
src/iints/data/medtronic_live.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
MedtronicLiveConfig |
MedtronicLiveConfig |
Configuration for an authorized read-only Medtronic/CareLink live relay. |
MedtronicLiveClient |
MedtronicLiveClient |
Small authenticated JSON client for a read-only Medtronic live data relay. |
MedtronicLiveClient methods
get_json(self, path: str, *, query: Optional[Dict[str, Any]] = None) -> Any
Public Functions
normalize_medtronic_live_payload(payload: Any, *, event_tolerance_minutes: float = 7.5, source: str = 'medtronic_carelink_live') -> pd.DataFrame
fetch_medtronic_live_payload(config: MedtronicLiveConfig) -> Any
fetch_medtronic_live_timeline(config: MedtronicLiveConfig) -> pd.DataFrame
medtronic_live_timeline_to_standard(timeline: pd.DataFrame, *, source: str = 'medtronic_carelink_live') -> pd.DataFrame
fetch_medtronic_live_dataframe(config: MedtronicLiveConfig) -> pd.DataFrame
import_medtronic_live(config: MedtronicLiveConfig, scenario_name: str = 'Medtronic CareLink Live Import', scenario_version: str = '1.0', carb_threshold: float = 0.1) -> ImportResult
poll_medtronic_live_timeline(config: MedtronicLiveConfig, *, samples: int = 1, poll_seconds: float = 30.0) -> Iterable[pd.DataFrame]
write_latest_medtronic_live_snapshot(timeline: pd.DataFrame, output_dir: Path) -> Dict[str, str]
Public Constants
CARB_KEYS
GLUCOSE_KEYS
GLUCOSE_TYPES
INSULIN_KEYS
LIST_KEYS
SINGLE_RECORD_KEYS
TIMESTAMP_KEYS
TYPE_KEYS
UNIT_KEYS
iints.data.nightscout
- Source:
src/iints/data/nightscout.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
NightscoutConfig |
NightscoutConfig |
No module docstring. |
Public Functions
fetch_nightscout_dataframe(config: NightscoutConfig) -> pd.DataFrame
import_nightscout(config: NightscoutConfig, scenario_name: str = 'Nightscout Import', scenario_version: str = '1.0', carb_threshold: float = 0.1) -> ImportResult
iints.data.quality_checker
- Source:
src/iints/data/quality_checker.py
- Summary: Data Quality Checker - IINTS-AF Validates data quality and calculates confidence scores with gap detection.
Public Classes
| Class |
Signature |
Summary |
QualityReport |
QualityReport |
Comprehensive data quality report |
DataGap |
DataGap |
Represents a gap in the data |
DataAnomaly |
DataAnomaly |
Represents an anomalous data point |
DataQualityChecker |
DataQualityChecker |
Validates data quality and calculates confidence scores. |
QualityReport methods
DataGap methods
to_dict(self) -> Dict
get_warning_message(self) -> str
DataAnomaly methods
DataQualityChecker methods
check_completeness(self, df: pd.DataFrame) -> Tuple[float, List[DataGap]]
check_consistency(self, df: pd.DataFrame) -> float
check_validity(self, df: pd.DataFrame) -> Tuple[float, List[DataAnomaly]]
check(self, df: pd.DataFrame) -> QualityReport
get_confidence_score(self, df: pd.DataFrame) -> float
print_report(self, report: QualityReport)
Public Functions
iints.data.realism_dashboard
- Source:
src/iints/data/realism_dashboard.py
- Summary: No module docstring.
Public Functions
build_realism_dashboard_html(report: RealismReport, dataframe: pd.DataFrame, *, title: str = 'IINTS Physiological Realism Dashboard', source_label: Optional[str] = None) -> str
write_realism_dashboard(report: RealismReport, dataframe: pd.DataFrame, output_path: str | Path, *, title: str = 'IINTS Physiological Realism Dashboard', source_label: Optional[str] = None) -> Path
iints.data.realism_governance
- Source:
src/iints/data/realism_governance.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
RealDataGateProfile |
RealDataGateProfile |
Strict research gate for traces used as realism evidence or AI training data. |
RealDataGateResult |
RealDataGateResult |
No module docstring. |
RealDataGateResult methods
to_dict(self) -> Dict[str, Any]
Public Functions
review_real_data_realism(report: RealismReport, *, profile: RealDataGateProfile = STRICT_REAL_DATA_RESEARCH_PROFILE) -> RealDataGateResult
Public Constants
STRICT_REAL_DATA_RESEARCH_PROFILE
iints.data.realism_reference
- Source:
src/iints/data/realism_reference.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
ReferenceBand |
ReferenceBand |
No module docstring. |
ReferenceComparison |
ReferenceComparison |
No module docstring. |
RealismReferenceProfile |
RealismReferenceProfile |
No module docstring. |
ReferenceBand methods
from_dict(cls, payload: Dict[str, Any]) -> 'ReferenceBand'
to_dict(self) -> Dict[str, float]
ReferenceComparison methods
to_dict(self) -> Dict[str, Any]
RealismReferenceProfile methods
from_dict(cls, payload: Dict[str, Any]) -> 'RealismReferenceProfile'
to_dict(self) -> Dict[str, Any]
Public Functions
load_realism_reference_registry() -> List[RealismReferenceProfile]
list_realism_reference_ids() -> List[str]
get_realism_reference(reference_id: str) -> RealismReferenceProfile
compare_to_reference_band(metric_key: str, label: str, observed_value: float | None, band: ReferenceBand) -> ReferenceComparison
metric_label(metric_key: str) -> str
build_reference_comparisons(observed_metrics: Dict[str, Any], profile: RealismReferenceProfile) -> List[ReferenceComparison]
iints.data.realism_validator
- Source:
src/iints/data/realism_validator.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
RealismCheck |
RealismCheck |
No module docstring. |
MealResponse |
MealResponse |
No module docstring. |
RealismReport |
RealismReport |
No module docstring. |
RealismCheck methods
to_dict(self) -> Dict[str, Any]
MealResponse methods
to_dict(self) -> Dict[str, float | None]
RealismReport methods
to_dict(self) -> Dict[str, Any]
Public Functions
realism_verdict_meets_minimum(verdict: str, minimum: str) -> bool
validate_realism_dataset(dataframe: pd.DataFrame, *, expected_interval_minutes: int = 5, min_meal_grams: float = 10.0, reference: str | RealismReferenceProfile | None = None) -> RealismReport
validate_realism_csv(input_csv: str | Path, *, data_format: str = 'generic', column_map: Optional[Dict[str, str]] = None, time_unit: str = 'minutes', source: Optional[str] = None, expected_interval_minutes: int = 5, min_meal_grams: float = 10.0, reference: str | RealismReferenceProfile | None = None) -> RealismReport
write_realism_report(report: RealismReport, output_path: str | Path) -> Path
Public Constants
MEAL_RESPONSE_MAX_LAG_MINUTES
REALISM_VERDICT_ORDER
iints.data.registry
- Source:
src/iints/data/registry.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
DatasetRegistryError |
DatasetRegistryError(RuntimeError) |
No module docstring. |
DatasetFetchError |
DatasetFetchError(RuntimeError) |
No module docstring. |
Public Functions
load_dataset_registry() -> List[Dict[str, Any]]
get_dataset(dataset_id: str) -> Dict[str, Any]
list_dataset_ids() -> List[str]
fetch_dataset(dataset_id: str, output_dir: Path, extract: bool = True, verify: bool = True) -> List[Path]
iints.data.research_catalog
- Source:
src/iints/data/research_catalog.py
- Summary: No module docstring.
Public Functions
resolve_research_dataset_entries(dataset_ids: Sequence[str] | None = None) -> list[Dict[str, Any]]
build_research_dataset_matrix(dataset_ids: Sequence[str] | None = None) -> list[dict[str, Any]]
write_research_dataset_plan(output_dir: Path, dataset_ids: Sequence[str] | None = None) -> dict[str, Any]
Public Constants
DEFAULT_RESEARCH_DATASET_IDS
TASK_COLUMNS
iints.data.runner
- Source:
src/iints/data/runner.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
CheckResult |
CheckResult |
No module docstring. |
ValidationResult |
ValidationResult |
No module docstring. |
ContractRunner |
ContractRunner |
Lightweight executor for model-ready data contracts. |
CheckResult methods
to_dict(self) -> Dict[str, Any]
ValidationResult methods
to_dict(self) -> Dict[str, Any]
ContractRunner methods
run(self, df: pd.DataFrame, *, transform_hooks: Optional[Iterable[TransformHook]] = None, apply_builtin_transforms: bool = True) -> ValidationResult
Public Functions
dataframe_fingerprint(df: pd.DataFrame) -> str
classify_mdmp_grade(score: float, is_compliant: bool) -> str
mdmp_grade_meets_minimum(actual_grade: str, minimum_grade: str) -> bool
Public Constants
MDMP_GRADE_ORDER
MDMP_PROTOCOL_VERSION
iints.data.study_corruption
- Source:
src/iints/data/study_corruption.py
- Summary: No module docstring.
Public Functions
apply_study_corruptions(dataframe: pd.DataFrame, *, modes: list[str], seed: int = 42, timestamp_shift_minutes: int = 60, missing_fraction: float = 0.1, duplicate_fraction: float = 0.05, spike_fraction: float = 0.03, spike_magnitude_mgdl: float = 60.0) -> tuple[pd.DataFrame, dict[str, Any]]
write_corrupted_study_csv(input_csv: str | Path, *, output_csv: str | Path, modes: list[str], manifest_output: str | Path | None = None, seed: int = 42, timestamp_shift_minutes: int = 60, missing_fraction: float = 0.1, duplicate_fraction: float = 0.05, spike_fraction: float = 0.03, spike_magnitude_mgdl: float = 60.0) -> dict[str, str]
Public Constants
AVAILABLE_STUDY_CORRUPTIONS
iints.data.synthetic_mirror
- Source:
src/iints/data/synthetic_mirror.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
SyntheticMirrorArtifact |
SyntheticMirrorArtifact |
No module docstring. |
SyntheticMirrorArtifact methods
to_dict(self) -> Dict[str, Any]
Public Functions
generate_synthetic_mirror(source_df: pd.DataFrame, contract: ContractInput, *, rows: Optional[int] = None, seed: int = 42, noise_scale: float = 0.05, timestamp_column: str = 'timestamp') -> Tuple[pd.DataFrame, SyntheticMirrorArtifact]
iints.data.tidepool
- Source:
src/iints/data/tidepool.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
TidepoolConfig |
TidepoolConfig |
No module docstring. |
TidepoolClient |
TidepoolClient |
Small authenticated Tidepool Data Platform client for read-only imports. |
TidepoolClient methods
get_json(self, path: str, *, query: Optional[dict[str, Any]] = None) -> Any
current_user(self) -> dict[str, Any]
fetch_device_data(self, user_id: str, *, start: Optional[str] = None, end: Optional[str] = None, types: Iterable[str] = ('cbg', 'bolus', 'wizard', 'food')) -> list[dict[str, Any]]
Public Functions
fetch_tidepool_dataframe(config: TidepoolConfig) -> pd.DataFrame
import_tidepool(config: TidepoolConfig, scenario_name: str = 'Tidepool Import', scenario_version: str = '1.0', carb_threshold: float = 0.1) -> ImportResult
load_openapi_spec(path: str) -> Dict[str, Any]
Public Constants
iints.data.universal_parser
- Source:
src/iints/data/universal_parser.py
- Summary: Universal Data Parser - IINTS-AF Universal ingestion engine for any CSV/JSON data format.
Public Classes
| Class |
Signature |
Summary |
StandardDataPack |
StandardDataPack |
Standard data format for IINTS-AF. |
ParseResult |
ParseResult |
Result of a parse operation |
UniversalParser |
UniversalParser |
Universal data parser for IINTS-AF. |
StandardDataPack methods
duration_hours(self) -> float
data_points(self) -> int
confidence_score(self) -> float
ParseResult methods
UniversalParser methods
detect_format(self, file_path: str) -> str
detect_delimiter(self, file_path: str) -> Optional[str]
parse_datetime(self, value: Any) -> Optional[float]
parse_glucose(self, value: Any, unit: str = 'mg/dL') -> Optional[float]
parse_csv(self, file_path: str) -> pd.DataFrame
parse_json(self, file_path: str) -> pd.DataFrame
convert_to_standard(self, df: pd.DataFrame) -> Tuple[pd.DataFrame, dict]
normalize_timestamps(self, df: pd.DataFrame) -> pd.DataFrame
validate_and_clean(self, df: pd.DataFrame) -> Tuple[pd.DataFrame, QualityReport]
parse(self, file_path: str, validate: Optional[bool] = None, metadata: Optional[Dict] = None) -> ParseResult
parse_string(self, content: str, format_type: str = 'csv', validate: bool = True) -> ParseResult
Public Functions
iints.demo_assets
- Source:
src/iints/demo_assets.py
- Summary: No module docstring.
Public Functions
export_live_stage_demo(output_dir: str | Path = '.', *, overwrite: bool = False) -> dict[str, str]
iints.emulation
- Source:
src/iints/emulation/__init__.py
- Summary: No module docstring.
- Explicit exports:
LegacyEmulator, PumpBehavior, PIDParameters, SafetyLimits, SafetyLevel, EmulatorDecision, Medtronic780GEmulator, Medtronic780GBehavior, TandemControlIQEmulator, TandemControlIQBehavior, Omnipod5Emulator, Omnipod5Behavior
Public Functions
get_emulator(pump_type: str) -> InsulinAlgorithm
list_available_emulators() -> list
Public Constants
iints.emulation.legacy_base
- Source:
src/iints/emulation/legacy_base.py
- Summary: Legacy Emulator Base Class - IINTS-AF Base class for commercial insulin pump emulation.
Public Classes
| Class |
Signature |
Summary |
SafetyLevel |
SafetyLevel(Enum) |
Safety level classification for pump behaviors |
SafetyLimits |
SafetyLimits |
Pump-specific safety constraints |
PIDParameters |
PIDParameters |
PID controller parameters |
PumpBehavior |
PumpBehavior |
Complete pump behavior profile |
EmulatorDecision |
EmulatorDecision |
Decision output from a pump emulator |
LegacyEmulator |
LegacyEmulator(InsulinAlgorithm) |
Abstract base class for commercial insulin pump emulation. |
PumpBehavior methods
EmulatorDecision methods
LegacyEmulator methods
get_sources(self) -> List[Dict[str, str]]
reset(self)
set_safety_mode(self, level: SafetyLevel)
get_behavior_profile(self) -> PumpBehavior
emulate_decision(self, glucose: float, velocity: float, insulin_on_board: float, carbs: float, current_time: float = 0) -> EmulatorDecision
predict_insulin(self, algo_input: AlgorithmInput) -> Dict[str, Any]
get_decision_history(self) -> List[EmulatorDecision]
export_behavior_report(self) -> Dict
compare_with_new_ai(self, new_ai_decisions: List[Dict]) -> Dict
Public Functions
iints.emulation.medtronic_780g
- Source:
src/iints/emulation/medtronic_780g.py
- Summary: Medtronic 780G Emulator - IINTS-AF Emulates the Medtronic MiniMed 780G with SmartGuard algorithm.
Public Classes
| Class |
Signature |
Summary |
Medtronic780GBehavior |
Medtronic780GBehavior(PumpBehavior) |
Medtronic 780G specific behavior profile |
Medtronic780GEmulator |
Medtronic780GEmulator(LegacyEmulator) |
Emulates Medtronic 780G SmartGuard algorithm. |
Medtronic780GEmulator methods
get_sources(self) -> List[Dict[str, str]]
emulate_decision(self, glucose: float, velocity: float, insulin_on_board: float, carbs: float, current_time: float = 0) -> EmulatorDecision
get_algorithm_personality(self) -> Dict
Public Functions
iints.emulation.omnipod_5
- Source:
src/iints/emulation/omnipod_5.py
- Summary: Omnipod 5 Emulator - IINTS-AF Emulates the Omnipod 5 with Horizon Algorithm.
Public Classes
| Class |
Signature |
Summary |
Omnipod5Behavior |
Omnipod5Behavior(PumpBehavior) |
Omnipod 5 specific behavior profile |
Omnipod5Emulator |
Omnipod5Emulator(LegacyEmulator) |
Emulates Omnipod 5 with Horizon algorithm. |
Omnipod5Emulator methods
get_sources(self) -> List[Dict[str, str]]
set_activity_mode(self, enabled: bool, mode_type: str = 'exercise')
emulate_decision(self, glucose: float, velocity: float, insulin_on_board: float, carbs: float, current_time: float = 0) -> EmulatorDecision
get_algorithm_personality(self) -> Dict
Public Functions
iints.emulation.tandem_controliq
- Source:
src/iints/emulation/tandem_controliq.py
- Summary: Tandem Control-IQ Emulator - IINTS-AF Emulates the Tandem t:slim X2 with Control-IQ algorithm.
Public Classes
| Class |
Signature |
Summary |
TandemControlIQBehavior |
TandemControlIQBehavior(PumpBehavior) |
Tandem Control-IQ specific behavior profile |
TandemControlIQEmulator |
TandemControlIQEmulator(LegacyEmulator) |
Emulates Tandem Control-IQ algorithm. |
TandemControlIQEmulator methods
get_sources(self) -> List[Dict[str, str]]
set_exercise_mode(self, enabled: bool)
emulate_decision(self, glucose: float, velocity: float, insulin_on_board: float, carbs: float, current_time: float = 0) -> EmulatorDecision
get_algorithm_personality(self) -> Dict
Public Functions
iints.highlevel
- Source:
src/iints/highlevel.py
- Summary: No module docstring.
Public Functions
run_simulation(algorithm: Union[InsulinAlgorithm, type], scenario: Optional[Union[str, Path, Dict[str, Any]]] = None, patient_config: Union[str, Path, Dict[str, Any], PatientProfile] = 'default_patient', patient_model_type: str = 'auto', sensor_noise_std: Optional[float] = None, sensor_lag_minutes: Optional[int] = None, sensor_dropout_prob: Optional[float] = None, sensor_bias: Optional[float] = None, sensor_profile: Optional[str] = None, duration_minutes: int = 720, time_step: int = 5, seed: Optional[int] = None, output_dir: Optional[Union[str, Path]] = None, compare_baselines: bool = True, export_audit: bool = True, generate_report: bool = True, safety_config: Optional[SafetyConfig] = None, predictor: Optional[object] = None, physiology_variation_profile: Optional[str] = None, physiology_variation_scale: float = 1.0) -> Dict[str, Any]
run_full(algorithm: Union[InsulinAlgorithm, type], scenario: Optional[Union[str, Path, Dict[str, Any]]] = None, patient_config: Union[str, Path, Dict[str, Any], PatientProfile] = 'default_patient', patient_model_type: str = 'auto', sensor_noise_std: Optional[float] = None, sensor_lag_minutes: Optional[int] = None, sensor_dropout_prob: Optional[float] = None, sensor_bias: Optional[float] = None, sensor_profile: Optional[str] = None, duration_minutes: int = 720, time_step: int = 5, seed: Optional[int] = None, output_dir: Optional[Union[str, Path]] = None, enable_profiling: bool = True, safety_config: Optional[SafetyConfig] = None, predictor: Optional[object] = None) -> Dict[str, Any]
run_population(algo_path: Optional[Union[str, Path]] = None, algo_class_name: Optional[str] = None, n_patients: int = 100, scenario: Optional[Union[str, Path, Dict[str, Any]]] = None, patient_config: Union[str, Path, Dict[str, Any], PatientProfile] = 'default_patient', duration_minutes: int = 720, time_step: int = 5, seed: Optional[int] = None, output_dir: Optional[Union[str, Path]] = None, max_workers: Optional[int] = None, safety_config: Optional[SafetyConfig] = None, safety_weights: Optional[Dict[str, float]] = None, patient_model_type: str = 'auto', population_cv: Optional[Dict[str, float]] = None) -> Dict[str, Any]
iints.jetson
- Source:
src/iints/jetson/__init__.py
- Summary: No module docstring.
- Explicit exports:
ENDURANCE_PROFILES, EnduranceConfig, JetsonEnduranceError, build_endurance_service_file, collect_jetson_hardware_info, export_endurance_archive, load_endurance_status, parse_duration_to_minutes, run_endurance_study, stop_endurance_study
No public classes, functions, or all-caps constants are declared directly in this module.
iints.jetson.endurance
- Source:
src/iints/jetson/endurance.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
JetsonEnduranceError |
JetsonEnduranceError(RuntimeError) |
No module docstring. |
EnduranceConfig |
EnduranceConfig |
No module docstring. |
EnduranceConfig methods
expected_steps(self) -> int
simulator_end_minutes(self) -> int
wall_clock_target_seconds(self) -> int
Public Functions
utc_now_iso() -> str
parse_duration_to_minutes(value: str) -> int
collect_jetson_hardware_info() -> Dict[str, Any]
run_endurance_study(*, algorithm: InsulinAlgorithm, predictor: Optional[object], config: EnduranceConfig, progress_callback: Optional[Any] = None, monotonic_fn: Any = time.monotonic, sleep_fn: Any = time.sleep) -> Dict[str, Any]
load_endurance_status(output_dir: str | Path) -> Dict[str, Any]
stop_endurance_study(output_dir: str | Path, *, generate_report: bool = False) -> Dict[str, Any]
export_endurance_archive(output_dir: str | Path, output: str | Path) -> Path
build_endurance_service_file(*, algo: str, duration: str, output_dir: str, predictor: Optional[str] = None, profile: str = 'mixed_adversarial', seed: Optional[int] = None, wall_clock: bool = False, working_directory: Optional[str] = None) -> str
Public Constants
ENDURANCE_EXECUTION_MODES
ENDURANCE_PROFILES
iints.jetson.research_pipeline
- Source:
src/iints/jetson/research_pipeline.py
- Summary: No module docstring.
Public Functions
finalize_endurance_research(output_dir: Path, *, repo_root: Path, train_predictor: bool = True, predictor_config_path: Path | None = None, train_neural: bool = True, evaluation_presets: Iterable[str] = DEFAULT_HELD_OUT_PRESETS, evaluation_seeds: Iterable[int] = (101, 202, 303), evaluation_duration_minutes: int = 1440) -> Dict[str, Any]
iints.learning
- Source:
src/iints/learning/__init__.py
- Summary: No module docstring.
- Explicit exports:
AutonomousLearningSystem, ClinicalTeacher, ClinicalConstraints
No public classes, functions, or all-caps constants are declared directly in this module.
iints.learning.autonomous_optimizer
- Source:
src/iints/learning/autonomous_optimizer.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
ClinicalConstraints |
ClinicalConstraints |
Physiological constraints based on medical literature. |
iints.learning.learning_system
- Source:
src/iints/learning/learning_system.py
- Summary: IINTS-AF Learning System Implements real learning with parameter adaptation and validation
Public Classes
| Class |
Signature |
Summary |
LearningSystem |
LearningSystem |
Real learning system that adapts to patient-specific patterns |
LearningSystem methods
save_learned_parameters(self, patient_id: str, parameters: Dict, performance_metrics: Dict)
load_learned_parameters(self, patient_id: str) -> Optional[Dict]
simulate_learning_process(self, patient_id: str, glucose_data: List[float]) -> Tuple[Dict, List[float]]
validate_learning_safety(self, parameters: Dict, patient_id: str) -> Tuple[bool, str]
get_learning_status(self, patient_id: str) -> str
iints.live_patient
- Source:
src/iints/live_patient/__init__.py
- Summary: No module docstring.
- Explicit exports:
create_edge_bundle, export_edge_setup, summarize_edge_workspace, write_edge_update_script, render_edge_long_study_config_template, load_edge_long_study_config, run_edge_long_study, create_edge_study_snapshot, export_edge_study_archive, create_patient_app, run_edge_benchmark, export_uno_q_bridge, DIRECT_PUMP_READ_ONLY_CONFIRMATION, DirectPumpConfig, PumpSnapshot, SimulatedMedtronicPumpTransport, stream_direct_pump_snapshots, write_direct_pump_snapshot, bench_test_pico_pump_bundle, build_pico_pump_bundle, create_pico_pump_lab, LivePatientDaemon, PatientRuntimeConfig, PatientRuntimeStore, get_runtime_scenario_profile, list_runtime_scenario_profiles, load_runtime_status, is_process_alive
Public Functions
run_edge_benchmark(*args: Any, **kwargs: Any) -> Any
iints.live_patient.api
- Source:
src/iints/live_patient/api.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
MealRequest |
MealRequest(BaseModel) |
No module docstring. |
ScenarioResetRequest |
ScenarioResetRequest(BaseModel) |
No module docstring. |
Public Functions
create_patient_app(workspace: str | Path, api_token: str | None = None) -> FastAPI
Public Constants
CONTROL_HEADER_NAME
CONTROL_HEADER_VALUE
SECURITY_RESPONSE_HEADERS
iints.live_patient.daemon
- Source:
src/iints/live_patient/daemon.py
- Summary: No module docstring.
Public Functions
iints.live_patient.edge_benchmark
- Source:
src/iints/live_patient/edge_benchmark.py
- Summary: No module docstring.
Public Functions
run_edge_benchmark(*, algo_path: Path, patient_config: str = 'default_patient', patient_model_type: str = 'auto', scenario_profile: str = 'normal_day', steps: int = 72, platform_name: str = 'auto', api_host: str = '127.0.0.1', api_port: int = 8766, seed: int | None = None) -> dict[str, Any]
iints.live_patient.edge_ops
- Source:
src/iints/live_patient/edge_ops.py
- Summary: No module docstring.
Public Functions
summarize_edge_workspace(workspace: str | Path) -> dict[str, Any]
create_edge_bundle(workspace: str | Path, *, output_path: str | Path, include_log: bool = True, include_database: bool = True) -> dict[str, Any]
render_edge_update_script(*, profile: str = 'edge', version_pin: str | None = None) -> str
write_edge_update_script(output_path: str | Path, *, profile: str = 'edge', version_pin: str | None = None) -> Path
export_edge_setup(output_dir: str | Path, *, board: str = 'raspberry_pi', workspace_name: str = 'patient_runtime', scenario_profile: str = 'normal_day', patient_config: str = 'default_patient', patient_model_type: str = 'auto', mode: str = 'demo-time', speed: float = 60.0, api_host: str = '127.0.0.1', api_port: int = 8765, seed: int | None = None, service_name: str = 'iints-digital-patient', user_name: str | None = None, include_uno_bridge: bool = False, uno_bridge_port: str | None = None, uno_bridge_baudrate: int = UNO_Q_BRIDGE_BAUDRATE, uno_bridge_service_name: str = 'iints-uno-q-bridge') -> dict[str, str]
deploy_edge_project(*, host: str, user_name: str | None = None, ssh_port: int = 22, remote_dir: str = '~/iints_pi_demo', local_output_dir: str | Path = 'iints_pi_demo', board: str = 'raspberry_pi', workspace_name: str = 'patient_runtime', scenario_profile: str = 'expo_hot_start', patient_config: str = 'default_patient', patient_model_type: str = 'auto', mode: str = 'demo-time', speed: float = 60.0, api_host: str = '127.0.0.1', api_port: int = 8765, seed: int | None = None, service_name: str = 'iints-digital-patient', include_uno_bridge: bool = False, uno_bridge_port: str | None = None, uno_bridge_baudrate: int = UNO_Q_BRIDGE_BAUDRATE, uno_bridge_service_name: str = 'iints-uno-q-bridge', install_autostart: bool = True, start_runtime: bool = True, enable_connect_linger: bool = True, flash_uno_bridge: bool = False, uno_fqbn: str | None = None, arduino_cli: str = 'arduino-cli', dry_run: bool = False, ssh_timeout_seconds: float = 300.0, ssh_retries: int = 1, progress_callback: Callable[[str], None] | None = None) -> dict[str, Any]
build_edge_offline_bundle(output_path: str | Path, *, board: str = 'raspberry_pi', workspace_name: str = 'patient_runtime', scenario_profile: str = 'expo_hot_start', patient_config: str = 'default_patient', patient_model_type: str = 'auto', mode: str = 'demo-time', speed: float = 60.0, api_host: str = '127.0.0.1', api_port: int = 8765, seed: int | None = None, service_name: str = 'iints-digital-patient', user_name: str | None = None, include_uno_bridge: bool = False, progress_callback: Callable[[str], None] | None = None) -> dict[str, str]
run_remote_edge_command(*, host: str, user_name: str | None = None, ssh_port: int = 22, remote_dir: str = '~/iints_pi_demo', action: str = 'status', scenario_profile: str | None = None, seed: int | None = None, timeout_seconds: float = 60.0, retries: int = 0) -> dict[str, str]
iints.live_patient.fpga
- Source:
src/iints/live_patient/fpga.py
- Summary: FPGA safety-core workflow helpers for bench-only hardware research.
Public Classes
| Class |
Signature |
Summary |
FPGARunSummary |
FPGARunSummary |
Paths and pass/fail metadata from one FPGA safety-core comparison run. |
MockFPGATransport |
MockFPGATransport |
Reference transport that behaves like an FPGA safety core without hardware. |
SerialFPGATransport |
SerialFPGATransport |
JSON-lines serial transport for a future FPGA board or MCU bridge. |
FPGARunSummary methods
to_dict(self) -> dict[str, Any]
MockFPGATransport methods
evaluate(self, event: dict[str, Any]) -> tuple[dict[str, Any], float]
SerialFPGATransport methods
evaluate(self, event: dict[str, Any]) -> tuple[dict[str, Any], float]
Public Functions
normalize_fpga_event(event: dict[str, Any]) -> dict[str, Any]
evaluate_fpga_safety_reference(event: dict[str, Any]) -> dict[str, Any]
load_fpga_events(path: str | Path | None = None) -> list[dict[str, Any]]
fpga_events_from_results_dataframe(dataframe: pd.DataFrame, *, stride: int = 1, max_events: int | None = 288) -> list[dict[str, Any]]
write_fpga_events_from_results_csv(results_csv: str | Path, output_path: str | Path, *, stride: int = 1, max_events: int | None = 288) -> Path
run_fpga_replay_from_results(*, results_csv: str | Path, output_dir: str | Path, transport: str = 'mock', port: str | None = None, baudrate: int = FPGA_DEFAULT_BAUDRATE, timeout_seconds: float = 1.5, stride: int = 1, max_events: int | None = 288) -> FPGARunSummary
write_fpga_report(path: Path, *, comparison: dict[str, Any], rows: list[dict[str, Any]]) -> None
run_fpga_safety_simulation(*, output_dir: str | Path, events_path: str | Path | None = None, transport: str = 'mock', port: str | None = None, baudrate: int = FPGA_DEFAULT_BAUDRATE, timeout_seconds: float = 1.5, scenario_name: str | None = None) -> FPGARunSummary
create_fpga_lab(output_dir: str | Path) -> dict[str, str]
fpga_environment_report() -> dict[str, Any]
Public Constants
DEFAULT_FPGA_EVENTS
DEFAULT_FPGA_SAFETY_CONTRACT
FPGA_CONFIRMATION
FPGA_DEFAULT_BAUDRATE
FPGA_NIGHT_HYPO_RISK_EVENTS
FPGA_READY_BANNER
iints.live_patient.long_study
- Source:
src/iints/live_patient/long_study.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
EdgeLongStudyConfig |
EdgeLongStudyConfig |
No module docstring. |
LongStudyAlgorithmSpec |
LongStudyAlgorithmSpec |
No module docstring. |
LongStudySnapshotResult |
LongStudySnapshotResult |
No module docstring. |
LongStudyConfigError |
LongStudyConfigError(ValueError) |
No module docstring. |
EdgeLongStudyExecutionError |
EdgeLongStudyExecutionError(RuntimeError) |
No module docstring. |
EdgeLongStudyConfig methods
weekday_for_day(self, day_index: int) -> str
profile_for_day(self, day_index: int) -> str
snapshot_every_days(self) -> int
to_dict(self) -> dict[str, Any]
LongStudyAlgorithmSpec methods
to_dict(self) -> dict[str, str]
LongStudySnapshotResult methods
to_dict(self) -> dict[str, str]
Public Functions
render_edge_long_study_config_template(*, output_dir: str = '/media/pi/usb_ssd/results/long_study', scratch_dir: str = '/tmp/iints_edge_long_study', algorithms: list[str] | None = None) -> str
load_edge_long_study_config(config_path: Path) -> EdgeLongStudyConfig
build_long_study_day_scenario(*, profile: RuntimeScenarioProfile, day_number: int, weekday: str, sequence_seed: int) -> dict[str, Any]
create_edge_study_snapshot(input_dir: str | Path, *, output: str | Path) -> LongStudySnapshotResult
export_edge_study_archive(input_dir: str | Path, *, output: str | Path) -> dict[str, str]
run_edge_long_study(*, config_path: str | Path, project_dir: str | Path = '.', resume: bool = False, progress_callback: Callable[[str], None] | None = None) -> dict[str, Any]
Public Constants
iints.live_patient.medtronic_direct
- Source:
src/iints/live_patient/medtronic_direct.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
PumpTransport |
PumpTransport(Protocol) |
Read-only direct pump transport protocol. |
PumpSnapshot |
PumpSnapshot |
No module docstring. |
DirectPumpConfig |
DirectPumpConfig |
No module docstring. |
SimulatedMedtronicPumpTransport |
SimulatedMedtronicPumpTransport |
Bench-only direct pump transport for SDK integration testing. |
OfficialModulePumpTransport |
OfficialModulePumpTransport |
Wrapper for an approved internal Medtronic read-only transport factory. |
PumpTransport methods
connect(self) -> None
read_snapshot(self) -> 'PumpSnapshot | Mapping[str, Any]'
disconnect(self) -> None
PumpSnapshot methods
from_mapping(cls, payload: Mapping[str, Any]) -> 'PumpSnapshot'
validate(self) -> None
to_json_dict(self) -> dict[str, Any]
SimulatedMedtronicPumpTransport methods
connect(self) -> None
disconnect(self) -> None
read_snapshot(self) -> PumpSnapshot
OfficialModulePumpTransport methods
connect(self) -> None
read_snapshot(self) -> PumpSnapshot | Mapping[str, Any]
disconnect(self) -> None
Public Functions
create_direct_pump_transport(config: DirectPumpConfig) -> PumpTransport
stream_direct_pump_snapshots(config: DirectPumpConfig, *, samples: int = 1, poll_seconds: float = 30.0) -> Iterable[PumpSnapshot]
snapshots_to_dataframes(snapshots: Iterable[PumpSnapshot]) -> tuple[pd.DataFrame, pd.DataFrame]
write_direct_pump_snapshot(snapshots: Iterable[PumpSnapshot], output_dir: str | Path) -> dict[str, str]
Public Constants
AUTHORIZED_IDENTITY_MODE
COMMAND_LIKE_KEYS
DIRECT_PUMP_READ_ONLY_CONFIRMATION
DIRECT_PUMP_SOURCE
DISALLOWED_IDENTITY_MODES
GLUCOSE_KEYS
TIMESTAMP_KEYS
iints.live_patient.pico_pump
- Source:
src/iints/live_patient/pico_pump.py
- Summary: No module docstring.
Public Functions
export_pico_pump_firmware(output_dir: str | Path) -> dict[str, str]
create_pico_pump_lab(output_dir: str | Path, *, algorithm_path: str | Path | None = None) -> dict[str, str]
build_pico_pump_bundle(algorithm_path: str | Path, output_dir: str | Path, *, safety_contract_path: str | Path | None = None, label: str = 'pico_pump_bench') -> dict[str, Any]
bench_test_pico_pump_bundle(bundle_dir: str | Path) -> dict[str, Any]
upload_pico_pump_bundle(bundle_dir: str | Path, mount_dir: str | Path, *, bench_only_confirmation: str, write: bool = False) -> dict[str, Any]
run_pico_pump_serial_self_test(port: str, *, baudrate: int = PICO_PUMP_BAUDRATE, timeout_seconds: float = 1.5) -> list[dict[str, str | None]]
Public Constants
BENCH_ALGORITHM_TEMPLATE
DEFAULT_PICO_PUMP_SAFETY_CONTRACT
PICO_PUMP_BAUDRATE
PICO_PUMP_CONFIRMATION
PICO_PUMP_DEVICE_ID
PICO_PUMP_READY_BANNER
iints.live_patient.runtime
- Source:
src/iints/live_patient/runtime.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
DailyEventTemplate |
DailyEventTemplate |
No module docstring. |
RuntimeScenarioProfile |
RuntimeScenarioProfile |
No module docstring. |
PatientRuntimeConfig |
PatientRuntimeConfig |
No module docstring. |
PatientRuntimeStore |
PatientRuntimeStore |
No module docstring. |
DailySchedulePlanner |
DailySchedulePlanner |
No module docstring. |
LivePatientDaemon |
LivePatientDaemon |
No module docstring. |
PatientRuntimeConfig methods
workspace_path(self) -> Path
algo_file(self) -> Path
db_path(self) -> Path
snapshot_path(self) -> Path
pid_path(self) -> Path
log_path(self) -> Path
config_path(self) -> Path
bundle_dir(self) -> Path
dashboard_url(self) -> str
api_url(self) -> str
to_json(self) -> dict[str, Any]
from_path(cls, path: Path) -> 'PatientRuntimeConfig'
PatientRuntimeStore methods
update_status(self, **fields: Any) -> None
read_status(self) -> dict[str, Any]
append_reading(self, payload: dict[str, Any], *, event_summary: str = '') -> None
get_recent_readings(self, limit: int = 288) -> list[dict[str, Any]]
get_latest_reading(self) -> dict[str, Any] | None
enqueue_command(self, command: str, payload: dict[str, Any] | None = None) -> int
fetch_pending_commands(self) -> list[dict[str, Any]]
complete_command(self, command_id: int, *, status: str, result: dict[str, Any] | None = None) -> None
await_command(self, command_id: int, timeout_seconds: float = 5.0) -> dict[str, Any] | None
clear_runtime_data(self) -> None
build_audit_summary(self) -> dict[str, Any]
DailySchedulePlanner methods
set_templates(self, templates: Iterable[DailyEventTemplate]) -> None
reset(self) -> None
schedule_for_time(self, simulator: Simulator, current_time_minutes: int) -> str
event_labels_for_time(self, current_time_minutes: int) -> list[str]
describe_clock(current_time_minutes: int) -> str
LivePatientDaemon methods
install_signal_handlers(self) -> None
bootstrap(self, *, reset: bool = False) -> None
advance_once(self) -> dict[str, Any]
run(self, *, max_steps: int | None = None) -> None
shutdown(self) -> None
Public Functions
get_runtime_scenario_profile(name: str) -> RuntimeScenarioProfile
list_runtime_scenario_profiles() -> list[RuntimeScenarioProfile]
is_process_alive(pid: int | None) -> bool
load_runtime_status(workspace: Path) -> dict[str, Any]
iints.live_patient.service_export
- Source:
src/iints/live_patient/service_export.py
- Summary: No module docstring.
Public Functions
service_file_text(config: PatientRuntimeConfig, *, service_name: str, user_name: str, python_path: str) -> str
service_instructions_text(service_path: Path, service_name: str) -> str
makerfaire_kiosk_script_text(config: PatientRuntimeConfig) -> str
makerfaire_desktop_entry_text(project_root: Path) -> str
makerfaire_watchdog_name(service_name: str) -> str
makerfaire_watchdog_script_text(*, cli_path: str, scenario_profile: str, seed: int | None) -> str
makerfaire_watchdog_service_text(*, project_root: Path, watchdog_name: str, user_name: str) -> str
makerfaire_watchdog_timer_text(*, watchdog_name: str, interval_seconds: int = 30) -> str
makerfaire_install_script_text(*, service_name: str) -> str
makerfaire_autostart_instructions_text(*, project_root: Path, service_path: Path, desktop_entry_path: Path, kiosk_script_path: Path, install_script_path: Path, watchdog_script_path: Path, watchdog_service_path: Path, watchdog_timer_path: Path, service_name: str) -> str
write_service_artifacts(config: PatientRuntimeConfig, *, output_path: Path, service_name: str = 'iints-digital-patient', user_name: str | None = None, python_path: Path | None = None) -> dict[str, str]
write_makerfaire_autostart_artifacts(config: PatientRuntimeConfig, *, project_root: Path, service_path: Path, service_name: str = 'iints-digital-patient', user_name: str | None = None, cli_path: str | Path | None = None) -> dict[str, str]
uno_q_bridge_service_text(*, project_root: Path, user_name: str, cli_path: str, port: str, baudrate: int, workspace_name: str = 'patient_runtime', service_name: str = 'iints-uno-q-bridge', patient_service_name: str = 'iints-digital-patient') -> str
uno_q_bridge_service_instructions_text(service_path: Path, service_name: str) -> str
write_uno_q_bridge_service_artifact(*, project_root: Path, output_path: Path, user_name: str, cli_path: str | Path, port: str, baudrate: int, workspace_name: str = 'patient_runtime', service_name: str = 'iints-uno-q-bridge', patient_service_name: str = 'iints-digital-patient') -> dict[str, str]
iints.live_patient.uno_q
- Source:
src/iints/live_patient/uno_q.py
- Summary: No module docstring.
Public Functions
list_uno_q_serial_ports() -> list[str]
resolve_uno_q_port(port: str | None) -> str
uno_q_bridge_environment_report(*, arduino_cli: str = 'arduino-cli') -> dict[str, Any]
export_uno_q_bridge(output_dir: str | Path) -> dict[str, str]
bridge_state_from_runtime_status(status: Mapping[str, Any] | None) -> str
send_uno_q_bridge_state(port: str | None, state: str, *, baudrate: int = UNO_Q_BRIDGE_BAUDRATE, timeout_seconds: float = 1.5, expect_response: bool = True) -> dict[str, Any]
run_uno_q_bridge_test(port: str | None, *, baudrate: int = UNO_Q_BRIDGE_BAUDRATE, delay_seconds: float = 0.75) -> list[dict[str, Any]]
run_uno_q_bridge_forwarder(workspace: str | Path, port: str | None, *, baudrate: int = UNO_Q_BRIDGE_BAUDRATE, poll_interval: float = 1.0, once: bool = False, max_cycles: int | None = None) -> dict[str, Any]
flash_uno_q_bridge(sketch_dir: str | Path, *, port: str, fqbn: str, arduino_cli: str = 'arduino-cli') -> dict[str, Any]
Public Constants
UNO_Q_BRIDGE_BAUDRATE
UNO_Q_BRIDGE_BOOT_DELAY_SECONDS
UNO_Q_BRIDGE_READY_BANNER
UNO_Q_BRIDGE_READ_POLL_SECONDS
UNO_Q_BRIDGE_STATES
iints.mdmp
- Source:
src/iints/mdmp/__init__.py
- Summary: MDMP public API (separated namespace).
- Explicit exports:
StreamSpec, FeatureSpec, LabelSpec, ValidationSpec, ProcessSpec, ModelReadyContract, compile_contract, parse_contract, load_contract_yaml, ContractRunner, ValidationResult, CheckResult, MDMP_PROTOCOL_VERSION, MDMP_GRADE_ORDER, classify_mdmp_grade, mdmp_grade_meets_minimum, dataframe_fingerprint, mdmp_gate, MDMPGateError, generate_synthetic_mirror, SyntheticMirrorArtifact, build_mdmp_dashboard_html, MDMPValidationResult, MDMPCheckResult, BACKEND_MDMP_GRADE_ORDER, backend_mdmp_grade_meets_minimum, get_backend, is_mdmp_available, active_mdmp_backend, load_mdmp_contract, run_mdmp_validation, build_mdmp_dashboard_html_with_backend, CORE_AI_PACT_CONTROLS, EU_AI_PACT_CONTROL_DESCRIPTIONS, HIGH_RISK_READINESS_CONTROLS, EUAIPactReadinessResult, review_eu_ai_pact_readiness
No public classes, functions, or all-caps constants are declared directly in this module.
iints.mdmp.backend
- Source:
src/iints/mdmp/backend.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
MDMPCheckResult |
MDMPCheckResult |
No module docstring. |
MDMPValidationResult |
MDMPValidationResult |
No module docstring. |
MDMPCheckResult methods
to_dict(self) -> dict[str, Any]
MDMPValidationResult methods
to_dict(self) -> dict[str, Any]
Public Functions
mdmp_grade_meets_minimum(actual_grade: str, minimum_grade: str) -> bool
is_mdmp_available() -> bool
get_backend() -> str
active_mdmp_backend() -> str
load_mdmp_contract(path: Path) -> Any
run_mdmp_validation(contract: Any, df: pd.DataFrame, *, apply_builtin_transforms: bool = True) -> MDMPValidationResult
build_mdmp_dashboard_html(report: dict[str, Any], *, title: str) -> str
Public Constants
BACKEND_BUILTIN
BACKEND_MDMP
MDMP_GRADE_ORDER
iints.mdmp.eu_ai_pact
- Source:
src/iints/mdmp/eu_ai_pact.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
EUAIPactReadinessResult |
EUAIPactReadinessResult |
No module docstring. |
EUAIPactReadinessResult methods
to_dict(self) -> Dict[str, Any]
Public Functions
review_eu_ai_pact_readiness(payload: Mapping[str, Any], *, strict: bool = True) -> EUAIPactReadinessResult
Public Constants
CORE_AI_PACT_CONTROLS
EU_AI_PACT_CONTROL_DESCRIPTIONS
HIGH_RISK_READINESS_CONTROLS
iints.metrics
- Source:
src/iints/metrics.py
- Summary: No module docstring.
Public Functions
calculate_gmi(glucose: pd.Series) -> float
calculate_cv(glucose: pd.Series) -> float
calculate_lbgi(glucose: pd.Series) -> float
calculate_hbgi(glucose: pd.Series) -> float
calculate_tir(glucose: pd.Series, low: float = 70, high: float = 180) -> float
calculate_full_metrics(glucose: pd.Series, duration_hours: Optional[float] = None)
iints.population
- Source:
src/iints/population/__init__.py
- Summary: No module docstring.
- Explicit exports:
PopulationGenerator, PopulationConfig, ParameterDistribution, PopulationRunner, PopulationResult, PatientResult
No public classes, functions, or all-caps constants are declared directly in this module.
iints.population.generator
- Source:
src/iints/population/generator.py
- Summary: Population Generator — IINTS-AF ================================ Generates a virtual population of N patients with physiological variation around a base patient profile. Each parameter is drawn from a configurable distribution (truncated normal or log-normal) whose bounds respect the clinically valid ranges defined in the SDK validation schemas.
Public Classes
| Class |
Signature |
Summary |
ParameterDistribution |
ParameterDistribution |
Distribution specification for a single patient parameter. |
PopulationConfig |
PopulationConfig |
Configuration for virtual population generation. |
PopulationGenerator |
PopulationGenerator |
Generates N virtual :class:PatientProfile instances with physiological variation drawn from configurable distributions. |
PopulationGenerator methods
generate(self) -> List[PatientProfile]
iints.population.runner
- Source:
src/iints/population/runner.py
- Summary: Population Runner — IINTS-AF ============================== Runs N virtual patients through the simulator in parallel using
concurrent.futures.ProcessPoolExecutor. Each worker loads the algorithm from a file path (same pattern as run-parallel in the CLI) so that all algorithm classes are safely picklable.
Public Classes
| Class |
Signature |
Summary |
PatientResult |
PatientResult |
Result for a single patient in the population. |
PopulationResult |
PopulationResult |
Aggregate result for the entire population run. |
PopulationRunner |
PopulationRunner |
Runs a virtual patient population through the simulator in parallel. |
PopulationRunner methods
run(self, profiles) -> PopulationResult
iints.presets
- Source:
src/iints/presets/__init__.py
- Summary: Built-in clinic-safe presets.
- Explicit exports:
load_presets, get_preset
Public Functions
load_presets() -> List[Dict[str, Any]]
get_preset(name: str) -> Dict[str, Any]
iints.research
- Source:
src/iints/research/__init__.py
- Summary: No module docstring.
- Explicit exports:
PredictorConfig, TrainingConfig, build_sequences, subject_split, FeatureScaler, load_parquet, save_parquet, load_dataset, save_dataset, compute_dataset_lineage, LSTMPredictor, load_predictor, PredictorService, load_predictor_service, QuantileLoss, SafetyWeightedMSE, BandWeightedMSE, PhysiologicalPINNLoss, regression_metrics, band_regression_metrics, interval_coverage_metrics, forecast_error_report, hypoglycemia_detection_report, uncertainty_reliability_report, subgroup_error_report, feature_drift_report, audit_subject_split_and_leakage, ForecastCalibrationGate, evaluate_calibration_gate, load_calibration_gate_profiles, PromotionResult, append_registry_entry, list_registry, load_registry, promote_registry_run, write_registry, CONTROL_FEATURE_COLUMNS, CONTROL_TARGET_COLUMN, build_control_dataset_from_runs, evaluate_controller_predictions, load_linear_controller, predict_linear_controller, save_linear_controller, summarize_control_dataset, train_linear_imitation_controller, NeuralControllerConfig, instantiate_neural_controller_model, load_neural_controller, predict_neural_controller, save_neural_controller, train_neural_imitation_controller, PREDICTOR_OPTIONAL_COLUMNS, PREDICTOR_REQUIRED_COLUMNS, blend_predictor_datasets, DEFAULT_HELD_OUT_PRESETS, evaluate_controller_factories, DEFAULT_LOCAL_AI_SAFETY_PROFILE, LocalAIGateResult, LocalAISafetyProfile, review_closed_loop_evaluation, review_controller_training_artifacts, build_predictor_dataset_from_runs, run_local_ai_lab, DEFAULT_FORECAST_FEATURE_COLUMNS, ForecastConfig, PhysiologyAwareBaseline, assess_forecast_risk, attach_forecasts_to_frame, resolve_forecast_input, summarize_forecast_frame, write_forecast_bundle, ResultsIndexBundle, build_artifact_inventory, discover_result_csvs, index_results, summarize_results_csv, GLUCOSE_MODEL_FEATURE_COLUMNS, GLUCOSE_MODEL_ID, GlucoseModelComparisonBundle, GlucoseModelSpec, GlucoseTrainingPack, build_glucose_training_pack, compare_glucose_models, glucose_model_config_payload, horizon_error_rows, parse_model_specs, physiological_violation_report, public_manifest_from_private, render_hf_comparison_interpretation, standardize_glucose_forecast_frame, write_glucose_model_config, write_huggingface_export_bundle, JetsonHFTrainingResult, jetson_hf_model_score, run_jetson_hf_training
No public classes, functions, or all-caps constants are declared directly in this module.
iints.research.audit
- Source:
src/iints/research/audit.py
- Summary: No module docstring.
Public Functions
audit_subject_split_and_leakage(df: pd.DataFrame, *, history_steps: int, horizon_steps: int, feature_columns: List[str], target_column: str, subject_column: str = 'subject_id', segment_column: Optional[str] = None, val_fraction: float = 0.15, test_fraction: float = 0.15, seed: int = 42) -> Dict[str, Any]
iints.research.calibration_gate
- Source:
src/iints/research/calibration_gate.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
ForecastCalibrationGate |
ForecastCalibrationGate |
No module docstring. |
Public Functions
load_calibration_gate_profiles(path: Optional[Path] = None) -> Dict[str, ForecastCalibrationGate]
evaluate_calibration_gate(report: Dict[str, Any], gate: ForecastCalibrationGate) -> Dict[str, Dict[str, Any]]
iints.research.config
- Source:
src/iints/research/config.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
PredictorConfig |
PredictorConfig |
No module docstring. |
TrainingConfig |
TrainingConfig |
No module docstring. |
PredictorConfig methods
history_steps(self) -> int
horizon_steps(self) -> int
iints.research.control
- Source:
src/iints/research/control.py
- Summary: No module docstring.
Public Functions
build_control_dataset_from_runs(run_dirs: Iterable[Tuple[str, Path]], *, output_path: Path, manifest_path: Path | None = None) -> Dict[str, Any]
summarize_control_dataset(df: pd.DataFrame) -> Dict[str, Any]
train_linear_imitation_controller(df: pd.DataFrame, *, ridge_lambda: float = 0.001) -> Dict[str, Any]
predict_linear_controller(model: Dict[str, Any], df: pd.DataFrame) -> np.ndarray
evaluate_controller_predictions(df: pd.DataFrame, predictions: np.ndarray) -> Dict[str, Any]
save_linear_controller(model: Dict[str, Any], path: Path) -> None
load_linear_controller(path: Path) -> Dict[str, Any]
Public Constants
CONTROL_FEATURE_COLUMNS
CONTROL_TARGET_COLUMN
iints.research.control_eval
- Source:
src/iints/research/control_eval.py
- Summary: No module docstring.
Public Functions
evaluate_controller_factories(factories: Dict[str, ControllerFactory], *, output_dir: Path, presets: Iterable[str] = DEFAULT_HELD_OUT_PRESETS, seeds: Iterable[int] = (101, 202, 303), duration_minutes: int = 1440, time_step_minutes: int = 5, sensor_profile: str = 'clinical_cgm') -> Dict[str, Any]
Public Constants
iints.research.data_blend
- Source:
src/iints/research/data_blend.py
- Summary: No module docstring.
Public Functions
blend_predictor_datasets(sources: Iterable[Tuple[str, Path]], *, output_path: Path, manifest_path: Path | None = None) -> Dict[str, Any]
Public Constants
PREDICTOR_OPTIONAL_COLUMNS
PREDICTOR_REQUIRED_COLUMNS
iints.research.dataset
- Source:
src/iints/research/dataset.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
FeatureScaler |
FeatureScaler |
Fit-transform scaler for LSTM feature arrays. |
FeatureScaler methods
fit(self, X: np.ndarray) -> 'FeatureScaler'
transform(self, X: np.ndarray) -> np.ndarray
fit_transform(self, X: np.ndarray) -> np.ndarray
inverse_transform(self, X: np.ndarray) -> np.ndarray
to_dict(self) -> dict
from_dict(cls, d: dict) -> 'FeatureScaler'
Public Functions
build_sequences(df: pd.DataFrame, history_steps: int, horizon_steps: int, feature_columns: List[str], target_column: str, subject_column: Optional[str] = 'subject_id', segment_column: Optional[str] = None) -> Tuple[np.ndarray, np.ndarray]
subject_split(df: pd.DataFrame, val_fraction: float = 0.15, test_fraction: float = 0.15, subject_column: str = 'subject_id', seed: int = 42) -> Tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]
save_parquet(df: pd.DataFrame, path: Path) -> None
save_dataset(df: pd.DataFrame, path: Path) -> None
load_parquet(path: Path) -> pd.DataFrame
load_dataset(path: Path) -> pd.DataFrame
compute_dataset_lineage(df: pd.DataFrame, source_path: Optional[Path] = None, subject_column: str = 'subject_id', time_column: str = 'time_minutes') -> Dict[str, Any]
concat_runs(frames: Iterable[pd.DataFrame]) -> pd.DataFrame
basic_stats(df: pd.DataFrame, columns: List[str]) -> Dict[str, float]
iints.research.evaluation
- Source:
src/iints/research/evaluation.py
- Summary: No module docstring.
Public Functions
forecast_error_report(observed: np.ndarray, predicted: np.ndarray, predicted_std: Optional[np.ndarray] = None) -> Dict[str, Any]
hypoglycemia_detection_report(observed: np.ndarray, predicted: np.ndarray, *, threshold_mgdl: float = 70.0) -> Dict[str, Any]
uncertainty_reliability_report(observed: np.ndarray, predicted: np.ndarray, predicted_std: np.ndarray, *, bins: int = 5, confidence: float = 0.95) -> Dict[str, Any]
subgroup_error_report(observed: np.ndarray, predicted: np.ndarray, groups: Sequence[Any] | np.ndarray, *, predicted_std: Optional[np.ndarray] = None) -> Dict[str, Dict[str, Any]]
feature_drift_report(reference_features: np.ndarray, candidate_features: np.ndarray, *, feature_names: Iterable[str]) -> Dict[str, Any]
iints.research.forecasting
- Source:
src/iints/research/forecasting.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
ForecastConfig |
ForecastConfig |
Configuration for research-only glucose forecasting helpers. |
PhysiologyAwareBaseline |
PhysiologyAwareBaseline |
Transparent glucose forecast baseline using trend, IOB, COB, stress and activity. |
ForecastConfig methods
history_steps(self) -> int
horizon_steps(self) -> int
PhysiologyAwareBaseline methods
name(self) -> str
predict(self, X: np.ndarray) -> np.ndarray
Public Functions
assess_forecast_risk(predicted_glucose: Sequence[float] | np.ndarray, *, current_glucose: Optional[float] = None, predicted_std: Optional[Sequence[float] | np.ndarray | float] = None, config: ForecastConfig = ForecastConfig()) -> Dict[str, Any]
attach_forecasts_to_frame(df: pd.DataFrame, *, predictor_service: Optional[Any] = None, config: ForecastConfig = ForecastConfig(), feature_columns: Optional[Sequence[str]] = None, feature_overrides: Optional[Mapping[str, float]] = None, mc_samples: int = 30) -> pd.DataFrame
summarize_forecast_frame(frame: pd.DataFrame, *, config: ForecastConfig = ForecastConfig()) -> Dict[str, Any]
resolve_forecast_input(path: Path) -> Path
write_forecast_bundle(input_path: Path, output_dir: Path, *, predictor_service: Optional[Any] = None, config: ForecastConfig = ForecastConfig(), feature_columns: Optional[Sequence[str]] = None, feature_overrides: Optional[Mapping[str, float]] = None, mc_samples: int = 30) -> Dict[str, Any]
Public Constants
DEFAULT_FORECAST_FEATURE_COLUMNS
iints.research.glucose_model
- Source:
src/iints/research/glucose_model.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
GlucoseTrainingPack |
GlucoseTrainingPack |
No module docstring. |
GlucoseModelSpec |
GlucoseModelSpec |
No module docstring. |
GlucoseModelComparisonBundle |
GlucoseModelComparisonBundle |
No module docstring. |
GlucoseTrainingPack methods
to_dict(self) -> dict[str, Any]
GlucoseModelComparisonBundle methods
to_dict(self) -> dict[str, Any]
Public Functions
standardize_glucose_forecast_frame(df: pd.DataFrame, *, source_label: str, time_step_minutes: int = 5, subject_prefix: Optional[str] = None, max_gap_multiplier: float = 2.5) -> pd.DataFrame
glucose_model_config_payload(*, profile: str = 'long', history_minutes: int = 360, horizon_minutes: int = 120, time_step_minutes: int = 5, feature_columns: Optional[Sequence[str]] = None) -> dict[str, Any]
write_glucose_model_config(path: Path, **kwargs: Any) -> dict[str, Any]
build_glucose_training_pack(input_paths: Sequence[Path], output_dir: Path, *, labels: Optional[Sequence[str]] = None, output_format: str = 'csv', profile: str = 'long', history_minutes: int = 360, horizon_minutes: int = 120, time_step_minutes: int = 5) -> GlucoseTrainingPack
public_manifest_from_private(manifest: Mapping[str, Any]) -> dict[str, Any]
write_huggingface_export_bundle(*, model_dir: Path, output_dir: Path, repo_id: Optional[str] = None, dataset_manifest: Optional[Path] = None, comparison_dir: Optional[Path] = None, model_name: str = GLUCOSE_MODEL_ID) -> dict[str, str]
render_huggingface_model_card(*, model_name: str, repo_id: Optional[str], training_report: Mapping[str, Any], public_manifest: Optional[Mapping[str, Any]], comparison_metrics: Optional[Mapping[str, Any]] = None, comparison_artifacts: Optional[Mapping[str, str]] = None) -> str
render_hf_privacy_notes(*, public_manifest: Optional[Mapping[str, Any]]) -> str
render_hf_limitations(*, comparison_metrics: Optional[Mapping[str, Any]]) -> str
render_hf_comparison_interpretation(*, comparison_metrics: Optional[Mapping[str, Any]]) -> str
render_hf_inference_example() -> str
render_hf_sample_trace_csv(rows: int = 80) -> str
render_hf_publishing_notes(*, repo_id: Optional[str]) -> str
parse_model_specs(values: Sequence[str]) -> list[GlucoseModelSpec]
horizon_error_rows(*, label: str, observed: np.ndarray, predicted: np.ndarray, time_step_minutes: int) -> list[dict[str, Any]]
physiological_violation_report(X: np.ndarray, predicted: np.ndarray, *, feature_columns: Sequence[str], time_step_minutes: int, absolute_low_mgdl: float = 20.0, absolute_high_mgdl: float = 600.0, display_low_mgdl: float = 35.0, display_high_mgdl: float = 450.0, max_roc_mgdl_min: float = 10.0, suspicious_roc_mgdl_min: float = 2.0) -> dict[str, Any]
compare_glucose_models(*, data_path: Path, output_dir: Path, model_specs: Sequence[GlucoseModelSpec] = (), config_path: Optional[Path] = None, include_baselines: bool = True, mc_samples: int = 0, max_roc_mgdl_min: float = 10.0) -> GlucoseModelComparisonBundle
Public Constants
GLUCOSE_MODEL_CARD_VERSION
GLUCOSE_MODEL_FEATURE_COLUMNS
GLUCOSE_MODEL_ID
iints.research.jetson_hf_trainer
- Source:
src/iints/research/jetson_hf_trainer.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
JetsonHFTrainingResult |
JetsonHFTrainingResult |
No module docstring. |
Public Functions
utc_now() -> str
finite_float(value: Any, default: float = math.inf) -> float
model_score(row: Mapping[str, Any], *, physiology_weight: float = 0.1, hypo_weight: float = 0.2) -> float
append_leaderboard_row(path: Path, row: Mapping[str, Any]) -> None
run_logged(cmd: Sequence[str], *, log_path: Path, env: Optional[Mapping[str, str]] = None, timeout_minutes: Optional[float] = None) -> None
run_jetson_hf_training(*, repo_id: Optional[str], dataset: Path, work_dir: Path, local_base_dir: Optional[Path] = None, revision: Optional[str] = None, profile: str = 'quick', max_trials: int = 1, timeout_minutes: float = 45.0, cooldown_seconds: float = 10.0, epochs: int = 8, batch_size: int = 64, seed: int = 42, min_lr: float = 1e-05, max_lr: float = 0.0005, min_pinn_lambda: float = 0.05, max_pinn_lambda: float = 0.8, weight_decay_choices: Optional[Iterable[float]] = None, min_score_improvement: float = 0.0, physiology_weight: float = 0.1, hypo_weight: float = 0.2, dataset_manifest: Optional[Path] = None, upload_mode: str = 'none', private_upload: bool = True, force_download: bool = False, hf_home: Optional[Path] = None) -> JetsonHFTrainingResult
Public Constants
JETSON_HF_LEADERBOARD_FIELDS
iints.research.local_ai
- Source:
src/iints/research/local_ai.py
- Summary: No module docstring.
Public Functions
build_predictor_dataset_from_runs(run_dirs: Iterable[Tuple[str, Path]], *, output_path: Path, manifest_path: Path | None = None) -> Dict[str, Any]
run_local_ai_lab(run_dirs: Iterable[Tuple[str, Path]], *, output_dir: Path, repo_root: Path, train_predictor: bool = True, predictor_config_path: Path | None = None, train_neural: bool = True, evaluate: bool = True, evaluation_presets: Iterable[str] = DEFAULT_HELD_OUT_PRESETS, evaluation_seeds: Iterable[int] = (101, 202, 303), evaluation_duration_minutes: int = 1440) -> Dict[str, Any]
Public Constants
iints.research.local_ai_gate
- Source:
src/iints/research/local_ai_gate.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
LocalAISafetyProfile |
LocalAISafetyProfile |
No module docstring. |
LocalAIGateResult |
LocalAIGateResult |
No module docstring. |
LocalAIGateResult methods
to_dict(self) -> Dict[str, Any]
Public Functions
review_controller_training_artifacts(controller_summary: Dict[str, Any], *, train_metrics: Dict[str, Any] | None = None, profile: LocalAISafetyProfile = DEFAULT_LOCAL_AI_SAFETY_PROFILE) -> LocalAIGateResult
review_closed_loop_evaluation(algorithms: Dict[str, Dict[str, Any]], *, baseline_name: str = 'clinical_baseline', profile: LocalAISafetyProfile = DEFAULT_LOCAL_AI_SAFETY_PROFILE) -> LocalAIGateResult
Public Constants
DEFAULT_LOCAL_AI_SAFETY_PROFILE
iints.research.losses
- Source:
src/iints/research/losses.py
- Summary: No module docstring.
No public classes, functions, or all-caps constants are declared directly in this module.
iints.research.metrics
- Source:
src/iints/research/metrics.py
- Summary: No module docstring.
Public Functions
regression_metrics(y_true: np.ndarray, y_pred: np.ndarray) -> Dict[str, float]
band_regression_metrics(y_true: np.ndarray, y_pred: np.ndarray, low_threshold: float = 70.0, high_threshold: float = 180.0) -> Dict[str, Dict[str, float]]
interval_coverage_metrics(y_true: np.ndarray, mean_pred: np.ndarray, std_pred: np.ndarray, confidence: float = 0.95, low_threshold: float = 70.0, high_threshold: float = 180.0) -> Dict[str, Any]
iints.research.model_registry
- Source:
src/iints/research/model_registry.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
PromotionResult |
PromotionResult |
No module docstring. |
to_dict(self) -> Dict[str, Any]
Public Functions
load_registry(path: Path) -> List[Dict[str, Any]]
write_registry(path: Path, rows: List[Dict[str, Any]]) -> None
append_registry_entry(path: Path, entry: Dict[str, Any]) -> None
list_registry(path: Path) -> List[Dict[str, Any]]
promote_registry_run(path: Path, *, run_id: str, stage: ModelStage, force: bool = False) -> PromotionResult
iints.research.neural_control
- Source:
src/iints/research/neural_control.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
NeuralControllerConfig |
NeuralControllerConfig |
No module docstring. |
Public Functions
instantiate_neural_controller_model(payload: Dict[str, Any]) -> Any
train_neural_imitation_controller(df: pd.DataFrame, *, config: NeuralControllerConfig | None = None) -> Dict[str, Any]
predict_neural_controller(payload: Dict[str, Any], df: pd.DataFrame) -> np.ndarray
save_neural_controller(payload: Dict[str, Any], path: Path) -> None
load_neural_controller(path: Path) -> Dict[str, Any]
iints.research.predictor
- Source:
src/iints/research/predictor.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
BaselinePredictor |
BaselinePredictor(Protocol) |
No module docstring. |
LastValueBaseline |
LastValueBaseline |
Naïve last-value (persistence) baseline for glucose forecasting. |
LinearTrendBaseline |
LinearTrendBaseline |
Linear-trend extrapolation baseline. |
PredictorService |
PredictorService |
No module docstring. |
BaselinePredictor methods
predict(self, X: np.ndarray) -> np.ndarray
name(self) -> str
LastValueBaseline methods
predict(self, X: np.ndarray) -> np.ndarray
name(self) -> str
LinearTrendBaseline methods
predict(self, X: np.ndarray) -> np.ndarray
name(self) -> str
PredictorService methods
predict(self, x: np.ndarray) -> np.ndarray
predict_with_uncertainty(self, x: np.ndarray, n_samples: int = 50) -> Tuple[np.ndarray, np.ndarray]
Public Functions
evaluate_baselines(X: np.ndarray, y: np.ndarray, horizon_steps: int, time_step_minutes: float = 5.0, feature_columns: Optional[Sequence[str]] = None) -> dict
load_predictor(model_path: Path) -> Tuple['LSTMPredictor', dict]
load_predictor_service(model_path: Path) -> PredictorService
predict_batch(model: 'LSTMPredictor', x: np.ndarray) -> np.ndarray
iints.research.results_manager
- Source:
src/iints/research/results_manager.py
- Summary: Scalable result indexing for IINTS research runs.
Public Classes
| Class |
Signature |
Summary |
ResultsIndexBundle |
ResultsIndexBundle |
Paths created by a results-management indexing run. |
Public Functions
summarize_results_csv(results_csv: Path, root: Path | None = None) -> dict[str, Any]
discover_result_csvs(root: Path, output_dir: Path | None = None) -> list[Path]
build_artifact_inventory(root: Path, output_dir: Path | None = None) -> list[dict[str, Any]]
index_results(root: Path, output_dir: Path | None = None, *, include_raw: bool = False) -> ResultsIndexBundle
Public Constants
ARTIFACT_TYPES
CARB_COLUMNS
GLUCOSE_COLUMNS
INSULIN_COLUMNS
TIME_COLUMNS
iints.scenarios
- Source:
src/iints/scenarios/__init__.py
- Summary: No module docstring.
- Explicit exports:
ScenarioGeneratorConfig, generate_random_scenario, build_eucys_arm_scenario, build_eucys_study_pack, build_official_study_pack, export_eucys_study_pack, export_official_study_pack
No public classes, functions, or all-caps constants are declared directly in this module.
iints.scenarios.generator
- Source:
src/iints/scenarios/generator.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
ScenarioGeneratorConfig |
ScenarioGeneratorConfig |
No module docstring. |
Public Functions
generate_random_scenario(config: ScenarioGeneratorConfig) -> Dict[str, Any]
iints.scenarios.study_pack
- Source:
src/iints/scenarios/study_pack.py
- Summary: No module docstring.
Public Functions
build_official_study_pack(*, seeds: list[int] | None = None) -> dict[str, Any]
build_eucys_study_pack(*, seeds: list[int] | None = None) -> dict[str, Any]
build_eucys_arm_scenario(base_scenario: dict[str, Any], *, arm_id: str) -> tuple[dict[str, Any], dict[str, Any]]
export_official_study_pack(output_dir: str | Path, *, seeds: list[int] | None = None) -> dict[str, str]
export_eucys_study_pack(output_dir: str | Path, *, seeds: list[int] | None = None) -> dict[str, str]
iints.templates
- Source:
src/iints/templates/__init__.py
- Summary: No module docstring.
No public classes, functions, or all-caps constants are declared directly in this module.
iints.templates.default_algorithm
- Source:
src/iints/templates/default_algorithm.py
- Summary: Source could not be parsed as normal Python.
- Parse note:
invalid syntax at line 4
This file is documented as a source artifact rather than a normal importable Python module.
iints.templates.demos
- Source:
src/iints/templates/demos/__init__.py
- Summary: Bundled demo script templates for installed IINTS users.
No public classes, functions, or all-caps constants are declared directly in this module.
iints.templates.demos.live_stage_demo
- Source:
src/iints/templates/demos/live_stage_demo.py
- Summary: No module docstring.
Public Functions
Public Constants
DURATION_MINUTES
OUTPUT_DIR
PATIENT_CONFIG
PREPARE_AI
SCENARIOS
SDK_SRC
SEED
TIME_STEP_MINUTES
iints.templates.pico_pump.code
- Source:
src/iints/templates/pico_pump/code.py
- Summary: IINTS Pico Pump Bench Firmware.
Public Constants
BOOT_TIME
DEVICE_ID
HARDWARE_ACTUATION_ENABLED
LOCKED
READY_BANNER
iints.templates.scenarios
- Source:
src/iints/templates/scenarios/__init__.py
- Summary: No module docstring.
No public classes, functions, or all-caps constants are declared directly in this module.
- Source:
src/iints/tools/ai_realism_auditor.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
Anomaly |
Anomaly |
No module docstring. |
AIRealismAuditor |
AIRealismAuditor |
Red-team auditor for long IINTS-AF physiological simulation outputs. |
Anomaly methods
AIRealismAuditor methods
find_anomalies(self) -> list[Anomaly]
run_audit(self, report_path: str | Path) -> dict[str, Any]
Public Functions
main(argv: list[str] | None = None) -> int
- Source:
src/iints/tools/digital_twin_calibrator.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
DigitalTwinCalibrator |
DigitalTwinCalibrator |
Fits the AdvancedMetabolicModel parameters (p1, p2, p3, Gb) to real patient data (like the OhioT1DM dataset) to create a true Digital Twin. |
DigitalTwinCalibrator methods
- Source:
src/iints/tools/theory_stress_lab.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
TheoryCheckResult |
TheoryCheckResult |
No module docstring. |
TheoryStressReport |
TheoryStressReport |
No module docstring. |
TraceRow |
TraceRow |
No module docstring. |
ScenarioSummary |
ScenarioSummary |
No module docstring. |
TheoryCheckResult methods
to_dict(self) -> Dict[str, Any]
TheoryStressReport methods
to_dict(self) -> Dict[str, Any]
TraceRow methods
to_dict(self) -> Dict[str, Any]
ScenarioSummary methods
values(self, key: str) -> List[float]
Public Functions
check_no_negative_states(seed: int) -> TheoryCheckResult
check_hypo_blocks_insulin(seed: int) -> TheoryCheckResult
check_iob_limits_bolus(seed: int) -> TheoryCheckResult
check_pump_failure_raises_ffa_ketones(seed: int) -> TheoryCheckResult
check_sensor_lag_is_bounded(seed: int) -> TheoryCheckResult
check_exercise_does_not_create_impossible_crash(seed: int) -> TheoryCheckResult
check_meal_response_has_plausible_peak(seed: int) -> TheoryCheckResult
check_illness_increases_insulin_need_without_exploding(seed: int) -> TheoryCheckResult
run_theory_stress_lab(*, output_dir: Optional[Path] = None, profile: str = 'jetson', seed: int = 42, repeats: int = 1, duration_minutes: float = 30.0) -> TheoryStressReport
write_theory_stress_outputs(report: TheoryStressReport, output_dir: Path) -> Dict[str, Path]
main(argv: Optional[Sequence[str]] = None) -> int
Public Constants
iints.utils
- Source:
src/iints/utils/__init__.py
- Summary: No module docstring.
- Explicit exports:
apply_plot_style
No public classes, functions, or all-caps constants are declared directly in this module.
iints.utils.academic_artifacts
- Source:
src/iints/utils/academic_artifacts.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
AcademicTheme |
AcademicTheme |
No module docstring. |
Public Functions
setup_academic_pdf(pdf: Any, *, title: str = 'IINTS-AF Research Report') -> None
add_academic_header(pdf: Any, title: str, *, subtitle: str = 'Pre-clinical research report - not for treatment decisions', metadata: Mapping[str, Any] | None = None) -> None
add_academic_section(pdf: Any, title: str) -> None
add_metric_cards(pdf: Any, cards: Sequence[tuple[str, str]], *, columns: int = 3) -> None
add_key_value_table(pdf: Any, rows: Sequence[tuple[str, str]], *, key_width: float = 62) -> None
add_academic_footer(pdf: Any, *, note: str | None = None) -> None
style_excel_workbook(path: str | Path, *, title: str = 'IINTS-AF Research Workbook') -> Path
Public Constants
iints.utils.csv_safety
- Source:
src/iints/utils/csv_safety.py
- Summary: No module docstring.
Public Functions
sanitize_csv_cell(value: Any) -> Any
sanitize_csv_mapping(row: Mapping[str, Any]) -> dict[str, Any]
sanitize_csv_dataframe(df: pd.DataFrame) -> pd.DataFrame
iints.utils.plotting
- Source:
src/iints/utils/plotting.py
- Summary: No module docstring.
Public Functions
apply_plot_style(dpi: int = 150, font_scale: float = 1.1, palette: Optional[Iterable[str]] = None) -> List[str]
Public Constants
IINTS_BLUE
IINTS_GOLD
IINTS_NAVY
IINTS_ORANGE
IINTS_RED
IINTS_TEAL
iints.utils.run_io
- Source:
src/iints/utils/run_io.py
- Summary: No module docstring.
Public Functions
resolve_seed(seed: Optional[int]) -> int
generate_run_id(seed: int) -> str
resolve_output_dir(output_dir: Optional[Union[str, Path]], run_id: str) -> Path
write_json(path: Path, payload: Dict[str, Any]) -> None
get_sdk_version(package_name: str = 'iints-sdk-python35') -> str
build_run_metadata(run_id: str, seed: int, config: Dict[str, Any], output_dir: Path) -> Dict[str, Any]
compute_sha256(path: Path) -> str
build_run_manifest(output_dir: Path, files: Dict[str, Path]) -> Dict[str, Any]
maybe_sign_manifest(manifest_path: Path) -> Optional[Path]
Public Constants
RESULTS_CSV_FORMAT_VERSION
RUN_MANIFEST_FORMAT_VERSION
RUN_METADATA_FORMAT_VERSION
iints.utils.url_safety
- Source:
src/iints/utils/url_safety.py
- Summary: No module docstring.
Public Functions
validate_service_base_url(raw_url: str, *, label: str) -> str
iints.validation
- Source:
src/iints/validation/__init__.py
- Summary: No module docstring.
- Explicit exports:
StressEventModel, ScenarioModel, PatientConfigModel, LATEST_SCHEMA_VERSION, ValidationRule, ValidationProfile, ValidationCheckResult, RunValidationReport, SafetyContractSpec, SafetyContractViolation, SafetyContractVerificationReport, load_scenario, validate_scenario_dict, scenario_warnings, build_stress_events, scenario_to_payloads, validate_patient_config_dict, load_patient_config, load_patient_config_by_name, load_validation_profiles, compute_run_metrics, evaluate_run, load_contract_spec, apply_contract_to_config, verify_safety_contract, ReplayRunDigest, ReplayCheckResult, run_deterministic_replay_check, GoldenScenarioSpec, GoldenBenchmarkPack, load_golden_benchmark_pack, evaluate_expected_ranges, format_validation_error, migrate_scenario_dict
Public Functions
migrate_scenario_dict(data: Dict[str, Any]) -> Dict[str, Any]
load_scenario(path: Union[str, Path]) -> ScenarioModel
validate_scenario_dict(data: Dict[str, Any]) -> ScenarioModel
scenario_warnings(model: ScenarioModel) -> List[str]
build_stress_events(payloads: List[Dict[str, Any]]) -> List[StressEvent]
scenario_to_payloads(model: ScenarioModel) -> List[Dict[str, Any]]
validate_patient_config_dict(data: Dict[str, Any]) -> PatientConfigModel
load_patient_config(path: Union[str, Path]) -> PatientConfigModel
load_patient_config_by_name(name: str) -> PatientConfigModel
format_validation_error(error: ValidationError) -> List[str]
iints.validation.golden
- Source:
src/iints/validation/golden.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
GoldenScenarioSpec |
GoldenScenarioSpec |
No module docstring. |
GoldenBenchmarkPack |
GoldenBenchmarkPack |
No module docstring. |
Public Functions
load_golden_benchmark_pack(path: Optional[Path] = None) -> GoldenBenchmarkPack
evaluate_expected_ranges(metrics: Dict[str, float], expected: Dict[str, Dict[str, float]]) -> Dict[str, Dict[str, Any]]
iints.validation.replay
- Source:
src/iints/validation/replay.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
ReplayRunDigest |
ReplayRunDigest |
No module docstring. |
ReplayCheckResult |
ReplayCheckResult |
No module docstring. |
ReplayRunDigest methods
to_dict(self) -> Dict[str, Any]
ReplayCheckResult methods
to_dict(self) -> Dict[str, Any]
Public Functions
run_deterministic_replay_check(*, algorithm: InsulinAlgorithm, scenario: Optional[Dict[str, Any]], patient_config: Any, duration_minutes: int, time_step: int, seed: int, repeats: int = 2, safety_config: Optional[SafetyConfig] = None, predictor: Optional[object] = None) -> ReplayCheckResult
Public Constants
NON_DETERMINISTIC_COLUMNS
NON_DETERMINISTIC_REPORT_KEYS
iints.validation.run_doctor
- Source:
src/iints/validation/run_doctor.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
RunDoctorCheck |
RunDoctorCheck |
No module docstring. |
RunDoctorReport |
RunDoctorReport |
No module docstring. |
RunDoctorCheck methods
to_dict(self) -> Dict[str, Any]
RunDoctorReport methods
failed(self) -> bool
warned(self) -> bool
to_dict(self) -> Dict[str, Any]
Public Functions
inspect_run_setup(*, algo_path: Optional[Path] = None, patient_config_path: Optional[Path] = None, scenario_path: Optional[Path] = None, duration_minutes: int = 1440, time_step_minutes: int = 5, output_dir: Optional[Path] = None, patient_config_name: Optional[str] = None) -> RunDoctorReport
iints.validation.run_validation
- Source:
src/iints/validation/run_validation.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
ValidationRule |
ValidationRule |
No module docstring. |
ValidationProfile |
ValidationProfile |
No module docstring. |
ValidationCheckResult |
ValidationCheckResult |
No module docstring. |
RunValidationReport |
RunValidationReport |
No module docstring. |
ValidationCheckResult methods
to_dict(self) -> Dict[str, Any]
RunValidationReport methods
to_dict(self) -> Dict[str, Any]
Public Functions
load_validation_profiles(path: Optional[Path] = None) -> Dict[str, ValidationProfile]
compute_run_metrics(results_df: pd.DataFrame, *, safety_report: Optional[Dict[str, Any]] = None, duration_minutes: Optional[int] = None) -> Dict[str, float]
evaluate_run(results_df: pd.DataFrame, *, profile: ValidationProfile, safety_report: Optional[Dict[str, Any]] = None, duration_minutes: Optional[int] = None) -> RunValidationReport
iints.validation.safety_contract
- Source:
src/iints/validation/safety_contract.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
SafetyContractSpec |
SafetyContractSpec |
No module docstring. |
SafetyContractViolation |
SafetyContractViolation |
No module docstring. |
SafetyContractVerificationReport |
SafetyContractVerificationReport |
No module docstring. |
SafetyContractVerificationReport methods
passed(self) -> bool
to_dict(self) -> Dict[str, Any]
Public Functions
load_contract_spec(path: Optional[Path] = None) -> SafetyContractSpec
apply_contract_to_config(spec: SafetyContractSpec, base: Optional[SafetyConfig] = None) -> SafetyConfig
verify_safety_contract(spec: SafetyContractSpec, *, glucose_values: List[float], trend_values: List[float], proposed_doses: List[float], iob_values: Optional[List[float]] = None) -> SafetyContractVerificationReport
iints.validation.schemas
- Source:
src/iints/validation/schemas.py
- Summary: No module docstring.
Public Classes
| Class |
Signature |
Summary |
StressEventModel |
StressEventModel(BaseModel) |
No module docstring. |
ScenarioModel |
ScenarioModel(BaseModel) |
No module docstring. |
PatientConfigModel |
PatientConfigModel(BaseModel) |
No module docstring. |
Public Constants
iints.visualization
- Source:
src/iints/visualization/__init__.py
- Summary: IINTS-AF Visualization Module Professional medical visualizations for diabetes algorithm research.
- Explicit exports:
UncertaintyCloud, UncertaintyData, VisualizationConfig, ClinicalCockpit, CockpitConfig, DashboardState
No public classes, functions, or all-caps constants are declared directly in this module.
iints.visualization.cockpit
- Source:
src/iints/visualization/cockpit.py
- Summary: Clinical Control Center - IINTS-AF Professional medical dashboard for diabetes algorithm research.
Public Classes
| Class |
Signature |
Summary |
CockpitConfig |
CockpitConfig |
Configuration for the clinical cockpit |
DashboardState |
DashboardState |
Current state of the dashboard |
ClinicalCockpit |
ClinicalCockpit |
Professional clinical dashboard for diabetes algorithm research. |
DashboardState methods
ClinicalCockpit methods
visualize_results(self, simulation_data: pd.DataFrame, predictions: Optional[np.ndarray] = None, reasoning_logs: Optional[List[Dict]] = None, metrics: Optional[Dict] = None, personality: Optional[Dict] = None, save_path: Optional[str] = None) -> plt.Figure
compare_battle(self, battle_report, save_path: Optional[str] = None) -> plt.Figure
update(self, state: DashboardState)
export_state(self) -> Dict
Public Functions
iints.visualization.uncertainty_cloud
- Source:
src/iints/visualization/uncertainty_cloud.py
- Summary: Uncertainty Cloud Visualizer - IINTS-AF Creates visualization of AI confidence as shadow around glucose predictions.
Public Classes
| Class |
Signature |
Summary |
UncertaintyData |
UncertaintyData |
Data structure for uncertainty visualization |
VisualizationConfig |
VisualizationConfig |
Configuration for uncertainty cloud visualization |
UncertaintyCloud |
UncertaintyCloud |
Creates uncertainty cloud visualizations for glucose predictions. |
UncertaintyCloud methods
plot(self, data: UncertaintyData, time_range: Optional[Tuple[float, float]] = None, save_path: Optional[str] = None) -> plt.Figure
plot_comparison(self, data_list: List[Tuple[str, UncertaintyData]], save_path: Optional[str] = None) -> plt.Figure
create_dashboard_widget(self, data: UncertaintyData, width: int = 400, height: int = 200) -> plt.Figure
Public Functions
generate_sample_data() -> UncertaintyData
demo_uncertainty_cloud()