Skip to main content

A pre-clinical Edge-AI SDK for diabetes management validation.

Project description

IINTS-AF SDK

PyPI version Python Package CI Site

IINTS-AF is a safety-first SDK for insulin-algorithm research. It lets you simulate, validate, and report results with reproducible artifacts.

Docs (GitHub Pages): python35.github.io/IINTS-SDK

What You Can Do

  • Run virtual patient simulations.
  • Test algorithm safety gates (deterministic supervisor).
  • Add optional AI glucose forecasting.
  • Validate datasets before training/evaluation.
  • Generate audit-ready CSV/JSON/PDF/HTML outputs.

Quick Start

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
pip install iints-sdk-python35
iints doctor --smoke-run
iints quickstart --project-name iints_quickstart
cd iints_quickstart
iints presets run --name baseline_t1d --algo algorithms/example_algorithm.py

CareLink Import

The SDK can now ingest Medtronic CareLink / MiniMed CSV exports and convert them into the standard IINTS schema:

iints import-carelink \
  --input-csv "/path/to/CareLink export.csv" \
  --output-dir results/imported_carelink

This writes:

  • cgm_standard.csv
  • scenario.json
  • carelink_summary.json

It extracts glucose, carb, and insulin events from the CareLink event log and aligns them onto an IINTS-ready timeline.

If you want a reusable personal-data workspace in one command, build a CareLink workbench:

iints carelink-workbench \
  --input-csv "/path/to/CareLink export.csv" \
  --output-dir results/personal_carelink

This adds:

  • carelink_timeline.csv
  • carelink_metrics.json
  • carelink_dashboard.png
  • carelink_poster.png
  • carelink_dashboard.html
  • ai/report_payload.json
  • ai/trends_payload.json
  • ai/anomalies_payload.json
  • ai/step_riskiest.json

That workbench is designed for three things:

  • inspect your own data visually
  • reuse the generated scenario.json inside IINTS experiments
  • let the local AI assistant explain what the imported patterns mean

AI Assistant (Ministral 3 Open-Weight via Ollama)

The SDK now includes a research-only AI assistant layer for explanations and run summaries. It is gated by MDMP verification before any LLM call is allowed.

Use an active virtual environment for the full flow:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
python -m pip install -e ".[mdmp]"

Run the open local Mistral model locally with Ollama:

python -m pip install -e ".[mdmp]"
ollama pull ministral-3:8b
iints ai models

Recommended first-time setup:

ollama pull ministral-3:8b
iints ai local-check --model ministral-3:8b

local-check now performs a tiny generation smoke-test by default, so it verifies both model presence and real inference readiness.

Recommended flow:

iints quickstart --project-name iints_quickstart
cd iints_quickstart
iints presets run --name baseline_t1d --algo algorithms/example_algorithm.py
iints ai prepare results/<run_id>
iints ai report results/<run_id>

For imported CareLink data, the matching flow is:

iints carelink-workbench \
  --input-csv "/path/to/CareLink export.csv" \
  --output-dir results/personal_carelink

iints ai report results/personal_carelink --model ministral-3:3b
iints ai trends results/personal_carelink --model ministral-3:3b
iints ai explain results/personal_carelink --model ministral-3:3b

Direct JSON mode still works if you already have your own payloads and signed MDMP artifact:

iints ai explain results/step.json \
  --mdmp-cert results/report.signed.mdmp

Notes:

  • AI analysis is blocked if the MDMP artifact is invalid.
  • Minimum required MDMP grade defaults to research_grade.
  • The SDK now targets the open local Ministral 3 Ollama model by default.
  • Users can choose a larger or smaller local Mistral-family model with --model ....
  • Large JSON payloads are clipped automatically before prompt generation to keep local inference stable.
  • iints ai prepare <run_dir> now creates AI-ready JSON payloads and, when MDMP is installed, a local development certificate plus keypair in <run_dir>/ai/.
  • iints carelink-workbench now does the same kind of AI preparation for imported personal CareLink data and also generates a dashboard PNG/HTML pair.
  • If Ollama closes the connection during generation, the SDK now surfaces an explicit recovery hint and points users toward ministral-3:3b for lower-memory systems.
  • After iints ai prepare, you can point iints ai explain|trends|anomalies|report directly at the run directory.
  • After iints carelink-workbench, you can point those same AI commands directly at the generated CareLink workspace directory.
  • Output is research-only and not medical advice.

Jury Poster / Demo Graphic

You can now generate a poster-style PNG directly from one to three real run bundles:

iints poster \
  --run-dir results/normal_run \
  --run-dir results/meal_stress \
  --run-dir results/supervisor_override \
  --label "Normal Run" \
  --label "Meal Stress Test" \
  --label "Supervisor Override" \
  --output-path results/posters/iints_results_poster.png

The poster shows:

  • glucose curves with the target range highlighted
  • meal events
  • supervisor interventions
  • panel summaries with TIR, hypo time, meal count, and intervention count

If you omit --run-dir, the CLI auto-discovers the latest run bundles under ./results.

Fair / Jury Demo

If you want one clean live demo for a booth, jury, or pitch session, use the built-in booth flow:

./scripts/run_booth_demo.sh

This generates:

  • three run bundles (Normal Run, Meal Stress Test, Supervisor Override)
  • a ready-to-show poster PNG
  • a markdown jury talk track
  • a plain-text live demo script for the stand
  • optional AI-ready artifacts for the safety case

You can also run it through the CLI:

iints demo-booth --output-dir results/booth_demo

Updating The SDK

If another machine is missing newer commands like iints ai ... or iints demo-booth, upgrade inside the active virtual environment:

source .venv/bin/activate
python -m pip install -U pip
python -m pip install -U "iints-sdk-python35[mdmp]==1.3.1"
hash -r
python -c "import iints; print(iints.__version__)"

If that machine still behaves like an old install, run:

iints-sdk-doctor

Full guide:

  • docs/UPDATING.md

Troubleshooting:

  • If iints ai ... says No such command 'ai', your environment usually still has a legacy iints package installed alongside iints-sdk-python35.
  • Run iints-sdk-doctor first.
  • If it reports a conflict, repair the environment with:
python -m pip uninstall -y iints iints-sdk-python35
python -m pip install -U "iints-sdk-python35[mdmp]==1.3.1"
hash -r

MDMP (Short)

MDMP is the data-quality protocol used by IINTS.

  • Contract: defines expected columns, types, units, and bounds.
  • Validation: checks a dataset against the contract.
  • Fingerprint + Grade: writes deterministic hashes and a grade (draft, research_grade, clinical_grade).
  • Visualizer: builds a single-file HTML report for audits.

Use the dedicated namespace:

iints mdmp template --output-path mdmp_contract.yaml
iints mdmp validate mdmp_contract.yaml data/my_cgm.csv --output-json results/mdmp_report.json
iints mdmp visualizer results/mdmp_report.json --output-html results/mdmp_dashboard.html

Use standalone MDMP backend (optional):

export IINTS_MDMP_BACKEND=mdmp_core

Staleness / lineage checks (standalone MDMP CLI):

mdmp fingerprint-record data/my_cgm.csv --output-json results/fingerprint.json --expires-days 365
mdmp fingerprint-check results/fingerprint.json data/my_cgm.csv
mdmp lineage-card-refresh results/mdmp_model_card.yaml
mdmp registry init --registry registry/mdmp_registry.json
mdmp registry push --registry registry/mdmp_registry.json --report results/mdmp_report.json

Dual Repo Workflow

  • SDK repo: python35/IINTS-SDK
  • MDMP repo: python35/MDMP

Local helper scripts:

  • tools/dev/dual_repo_status.sh
  • tools/dev/dual_repo_commit_push.sh

Full process: docs/DUAL_REPO_WORKFLOW.md

MDMP sync CI gate:

  • .github/workflows/mdmp-sync.yml
  • Uses private-repo checkout when MDMP_REPO_TOKEN is configured.
  • Falls back to mdmp-protocol from PyPI when checkout is unavailable.
  • Auto dependency updates for MDMP are handled via Dependabot (.github/dependabot.yml).

Tools Layout

Repository helpers are now grouped by purpose:

  • scripts/: simple user-facing shortcuts like test, lint, and demo entrypoints
  • tools/ci/: CI gates and policy checks
  • tools/dev/: maintainer workflows and multi-repo helpers
  • tools/docs/: manual and documentation builders
  • tools/data/: dataset import and conversion utilities
  • tools/analysis/: plotting, diagnostics, and report helpers
  • tools/assets/: branding and asset generation helpers

Reference: tools/README.md

Typical Workflow

  1. Prepare or import data.
  2. Validate data with MDMP.
  3. Run simulation or forecast evaluation.
  4. Review report artifacts and metrics.

Key Commands

iints run-full --algo algorithms/example_algorithm.py --scenario-path scenarios/clinic_safe_baseline.json --output-dir results/run_full
iints scorecard --algo algorithms/example_algorithm.py --profile research_default --output-dir results/scorecard
iints study-ready --algo algorithms/example_algorithm.py --output-dir results/study_ready
iints sources --output-json results/source_manifest.json

Documentation

Safety Notice

For research use only. Not a medical device. No clinical dosing advice.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iints_sdk_python35-1.3.1.tar.gz (962.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iints_sdk_python35-1.3.1-py3-none-any.whl (1.0 MB view details)

Uploaded Python 3

File details

Details for the file iints_sdk_python35-1.3.1.tar.gz.

File metadata

  • Download URL: iints_sdk_python35-1.3.1.tar.gz
  • Upload date:
  • Size: 962.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for iints_sdk_python35-1.3.1.tar.gz
Algorithm Hash digest
SHA256 e4225cb275ab4594a7a42279713f28cc5e9ca0084f8e290cc4886efc3243f9e5
MD5 1d827d23e999c69de8bafb4bc56dca93
BLAKE2b-256 e4c3f95dec86e5e92b158b8b595b1bc9fe2b64e502a8a8981a479759c4806274

See more details on using hashes here.

Provenance

The following attestation bundles were made for iints_sdk_python35-1.3.1.tar.gz:

Publisher: publish-pypi.yml on python35/IINTS-SDK

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iints_sdk_python35-1.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for iints_sdk_python35-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2a250da973a3c68fcfd86994f24f465b7a915d3f2ce11c08d6c2a21531736a4c
MD5 25e9c1f230d828cf1e19da52fae00388
BLAKE2b-256 f3025b7d1540812a77c112dd64926e533434207956c07e4c97bc93b8bc6c6a6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for iints_sdk_python35-1.3.1-py3-none-any.whl:

Publisher: publish-pypi.yml on python35/IINTS-SDK

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page