Page Not Found
We could not find what you were looking for.
Please contact the owner of the site that linked you to the original URL and let them know their link is broken.
diff --git a/404.html b/404.html index 950cff7fd..99bec5211 100644 --- a/404.html +++ b/404.html @@ -5,8 +5,8 @@
We could not find what you were looking for.
Please contact the owner of the site that linked you to the original URL and let them know their link is broken.
"""Medical image feature."""
-import logging
import os
import tempfile
from dataclasses import dataclass, field
from io import BytesIO
-from typing import Any, ClassVar, Dict, Optional, Tuple, Union
+from typing import TYPE_CHECKING, Any, ClassVar, Dict, Optional, Tuple, Union
import numpy as np
import numpy.typing as npt
@@ -181,18 +180,56 @@ Source code for cyclops.data.features.medical_image
from datasets.features import Image, features
from datasets.utils.file_utils import is_local_path
from datasets.utils.py_utils import string_to_dict
-from monai.data.image_reader import ImageReader
-from monai.data.image_writer import ITKWriter
-from monai.transforms.compose import Compose
-from monai.transforms.io.array import LoadImage
-from monai.transforms.utility.array import ToNumpy
-from cyclops.utils.log import setup_logging
+from cyclops.utils.optional import import_optional_module
-# Logging.
-LOGGER = logging.getLogger(__name__)
-setup_logging(print_level="INFO", logger=LOGGER)
+if TYPE_CHECKING:
+ from monai.data.image_reader import ImageReader
+ from monai.data.image_writer import ITKWriter
+ from monai.transforms.compose import Compose
+ from monai.transforms.io.array import LoadImage
+ from monai.transforms.utility.array import ToNumpy
+else:
+ ImageReader = import_optional_module(
+ "monai.data.image_reader",
+ attribute="ImageReader",
+ error="warn",
+ )
+ ITKWriter = import_optional_module(
+ "monai.data.image_writer",
+ attribute="ITKWriter",
+ error="warn",
+ )
+ Compose = import_optional_module(
+ "monai.transforms.compose",
+ attribute="Compose",
+ error="warn",
+ )
+ LoadImage = import_optional_module(
+ "monai.transforms.io.array",
+ attribute="LoadImage",
+ error="warn",
+ )
+ ToNumpy = import_optional_module(
+ "monai.transforms.utility.array",
+ attribute="ToNumpy",
+ error="warn",
+ )
+_monai_available = all(
+ module is not None
+ for module in (
+ ImageReader,
+ ITKWriter,
+ Compose,
+ LoadImage,
+ ToNumpy,
+ )
+)
+_monai_unavailable_message = (
+ "The MONAI library is required to use the `MedicalImage` feature. "
+ "Please install it with `pip install monai`."
+)
@@ -203,24 +240,35 @@ Source code for cyclops.data.features.medical_image
Parameters
----------
- decode : bool, optional, default=True
- Whether to decode the image. If False, the image will be returned as a
- dictionary in the format `{"path": image_path, "bytes": image_bytes}`.
reader : Union[str, ImageReader], optional, default="ITKReader"
The MONAI image reader to use.
suffix : str, optional, default=".jpg"
The suffix to use when decoding bytes to image.
+ decode : bool, optional, default=True
+ Whether to decode the image. If False, the image will be returned as a
+ dictionary in the format `{"path": image_path, "bytes": image_bytes}`.
+ id : str, optional, default=None
+ The id of the feature.
"""
reader: Union[str, ImageReader] = "ITKReader"
suffix: str = ".jpg" # used when decoding/encoding bytes to image
- _loader = Compose(
- [
- LoadImage(reader=reader, simple_keys=True, dtype=None, image_only=True),
- ToNumpy(),
- ],
- )
+
+ _loader = None
+ if _monai_available:
+ _loader = Compose(
+ [
+ LoadImage(
+ reader=reader,
+ simple_keys=True,
+ dtype=None,
+ image_only=False,
+ ),
+ ToNumpy(),
+ ],
+ )
+
# Automatically constructed
dtype: ClassVar[str] = "dict"
pa_type: ClassVar[Any] = pa.struct({"bytes": pa.binary(), "path": pa.string()})
@@ -246,12 +294,14 @@ Source code for cyclops.data.features.medical_image
"""
if isinstance(value, list):
- value = np.array(value)
+ value = np.asarray(value)
if isinstance(value, str):
return {"path": value, "bytes": None}
+
if isinstance(value, np.ndarray):
return _encode_ndarray(value, image_format=self.suffix)
+
if "array" in value and "metadata" in value:
output_ext_ = self.suffix
metadata_ = value["metadata"]
@@ -305,7 +355,7 @@ Source code for cyclops.data.features.medical_image
if not self.decode:
raise RuntimeError(
"Decoding is disabled for this feature. "
- "Please use MedicalImage(decode=True) instead.",
+ "Please use `MedicalImage(decode=True)` instead.",
)
if token_per_repo_id is None:
@@ -320,6 +370,8 @@ Source code for cyclops.data.features.medical_image
)
if is_local_path(path):
+ if self._loader is None:
+ raise RuntimeError(_monai_unavailable_message)
image, metadata = self._loader(path)
else:
source_url = path.split("::")[-1]
@@ -362,6 +414,9 @@ Source code for cyclops.data.features.medical_image
Image as numpy array and metadata as dictionary.
"""
+ if self._loader is None:
+ raise RuntimeError(_monai_unavailable_message)
+
# XXX: Can we avoid writing to disk?
with tempfile.NamedTemporaryFile(mode="wb", suffix=self.suffix) as fp:
fp.write(buffer.getvalue())
@@ -394,6 +449,9 @@ Source code for cyclops.data.features.medical_image
Dictionary containing the image bytes and path.
"""
+ if not _monai_available:
+ raise RuntimeError(_monai_unavailable_message)
+
if not image_format.startswith("."):
image_format = "." + image_format
@@ -415,7 +473,7 @@ Source code for cyclops.data.features.medical_image
return {"path": None, "bytes": temp_file_bytes}
-# add the `MedicalImage` feature to the `features` module
+# add the `MedicalImage` feature to the `features` module namespace
features.MedicalImage = MedicalImage
diff --git a/api/_modules/cyclops/tasks/classification.html b/api/_modules/cyclops/tasks/classification.html
index 62e14504a..e639dbc90 100644
--- a/api/_modules/cyclops/tasks/classification.html
+++ b/api/_modules/cyclops/tasks/classification.html
@@ -173,9 +173,9 @@ Source code for cyclops.tasks.classification
import numpy as np
import pandas as pd
from datasets import Dataset, DatasetDict, config
-from monai.transforms import Compose # type: ignore
from sklearn.compose import ColumnTransformer
from sklearn.exceptions import NotFittedError
+from torchvision.transforms import Compose
from cyclops.data.slicer import SliceSpec
from cyclops.evaluate.evaluator import evaluate
@@ -601,7 +601,7 @@ Source code for cyclops.tasks.classification
splits_mapping = {"test": "test"}
model_name, model = self.get_model(model_name)
if transforms:
- transforms = partial(apply_image_transforms, transforms=transforms) # type: ignore
+ transforms = partial(apply_image_transforms, transforms=transforms)
if isinstance(dataset, (Dataset, DatasetDict)):
return model.predict(
dataset,
diff --git a/api/_sources/intro.rst.txt b/api/_sources/intro.rst.txt
index 36c728c5a..0bdbd94a8 100644
--- a/api/_sources/intro.rst.txt
+++ b/api/_sources/intro.rst.txt
@@ -13,27 +13,25 @@ models for healthcare. It provides a few high-level APIs namely:
- ``data`` - Create datasets for training, inference and evaluation. We
use the popular 🤗
`datasets `__ to efficiently
- load and slice different modalities of data.
+ load and slice different modalities of data
- ``models`` - Use common model implementations using
`scikit-learn `__ and
- `PyTorch `__.
-- ``tasks`` - Use canonical Healthcare ML tasks such as
-
- - Mortality prediction
- - Chest X-ray classification
-
+ `PyTorch `__
+- ``tasks`` - Use common ML task formulations such as binary
+ classification or multi-label classification on tabular, time-series
+ and image data
- ``evaluate`` - Evaluate models on clinical prediction tasks
- ``monitor`` - Detect dataset shift relevant for clinical use cases
- ``report`` - Create `model report
cards `__
for clinical ML models
-``cyclops`` also provides a library of end-to-end use cases on clinical
-datasets such as
+``cyclops`` also provides example end-to-end use case implementations on
+clinical datasets such as
-- `MIMIC-III `__
+- `NIH chest
+ x-ray `__
- `MIMIC-IV `__
-- `eICU-CRD `__
🐣 Getting Started
==================
@@ -45,33 +43,14 @@ Installing cyclops using pip
python3 -m pip install pycyclops
-The base package installation supports the use of the ``data`` and
-``process`` APIs to load and transform clinical data, for downstream
-tasks.
-
-To install additional functionality from the other APIs, they can be
-installed as extras.
+The base cyclops installation doesn’t include modelling packages.
-To install with ``models``, ``tasks``, ``evaluate`` and ``monitor`` API
-support,
+To install additional dependencies for using models,
.. code:: bash
python3 -m pip install 'pycyclops[models]'
-To install with ``report`` API support,
-
-.. code:: bash
-
- python3 -m pip install 'pycyclops[report]'
-
-Multiple extras could also be combined, for example to install with both
-``report`` and ``models`` support:
-
-.. code:: bash
-
- python3 -m pip install 'pycyclops[report,models]'
-
🧑🏿💻 Developing
=======================
diff --git a/api/_sources/tutorials/nihcxr/cxr_classification.ipynb.txt b/api/_sources/tutorials/nihcxr/cxr_classification.ipynb.txt
index 32a96e026..06de21e8a 100644
--- a/api/_sources/tutorials/nihcxr/cxr_classification.ipynb.txt
+++ b/api/_sources/tutorials/nihcxr/cxr_classification.ipynb.txt
@@ -7,7 +7,7 @@
"source": [
"# Chest X-Ray Disease Classification\n",
"\n",
- "This notebook shows chest x-ray classification on the NIH dataset using a pretrained model from the TorchXRayVision library and CyclOps to generate a model card."
+ "This notebook shows chest x-ray classification on the [NIH dataset](https://www.nih.gov/news-events/news-releases/nih-clinical-center-provides-one-largest-publicly-available-chest-x-ray-datasets-scientific-community) using a pretrained model from the TorchXRayVision library and CyclOps to generate a model card."
]
},
{
@@ -33,7 +33,7 @@
"\n",
"import numpy as np\n",
"import plotly.express as px\n",
- "from monai.transforms import Compose, Lambdad, Resized\n",
+ "from torchvision.transforms import Compose\n",
"from torchxrayvision.models import DenseNet\n",
"\n",
"from cyclops.data.loader import load_nihcxr\n",
@@ -41,6 +41,7 @@
" SliceSpec,\n",
" filter_value, # noqa: E402\n",
")\n",
+ "from cyclops.data.transforms import Lambdad, Resized\n",
"from cyclops.data.utils import apply_transforms\n",
"from cyclops.evaluate import evaluator\n",
"from cyclops.evaluate.metrics.factory import create_metric\n",
@@ -143,8 +144,9 @@
" allow_missing_keys=True,\n",
" ),\n",
" Lambdad(\n",
- " (\"image\",),\n",
- " func=lambda x: np.mean(x, axis=0)[np.newaxis, :] if x.shape[0] != 1 else x,\n",
+ " keys=(\"image\",),\n",
+ " func=lambda x: x[0][np.newaxis, :] if x.shape[0] != 1 else x,\n",
+ " allow_missing_keys=True,\n",
" ),\n",
" ],\n",
")"
diff --git a/api/_sources/tutorials/nihcxr/monitor_api.ipynb.txt b/api/_sources/tutorials/nihcxr/monitor_api.ipynb.txt
index 929fc939f..a8ab67050 100644
--- a/api/_sources/tutorials/nihcxr/monitor_api.ipynb.txt
+++ b/api/_sources/tutorials/nihcxr/monitor_api.ipynb.txt
@@ -26,17 +26,25 @@
"\"\"\"NIHCXR Clinical Drift Experiments Tutorial.\"\"\"\n",
"\n",
"\n",
+ "import random\n",
+ "\n",
"import numpy as np\n",
- "from monai.transforms import Compose, Lambdad, Resized\n",
+ "import torch\n",
+ "from torchvision.transforms import Compose\n",
"from torchxrayvision.models import DenseNet\n",
"\n",
"from cyclops.data.loader import load_nihcxr\n",
"from cyclops.data.slicer import SliceSpec\n",
+ "from cyclops.data.transforms import Lambdad, Resized\n",
"from cyclops.monitor import ClinicalShiftApplicator, Detector, Reductor, TSTester\n",
"from cyclops.monitor.plotter import plot_drift_experiment, plot_drift_timeseries\n",
"\n",
"\n",
- "nih_ds = load_nihcxr(\"/mnt/data/clinical_datasets/NIHCXR\")[\"test\"]"
+ "nih_ds = load_nihcxr(\"/mnt/data/clinical_datasets/NIHCXR\")[\"test\"]\n",
+ "\n",
+ "random.seed(42)\n",
+ "np.random.seed(42)\n",
+ "torch.manual_seed(42)"
]
},
{
@@ -65,18 +73,19 @@
"transforms = Compose(\n",
" [\n",
" Resized(\n",
- " keys=(\"image\",),\n",
" spatial_size=(224, 224),\n",
+ " keys=(\"image\",),\n",
" allow_missing_keys=True,\n",
" ),\n",
" Lambdad(\n",
- " keys=(\"image\",),\n",
" func=lambda x: ((2 * (x / 255.0)) - 1.0) * 1024,\n",
+ " keys=(\"image\",),\n",
" allow_missing_keys=True,\n",
" ),\n",
" Lambdad(\n",
- " (\"image\",),\n",
- " func=lambda x: np.mean(x, axis=0)[np.newaxis, :] if x.shape[0] != 1 else x,\n",
+ " func=lambda x: x[0][np.newaxis, :] if x.shape[0] != 1 else x,\n",
+ " keys=(\"image\",),\n",
+ " allow_missing_keys=True,\n",
" ),\n",
" ],\n",
")"
diff --git a/api/intro.html b/api/intro.html
index edc274a14..bfb918e47 100644
--- a/api/intro.html
+++ b/api/intro.html
@@ -184,28 +184,25 @@
data
- Create datasets for training, inference and evaluation. We
use the popular 🤗
datasets to efficiently
-load and slice different modalities of data.
+load and slice different modalities of data
models
- Use common model implementations using
scikit-learn and
-PyTorch.
-tasks
- Use canonical Healthcare ML tasks such as
-
-Mortality prediction
-Chest X-ray classification
-
-
+PyTorch
+tasks
- Use common ML task formulations such as binary
+classification or multi-label classification on tabular, time-series
+and image data
evaluate
- Evaluate models on clinical prediction tasks
monitor
- Detect dataset shift relevant for clinical use cases
report
- Create model report
cards
for clinical ML models
-cyclops
also provides a library of end-to-end use cases on clinical
-datasets such as
+cyclops
also provides example end-to-end use case implementations on
+clinical datasets such as
🐣 Getting Started
@@ -214,25 +211,11 @@ Installing cyclops using pippython3 -m pip install pycyclops
-The base package installation supports the use of the data
and
-process
APIs to load and transform clinical data, for downstream
-tasks.
-To install additional functionality from the other APIs, they can be
-installed as extras.
-To install with models
, tasks
, evaluate
and monitor
API
-support,
+The base cyclops installation doesn’t include modelling packages.
+To install additional dependencies for using models,
python3 -m pip install 'pycyclops[models]'
-To install with report
API support,
-python3 -m pip install 'pycyclops[report]'
-
-
-Multiple extras could also be combined, for example to install with both
-report
and models
support:
-python3 -m pip install 'pycyclops[report,models]'
-
-
diff --git a/api/reference/api/_autosummary/cyclops.data.features.medical_image.MedicalImage.html b/api/reference/api/_autosummary/cyclops.data.features.medical_image.MedicalImage.html
index eef5139b9..43478d43d 100644
--- a/api/reference/api/_autosummary/cyclops.data.features.medical_image.MedicalImage.html
+++ b/api/reference/api/_autosummary/cyclops.data.features.medical_image.MedicalImage.html
@@ -195,10 +195,11 @@ cyclops.data.features.medical_image.MedicalImage
Parameters:
-decode (bool, optional, default=True) – Whether to decode the image. If False, the image will be returned as a
-dictionary in the format {“path”: image_path, “bytes”: image_bytes}.
reader (Union[str, ImageReader], optional, default="ITKReader") – The MONAI image reader to use.
suffix (str, optional, default=".jpg") – The suffix to use when decoding bytes to image.
+decode (bool, optional, default=True) – Whether to decode the image. If False, the image will be returned as a
+dictionary in the format {“path”: image_path, “bytes”: image_bytes}.
+id (str, optional, default=None) – The id of the feature.
@@ -256,7 +257,7 @@ cyclops.data.features.medical_image.MedicalImagecast_storage(storage)
Cast an Arrow array to the Image arrow storage type.
The Arrow types that can be converted to the Image pyarrow storage type are:
-:rtype: StructArray
+:rtype: StructArray
pa.string() - it must contain the “path” data
pa.binary() - it must contain the image bytes
@@ -307,7 +308,7 @@ cyclops.data.features.medical_image.MedicalImage
- Return type:
-StructArray
+StructArray
@@ -347,7 +348,7 @@ cyclops.data.features.medical_image.MedicalImage
- Return type:
-Union
[dict
, list
, tuple
, Value
, ClassLabel
, Translation
, TranslationVariableLanguages
, Sequence
, Array2D
, Array3D
, Array4D
, Array5D
, Audio
, Image
, Dict
[str
, Union
[dict
, list
, tuple
, Value
, ClassLabel
, Translation
, TranslationVariableLanguages
, Sequence
, Array2D
, Array3D
, Array4D
, Array5D
, Audio
, Image
]]]
+Union
[dict
, list
, tuple
, Value
, ClassLabel
, Translation
, TranslationVariableLanguages
, Sequence
, Array2D
, Array3D
, Array4D
, Array5D
, Audio
, Image
, Dict
[str
, Union
[dict
, list
, tuple
, Value
, ClassLabel
, Translation
, TranslationVariableLanguages
, Sequence
, Array2D
, Array3D
, Array4D
, Array5D
, Audio
, Image
]]]
diff --git a/api/reference/api/_autosummary/cyclops.data.slicer.SliceSpec.html b/api/reference/api/_autosummary/cyclops.data.slicer.SliceSpec.html
index a3e182093..ca0645fc6 100644
--- a/api/reference/api/_autosummary/cyclops.data.slicer.SliceSpec.html
+++ b/api/reference/api/_autosummary/cyclops.data.slicer.SliceSpec.html
@@ -390,7 +390,7 @@ cyclops.data.slicer.SliceSpecReturn type:
--
+
-
@@ -401,7 +401,7 @@ cyclops.data.slicer.SliceSpec
- Return type:
-Dict
[str
, Callable
[[Dict
[str
, Any
]], Union
[bool
, List
[bool
]]]]
+Dict
[str
, Callable
[[Dict
[str
, Any
]], Union
[bool
, List
[bool
]]]]
@@ -412,7 +412,7 @@ cyclops.data.slicer.SliceSpec
- Return type:
-Generator
[Tuple
[str
, Callable
[...
, Any
]], None
, None
]
+-
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.fairness.evaluator.warn_too_many_unique_values.html b/api/reference/api/_autosummary/cyclops.evaluate.fairness.evaluator.warn_too_many_unique_values.html
index c6a74e462..45d98a5b3 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.fairness.evaluator.warn_too_many_unique_values.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.fairness.evaluator.warn_too_many_unique_values.html
@@ -206,7 +206,7 @@ cyclops.evaluate.fairness.evaluator.warn_too_many_unique_valuesTypeError – If unique_values is not a list or a mapping.
Return type:
-
+
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.Accuracy.html b/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.Accuracy.html
index 0d8079ca9..4ffd2e7b8 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.Accuracy.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.Accuracy.html
@@ -326,7 +326,7 @@ cyclops.evaluate.metrics.accuracy.Accuracy
Return type:
-
+
@@ -337,7 +337,7 @@ cyclops.evaluate.metrics.accuracy.Accuracy
Return type:
-
+
@@ -354,7 +354,7 @@ cyclops.evaluate.metrics.accuracy.Accuracy
Return type:
-
+
@@ -377,7 +377,7 @@ cyclops.evaluate.metrics.accuracy.AccuracyReturn type:
-
+
@@ -388,7 +388,7 @@ cyclops.evaluate.metrics.accuracy.Accuracy
Return type:
-
+
@@ -399,7 +399,7 @@ cyclops.evaluate.metrics.accuracy.Accuracy
Return type:
-
+
@@ -412,7 +412,7 @@ cyclops.evaluate.metrics.accuracy.Accuracy
Return type:
-
+
@@ -423,7 +423,7 @@ cyclops.evaluate.metrics.accuracy.Accuracy
Return type:
-
+
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.BinaryAccuracy.html b/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.BinaryAccuracy.html
index 866a32d95..6b0312679 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.BinaryAccuracy.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.BinaryAccuracy.html
@@ -267,7 +267,7 @@ cyclops.evaluate.metrics.accuracy.BinaryAccuracy
Return type:
-
+
@@ -278,7 +278,7 @@ cyclops.evaluate.metrics.accuracy.BinaryAccuracy
Return type:
-
+
@@ -295,7 +295,7 @@ cyclops.evaluate.metrics.accuracy.BinaryAccuracy
Return type:
-
+
@@ -318,7 +318,7 @@ cyclops.evaluate.metrics.accuracy.BinaryAccuracyReturn type:
-
+
@@ -329,7 +329,7 @@ cyclops.evaluate.metrics.accuracy.BinaryAccuracy
Return type:
-
+
@@ -340,7 +340,7 @@ cyclops.evaluate.metrics.accuracy.BinaryAccuracy
Return type:
-
+
@@ -353,7 +353,7 @@ cyclops.evaluate.metrics.accuracy.BinaryAccuracy
Return type:
-
+
@@ -364,7 +364,7 @@ cyclops.evaluate.metrics.accuracy.BinaryAccuracy
Return type:
-
+
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.MulticlassAccuracy.html b/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.MulticlassAccuracy.html
index 4fb907bf9..12ccd8fd8 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.MulticlassAccuracy.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.MulticlassAccuracy.html
@@ -283,7 +283,7 @@ cyclops.evaluate.metrics.accuracy.MulticlassAccuracyAdd two metrics or a metric and a scalar together.
@@ -294,7 +294,7 @@ cyclops.evaluate.metrics.accuracy.MulticlassAccuracyUpdate the global metric state and compute the metric for a batch.
@@ -311,7 +311,7 @@ cyclops.evaluate.metrics.accuracy.MulticlassAccuracyMultiply two metrics or a metric and a scalar together.
@@ -334,7 +334,7 @@ cyclops.evaluate.metrics.accuracy.MulticlassAccuracy
Return type:
-
+
@@ -345,7 +345,7 @@ cyclops.evaluate.metrics.accuracy.MulticlassAccuracyReturn a copy of the metric.
@@ -356,7 +356,7 @@ cyclops.evaluate.metrics.accuracy.MulticlassAccuracyCompute the accuracy score from the state.
@@ -369,7 +369,7 @@ cyclops.evaluate.metrics.accuracy.MulticlassAccuracy
@@ -380,7 +380,7 @@ cyclops.evaluate.metrics.accuracy.MulticlassAccuracyUpdate the state variables.
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.MultilabelAccuracy.html b/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.MultilabelAccuracy.html
index ba331d958..e5c94ae19 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.MultilabelAccuracy.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.metrics.accuracy.MultilabelAccuracy.html
@@ -286,7 +286,7 @@ cyclops.evaluate.metrics.accuracy.MultilabelAccuracyAdd two metrics or a metric and a scalar together.
@@ -297,7 +297,7 @@ cyclops.evaluate.metrics.accuracy.MultilabelAccuracyUpdate the global metric state and compute the metric for a batch.
@@ -314,7 +314,7 @@ cyclops.evaluate.metrics.accuracy.MultilabelAccuracyMultiply two metrics or a metric and a scalar together.
@@ -337,7 +337,7 @@ cyclops.evaluate.metrics.accuracy.MultilabelAccuracy
Return type:
-
+
@@ -348,7 +348,7 @@ cyclops.evaluate.metrics.accuracy.MultilabelAccuracyReturn a copy of the metric.
@@ -359,7 +359,7 @@ cyclops.evaluate.metrics.accuracy.MultilabelAccuracyCompute the accuracy score from the state.
@@ -372,7 +372,7 @@ cyclops.evaluate.metrics.accuracy.MultilabelAccuracy
@@ -383,7 +383,7 @@ cyclops.evaluate.metrics.accuracy.MultilabelAccuracyUpdate the state variables.
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.AUROC.html b/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.AUROC.html
index d97600791..08bdb5276 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.AUROC.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.AUROC.html
@@ -323,7 +323,7 @@ cyclops.evaluate.metrics.auroc.AUROC
Return type:
-
+
@@ -334,7 +334,7 @@ cyclops.evaluate.metrics.auroc.AUROC
Return type:
-
+
@@ -351,7 +351,7 @@ cyclops.evaluate.metrics.auroc.AUROC
Return type:
-
+
@@ -374,7 +374,7 @@ cyclops.evaluate.metrics.auroc.AUROCReturn type:
-
+
@@ -385,7 +385,7 @@ cyclops.evaluate.metrics.auroc.AUROC
Return type:
-
+
@@ -396,7 +396,7 @@ cyclops.evaluate.metrics.auroc.AUROC
Return type:
-
+
@@ -409,7 +409,7 @@ cyclops.evaluate.metrics.auroc.AUROC
Return type:
-
+
@@ -420,7 +420,7 @@ cyclops.evaluate.metrics.auroc.AUROC
Return type:
-
+
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.BinaryAUROC.html b/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.BinaryAUROC.html
index a2ece0778..23abaf469 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.BinaryAUROC.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.BinaryAUROC.html
@@ -268,7 +268,7 @@ cyclops.evaluate.metrics.auroc.BinaryAUROC
Return type:
-
+
@@ -279,7 +279,7 @@ cyclops.evaluate.metrics.auroc.BinaryAUROC
Return type:
-
+
@@ -296,7 +296,7 @@ cyclops.evaluate.metrics.auroc.BinaryAUROC
Return type:
-
+
@@ -319,7 +319,7 @@ cyclops.evaluate.metrics.auroc.BinaryAUROCReturn type:
-
+
@@ -330,7 +330,7 @@ cyclops.evaluate.metrics.auroc.BinaryAUROC
Return type:
-
+
@@ -341,7 +341,7 @@ cyclops.evaluate.metrics.auroc.BinaryAUROC
Return type:
-
+
@@ -354,7 +354,7 @@ cyclops.evaluate.metrics.auroc.BinaryAUROC
Return type:
-
+
@@ -367,7 +367,7 @@ cyclops.evaluate.metrics.auroc.BinaryAUROCNone) or a confusion matrix.
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.MulticlassAUROC.html b/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.MulticlassAUROC.html
index 5e5195685..d08c1afb5 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.MulticlassAUROC.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.MulticlassAUROC.html
@@ -284,7 +284,7 @@ cyclops.evaluate.metrics.auroc.MulticlassAUROC
Return type:
-
+
@@ -295,7 +295,7 @@ cyclops.evaluate.metrics.auroc.MulticlassAUROC
Return type:
-
+
@@ -312,7 +312,7 @@ cyclops.evaluate.metrics.auroc.MulticlassAUROC
Return type:
-
+
@@ -335,7 +335,7 @@ cyclops.evaluate.metrics.auroc.MulticlassAUROCReturn type:
-
+
@@ -346,7 +346,7 @@ cyclops.evaluate.metrics.auroc.MulticlassAUROC
Return type:
-
+
@@ -357,7 +357,7 @@ cyclops.evaluate.metrics.auroc.MulticlassAUROC
Return type:
-Union
[float
, ndarray
[Any
, dtype
[float64
]]]
+
@@ -370,7 +370,7 @@ cyclops.evaluate.metrics.auroc.MulticlassAUROC
Return type:
-
+
@@ -383,7 +383,7 @@ cyclops.evaluate.metrics.auroc.MulticlassAUROCNone) or a confusion matrix.
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.MultilabelAUROC.html b/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.MultilabelAUROC.html
index 692b0b2b9..6dadc0ad3 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.MultilabelAUROC.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.metrics.auroc.MultilabelAUROC.html
@@ -283,7 +283,7 @@ cyclops.evaluate.metrics.auroc.MultilabelAUROC
Return type:
-
+
@@ -294,7 +294,7 @@ cyclops.evaluate.metrics.auroc.MultilabelAUROC
Return type:
-
+
@@ -311,7 +311,7 @@ cyclops.evaluate.metrics.auroc.MultilabelAUROC
Return type:
-
+
@@ -334,7 +334,7 @@ cyclops.evaluate.metrics.auroc.MultilabelAUROCReturn type:
-
+
@@ -345,7 +345,7 @@ cyclops.evaluate.metrics.auroc.MultilabelAUROC
Return type:
-
+
@@ -356,7 +356,7 @@ cyclops.evaluate.metrics.auroc.MultilabelAUROC
Return type:
-Union
[float
, ndarray
[Any
, dtype
[float64
]]]
+
@@ -369,7 +369,7 @@ cyclops.evaluate.metrics.auroc.MultilabelAUROC
Return type:
-
+
@@ -382,7 +382,7 @@ cyclops.evaluate.metrics.auroc.MultilabelAUROCNone) or a confusion matrix.
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.BinaryF1Score.html b/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.BinaryF1Score.html
index f12b101b9..81d0a6926 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.BinaryF1Score.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.BinaryF1Score.html
@@ -266,7 +266,7 @@ cyclops.evaluate.metrics.f_beta.BinaryF1Score
Return type:
-
+
@@ -277,7 +277,7 @@ cyclops.evaluate.metrics.f_beta.BinaryF1Score
Return type:
-
+
@@ -294,7 +294,7 @@ cyclops.evaluate.metrics.f_beta.BinaryF1Score
Return type:
-
+
@@ -317,7 +317,7 @@ cyclops.evaluate.metrics.f_beta.BinaryF1ScoreReturn type:
-
+
@@ -328,7 +328,7 @@ cyclops.evaluate.metrics.f_beta.BinaryF1Score
Return type:
-
+
@@ -339,7 +339,7 @@ cyclops.evaluate.metrics.f_beta.BinaryF1Score
Return type:
-
+
@@ -352,7 +352,7 @@ cyclops.evaluate.metrics.f_beta.BinaryF1Score
Return type:
-
+
@@ -363,7 +363,7 @@ cyclops.evaluate.metrics.f_beta.BinaryF1Score
Return type:
-
+
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.BinaryFbetaScore.html b/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.BinaryFbetaScore.html
index 1ae7064dd..171b9e5bb 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.BinaryFbetaScore.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.BinaryFbetaScore.html
@@ -267,7 +267,7 @@ cyclops.evaluate.metrics.f_beta.BinaryFbetaScore
Return type:
-
+
@@ -278,7 +278,7 @@ cyclops.evaluate.metrics.f_beta.BinaryFbetaScore
Return type:
-
+
@@ -295,7 +295,7 @@ cyclops.evaluate.metrics.f_beta.BinaryFbetaScore
Return type:
-
+
@@ -318,7 +318,7 @@ cyclops.evaluate.metrics.f_beta.BinaryFbetaScoreReturn type:
-
+
@@ -329,7 +329,7 @@ cyclops.evaluate.metrics.f_beta.BinaryFbetaScore
Return type:
-
+
@@ -340,7 +340,7 @@ cyclops.evaluate.metrics.f_beta.BinaryFbetaScore
Return type:
-
+
@@ -353,7 +353,7 @@ cyclops.evaluate.metrics.f_beta.BinaryFbetaScore
Return type:
-
+
@@ -364,7 +364,7 @@ cyclops.evaluate.metrics.f_beta.BinaryFbetaScore
Return type:
-
+
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.F1Score.html b/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.F1Score.html
index 3132256eb..fc780c097 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.F1Score.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.F1Score.html
@@ -328,7 +328,7 @@ cyclops.evaluate.metrics.f_beta.F1Score
Return type:
-
+
@@ -339,7 +339,7 @@ cyclops.evaluate.metrics.f_beta.F1Score
Return type:
-
+
@@ -356,7 +356,7 @@ cyclops.evaluate.metrics.f_beta.F1Score
Return type:
-
+
@@ -379,7 +379,7 @@ cyclops.evaluate.metrics.f_beta.F1ScoreReturn type:
-
+
@@ -390,7 +390,7 @@ cyclops.evaluate.metrics.f_beta.F1Score
Return type:
-
+
@@ -401,7 +401,7 @@ cyclops.evaluate.metrics.f_beta.F1Score
Return type:
-
+
@@ -414,7 +414,7 @@ cyclops.evaluate.metrics.f_beta.F1Score
Return type:
-
+
@@ -425,7 +425,7 @@ cyclops.evaluate.metrics.f_beta.F1Score
Return type:
-
+
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.FbetaScore.html b/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.FbetaScore.html
index 363c80f4d..c08601907 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.FbetaScore.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.FbetaScore.html
@@ -326,7 +326,7 @@ cyclops.evaluate.metrics.f_beta.FbetaScore
Return type:
-
+
@@ -337,7 +337,7 @@ cyclops.evaluate.metrics.f_beta.FbetaScore
Return type:
-
+
@@ -354,7 +354,7 @@ cyclops.evaluate.metrics.f_beta.FbetaScore
Return type:
-
+
@@ -377,7 +377,7 @@ cyclops.evaluate.metrics.f_beta.FbetaScoreReturn type:
-
+
@@ -388,7 +388,7 @@ cyclops.evaluate.metrics.f_beta.FbetaScore
Return type:
-
+
@@ -399,7 +399,7 @@ cyclops.evaluate.metrics.f_beta.FbetaScore
Return type:
-
+
@@ -412,7 +412,7 @@ cyclops.evaluate.metrics.f_beta.FbetaScore
Return type:
-
+
@@ -423,7 +423,7 @@ cyclops.evaluate.metrics.f_beta.FbetaScore
Return type:
-
+
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.MulticlassF1Score.html b/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.MulticlassF1Score.html
index e28bda4ba..daa911c91 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.MulticlassF1Score.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.MulticlassF1Score.html
@@ -287,7 +287,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassF1ScoreAdd two metrics or a metric and a scalar together.
@@ -298,7 +298,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassF1ScoreUpdate the global metric state and compute the metric for a batch.
@@ -315,7 +315,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassF1ScoreMultiply two metrics or a metric and a scalar together.
@@ -338,7 +338,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassF1Score
Return type:
-
+
@@ -349,7 +349,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassF1ScoreReturn a copy of the metric.
@@ -360,7 +360,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassF1ScoreCompute the metric from the state.
@@ -373,7 +373,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassF1Score
@@ -384,7 +384,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassF1ScoreUpdate the state variables.
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.MulticlassFbetaScore.html b/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.MulticlassFbetaScore.html
index 289f1ebb3..df1100705 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.MulticlassFbetaScore.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.MulticlassFbetaScore.html
@@ -295,7 +295,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassFbetaScoreAdd two metrics or a metric and a scalar together.
@@ -306,7 +306,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassFbetaScoreUpdate the global metric state and compute the metric for a batch.
@@ -323,7 +323,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassFbetaScoreMultiply two metrics or a metric and a scalar together.
@@ -346,7 +346,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassFbetaScore
Return type:
-
+
@@ -357,7 +357,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassFbetaScoreReturn a copy of the metric.
@@ -368,7 +368,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassFbetaScoreCompute the metric from the state.
@@ -381,7 +381,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassFbetaScore
@@ -392,7 +392,7 @@ cyclops.evaluate.metrics.f_beta.MulticlassFbetaScoreUpdate the state variables.
diff --git a/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.MultilabelF1Score.html b/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.MultilabelF1Score.html
index 02f79b7fa..20231409f 100644
--- a/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.MultilabelF1Score.html
+++ b/api/reference/api/_autosummary/cyclops.evaluate.metrics.f_beta.MultilabelF1Score.html
@@ -292,7 +292,7 @@ cyclops.evaluate.metrics.f_beta.MultilabelF1ScoreAdd two metrics or a metric and a scalar together.
@@ -303,7 +303,7 @@ cyclops.evaluate.metrics.f_beta.MultilabelF1ScoreUpdate the global metric state and compute the metric for a batch.
@@ -320,7 +320,7 @@ cyclops.evaluate.metrics.f_beta.MultilabelF1ScoreMultiply two metrics or a metric and a scalar together.
- Return type:
--
+