iints-sdk-python35 1.5.16__py3-none-any.whl → 1.5.18__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
iints/__init__.py CHANGED
@@ -11,7 +11,7 @@ except ImportError: # pragma: no cover - Python < 3.8 fallback
11
11
  try:
12
12
  __version__ = version("iints-sdk-python35")
13
13
  except PackageNotFoundError: # pragma: no cover - source tree fallback
14
- __version__ = "1.5.16"
14
+ __version__ = "1.5.18"
15
15
 
16
16
  # Note to developers: this SDK is currently maintained by a single author.
17
17
  # Please report bugs via GitHub issues and feel free to contribute fixes via PRs.
@@ -4,13 +4,14 @@ import logging
4
4
  import json
5
5
  from datetime import datetime
6
6
  from pathlib import Path
7
- from typing import Any, Dict, List, Optional
7
+ from typing import Any, Dict, List, Optional, cast
8
8
 
9
9
  os.environ.setdefault("MPLBACKEND", "Agg")
10
10
  os.environ.setdefault("MPLCONFIGDIR", str(Path(tempfile.gettempdir()) / "iints-matplotlib"))
11
11
 
12
12
  import matplotlib.pyplot as plt
13
13
  import numpy as np
14
+ from numpy.typing import NDArray
14
15
  import pandas as pd
15
16
  from fpdf import FPDF
16
17
  from fpdf.enums import XPos, YPos
@@ -777,11 +778,18 @@ class ClinicalReportGenerator:
777
778
  working = df.copy()
778
779
  if "time_minutes" not in working.columns:
779
780
  working["time_minutes"] = np.arange(len(working), dtype=float) * self._infer_step_minutes(working)
780
- x_hours = pd.to_numeric(working["time_minutes"], errors="coerce").fillna(0.0).to_numpy(dtype=float) / 60.0
781
- glucose = pd.to_numeric(working["glucose_actual_mgdl"], errors="coerce").to_numpy(dtype=float)
781
+ x_hours = cast(
782
+ NDArray[np.float64],
783
+ pd.to_numeric(working["time_minutes"], errors="coerce").fillna(0.0).to_numpy(dtype=np.float64)
784
+ / 60.0,
785
+ )
786
+ glucose = cast(
787
+ NDArray[np.float64],
788
+ pd.to_numeric(working["glucose_actual_mgdl"], errors="coerce").to_numpy(dtype=np.float64),
789
+ )
782
790
  if len(glucose) == 0:
783
- glucose = np.array([0.0])
784
- x_hours = np.array([0.0])
791
+ glucose = np.asarray([0.0], dtype=np.float64)
792
+ x_hours = np.asarray([0.0], dtype=np.float64)
785
793
 
786
794
  fig, ax = plt.subplots(figsize=(10.8, 5.2))
787
795
  x_min = float(np.nanmin(x_hours))
@@ -243,6 +243,7 @@ class AIRealismAuditor:
243
243
  f"**Input CSV:** `{self.csv_path}`",
244
244
  f"**Rows Scanned:** {len(self.df)}",
245
245
  f"**Anomalies Detected by Filter:** {len(anomalies)}",
246
+ f"**Local AI Verdicts:** **{'enabled' if self.ai_ready else 'offline / disabled'}**",
246
247
  f"**Optional AI Explanations:** **{'enabled' if self.ai_ready else 'offline / disabled'}**",
247
248
  "",
248
249
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iints-sdk-python35
3
- Version: 1.5.16
3
+ Version: 1.5.18
4
4
  Summary: A pre-clinical Edge-AI SDK for diabetes management validation.
5
5
  Author-email: Rune Bobbaers <rune.bobbaers@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -64,7 +64,7 @@ Requires-Dist: h5py<4.0.0,>=3.10.0; extra == "research"
64
64
  Requires-Dist: onnx<2.0.0,>=1.16.0; extra == "research"
65
65
  Requires-Dist: onnxscript<1.0.0,>=0.1.0; extra == "research"
66
66
  Provides-Extra: mdmp
67
- Requires-Dist: cryptography<49.0.0,>=42.0.0; extra == "mdmp"
67
+ Requires-Dist: cryptography<50.0.0,>=42.0.0; extra == "mdmp"
68
68
  Dynamic: license-file
69
69
 
70
70
  # IINTS-AF SDK
@@ -1,4 +1,4 @@
1
- iints/__init__.py,sha256=R0ZCPUinopNEj6cx10k3xX-5-dayFXTz96f9OtiUZW4,11347
1
+ iints/__init__.py,sha256=OHfx05_rgqhvhCdAe8YGf1VQh-N4auSjMpPzNeoIDdk,11347
2
2
  iints/demo_assets.py,sha256=h9bXB6aBptwtvd2drAjg4wp3XE7zXuESxVG8vJgSUJU,2071
3
3
  iints/highlevel.py,sha256=LCAp8SUwA6dZkUs7JmIBBEasOkALA9Inf6RZtfUNKFQ,22914
4
4
  iints/metrics.py,sha256=pFFGiGa081YYmRJ8rpV72zYRWmrLq-zA9NxFJw-7HEM,903
@@ -34,7 +34,7 @@ iints/analysis/hardware_benchmark.py,sha256=fzGTiHYG0VO9mhNc20oCB73ZE6roVb2cM0Lk
34
34
  iints/analysis/metrics.py,sha256=M6SLIp3DKRJTpZNCv5M0AjKC_OveOjGf0nsJ_wcF-mk,4325
35
35
  iints/analysis/population_report.py,sha256=x3pIJijNynLYM4M6n47_6juUGWde73C7AvC5pJpV2mY,7397
36
36
  iints/analysis/poster.py,sha256=xR_KasvOLSFZspfw3rWl75RV_xLnzO-hObzzurG-NKQ,10071
37
- iints/analysis/reporting.py,sha256=MXSuRh7gay4yQCGZi9wp5b9cxca4kwsmfjVR0c9ZlYc,48316
37
+ iints/analysis/reporting.py,sha256=5rzgakMzSxpYhToSy0wZC9Kp0lkOdOJQto23QN7l4JE,48541
38
38
  iints/analysis/run_quality.py,sha256=FyYg0ijD1aOKTjXVYv_neUPuNlFFgxNQL5s-ViAg_DE,7285
39
39
  iints/analysis/safety_index.py,sha256=jfYIELn9sSp9lLOH6t4fJ8jJi1mTOhGrFme9cX6Iric,10897
40
40
  iints/analysis/safety_visualizer.py,sha256=5bfJnoDoQF4HjSCf3XTZHI9mPuztXqeKpCIyuGcXZuU,14074
@@ -207,7 +207,7 @@ iints/templates/scenarios/example_scenario.json,sha256=C1WtdgD2zN69emGZ87GNxT5f5
207
207
  iints/templates/scenarios/exercise_stress.json,sha256=Cn4_tyaRpQvubCz9Cjge94MdTZpTcyHkrQ_ewKU1m1I,662
208
208
  iints/templates/uno_q/README.md,sha256=25UQW--PIGIt9anoLkvSWIuG-g5A3LdnLBKX9Gk_iEk,2487
209
209
  iints/templates/uno_q/iints_supervisor_bridge.ino,sha256=mfLk4hGU3CZWvNfWpBmEM8c2Cue3zsZI-dVK17HvaKY,1567
210
- iints/tools/ai_realism_auditor.py,sha256=F0i07A5ABYKR9E1oZHOXE-lZUUSiYgZPAea_J3Oq1XE,12676
210
+ iints/tools/ai_realism_auditor.py,sha256=5LjxPB99nx26fiKTd2J1tLOaTBMApySdfCRu2TQdwDU,12774
211
211
  iints/tools/digital_twin_calibrator.py,sha256=-Q4fmZUlYsg_gRt8EC2Qnt5tKRQ84s_vKBjXeUxuy6A,2952
212
212
  iints/tools/theory_stress_lab.py,sha256=IcV05LmAj-oQCy0-FHHFCXFlH7h5qDLatGdyEXi3Ntk,25646
213
213
  iints/utils/__init__.py,sha256=KGDuOUBT-G2_76sLWJqDhR_nhcgE17ZMGuQxObhy_mo,71
@@ -226,9 +226,9 @@ iints/validation/schemas.py,sha256=neds4gNI8NnuMj1fyHRFAsp12u01TBowGB6fZ2RVypw,4
226
226
  iints/visualization/__init__.py,sha256=OdxVHDpY-9bDt8DTWWd-dspn1p0O9T908Cck-IGFaiM,640
227
227
  iints/visualization/cockpit.py,sha256=5PdvAbNXzyTjKoqT65bgw6h01FnLNVjY4lXdKdYXCNc,26183
228
228
  iints/visualization/uncertainty_cloud.py,sha256=I5nNzSitgai21rkul31YNtJriSEmCeTsW0GWW2HUskY,19848
229
- iints_sdk_python35-1.5.16.dist-info/licenses/LICENSE,sha256=pmk2DGE1Cj9zr5hfus2x_sILJBnIBR1KvJWp4OXYqc0,8978
230
- iints_sdk_python35-1.5.16.dist-info/licenses/LICENSE-MIT-IINTS-LEGACY,sha256=HzvJLhuEHRUlY9Sl1PZ3-jG0ZBOuMXtbrMF1la02M3E,1078
231
- iints_sdk_python35-1.5.16.dist-info/licenses/NOTICE,sha256=4sQjo6BqDGi1abL9Gp9W2F6851cpzE3jvIl1cpHuO0I,678
229
+ iints_sdk_python35-1.5.18.dist-info/licenses/LICENSE,sha256=pmk2DGE1Cj9zr5hfus2x_sILJBnIBR1KvJWp4OXYqc0,8978
230
+ iints_sdk_python35-1.5.18.dist-info/licenses/LICENSE-MIT-IINTS-LEGACY,sha256=HzvJLhuEHRUlY9Sl1PZ3-jG0ZBOuMXtbrMF1la02M3E,1078
231
+ iints_sdk_python35-1.5.18.dist-info/licenses/NOTICE,sha256=4sQjo6BqDGi1abL9Gp9W2F6851cpzE3jvIl1cpHuO0I,678
232
232
  mdmp_ai/__init__.py,sha256=chKE8_Wo7oxj5CFqZ9NcyLjAHM5npvaKkLvTdBPtjo8,160
233
233
  mdmp_ai/lineage.py,sha256=LY_sshoVTLPQfhP3ZDLv0drdBoxGW_YXbdAb_XMAllQ,7065
234
234
  mdmp_core/__init__.py,sha256=5kvhQwYy-puaztBzzohBex_wiv2YB4Ui9MWk1hTiVDA,3768
@@ -268,8 +268,8 @@ mdmp_integrations/__init__.py,sha256=r5z2RODMmZCFHkvAOahcL576S1Dp0AuyQXQAvefzVQQ
268
268
  mdmp_integrations/dvc.py,sha256=1UVL_It-Xp6ad8G66ubm9YaF0O9n31EMiJ466zPK9vY,740
269
269
  mdmp_integrations/mlflow.py,sha256=YiT6LKu_sN2k1Gzz4U4kqby_JNhQUiOi38AO6sCPvPg,367
270
270
  mdmp_integrations/wandb.py,sha256=r1-gXYkIKN396K0VU6uuqk1SWTNGqto1Q9HZ-RKBEss,496
271
- iints_sdk_python35-1.5.16.dist-info/METADATA,sha256=RhLh9fffBLEpLTaQ3qj_PTtqnIWEMzALmq9ad3Xq50s,5850
272
- iints_sdk_python35-1.5.16.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
273
- iints_sdk_python35-1.5.16.dist-info/entry_points.txt,sha256=QyVnqN-T-wsrL3ITYEFUSoiu57DuqnEQy8aYtirDr-8,569
274
- iints_sdk_python35-1.5.16.dist-info/top_level.txt,sha256=yCCM5o2LCIQj9aEAZ-xa_EVxiiEhPNPDEgaABFNZGvs,55
275
- iints_sdk_python35-1.5.16.dist-info/RECORD,,
271
+ iints_sdk_python35-1.5.18.dist-info/METADATA,sha256=X0DVEryP6GUxJ78o8ksYgDgAfn6FRfuoem0AnmL69R8,5850
272
+ iints_sdk_python35-1.5.18.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
273
+ iints_sdk_python35-1.5.18.dist-info/entry_points.txt,sha256=QyVnqN-T-wsrL3ITYEFUSoiu57DuqnEQy8aYtirDr-8,569
274
+ iints_sdk_python35-1.5.18.dist-info/top_level.txt,sha256=yCCM5o2LCIQj9aEAZ-xa_EVxiiEhPNPDEgaABFNZGvs,55
275
+ iints_sdk_python35-1.5.18.dist-info/RECORD,,