From bfc3762e77c18b01cf77d403c456d9ec42a37a4d Mon Sep 17 00:00:00 2001 From: SexyERIC0723 Date: Fri, 3 Apr 2026 12:00:26 +0100 Subject: [PATCH] fix: clean up __init__.py exports and fix invalid escape sequence models/__init__.py: - Remove duplicate MedLink import (was on lines 18 and 45) - Sort imports alphabetically for consistency - Add __all__ list to make the public API explicit processors/__init__.py: - Add 6 missing processors to __all__: BinaryLabelProcessor, MultiClassLabelProcessor, MultiLabelProcessor, RegressionLabelProcessor, DeepNestedFloatsProcessor, DeepNestedSequenceProcessor, IgnoreProcessor - Remove non-existent "LabelProcessor" from __all__ - Sort __all__ entries alphabetically metrics/calibration.py: - Fix invalid escape sequence \c (backslash-c) in docstring math formula -- use \\cdot for LaTeX multiplication dot (triggers DeprecationWarning in Python 3.12, SyntaxError in 3.14) --- pyhealth/metrics/calibration.py | 2 +- pyhealth/models/__init__.py | 54 ++++++++++++++++++++++++++++----- pyhealth/processors/__init__.py | 14 ++++++--- 3 files changed, 58 insertions(+), 12 deletions(-) diff --git a/pyhealth/metrics/calibration.py b/pyhealth/metrics/calibration.py index 32e27b617..4301fa22e 100644 --- a/pyhealth/metrics/calibration.py +++ b/pyhealth/metrics/calibration.py @@ -119,7 +119,7 @@ def ece_confidence_multiclass(prob:np.ndarray, label:np.ndarray, bins=20, adapti Explanation of the example: The bins are [0, 0.5] and (0.5, 1]. In the first bin, we have one sample with top-class prediction of 0.49, and its accuracy is 0. In the second bin, we have average confidence of 0.7 and average - accuracy of 1. Thus, the ECE is :math:`\\frac{1}{3} \cdot 0.49 + \\frac{2}{3}\cdot 0.3=0.3633`. + accuracy of 1. Thus, the ECE is :math:`\\frac{1}{3} \\cdot 0.49 + \\frac{2}{3} \\cdot 0.3=0.3633`. Args: prob (np.ndarray): (N, C) diff --git a/pyhealth/models/__init__.py b/pyhealth/models/__init__.py index 5233b1726..37bcef0e9 100644 --- a/pyhealth/models/__init__.py +++ b/pyhealth/models/__init__.py @@ -6,15 +6,16 @@ from .concare import ConCare, ConCareLayer from .contrawr import ContraWR, ResBlock2D from .deepr import Deepr, DeeprLayer +from .ehrmamba import EHRMamba, MambaBlock from .embedding import EmbeddingModel from .gamenet import GAMENet, GAMENetLayer -from .jamba_ehr import JambaEHR, JambaLayer -from .logistic_regression import LogisticRegression from .gan import GAN from .gnn import GAT, GCN from .graph_torchvision_model import Graph_TorchvisionModel from .graphcare import GraphCare from .grasp import GRASP, GRASPLayer +from .jamba_ehr import JambaEHR, JambaLayer +from .logistic_regression import LogisticRegression from .medlink import MedLink from .micron import MICRON, MICRONLayer from .mlp import MLP @@ -22,10 +23,12 @@ from .retain import MultimodalRETAIN, RETAIN, RETAINLayer from .rnn import MultimodalRNN, RNN, RNNLayer from .safedrug import SafeDrug, SafeDrugLayer +from .sdoh import SdohClassifier from .sparcnet import DenseBlock, DenseLayer, SparcNet, TransitionLayer from .stagenet import StageNet, StageNetLayer from .stagenet_mha import StageAttentionNet, StageNetAttentionLayer from .tcn import TCN, TCNLayer +from .text_embedding import TextEmbedding from .tfm_tokenizer import ( TFMTokenizer, TFM_VQVAE2_deep, @@ -37,10 +40,47 @@ from .torchvision_model import TorchvisionModel from .transformer import Transformer, TransformerLayer from .transformers_model import TransformersModel -from .ehrmamba import EHRMamba, MambaBlock +from .unified_embedding import UnifiedMultimodalEmbeddingModel, SinusoidalTimeEmbedding from .vae import VAE from .vision_embedding import VisionEmbeddingModel -from .text_embedding import TextEmbedding -from .sdoh import SdohClassifier -from .medlink import MedLink -from .unified_embedding import UnifiedMultimodalEmbeddingModel, SinusoidalTimeEmbedding + +__all__ = [ + "AdaCare", "AdaCareLayer", "MultimodalAdaCare", + "Agent", "AgentLayer", + "BaseModel", + "BIOT", + "CNN", "CNNLayer", + "ConCare", "ConCareLayer", + "ContraWR", + "Deepr", "DeeprLayer", + "EHRMamba", "MambaBlock", + "EmbeddingModel", + "GAMENet", "GAMENetLayer", + "GAN", + "GAT", "GCN", + "Graph_TorchvisionModel", + "GraphCare", + "GRASP", "GRASPLayer", + "JambaEHR", "JambaLayer", + "LogisticRegression", + "MedLink", + "MICRON", "MICRONLayer", + "MLP", + "MoleRec", "MoleRecLayer", + "MultimodalRETAIN", "RETAIN", "RETAINLayer", + "MultimodalRNN", "RNN", "RNNLayer", + "SafeDrug", "SafeDrugLayer", + "SdohClassifier", + "SparcNet", + "StageNet", "StageNetLayer", + "StageAttentionNet", "StageNetAttentionLayer", + "TCN", "TCNLayer", + "TextEmbedding", + "TFMTokenizer", + "TorchvisionModel", + "Transformer", "TransformerLayer", + "TransformersModel", + "UnifiedMultimodalEmbeddingModel", + "VAE", + "VisionEmbeddingModel", +] diff --git a/pyhealth/processors/__init__.py b/pyhealth/processors/__init__.py index b48072270..e57e5564b 100644 --- a/pyhealth/processors/__init__.py +++ b/pyhealth/processors/__init__.py @@ -61,12 +61,20 @@ def get_processor(name: str): "FeatureProcessor", "ModalityType", "TemporalFeatureProcessor", + "AudioProcessor", + "BinaryLabelProcessor", + "DeepNestedFloatsProcessor", + "DeepNestedSequenceProcessor", + "GraphProcessor", + "IgnoreProcessor", "ImageProcessor", - "LabelProcessor", + "MultiClassLabelProcessor", "MultiHotProcessor", + "MultiLabelProcessor", "NestedFloatsProcessor", "NestedSequenceProcessor", "RawProcessor", + "RegressionLabelProcessor", "SequenceProcessor", "SignalProcessor", "StageNetProcessor", @@ -74,9 +82,7 @@ def get_processor(name: str): "TensorProcessor", "TemporalTimeseriesProcessor", "TextProcessor", - "TimeseriesProcessor", "TimeImageProcessor", - "GraphProcessor", - "AudioProcessor", + "TimeseriesProcessor", "TupleTimeTextProcessor", ]