{
  "meta": {
    "kit_version": "0.3.0",
    "kit_source": null,
    "exported_utc": "2026-10-27T18:46:07Z",
    "python": "3.10.16",
    "n_models": 26,
    "n_datasets": 5,
    "canonical_probe": "12x5",
    "probes": {
      "12x5": {
        "input_channels": 12,
        "output_size": 5
      },
      "1x1": {
        "input_channels": 1,
        "output_size": 1
      },
      "1x4": {
        "input_channels": 1,
        "output_size": 4
      }
    },
    "kit_git_sha": "286944ea5d82",
    "kit_git_dirty": true,
    "torch": "2.7.0"
  },
  "models": {
    "afmodel": {
      "registry_name": "afmodel",
      "class": "AFModel",
      "module": "deepecgkit.models.af_classifier",
      "description": "Atrial Fibrillation model optimized for 30s ECG segments",
      "head_attr": "output",
      "default_kwargs": {
        "recording_length": 30
      },
      "min_input_length": 7971,
      "max_input_length": null,
      "display_name": "AFModel",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 5781821,
          "params_trainable": 5781821,
          "feature_dim": 196,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 5758505,
          "params_trainable": 5758505,
          "feature_dim": 196,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 5759096,
          "params_trainable": 5759096,
          "feature_dim": 196,
          "reason": null
        }
      }
    },
    "convnext-v2": {
      "registry_name": "convnext-v2",
      "class": "ConvNeXtV21D",
      "module": "deepecgkit.models.convnext_v2_1d",
      "description": "Modern ConvNet with depthwise convolutions and Global Response Normalization for ECG",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": 29,
      "max_input_length": null,
      "display_name": "ConvNeXt-V2",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 8090437,
          "params_trainable": 8090437,
          "feature_dim": 512,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 8083457,
          "params_trainable": 8083457,
          "feature_dim": 512,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 8084996,
          "params_trainable": 8084996,
          "feature_dim": 512,
          "reason": null
        }
      }
    },
    "crnn": {
      "registry_name": "crnn",
      "class": "CRNN",
      "module": "deepecgkit.models.crnn",
      "description": "CNN-LSTM hybrid for local feature extraction and temporal aggregation",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": 16,
      "max_input_length": null,
      "display_name": "CRNN",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 944549,
          "params_trainable": 944549,
          "feature_dim": 256,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 941825,
          "params_trainable": 941825,
          "feature_dim": 256,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 942020,
          "params_trainable": 942020,
          "feature_dim": 256,
          "reason": null
        }
      }
    },
    "deep-res-cnn": {
      "registry_name": "deep-res-cnn",
      "class": "DeepResCNN",
      "module": "deepecgkit.models.deep_res_cnn",
      "description": "Deep Residual 2D CNN (Elyamani et al. 2022) for multi-lead ECG classification",
      "head_attr": "fc_out",
      "default_kwargs": {},
      "min_input_length": 127,
      "max_input_length": null,
      "display_name": "DeepResCNN",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 593669,
          "params_trainable": 593669,
          "feature_dim": 128,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 413185,
          "params_trainable": 413185,
          "feature_dim": 128,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 413380,
          "params_trainable": 413380,
          "feature_dim": 128,
          "reason": null
        }
      }
    },
    "dualnet": {
      "registry_name": "dualnet",
      "class": "ECGDualNet",
      "module": "deepecgkit.models.ecg_dualnet",
      "description": "Dual-path architecture with CNN-LSTM and Transformer branches for ECG",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": 8,
      "max_input_length": 5000,
      "display_name": "DualNet",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 677189,
          "params_trainable": 677189,
          "feature_dim": 384,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 670337,
          "params_trainable": 670337,
          "feature_dim": 384,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 670724,
          "params_trainable": 670724,
          "feature_dim": 384,
          "reason": null
        }
      }
    },
    "fcn-wang": {
      "registry_name": "fcn-wang",
      "class": "FCNWang",
      "module": "deepecgkit.models.fcn_wang",
      "description": "Fully Convolutional Network (Wang et al.) for time series classification",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": 2,
      "max_input_length": null,
      "display_name": "FCN",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 276101,
          "params_trainable": 276101,
          "feature_dim": 128,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 264321,
          "params_trainable": 264321,
          "feature_dim": 128,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 264708,
          "params_trainable": 264708,
          "feature_dim": 128,
          "reason": null
        }
      }
    },
    "gru": {
      "registry_name": "gru",
      "class": "GRUECG",
      "module": "deepecgkit.models.gru_model",
      "description": "GRU-based model for sequential ECG analysis",
      "head_attr": "head",
      "default_kwargs": {},
      "min_input_length": null,
      "max_input_length": null,
      "display_name": "GRU",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 607493,
          "params_trainable": 607493,
          "feature_dim": 768,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 595969,
          "params_trainable": 595969,
          "feature_dim": 768,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 598276,
          "params_trainable": 598276,
          "feature_dim": 768,
          "reason": null
        }
      }
    },
    "inception-time": {
      "registry_name": "inception-time",
      "class": "InceptionTime1D",
      "module": "deepecgkit.models.inception_time",
      "description": "Multi-scale temporal CNN inspired by InceptionTime",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": null,
      "max_input_length": null,
      "display_name": "InceptionTime",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 503685,
          "params_trainable": 503685,
          "feature_dim": 128,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 501057,
          "params_trainable": 501057,
          "feature_dim": 128,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 501444,
          "params_trainable": 501444,
          "feature_dim": 128,
          "reason": null
        }
      }
    },
    "kanres": {
      "registry_name": "kanres",
      "class": "KanResWideX",
      "module": "deepecgkit.models.kanres_wide_x",
      "description": "KAN-ResNet architecture with wide layers",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": null,
      "max_input_length": null,
      "display_name": "KanRes",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 77701,
          "params_trainable": 77701,
          "feature_dim": 64,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 75329,
          "params_trainable": 75329,
          "feature_dim": 64,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 75524,
          "params_trainable": 75524,
          "feature_dim": 64,
          "reason": null
        }
      }
    },
    "kanres-deep": {
      "registry_name": "kanres-deep",
      "class": "KanResDeepX",
      "module": "deepecgkit.models.kanres_deep_x",
      "description": "Deep KAN-ResNet architecture",
      "head_attr": "fc",
      "default_kwargs": {},
      "min_input_length": 11,
      "max_input_length": null,
      "display_name": "KanRes-Deep",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 1653445,
          "params_trainable": 1653445,
          "feature_dim": 32,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 1647681,
          "params_trainable": 1647681,
          "feature_dim": 32,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 1647780,
          "params_trainable": 1647780,
          "feature_dim": 32,
          "reason": null
        }
      }
    },
    "lstm": {
      "registry_name": "lstm",
      "class": "LSTMECG",
      "module": "deepecgkit.models.lstm_model",
      "description": "LSTM-based model for sequential ECG analysis",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": null,
      "max_input_length": null,
      "display_name": "LSTM",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 557445,
          "params_trainable": 557445,
          "feature_dim": 256,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 545921,
          "params_trainable": 545921,
          "feature_dim": 256,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 546116,
          "params_trainable": 546116,
          "feature_dim": 256,
          "reason": null
        }
      }
    },
    "mamba": {
      "registry_name": "mamba",
      "class": "Mamba1D",
      "module": "deepecgkit.models.mamba1d",
      "description": "Bidirectional Mamba state space model with linear complexity for ECG",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": 50,
      "max_input_length": 25049,
      "display_name": "Mamba",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 1183749,
          "params_trainable": 1183749,
          "feature_dim": 128,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 1112833,
          "params_trainable": 1112833,
          "feature_dim": 128,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 1113220,
          "params_trainable": 1113220,
          "feature_dim": 128,
          "reason": null
        }
      }
    },
    "medformer": {
      "registry_name": "medformer",
      "class": "Medformer",
      "module": "deepecgkit.models.medformer",
      "description": "Multi-granularity patching Transformer for medical time series (NeurIPS 2024)",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": 50,
      "max_input_length": 5009,
      "display_name": "Medformer",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 1252357,
          "params_trainable": 1252357,
          "feature_dim": 384,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 1131137,
          "params_trainable": 1131137,
          "feature_dim": 384,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 1132292,
          "params_trainable": 1132292,
          "feature_dim": 384,
          "reason": null
        }
      }
    },
    "mlp-wang": {
      "registry_name": "mlp-wang",
      "class": "MLPWang",
      "module": "deepecgkit.models.mlp_wang",
      "description": "MLP (Wang et al.) on the flattened, time-pooled signal",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": null,
      "max_input_length": null,
      "display_name": "MLP",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 6504005,
          "params_trainable": 6504005,
          "feature_dim": 500,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 1002001,
          "params_trainable": 1002001,
          "feature_dim": 500,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 1003504,
          "params_trainable": 1003504,
          "feature_dim": 500,
          "reason": null
        }
      }
    },
    "resnet": {
      "registry_name": "resnet",
      "class": "ResNet1D",
      "module": "deepecgkit.models.resnet1d",
      "description": "1D ResNet architecture adapted for ECG",
      "head_attr": "fc",
      "default_kwargs": {},
      "min_input_length": null,
      "max_input_length": null,
      "display_name": "ResNet1D",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 8739973,
          "params_trainable": 8739973,
          "feature_dim": 512,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 8727361,
          "params_trainable": 8727361,
          "feature_dim": 512,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 8728900,
          "params_trainable": 8728900,
          "feature_dim": 512,
          "reason": null
        }
      }
    },
    "resnet-hannun": {
      "registry_name": "resnet-hannun",
      "class": "ResNetHannun",
      "module": "deepecgkit.models.resnet_hannun",
      "description": "34-layer residual network (Hannun et al. 2019) with 16 pre-activation blocks",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": null,
      "max_input_length": null,
      "display_name": "ResNet-Hannun",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 15244805,
          "params_trainable": 15244805,
          "feature_dim": 256,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 15232513,
          "params_trainable": 15232513,
          "feature_dim": 256,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 15233284,
          "params_trainable": 15233284,
          "feature_dim": 256,
          "reason": null
        }
      }
    },
    "resnet-wang": {
      "registry_name": "resnet-wang",
      "class": "ResNetWang",
      "module": "deepecgkit.models.resnet1d_wang",
      "description": "ResNet (Wang et al.) for time series classification",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": null,
      "max_input_length": null,
      "display_name": "ResNet-Wang",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 406405,
          "params_trainable": 406405,
          "feature_dim": 128,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 396033,
          "params_trainable": 396033,
          "feature_dim": 128,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 396420,
          "params_trainable": 396420,
          "feature_dim": 128,
          "reason": null
        }
      }
    },
    "rocket": {
      "registry_name": "rocket",
      "class": "ROCKET",
      "module": "deepecgkit.models.rocket",
      "description": "ROCKET: frozen random convolution kernels, PPV and max pooling, linear head",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": null,
      "max_input_length": null,
      "display_name": "ROCKET",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 10005,
          "params_trainable": 10005,
          "feature_dim": 2000,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 2001,
          "params_trainable": 2001,
          "feature_dim": 2000,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 8004,
          "params_trainable": 8004,
          "feature_dim": 2000,
          "reason": null
        }
      }
    },
    "se-resnet": {
      "registry_name": "se-resnet",
      "class": "SEResNet1D",
      "module": "deepecgkit.models.se_resnet1d",
      "description": "ResNet with Squeeze-and-Excitation channel attention for ECG",
      "head_attr": "fc",
      "default_kwargs": {},
      "min_input_length": null,
      "max_input_length": null,
      "display_name": "SE-ResNet1D",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 8827013,
          "params_trainable": 8827013,
          "feature_dim": 512,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 8814401,
          "params_trainable": 8814401,
          "feature_dim": 512,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 8815940,
          "params_trainable": 8815940,
          "feature_dim": 512,
          "reason": null
        }
      }
    },
    "simple-cnn": {
      "registry_name": "simple-cnn",
      "class": "SimpleCNN",
      "module": "deepecgkit.models.simple_cnn",
      "description": "Lightweight CNN for fast inference",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": 8,
      "max_input_length": null,
      "display_name": "SimpleCNN",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 170789,
          "params_trainable": 170789,
          "feature_dim": 256,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 167809,
          "params_trainable": 167809,
          "feature_dim": 256,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 168196,
          "params_trainable": 168196,
          "feature_dim": 256,
          "reason": null
        }
      }
    },
    "spectrogram-cnn": {
      "registry_name": "spectrogram-cnn",
      "class": "SpectrogramCNN",
      "module": "deepecgkit.models.spectrogram_cnn",
      "description": "2-D CNN on per-lead log-magnitude STFT spectrograms",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": 128,
      "max_input_length": null,
      "display_name": "SpectrogramCNN",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 1177093,
          "params_trainable": 1177093,
          "feature_dim": 256,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 1172897,
          "params_trainable": 1172897,
          "feature_dim": 256,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 1173668,
          "params_trainable": 1173668,
          "feature_dim": 256,
          "reason": null
        }
      }
    },
    "tcn": {
      "registry_name": "tcn",
      "class": "TCN",
      "module": "deepecgkit.models.tcn",
      "description": "Temporal Convolutional Network with dilated causal convolutions",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": null,
      "max_input_length": null,
      "display_name": "TCN",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 2146821,
          "params_trainable": 2146821,
          "feature_dim": 256,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 2140161,
          "params_trainable": 2140161,
          "feature_dim": 256,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 2140932,
          "params_trainable": 2140932,
          "feature_dim": 256,
          "reason": null
        }
      }
    },
    "transformer": {
      "registry_name": "transformer",
      "class": "TransformerECG",
      "module": "deepecgkit.models.transformer_ecg",
      "description": "Transformer-based ECG classifier",
      "head_attr": "classifier",
      "default_kwargs": {},
      "min_input_length": null,
      "max_input_length": 5000,
      "display_name": "Transformer",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 829061,
          "params_trainable": 829061,
          "feature_dim": 128,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 826625,
          "params_trainable": 826625,
          "feature_dim": 128,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 827396,
          "params_trainable": 827396,
          "feature_dim": 128,
          "reason": null
        }
      }
    },
    "xresnet": {
      "registry_name": "xresnet",
      "class": "XResNet1D",
      "module": "deepecgkit.models.xresnet1d",
      "description": "Improved ResNet with Mish activation and blur-pool downsampling",
      "head_attr": "fc",
      "default_kwargs": {},
      "min_input_length": 17,
      "max_input_length": null,
      "display_name": "XResNet1D",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 8740485,
          "params_trainable": 8740485,
          "feature_dim": 512,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 8735969,
          "params_trainable": 8735969,
          "feature_dim": 512,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 8737508,
          "params_trainable": 8737508,
          "feature_dim": 512,
          "reason": null
        }
      }
    },
    "xresnet1d-benchmark": {
      "registry_name": "xresnet1d-benchmark",
      "class": "XResNet1dBenchmark",
      "module": "deepecgkit.models.xresnet1d_benchmark",
      "description": "XResNet1d from PTB-XL benchmark (fixed feature dim, concat pooling)",
      "head_attr": "head",
      "default_kwargs": {},
      "min_input_length": null,
      "max_input_length": null,
      "display_name": "XResNet1D-Bench",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 348165,
          "params_trainable": 348165,
          "feature_dim": 128,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 345889,
          "params_trainable": 345889,
          "feature_dim": 128,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 346276,
          "params_trainable": 346276,
          "feature_dim": 128,
          "reason": null
        }
      }
    },
    "xresnet1d101": {
      "registry_name": "xresnet1d101",
      "class": "XResNet1d101Benchmark",
      "module": "deepecgkit.models.xresnet1d101_benchmark",
      "description": "XResNet1d-101 (bottleneck, [3, 4, 23, 3]) as in the PTB-XL benchmark",
      "head_attr": "head",
      "default_kwargs": {},
      "min_input_length": null,
      "max_input_length": null,
      "display_name": "XResNet1D-101",
      "probes": {
        "12x5": {
          "status": "ok",
          "params_total": 33050501,
          "params_trainable": 33050501,
          "feature_dim": 4096,
          "reason": null
        },
        "1x1": {
          "status": "ok",
          "params_total": 33032353,
          "params_trainable": 33032353,
          "feature_dim": 4096,
          "reason": null
        },
        "1x4": {
          "status": "ok",
          "params_total": 33044644,
          "params_trainable": 33044644,
          "feature_dim": 4096,
          "reason": null
        }
      }
    }
  },
  "datasets": {
    "af-classification": {
      "registry_name": "af-classification",
      "class": "AFClassificationDataset",
      "module": "deepecgkit.datasets.af_classification",
      "description": "PhysioNet 2017 AF Classification (4 classes, single-lead)",
      "input_channels": 1,
      "num_classes": null,
      "class_labels": [
        "Normal",
        "AF",
        "Other",
        "Noisy"
      ],
      "binary_class_labels": [
        "Non-AF",
        "AF"
      ],
      "display_name": "PhysioNet 2017"
    },
    "ltafdb": {
      "registry_name": "ltafdb",
      "class": "LTAFDBDataset",
      "module": "deepecgkit.datasets.ltafdb",
      "description": "Long-Term AF Database (first lead by default, binary or 4-class)",
      "input_channels": 1,
      "num_classes": 4,
      "class_labels": [
        "Normal",
        "AF",
        "AFL",
        "J"
      ],
      "binary_class_labels": [
        "Non-AF",
        "AF"
      ],
      "display_name": "LTAFDB"
    },
    "mitbih-afdb": {
      "registry_name": "mitbih-afdb",
      "class": "MITBIHAFDBDataset",
      "module": "deepecgkit.datasets.mitbih_afdb",
      "description": "MIT-BIH AF Database (first lead by default, binary or 4-class)",
      "input_channels": 1,
      "num_classes": 4,
      "class_labels": [
        "Normal",
        "AF",
        "AFL",
        "J"
      ],
      "binary_class_labels": [
        "Non-AF",
        "AF"
      ],
      "display_name": "MIT-BIH AFDB"
    },
    "ptbxl": {
      "registry_name": "ptbxl",
      "class": "PTBXLDataset",
      "module": "deepecgkit.datasets.ptbxl",
      "description": "PTB-XL 12-lead ECG dataset (multi-task)",
      "input_channels": 12,
      "num_classes": 5,
      "class_labels": [],
      "binary_class_labels": [
        "Non-AF",
        "AF"
      ],
      "display_name": "PTB-XL"
    },
    "unified-af": {
      "registry_name": "unified-af",
      "class": "UnifiedAFDataset",
      "module": "deepecgkit.datasets.unified_af",
      "description": "Unified AF dataset combining PhysioNet 2017, MIT-BIH, LTAFDB",
      "input_channels": 1,
      "num_classes": 4,
      "class_labels": [
        "Normal",
        "AF",
        "AFL",
        "J"
      ],
      "binary_class_labels": [
        "Non-AF",
        "AF"
      ],
      "display_name": "Unified AF"
    }
  },
  "constants": {
    "single_label_metrics": [
      "accuracy",
      "precision",
      "recall",
      "f1",
      "auroc",
      "mcc",
      "ece",
      "adaptive_ece",
      "mce",
      "brier",
      "temperature",
      "ece_temp",
      "adaptive_ece_temp",
      "mce_temp",
      "brier_temp",
      "ece_platt",
      "adaptive_ece_platt",
      "mce_platt",
      "brier_platt"
    ],
    "multi_label_metrics": [
      "exact_match_accuracy",
      "label_accuracy",
      "precision",
      "recall",
      "f1",
      "auroc",
      "ece",
      "adaptive_ece",
      "mce",
      "brier",
      "temperature",
      "ece_temp",
      "adaptive_ece_temp",
      "mce_temp",
      "brier_temp",
      "ece_platt",
      "adaptive_ece_platt",
      "mce_platt",
      "brier_platt"
    ],
    "calibration_metrics": [
      "ece",
      "adaptive_ece",
      "mce",
      "brier",
      "temperature",
      "ece_temp",
      "adaptive_ece_temp",
      "mce_temp",
      "brier_temp",
      "ece_platt",
      "adaptive_ece_platt",
      "mce_platt",
      "brier_platt"
    ],
    "lower_is_better": [
      "adaptive_ece",
      "adaptive_ece_platt",
      "adaptive_ece_temp",
      "brier",
      "brier_platt",
      "brier_temp",
      "ece",
      "ece_platt",
      "ece_temp",
      "mce",
      "mce_platt",
      "mce_temp"
    ],
    "metric_display_names": {
      "f1": "F1",
      "precision": "Prec.",
      "recall": "Recall",
      "auroc": "AUROC",
      "accuracy": "Acc.",
      "mcc": "MCC",
      "exact_match_accuracy": "Exact match",
      "label_accuracy": "Label acc.",
      "ece": "ECE",
      "adaptive_ece": "AECE",
      "mce": "MCE",
      "brier": "Brier",
      "temperature": "$T$",
      "ece_temp": "ECE$_T$",
      "adaptive_ece_temp": "AECE$_T$",
      "mce_temp": "MCE$_T$",
      "brier_temp": "Brier$_T$",
      "ece_platt": "ECE$_P$",
      "adaptive_ece_platt": "AECE$_P$",
      "mce_platt": "MCE$_P$",
      "brier_platt": "Brier$_P$",
      "auroc_macro": "AUROC",
      "balanced_accuracy": "Bal. acc.",
      "f1_macro": "F1"
    },
    "averaging_macro_label": "macro-label",
    "averaging_unknown": "unknown",
    "legacy_seed": -1
  }
}
