From 2cda268d4d9e6d045a01c7eba33b1e8531e745b8 Mon Sep 17 00:00:00 2001 From: Amrit K Date: Sun, 18 Feb 2024 11:07:18 -0500 Subject: [PATCH] Apply ruff formatter and ditch black --- .pre-commit-config.yaml | 12 ++-- cyclops/data/df/handle_types.py | 3 +- cyclops/data/df/vectorized.py | 3 +- cyclops/data/slicer.py | 15 +++-- cyclops/evaluate/evaluator.py | 3 +- cyclops/evaluate/fairness/evaluator.py | 3 +- cyclops/evaluate/metrics/accuracy.py | 18 +++--- cyclops/evaluate/metrics/auroc.py | 28 ++++++--- .../evaluate/metrics/experimental/accuracy.py | 9 +-- .../evaluate/metrics/experimental/auroc.py | 21 ++++--- .../metrics/experimental/average_precision.py | 23 ++++--- .../metrics/experimental/confusion_matrix.py | 20 ++++-- .../evaluate/metrics/experimental/f_score.py | 18 +++--- .../experimental/functional/accuracy.py | 14 +++-- .../metrics/experimental/functional/auroc.py | 15 +++-- .../functional/average_precision.py | 59 +++++++++++++----- .../functional/confusion_matrix.py | 8 ++- .../experimental/functional/f_score.py | 42 ++++++++----- .../metrics/experimental/functional/mae.py | 4 +- .../metrics/experimental/functional/mape.py | 6 +- .../metrics/experimental/functional/mse.py | 8 +-- .../functional/negative_predictive_value.py | 20 +++--- .../functional/precision_recall.py | 16 +++-- .../functional/precision_recall_curve.py | 49 ++++++++++----- .../metrics/experimental/functional/roc.py | 39 ++++++++---- .../metrics/experimental/functional/smape.py | 4 +- .../experimental/functional/specificity.py | 16 +++-- cyclops/evaluate/metrics/experimental/mae.py | 4 +- cyclops/evaluate/metrics/experimental/mape.py | 4 +- .../evaluate/metrics/experimental/metric.py | 4 +- .../metrics/experimental/metric_dict.py | 8 +-- cyclops/evaluate/metrics/experimental/mse.py | 8 +-- .../experimental/negative_predictive_value.py | 9 +-- .../metrics/experimental/precision_recall.py | 45 ++++++++------ .../experimental/precision_recall_curve.py | 20 +++--- cyclops/evaluate/metrics/experimental/roc.py | 14 +++-- .../evaluate/metrics/experimental/smape.py | 4 +- .../metrics/experimental/specificity.py | 18 +++--- .../evaluate/metrics/experimental/wmape.py | 6 +- cyclops/evaluate/metrics/f_beta.py | 22 +++---- cyclops/evaluate/metrics/functional/auroc.py | 25 +++++--- .../metrics/functional/precision_recall.py | 26 +++++--- .../functional/precision_recall_curve.py | 32 +++++----- cyclops/evaluate/metrics/functional/roc.py | 26 ++++---- .../metrics/functional/sensitivity.py | 25 +++++--- .../metrics/functional/specificity.py | 37 ++++++++--- cyclops/evaluate/metrics/precision_recall.py | 61 +++++-------------- .../metrics/precision_recall_curve.py | 25 +++----- cyclops/evaluate/metrics/roc.py | 17 +++--- cyclops/evaluate/metrics/sensitivity.py | 31 +++------- cyclops/evaluate/metrics/specificity.py | 47 ++++++++++---- cyclops/evaluate/metrics/stat_scores.py | 46 +++++++------- cyclops/models/wrappers/pt_model.py | 8 +-- cyclops/report/report.py | 3 +- cyclops/tasks/utils.py | 8 +-- docs/source/contributing.rst | 4 +- poetry.lock | 2 +- pyproject.toml | 8 ++- .../distributed_backends/test_mpi4py.py | 10 ++- 59 files changed, 636 insertions(+), 447 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e7fd5625c..2d18ba785 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,17 +15,14 @@ repos: - id: check-yaml - id: check-toml - - repo: https://github.com/psf/black - rev: 23.7.0 - hooks: - - id: black - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: 'v0.2.1' + rev: 'v0.2.2' hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] types_or: [python, jupyter] + - id: ruff-format + types_or: [python, jupyter] - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.8.0 @@ -34,7 +31,7 @@ repos: entry: python3 -m mypy --config-file pyproject.toml language: system types: [python] - exclude: "use_cases|tests|cyclops/(models|monitor|report/plot)" + exclude: "tests|cyclops/(models|monitor|report/plot)" - repo: local hooks: @@ -42,7 +39,6 @@ repos: name: nbstripout language: system entry: python3 -m nbstripout - exclude: ^docs/source/tutorials/gemini/.*\.ipynb$ - repo: https://github.com/nbQA-dev/nbQA rev: 1.7.1 diff --git a/cyclops/data/df/handle_types.py b/cyclops/data/df/handle_types.py index cf9796b75..59e74e743 100644 --- a/cyclops/data/df/handle_types.py +++ b/cyclops/data/df/handle_types.py @@ -1013,7 +1013,8 @@ def collect_indicators( # Get categories data[cat] = np.argmax(data[indicators].values, axis=1) indicator_names = [ - indicator[len(cat) + 1 :] for indicator in indicators # noqa: E203 + indicator[len(cat) + 1 :] + for indicator in indicators # noqa: E203 ] map_dict = { i: (name if name != MISSING_CATEGORY else np.nan) diff --git a/cyclops/data/df/vectorized.py b/cyclops/data/df/vectorized.py index f759b37f3..b9601ddbc 100644 --- a/cyclops/data/df/vectorized.py +++ b/cyclops/data/df/vectorized.py @@ -144,7 +144,8 @@ def split_vectorized( ) splits = [ - vec.split_by_indices(axes_list[i], index_splits) for i, vec in enumerate(vecs) # type: ignore + vec.split_by_indices(axes_list[i], index_splits) + for i, vec in enumerate(vecs) # type: ignore ] return tuple(splits) diff --git a/cyclops/data/slicer.py b/cyclops/data/slicer.py index 06a417a93..f19d3704a 100644 --- a/cyclops/data/slicer.py +++ b/cyclops/data/slicer.py @@ -96,11 +96,13 @@ class SliceSpec: ... {"feature_1": {"value": ["value_1", "value_2"]}}, ... {"feature_1": {"value": "value_1", "negate": True, "keep_nulls": True}}, ... {"feature_1": {"min_value": "2020-01-01", "max_value": "2020-12-31"}}, - ... {"feature_1": { - ... "min_value": 5, - ... "max_value": 60, - ... "min_inclusive": False, - ... "max_inclusive": False} + ... { + ... "feature_1": { + ... "min_value": 5, + ... "max_value": 60, + ... "min_inclusive": False, + ... "max_inclusive": False, + ... } ... }, ... {"feature_1": {"year": [2020, 2021, 2022]}}, ... {"feature_1": {"month": [6, 7, 8]}}, @@ -110,7 +112,8 @@ class SliceSpec: ... { ... "feature_1": {"value": "value_1"}, ... "feature_2": { - ... "min_value": "2020-01-01", "keep_nulls": False, + ... "min_value": "2020-01-01", + ... "keep_nulls": False, ... }, ... "feature_3": {"year": ["2000", "2010", "2020"]}, ... }, diff --git a/cyclops/evaluate/evaluator.py b/cyclops/evaluate/evaluator.py index 3763cf37e..e08b8d4df 100644 --- a/cyclops/evaluate/evaluator.py +++ b/cyclops/evaluate/evaluator.py @@ -268,7 +268,8 @@ def _compute_metrics( stacklevel=1, ) metric_output: Dict[str, Array] = { - metric_name: float("NaN") for metric_name in metrics # type: ignore[attr-defined,misc] + metric_name: float("NaN") + for metric_name in metrics # type: ignore[attr-defined,misc] } elif ( batch_size is None or batch_size < 0 diff --git a/cyclops/evaluate/fairness/evaluator.py b/cyclops/evaluate/fairness/evaluator.py index cd44a07f1..b53737da2 100644 --- a/cyclops/evaluate/fairness/evaluator.py +++ b/cyclops/evaluate/fairness/evaluator.py @@ -755,7 +755,8 @@ def _compute_metrics( # noqa: C901, PLR0912 if len(dataset) == 0: warnings.warn(empty_dataset_msg, RuntimeWarning, stacklevel=1) results: Dict[str, Any] = { - metric_name: float("NaN") for metric_name in metrics # type: ignore[attr-defined] + metric_name: float("NaN") + for metric_name in metrics # type: ignore[attr-defined] } elif ( batch_size is None or batch_size <= 0 diff --git a/cyclops/evaluate/metrics/accuracy.py b/cyclops/evaluate/metrics/accuracy.py index 0a4fa615a..07fdc0b43 100644 --- a/cyclops/evaluate/metrics/accuracy.py +++ b/cyclops/evaluate/metrics/accuracy.py @@ -108,8 +108,10 @@ class MulticlassAccuracy(MulticlassStatScores, registry_key="multiclass_accuracy array([1. , 0. , 0.66666667]) >>> metric.reset_state() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -184,8 +186,7 @@ class MultilabelAccuracy(MultilabelStatScores, registry_key="multilabel_accuracy array([1., 1., 0.]) >>> metric.reset_state() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -291,8 +292,10 @@ class Accuracy(Metric, registry_key="accuracy", force_register=True): array([1. , 0. , 0.66666667]) >>> metric.reset_state() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -307,8 +310,7 @@ class Accuracy(Metric, registry_key="accuracy", force_register=True): array([1., 1., 0.]) >>> metric.reset_state() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/auroc.py b/cyclops/evaluate/metrics/auroc.py index 980dde815..903886cee 100644 --- a/cyclops/evaluate/metrics/auroc.py +++ b/cyclops/evaluate/metrics/auroc.py @@ -108,15 +108,21 @@ class MulticlassAUROC(MulticlassPrecisionRecallCurve, registry_key="multiclass_a -------- >>> from cyclops.evaluate.metrics import MulticlassAUROC >>> target = [0, 1, 2, 0] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.89, 0.06], - ... [0.05, 0.01, 0.94], [0.9, 0.05, 0.05]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.89, 0.06], + ... [0.05, 0.01, 0.94], + ... [0.9, 0.05, 0.05], + ... ] >>> metric = MulticlassAUROC(num_classes=3) >>> metric(target, preds) array([1., 1., 1.]) >>> metric.reset_state() >>> target = [[0, 1, 0], [1, 0, 1]] - >>> preds = [[[0.1, 0.9, 0.0], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]], - ... [[0.1, 0.1, 0.8], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]]] + >>> preds = [ + ... [[0.1, 0.9, 0.0], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]], + ... [[0.1, 0.1, 0.8], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -278,15 +284,21 @@ class AUROC(Metric, registry_key="auroc", force_register=True): >>> # (multiclass) >>> from cyclops.evaluate.metrics import MulticlassAUROC >>> target = [0, 1, 2, 0] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.89, 0.06], - ... [0.05, 0.01, 0.94], [0.9, 0.05, 0.05]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.89, 0.06], + ... [0.05, 0.01, 0.94], + ... [0.9, 0.05, 0.05], + ... ] >>> metric = MulticlassAUROC(num_classes=3) >>> metric(target, preds) array([1., 1., 1.]) >>> metric.reset_state() >>> target = [[0, 1, 0], [1, 0, 1]] - >>> preds = [[[0.1, 0.9, 0.0], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]], - ... [[0.1, 0.1, 0.8], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]]] + >>> preds = [ + ... [[0.1, 0.9, 0.0], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]], + ... [[0.1, 0.1, 0.8], [0.7, 0.2, 0.1], [0.2, 0.3, 0.5]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/experimental/accuracy.py b/cyclops/evaluate/metrics/experimental/accuracy.py index 5569bca7d..728c6b081 100644 --- a/cyclops/evaluate/metrics/experimental/accuracy.py +++ b/cyclops/evaluate/metrics/experimental/accuracy.py @@ -92,8 +92,10 @@ class MulticlassAccuracy( Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -160,8 +162,7 @@ class MultilabelAccuracy( Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/experimental/auroc.py b/cyclops/evaluate/metrics/experimental/auroc.py index bd139cb77..74bcb60cc 100644 --- a/cyclops/evaluate/metrics/experimental/auroc.py +++ b/cyclops/evaluate/metrics/experimental/auroc.py @@ -79,7 +79,11 @@ def _compute_metric(self) -> Array: # type: ignore[override] if self.thresholds is None else self.confmat # type: ignore[attr-defined] ) - return _binary_auroc_compute(state, thresholds=self.thresholds, max_fpr=self.max_fpr) # type: ignore + return _binary_auroc_compute( + state, + thresholds=self.thresholds, + max_fpr=self.max_fpr, + ) # type: ignore class MulticlassAUROC(MulticlassPrecisionRecallCurve, registry_key="multiclass_auroc"): @@ -117,12 +121,15 @@ class MulticlassAUROC(MulticlassPrecisionRecallCurve, registry_key="multiclass_a >>> from cyclops.evaluate.metrics.experimental import MulticlassAUROC >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]]) + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] + ... ) >>> auroc = MulticlassAUROC(num_classes=3, average="macro", thresholds=None) >>> auroc(target, preds) Array(0.33333334, dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/average_precision.py b/cyclops/evaluate/metrics/experimental/average_precision.py index f8f8692ac..b1d648264 100644 --- a/cyclops/evaluate/metrics/experimental/average_precision.py +++ b/cyclops/evaluate/metrics/experimental/average_precision.py @@ -125,14 +125,19 @@ class MulticlassAveragePrecision( >>> from cyclops.evaluate.metrics.experimental import MulticlassAveragePrecision >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]]) + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] + ... ) >>> metric = MulticlassAveragePrecision( - ... num_classes=3, thresholds=None, average=None, + ... num_classes=3, + ... thresholds=None, + ... average=None, ... ) >>> metric(target, preds) Array([0.33333334, 0.5 , 0.5 ], dtype=float32) @@ -224,7 +229,9 @@ class MultilabelAveragePrecision( ... [[0.11, 0.22, 0.67], [0.84, 0.73, 0.12], [0.33, 0.92, 0.44]], ... ) >>> metric = MultilabelAveragePrecision( - ... num_labels=3, thresholds=None, average=None, + ... num_labels=3, + ... thresholds=None, + ... average=None, ... ) >>> metric(target, preds) Array([1. , 0.5833334, 0.5 ], dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/confusion_matrix.py b/cyclops/evaluate/metrics/experimental/confusion_matrix.py index 744ea1720..9a14488f4 100644 --- a/cyclops/evaluate/metrics/experimental/confusion_matrix.py +++ b/cyclops/evaluate/metrics/experimental/confusion_matrix.py @@ -119,8 +119,12 @@ class BinaryConfusionMatrix( Array([[2, 1], [1, 2]], dtype=int64) >>> target = anp.asarray([[[0, 1], [1, 0], [0, 1]], [[1, 1], [0, 0], [1, 0]]]) - >>> preds = anp.asarray([[[0.59, 0.91], [0.91, 0.99], [0.63, 0.04]], - ... [[0.38, 0.04], [0.86, 0.780], [0.45, 0.37]]]) + >>> preds = anp.asarray( + ... [ + ... [[0.59, 0.91], [0.91, 0.99], [0.63, 0.04]], + ... [[0.38, 0.04], [0.86, 0.780], [0.45, 0.37]], + ... ] + ... ) """ @@ -205,10 +209,14 @@ class MulticlassConfusionMatrix(Metric, registry_key="multiclass_confusion_matri [0, 1, 0], [0, 0, 1]], dtype=int64) >>> target = anp.asarray([2, 1, 0, 0]) - >>> preds = anp.asarray([[0.16, 0.26, 0.58], - ... [0.22, 0.61, 0.17], - ... [0.71, 0.09, 0.20], - ... [0.05, 0.82, 0.13]]) + >>> preds = anp.asarray( + ... [ + ... [0.16, 0.26, 0.58], + ... [0.22, 0.61, 0.17], + ... [0.71, 0.09, 0.20], + ... [0.05, 0.82, 0.13], + ... ] + ... ) >>> metric = MulticlassConfusionMatrix(num_classes=3) >>> metric(target, preds) Array([[1, 1, 0], diff --git a/cyclops/evaluate/metrics/experimental/f_score.py b/cyclops/evaluate/metrics/experimental/f_score.py index 7e9bc7a20..7312cdc75 100644 --- a/cyclops/evaluate/metrics/experimental/f_score.py +++ b/cyclops/evaluate/metrics/experimental/f_score.py @@ -120,8 +120,10 @@ class MulticlassFBetaScore( Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -219,8 +221,7 @@ class MultilabelFBetaScore( Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -359,8 +360,10 @@ class MulticlassF1Score(MulticlassFBetaScore, registry_key="multiclass_f1_score" Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -433,8 +436,7 @@ class MultilabelF1Score( Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/experimental/functional/accuracy.py b/cyclops/evaluate/metrics/experimental/functional/accuracy.py index f7d009115..d947f54cd 100644 --- a/cyclops/evaluate/metrics/experimental/functional/accuracy.py +++ b/cyclops/evaluate/metrics/experimental/functional/accuracy.py @@ -270,14 +270,18 @@ def multiclass_accuracy( Array(1., dtype=float32) >>> multiclass_accuracy(target, preds, num_classes=3, average=None) Array([0.5, 1. , 1. ], dtype=float32) - >>> multiclass_accuracy(target, preds, num_classes=3, average='macro') + >>> multiclass_accuracy(target, preds, num_classes=3, average="macro") Array(0.8333334, dtype=float32) - >>> multiclass_accuracy(target, preds, num_classes=3, average='weighted') + >>> multiclass_accuracy(target, preds, num_classes=3, average="weighted") Array(0.75, dtype=float32) >>> multiclass_accuracy(target, preds, num_classes=3, average=None, ignore_index=0) Array([0., 1., 1.], dtype=float32) >>> multiclass_accuracy( - ... target, preds, num_classes=3, average=None, ignore_index=(1, 2), + ... target, + ... preds, + ... num_classes=3, + ... average=None, + ... ignore_index=(1, 2), ... ) Array([0.5, 0. , 0. ], dtype=float32) @@ -423,9 +427,9 @@ def multilabel_accuracy( Array(0.5, dtype=float32) >>> multilabel_accuracy(target, preds, num_labels=4, average=None) Array([0.5, 0. , 0.5, 0.5], dtype=float32) - >>> multilabel_accuracy(target, preds, num_labels=4, average='micro') + >>> multilabel_accuracy(target, preds, num_labels=4, average="micro") Array(0.375, dtype=float32) - >>> multilabel_accuracy(target, preds, num_labels=4, average='weighted') + >>> multilabel_accuracy(target, preds, num_labels=4, average="weighted") Array(0.4, dtype=float32) >>> multilabel_accuracy(target, preds, num_labels=4, average=None, ignore_index=0) Array([0.5, 0. , 0. , 1. ], dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/functional/auroc.py b/cyclops/evaluate/metrics/experimental/functional/auroc.py index 7abe73990..5f203a8f4 100644 --- a/cyclops/evaluate/metrics/experimental/functional/auroc.py +++ b/cyclops/evaluate/metrics/experimental/functional/auroc.py @@ -392,12 +392,15 @@ def multiclass_auroc( >>> import numpy.array_api as anp >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]]) + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] + ... ) >>> multiclass_auroc(target, preds, num_classes=3, thresholds=None) Array(0.33333334, dtype=float32) >>> multiclass_auroc(target, preds, num_classes=3, thresholds=5) diff --git a/cyclops/evaluate/metrics/experimental/functional/average_precision.py b/cyclops/evaluate/metrics/experimental/functional/average_precision.py index 257fd119c..df3a6af05 100644 --- a/cyclops/evaluate/metrics/experimental/functional/average_precision.py +++ b/cyclops/evaluate/metrics/experimental/functional/average_precision.py @@ -151,7 +151,7 @@ def binary_average_precision( -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... binary_average_precision + ... binary_average_precision, ... ) >>> target = anp.asarray([0, 1, 1, 0]) >>> preds = anp.asarray([0, 0.5, 0.7, 0.8]) @@ -408,22 +408,37 @@ def multiclass_average_precision( >>> import numpy.array_api as anp >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]]) + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] + ... ) >>> multiclass_average_precision( - ... target, preds, num_classes=3, thresholds=None, average=None, + ... target, + ... preds, + ... num_classes=3, + ... thresholds=None, + ... average=None, ... ) Array([0.33333334, 0.5 , 0.5 ], dtype=float32) >>> multiclass_average_precision( - ... target, preds, num_classes=3, thresholds=None, average="macro", + ... target, + ... preds, + ... num_classes=3, + ... thresholds=None, + ... average="macro", ... ) Array(0.44444445, dtype=float32) >>> multiclass_average_precision( - ... target, preds, num_classes=3, thresholds=None, average="weighted", + ... target, + ... preds, + ... num_classes=3, + ... thresholds=None, + ... average="weighted", ... ) Array(0.44444448, dtype=float32) """ @@ -624,19 +639,35 @@ def multilabel_average_precision( ... [[0.11, 0.22, 0.67], [0.84, 0.73, 0.12], [0.33, 0.92, 0.44]], ... ) >>> multilabel_average_precision( - ... target, preds, num_labels=3, thresholds=None, average=None, + ... target, + ... preds, + ... num_labels=3, + ... thresholds=None, + ... average=None, ... ) Array([1. , 0.5833334, 0.5 ], dtype=float32) >>> multilabel_average_precision( - ... target, preds, num_labels=3, thresholds=None, average="micro", + ... target, + ... preds, + ... num_labels=3, + ... thresholds=None, + ... average="micro", ... ) Array(0.58452386, dtype=float32) >>> multilabel_average_precision( - ... target, preds, num_labels=3, thresholds=None, average="macro", + ... target, + ... preds, + ... num_labels=3, + ... thresholds=None, + ... average="macro", ... ) Array(0.6944445, dtype=float32) >>> multilabel_average_precision( - ... target, preds, num_labels=3, thresholds=None, average="weighted", + ... target, + ... preds, + ... num_labels=3, + ... thresholds=None, + ... average="weighted", ... ) Array(0.6666667, dtype=float32) """ diff --git a/cyclops/evaluate/metrics/experimental/functional/confusion_matrix.py b/cyclops/evaluate/metrics/experimental/functional/confusion_matrix.py index cfc462269..23faa208d 100644 --- a/cyclops/evaluate/metrics/experimental/functional/confusion_matrix.py +++ b/cyclops/evaluate/metrics/experimental/functional/confusion_matrix.py @@ -236,7 +236,9 @@ class over the number of samples with the same true class. Examples -------- >>> import numpy.array_api as anp - >>> from cyclops.evaluate.metrics.experimental.functional import binary_confusion_matrix + >>> from cyclops.evaluate.metrics.experimental.functional import ( + ... binary_confusion_matrix, + ... ) >>> target = anp.asarray([0, 1, 0, 1, 0, 1]) >>> preds = anp.asarray([0, 0, 1, 1, 0, 1]) >>> binary_confusion_matrix(target, preds) @@ -727,7 +729,9 @@ class over the number of true samples for each class. Examples -------- >>> import numpy.array_api as anp - >>> from cyclops.evaluate.metrics.experimental.functional import multilabel_confusion_matrix + >>> from cyclops.evaluate.metrics.experimental.functional import ( + ... multilabel_confusion_matrix, + ... ) >>> target = anp.asarray([[0, 1, 0], [1, 0, 1]]) >>> preds = anp.asarray([[0, 0, 1], [1, 0, 1]]) >>> multilabel_confusion_matrix(target, preds, num_labels=3) diff --git a/cyclops/evaluate/metrics/experimental/functional/f_score.py b/cyclops/evaluate/metrics/experimental/functional/f_score.py index 6cb74db4d..64c8a9173 100644 --- a/cyclops/evaluate/metrics/experimental/functional/f_score.py +++ b/cyclops/evaluate/metrics/experimental/functional/f_score.py @@ -315,7 +315,7 @@ def multiclass_fbeta_score( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multiclass_fbeta_score + ... multiclass_fbeta_score, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([2, 1, 0, 0]) @@ -334,16 +334,26 @@ def multiclass_fbeta_score( Array(0.8333333, dtype=float32) >>> multiclass_fbeta_score(target, preds, beta, num_classes=3, average=None) Array([0.5555556, 0.8333333, 1. ], dtype=float32) - >>> multiclass_fbeta_score(target, preds, beta, num_classes=3, average='macro') + >>> multiclass_fbeta_score(target, preds, beta, num_classes=3, average="macro") Array(0.7962963, dtype=float32) - >>> multiclass_fbeta_score(target, preds, beta, num_classes=3, average='weighted') + >>> multiclass_fbeta_score(target, preds, beta, num_classes=3, average="weighted") Array(0.7361111, dtype=float32) >>> multiclass_fbeta_score( - ... target, preds, beta, num_classes=3, average=None, ignore_index=0, + ... target, + ... preds, + ... beta, + ... num_classes=3, + ... average=None, + ... ignore_index=0, ... ) Array([0., 1., 1.], dtype=float32) >>> multiclass_fbeta_score( - ... target, preds, beta, num_classes=3, average=None, ignore_index=(1, 2), + ... target, + ... preds, + ... beta, + ... num_classes=3, + ... average=None, + ... ignore_index=(1, 2), ... ) Array([0.5555556, 0. , 0. ], dtype=float32) @@ -500,7 +510,7 @@ def multilabel_fbeta_score( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multilabel_fbeta_score + ... multilabel_fbeta_score, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([[0, 1, 0], [1, 0, 1]]) @@ -517,12 +527,12 @@ def multilabel_fbeta_score( Array(0.3472222, dtype=float32) >>> multilabel_fbeta_score(target, preds, beta, num_labels=4, average=None) Array([0.5555556, 0. , 0. , 0.8333333], dtype=float32) - >>> multilabel_fbeta_score(target, preds, beta, num_labels=4, average='micro') + >>> multilabel_fbeta_score(target, preds, beta, num_labels=4, average="micro") Array(0.41666666, dtype=float32) - >>> multilabel_fbeta_score(target, preds, beta, num_labels=4, average='weighted') + >>> multilabel_fbeta_score(target, preds, beta, num_labels=4, average="weighted") Array(0.3888889, dtype=float32) >>> multilabel_fbeta_score( - ... target, preds, beta, num_labels=4, average=None, ignore_index=0 + ... target, preds, beta, num_labels=4, average=None, ignore_index=0 ... ) Array([0.5555556, 0. , 0. , 1. ], dtype=float32) @@ -746,14 +756,18 @@ def multiclass_f1_score( Array(0.6666667, dtype=float32) >>> multiclass_f1_score(target, preds, num_classes=3, average=None) Array([0.6666667, 0.6666667, 1. ], dtype=float32) - >>> multiclass_f1_score(target, preds, num_classes=3, average='macro') + >>> multiclass_f1_score(target, preds, num_classes=3, average="macro") Array(0.7777778, dtype=float32) - >>> multiclass_f1_score(target, preds, num_classes=3, average='weighted') + >>> multiclass_f1_score(target, preds, num_classes=3, average="weighted") Array(0.75, dtype=float32) >>> multiclass_f1_score(target, preds, num_classes=3, average=None, ignore_index=0) Array([0., 1., 1.], dtype=float32) >>> multiclass_f1_score( - ... target, preds, num_classes=3, average=None, ignore_index=(1, 2), + ... target, + ... preds, + ... num_classes=3, + ... average=None, + ... ignore_index=(1, 2), ... ) Array([0.6666667, 0. , 0. ], dtype=float32) """ @@ -869,9 +883,9 @@ def multilabel_f1_score( Array(0.33333334, dtype=float32) >>> multilabel_f1_score(target, preds, num_labels=4, average=None) Array([0.6666667, 0. , 0. , 0.6666667], dtype=float32) - >>> multilabel_f1_score(target, preds, num_labels=4, average='micro') + >>> multilabel_f1_score(target, preds, num_labels=4, average="micro") Array(0.44444445, dtype=float32) - >>> multilabel_f1_score(target, preds, num_labels=4, average='weighted') + >>> multilabel_f1_score(target, preds, num_labels=4, average="weighted") Array(0.40000004, dtype=float32) >>> multilabel_f1_score(target, preds, num_labels=4, average=None, ignore_index=0) Array([0.6666667, 0. , 0. , 1. ], dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/functional/mae.py b/cyclops/evaluate/metrics/experimental/functional/mae.py index 870259e3b..f51ba2190 100644 --- a/cyclops/evaluate/metrics/experimental/functional/mae.py +++ b/cyclops/evaluate/metrics/experimental/functional/mae.py @@ -78,8 +78,8 @@ def mean_absolute_error(target: Array, preds: Array) -> Array: -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental.functional import mean_absolute_error - >>> target = anp.asarray([0.009, 1.05, 2., 3.]) - >>> preds = anp.asarray([0., 1., 2., 2.]) + >>> target = anp.asarray([0.009, 1.05, 2.0, 3.0]) + >>> preds = anp.asarray([0.0, 1.0, 2.0, 2.0]) >>> mean_absolute_error(target, preds) Array(0.26475, dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/functional/mape.py b/cyclops/evaluate/metrics/experimental/functional/mape.py index 4c90cd733..df274d51d 100644 --- a/cyclops/evaluate/metrics/experimental/functional/mape.py +++ b/cyclops/evaluate/metrics/experimental/functional/mape.py @@ -112,10 +112,10 @@ def mean_absolute_percentage_error(target: Array, preds: Array) -> Array: -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... mean_absolute_percentage_error + ... mean_absolute_percentage_error, ... ) - >>> target = anp.asarray([1., 10., 1e6]) - >>> preds = anp.asarray([0.9, 15., 1.2e6]) + >>> target = anp.asarray([1.0, 10.0, 1e6]) + >>> preds = anp.asarray([0.9, 15.0, 1.2e6]) >>> mean_absolute_percentage_error(target, preds) Array(0.26666668, dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/functional/mse.py b/cyclops/evaluate/metrics/experimental/functional/mse.py index 4af5dd535..63df3955c 100644 --- a/cyclops/evaluate/metrics/experimental/functional/mse.py +++ b/cyclops/evaluate/metrics/experimental/functional/mse.py @@ -117,14 +117,14 @@ def mean_squared_error( -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental.functional import mean_squared_error - >>> target = anp.asarray([0., 1., 2., 3.]) - >>> preds = anp.asarray([0.025, 1., 2., 2.44]) + >>> target = anp.asarray([0.0, 1.0, 2.0, 3.0]) + >>> preds = anp.asarray([0.025, 1.0, 2.0, 2.44]) >>> mean_squared_error(target, preds) Array(0.07855625, dtype=float32) >>> mean_squared_error(target, preds, squared=False) Array(0.2802789, dtype=float32) - >>> target = anp.asarray([[0., 1.], [2., 3.]]) - >>> preds = anp.asarray([[0.025, 1.], [2., 2.44]]) + >>> target = anp.asarray([[0.0, 1.0], [2.0, 3.0]]) + >>> preds = anp.asarray([[0.025, 1.0], [2.0, 2.44]]) >>> mean_squared_error(target, preds, num_outputs=2) Array([0.0003125, 0.1568 ], dtype=float32) >>> mean_squared_error(target, preds, squared=False, num_outputs=2) diff --git a/cyclops/evaluate/metrics/experimental/functional/negative_predictive_value.py b/cyclops/evaluate/metrics/experimental/functional/negative_predictive_value.py index 2ca4411cc..10351e921 100644 --- a/cyclops/evaluate/metrics/experimental/functional/negative_predictive_value.py +++ b/cyclops/evaluate/metrics/experimental/functional/negative_predictive_value.py @@ -238,9 +238,7 @@ def multiclass_npv( Examples -------- - >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multiclass_npv - ... ) + >>> from cyclops.evaluate.metrics.experimental.functional import multiclass_npv >>> import numpy.array_api as anp >>> target = anp.asarray([2, 1, 0, 0]) >>> preds = anp.asarray([2, 1, 0, 1]) @@ -263,7 +261,11 @@ def multiclass_npv( >>> multiclass_npv(target, preds, num_classes=3, ignore_index=0) Array(1., dtype=float32) >>> multiclass_npv( - ... target, preds, num_classes=3, average=None, ignore_index=(1, 2), + ... target, + ... preds, + ... num_classes=3, + ... average=None, + ... ignore_index=(1, 2), ... ) Array([0., 1., 1.], dtype=float32) @@ -391,9 +393,7 @@ def multilabel_npv( Examples -------- - >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multilabel_npv - ... ) + >>> from cyclops.evaluate.metrics.experimental.functional import multilabel_npv >>> import numpy.array_api as anp >>> target = anp.asarray([[0, 1, 0], [1, 0, 1]]) >>> preds = anp.asarray([[0, 0, 1], [1, 0, 1]]) @@ -414,7 +414,11 @@ def multilabel_npv( >>> multilabel_npv(target, preds, num_labels=4, average="weighted") Array(0.1, dtype=float32) >>> multilabel_npv( - ... target, preds, num_labels=4, average=None, ignore_index=1, + ... target, + ... preds, + ... num_labels=4, + ... average=None, + ... ignore_index=1, ... ) Array([0., 0., 1., 0.], dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/functional/precision_recall.py b/cyclops/evaluate/metrics/experimental/functional/precision_recall.py index 283b485cc..6e9df2f7d 100644 --- a/cyclops/evaluate/metrics/experimental/functional/precision_recall.py +++ b/cyclops/evaluate/metrics/experimental/functional/precision_recall.py @@ -245,7 +245,7 @@ def multiclass_precision( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multiclass_precision + ... multiclass_precision, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([2, 1, 0, 0]) @@ -269,7 +269,11 @@ def multiclass_precision( >>> multiclass_precision(target, preds, num_classes=3, ignore_index=0) Array(1., dtype=float32) >>> multiclass_precision( - ... target, preds, num_classes=3, average=None, ignore_index=(1, 2), + ... target, + ... preds, + ... num_classes=3, + ... average=None, + ... ignore_index=(1, 2), ... ) Array([1., 0., 0.], dtype=float32) @@ -396,7 +400,7 @@ def multilabel_precision( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multilabel_precision + ... multilabel_precision, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([[0, 1, 0], [1, 0, 1]]) @@ -650,7 +654,11 @@ def multiclass_recall( >>> multiclass_recall(target, preds, num_classes=3, ignore_index=0) Array(1., dtype=float32) >>> multiclass_recall( - ... target, preds, num_classes=3, average=None, ignore_index=(1, 2), + ... target, + ... preds, + ... num_classes=3, + ... average=None, + ... ignore_index=(1, 2), ... ) Array([0.5, 0. , 0. ], dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/functional/precision_recall_curve.py b/cyclops/evaluate/metrics/experimental/functional/precision_recall_curve.py index 0c2409670..d484a2b1b 100644 --- a/cyclops/evaluate/metrics/experimental/functional/precision_recall_curve.py +++ b/cyclops/evaluate/metrics/experimental/functional/precision_recall_curve.py @@ -399,13 +399,15 @@ def binary_precision_recall_curve( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... binary_precision_recall_curve + ... binary_precision_recall_curve, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([0, 1, 0, 1, 0, 1]) >>> preds = anp.asarray([0.11, 0.22, 0.84, 0.73, 0.33, 0.92]) >>> precision, recall, thresholds = binary_precision_recall_curve( - ... target, preds, thresholds=None, + ... target, + ... preds, + ... thresholds=None, ... ) >>> precision Array([0.5 , 0.6 , 0.5 , 0.6666667, @@ -416,7 +418,9 @@ def binary_precision_recall_curve( >>> thresholds Array([0.11, 0.22, 0.33, 0.73, 0.84, 0.92], dtype=float64) >>> precision, recall, thresholds = binary_precision_recall_curve( - ... target, preds, thresholds=5, + ... target, + ... preds, + ... thresholds=5, ... ) >>> precision Array([0.5 , 0.5 , 0.6666667, 0.5 , @@ -786,19 +790,25 @@ class is returned with 1-D Arrays of shape `(num_thresholds,)`. Otherwise, Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multiclass_precision_recall_curve + ... multiclass_precision_recall_curve, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]]) + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] + ... ) >>> precision, recall, thresholds = multiclass_precision_recall_curve( - ... target, preds, num_classes=3, thresholds=None, + ... target, + ... preds, + ... num_classes=3, + ... thresholds=None, ... ) >>> precision [Array([0.33333334, 0. , 0. , 1. ], dtype=float32), @@ -809,7 +819,10 @@ class is returned with 1-D Arrays of shape `(num_thresholds,)`. Otherwise, >>> thresholds [Array([0.11, 0.33, 0.84], dtype=float64), Array([0.22, 0.73, 0.92], dtype=float64), Array([0.12, 0.44, 0.67], dtype=float64)] >>> precision, recall, thresholds = multiclass_precision_recall_curve( - ... target, preds, num_classes=3, thresholds=5, + ... target, + ... preds, + ... num_classes=3, + ... thresholds=5, ... ) >>> precision Array([[0.33333334, 0. , 0. , 0. , @@ -1111,7 +1124,7 @@ def multilabel_precision_recall_curve( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multilabel_precision_recall_curve + ... multilabel_precision_recall_curve, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([[0, 1, 0], [1, 1, 0], [0, 0, 1]]) @@ -1119,7 +1132,10 @@ def multilabel_precision_recall_curve( ... [[0.11, 0.22, 0.67], [0.84, 0.73, 0.12], [0.33, 0.92, 0.44]], ... ) >>> precision, recall, thresholds = multilabel_precision_recall_curve( - ... target, preds, num_labels=3, thresholds=None, + ... target, + ... preds, + ... num_labels=3, + ... thresholds=None, ... ) >>> precision [Array([0.33333334, 0.5 , 1. , 1. ], dtype=float32), @@ -1130,7 +1146,10 @@ def multilabel_precision_recall_curve( >>> thresholds [Array([0.11, 0.33, 0.84], dtype=float64), Array([0.22, 0.73, 0.92], dtype=float64), Array([0.12, 0.44, 0.67], dtype=float64)] >>> precision, recall, thresholds = multilabel_precision_recall_curve( - ... target, preds, num_labels=3, thresholds=5, + ... target, + ... preds, + ... num_labels=3, + ... thresholds=5, ... ) >>> precision Array([[0.33333334, 0.5 , 1. , 1. , diff --git a/cyclops/evaluate/metrics/experimental/functional/roc.py b/cyclops/evaluate/metrics/experimental/functional/roc.py index e95948d5b..736696195 100644 --- a/cyclops/evaluate/metrics/experimental/functional/roc.py +++ b/cyclops/evaluate/metrics/experimental/functional/roc.py @@ -180,7 +180,9 @@ def binary_roc( >>> thresholds Array([1. , 0.92, 0.84, 0.73, 0.33, 0.22, 0.11], dtype=float64) >>> fpr, tpr, thresholds = binary_roc( - ... target, preds, thresholds=5, + ... target, + ... preds, + ... thresholds=5, ... ) >>> fpr Array([0. , 0.33333334, 0.33333334, 0.6666667 , @@ -379,14 +381,20 @@ def multiclass_roc( >>> import numpy.array_api as anp >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]]) + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] + ... ) >>> fpr, tpr, thresholds = multiclass_roc( - ... target, preds, num_classes=3, thresholds=None, + ... target, + ... preds, + ... num_classes=3, + ... thresholds=None, ... ) >>> fpr [Array([0. , 0.5, 1. , 1. ], dtype=float32), @@ -401,7 +409,10 @@ def multiclass_roc( Array([1. , 0.92, 0.73, 0.22], dtype=float64), Array([1. , 0.67, 0.44, 0.12], dtype=float64)] >>> fpr, tpr, thresholds = multiclass_roc( - ... target, preds, num_classes=3, thresholds=5, + ... target, + ... preds, + ... num_classes=3, + ... thresholds=5, ... ) >>> fpr Array([[0. , 0.5, 0.5, 1. , 1. ], @@ -587,7 +598,10 @@ def multilabel_roc( ... [[0.11, 0.22, 0.67], [0.84, 0.73, 0.12], [0.33, 0.92, 0.44]], ... ) >>> fpr, tpr, thresholds = multilabel_roc( - ... target, preds, num_labels=3, thresholds=None, + ... target, + ... preds, + ... num_labels=3, + ... thresholds=None, ... ) >>> fpr [Array([0. , 0. , 0.5, 1. ], dtype=float32), @@ -602,7 +616,10 @@ def multilabel_roc( Array([1. , 0.92, 0.73, 0.22], dtype=float64), Array([1. , 0.67, 0.44, 0.12], dtype=float64)] >>> fpr, tpr, thresholds = multilabel_roc( - ... target, preds, num_labels=3, thresholds=5, + ... target, + ... preds, + ... num_labels=3, + ... thresholds=5, ... ) >>> fpr Array([[0. , 0. , 0. , 0.5, 1. ], diff --git a/cyclops/evaluate/metrics/experimental/functional/smape.py b/cyclops/evaluate/metrics/experimental/functional/smape.py index badefeeb1..d33aeb0d9 100644 --- a/cyclops/evaluate/metrics/experimental/functional/smape.py +++ b/cyclops/evaluate/metrics/experimental/functional/smape.py @@ -110,8 +110,8 @@ def symmetric_mean_absolute_percentage_error(target: Array, preds: Array) -> Arr >>> from cyclops.evaluate.metrics.experimental.functional import ( ... symmetric_mean_absolute_percentage_error, ... ) - >>> target = anp.asarray([1., 10., 1e6]) - >>> preds = anp.asarray([0.9, 15., 1.2e6]) + >>> target = anp.asarray([1.0, 10.0, 1e6]) + >>> preds = anp.asarray([0.9, 15.0, 1.2e6]) >>> symmetric_mean_absolute_percentage_error(target, preds) Array(0.2290271, dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/functional/specificity.py b/cyclops/evaluate/metrics/experimental/functional/specificity.py index da27e0957..44847f2fe 100644 --- a/cyclops/evaluate/metrics/experimental/functional/specificity.py +++ b/cyclops/evaluate/metrics/experimental/functional/specificity.py @@ -238,7 +238,7 @@ def multiclass_specificity( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multiclass_specificity + ... multiclass_specificity, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([2, 1, 0, 0]) @@ -262,7 +262,11 @@ def multiclass_specificity( >>> multiclass_specificity(target, preds, num_classes=3, ignore_index=0) Array(1., dtype=float32) >>> multiclass_specificity( - ... target, preds, num_classes=3, average=None, ignore_index=(1, 2), + ... target, + ... preds, + ... num_classes=3, + ... average=None, + ... ignore_index=(1, 2), ... ) Array([0. , 0.5, 1. ], dtype=float32) @@ -391,7 +395,7 @@ def multilabel_specificity( Examples -------- >>> from cyclops.evaluate.metrics.experimental.functional import ( - ... multilabel_specificity + ... multilabel_specificity, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([[0, 1, 0], [1, 0, 1]]) @@ -413,7 +417,11 @@ def multilabel_specificity( >>> multilabel_specificity(target, preds, num_labels=4, average="weighted") Array(0.2, dtype=float32) >>> multilabel_specificity( - ... target, preds, num_labels=4, average=None, ignore_index=1, + ... target, + ... preds, + ... num_labels=4, + ... average=None, + ... ignore_index=1, ... ) Array([0., 0., 1., 0.], dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/mae.py b/cyclops/evaluate/metrics/experimental/mae.py index dab2f5a5d..aac6cbdd0 100644 --- a/cyclops/evaluate/metrics/experimental/mae.py +++ b/cyclops/evaluate/metrics/experimental/mae.py @@ -21,8 +21,8 @@ class MeanAbsoluteError(Metric): -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental import MeanAbsoluteError - >>> target = anp.asarray([0.009, 1.05, 2., 3.]) - >>> preds = anp.asarray([0., 1., 2., 2.]) + >>> target = anp.asarray([0.009, 1.05, 2.0, 3.0]) + >>> preds = anp.asarray([0.0, 1.0, 2.0, 2.0]) >>> metric = MeanAbsoluteError() >>> metric(target, preds) Array(0.26475, dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/mape.py b/cyclops/evaluate/metrics/experimental/mape.py index 6d9d4afbf..003ba8530 100644 --- a/cyclops/evaluate/metrics/experimental/mape.py +++ b/cyclops/evaluate/metrics/experimental/mape.py @@ -24,8 +24,8 @@ class MeanAbsolutePercentageError(Metric): -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental import MeanAbsolutePercentageError - >>> target = anp.asarray([0.009, 1.05, 2., 3.]) - >>> preds = anp.asarray([0., 1., 2., 2.]) + >>> target = anp.asarray([0.009, 1.05, 2.0, 3.0]) + >>> preds = anp.asarray([0.0, 1.0, 2.0, 2.0]) >>> metric = MeanAbsolutePercentageError() >>> metric(target, preds) Array(0.34523812, dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/metric.py b/cyclops/evaluate/metrics/experimental/metric.py index 1712fabd3..7f94a4fc0 100644 --- a/cyclops/evaluate/metrics/experimental/metric.py +++ b/cyclops/evaluate/metrics/experimental/metric.py @@ -712,5 +712,7 @@ def to_device( def __repr__(self) -> str: """Return a string representation of the object.""" - _op_metrics = f"(\n {self._op}(\n {self.metric_a!r},\n {self.metric_b!r}\n )\n)" # noqa: E501 + _op_metrics = ( + f"(\n {self._op}(\n {self.metric_a!r},\n {self.metric_b!r}\n )\n)" # noqa: E501 + ) return self.__class__.__name__ + _op_metrics diff --git a/cyclops/evaluate/metrics/experimental/metric_dict.py b/cyclops/evaluate/metrics/experimental/metric_dict.py index 08a833522..bd001028c 100644 --- a/cyclops/evaluate/metrics/experimental/metric_dict.py +++ b/cyclops/evaluate/metrics/experimental/metric_dict.py @@ -109,10 +109,10 @@ class MetricDict(UserDict[str, Union[Metric, TorchMetric]]): -------- >>> from cyclops.evaluate.metrics.experimental import MetricDict >>> from cyclops.evaluate.metrics.experimental import ( - ... BinaryAccuracy, - ... BinaryF1Score, - ... BinaryPrecision, - ... BinaryRecall, + ... BinaryAccuracy, + ... BinaryF1Score, + ... BinaryPrecision, + ... BinaryRecall, ... ) >>> import numpy.array_api as anp >>> target = anp.asarray([0, 1, 0, 1]) diff --git a/cyclops/evaluate/metrics/experimental/mse.py b/cyclops/evaluate/metrics/experimental/mse.py index 6210055a2..1f0a49c2a 100644 --- a/cyclops/evaluate/metrics/experimental/mse.py +++ b/cyclops/evaluate/metrics/experimental/mse.py @@ -26,8 +26,8 @@ class MeanSquaredError(Metric): -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental import MeanSquaredError - >>> target = anp.asarray([0.009, 1.05, 2., 3.]) - >>> preds = anp.asarray([0., 1., 2., 2.]) + >>> target = anp.asarray([0.009, 1.05, 2.0, 3.0]) + >>> preds = anp.asarray([0.0, 1.0, 2.0, 2.0]) >>> metric = MeanSquaredError() >>> metric(target, preds) Array(0.25064525, dtype=float32) @@ -35,8 +35,8 @@ class MeanSquaredError(Metric): >>> metric(target, preds) Array(0.50064486, dtype=float32) >>> metric = MeanSquaredError(num_outputs=2) - >>> target = anp.asarray([[0.009, 1.05], [2., 3.]]) - >>> preds = anp.asarray([[0., 1.], [2., 2.]]) + >>> target = anp.asarray([[0.009, 1.05], [2.0, 3.0]]) + >>> preds = anp.asarray([[0.0, 1.0], [2.0, 2.0]]) >>> metric(target, preds) Array([4.0500e-05, 5.0125e-01], dtype=float32) >>> metric = MeanSquaredError(squared=False, num_outputs=2) diff --git a/cyclops/evaluate/metrics/experimental/negative_predictive_value.py b/cyclops/evaluate/metrics/experimental/negative_predictive_value.py index 99602555d..53ec429c6 100644 --- a/cyclops/evaluate/metrics/experimental/negative_predictive_value.py +++ b/cyclops/evaluate/metrics/experimental/negative_predictive_value.py @@ -96,8 +96,10 @@ class MulticlassNPV( Array(0.8, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -167,8 +169,7 @@ class MultilabelNPV( Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/experimental/precision_recall.py b/cyclops/evaluate/metrics/experimental/precision_recall.py index 57253a1d6..986d678a3 100644 --- a/cyclops/evaluate/metrics/experimental/precision_recall.py +++ b/cyclops/evaluate/metrics/experimental/precision_recall.py @@ -128,8 +128,10 @@ class MulticlassPrecision( Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -195,8 +197,10 @@ class MulticlassPPV(MulticlassPrecision, registry_key="multiclass_ppv"): Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -253,8 +257,7 @@ class MultilabelPrecision( Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -321,8 +324,7 @@ class MultilabelPPV(MultilabelPrecision, registry_key="multilabel_ppv"): Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -481,8 +483,10 @@ class MulticlassRecall(_AbstractMulticlassStatScores, registry_key="multiclass_r Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -547,8 +551,10 @@ class MulticlassSensitivity(MulticlassRecall, registry_key="multiclass_sensitivi Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -601,8 +607,10 @@ class MulticlassTPR(MulticlassRecall, registry_key="multiclass_tpr"): Array(0.6, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -656,8 +664,7 @@ class MultilabelRecall(_AbstractMultilabelStatScores, registry_key="multilabel_r Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -724,8 +731,7 @@ class MultilabelSensitivity(MultilabelRecall, registry_key="multilabel_sensitivi Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -780,8 +786,7 @@ class MultilabelTPR(MultilabelRecall, registry_key="multilabel_tpr"): Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/experimental/precision_recall_curve.py b/cyclops/evaluate/metrics/experimental/precision_recall_curve.py index 6567e407f..bdd919023 100644 --- a/cyclops/evaluate/metrics/experimental/precision_recall_curve.py +++ b/cyclops/evaluate/metrics/experimental/precision_recall_curve.py @@ -100,7 +100,11 @@ def __init__( ) def default(xp: ModuleType) -> Array: - return xp.zeros((len_thresholds, 2, 2), dtype=xp.int32, device=self.device) # type: ignore[no-any-return] + return xp.zeros( + (len_thresholds, 2, 2), + dtype=xp.int32, + device=self.device, + ) # type: ignore[no-any-return] self.add_state_default_factory( "confmat", @@ -185,12 +189,14 @@ class MulticlassPrecisionRecallCurve( >>> from cyclops.evaluate.metrics.experimental import MulticlassPrecisionRecallCurve >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]] + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] ... ) >>> metric = MulticlassPrecisionRecallCurve(num_classes=3, thresholds=None) >>> metric(target, preds) diff --git a/cyclops/evaluate/metrics/experimental/roc.py b/cyclops/evaluate/metrics/experimental/roc.py index 6c6fbecb5..c3b6de9a5 100644 --- a/cyclops/evaluate/metrics/experimental/roc.py +++ b/cyclops/evaluate/metrics/experimental/roc.py @@ -103,12 +103,14 @@ class MulticlassROC( >>> from cyclops.evaluate.metrics.experimental import MulticlassROC >>> target = anp.asarray([0, 1, 2, 0, 1, 2]) >>> preds = anp.asarray( - ... [[0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44], - ... [0.11, 0.22, 0.67], - ... [0.84, 0.73, 0.12], - ... [0.33, 0.92, 0.44]] + ... [ + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... [0.11, 0.22, 0.67], + ... [0.84, 0.73, 0.12], + ... [0.33, 0.92, 0.44], + ... ] ... ) >>> metric = MulticlassROC(num_classes=3, thresholds=None) >>> metric(target, preds) diff --git a/cyclops/evaluate/metrics/experimental/smape.py b/cyclops/evaluate/metrics/experimental/smape.py index a7e61c027..a603bb884 100644 --- a/cyclops/evaluate/metrics/experimental/smape.py +++ b/cyclops/evaluate/metrics/experimental/smape.py @@ -26,8 +26,8 @@ class SymmetricMeanAbsolutePercentageError(Metric): >>> from cyclops.evaluate.metrics.experimental import ( ... SymmetricMeanAbsolutePercentageError, ... ) - >>> target = anp.asarray([0.009, 1.05, 2., 3.]) - >>> preds = anp.asarray([0., 1., 2., 2.]) + >>> target = anp.asarray([0.009, 1.05, 2.0, 3.0]) + >>> preds = anp.asarray([0.0, 1.0, 2.0, 2.0]) >>> metric = SymmetricMeanAbsolutePercentageError() >>> metric(target, preds) Array(0.61219513, dtype=float32) diff --git a/cyclops/evaluate/metrics/experimental/specificity.py b/cyclops/evaluate/metrics/experimental/specificity.py index 768b8939e..9b76ef50d 100644 --- a/cyclops/evaluate/metrics/experimental/specificity.py +++ b/cyclops/evaluate/metrics/experimental/specificity.py @@ -95,8 +95,10 @@ class MulticlassSpecificity( Array(0.8, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -166,8 +168,7 @@ class MultilabelSpecificity( Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -267,8 +268,10 @@ class MulticlassTNR(MulticlassSpecificity, registry_key="multiclass_tnr"): Array(0.8, dtype=float32) >>> metric.reset() >>> target = [[0, 1, 2], [2, 1, 0]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.6, 0.2]], + ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0], [0.2, 0.6, 0.2]], + ... ] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() @@ -323,8 +326,7 @@ class MultilabelTNR(MultilabelSpecificity, registry_key="multilabel_tnr"): Array(0.6666667, dtype=float32) >>> metric.reset() >>> target = [[[0, 1, 1], [1, 0, 0]], [[1, 0, 0], [0, 1, 1]]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update(anp.asarray(t), anp.asarray(p)) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/experimental/wmape.py b/cyclops/evaluate/metrics/experimental/wmape.py index fc37cf6a6..0d6803c45 100644 --- a/cyclops/evaluate/metrics/experimental/wmape.py +++ b/cyclops/evaluate/metrics/experimental/wmape.py @@ -25,10 +25,10 @@ class WeightedMeanAbsolutePercentageError(Metric): -------- >>> import numpy.array_api as anp >>> from cyclops.evaluate.metrics.experimental import ( - ... WeightedMeanAbsolutePercentageError, + ... WeightedMeanAbsolutePercentageError, ... ) - >>> target = anp.asarray([0.009, 1.05, 2., 3.]) - >>> preds = anp.asarray([0., 1., 2., 2.]) + >>> target = anp.asarray([0.009, 1.05, 2.0, 3.0]) + >>> preds = anp.asarray([0.0, 1.0, 2.0, 2.0]) >>> metric = WeightedMeanAbsolutePercentageError() >>> metric(target, preds) Array(0.17478132, dtype=float32) diff --git a/cyclops/evaluate/metrics/f_beta.py b/cyclops/evaluate/metrics/f_beta.py index 575bacb7c..9c0ffda5d 100644 --- a/cyclops/evaluate/metrics/f_beta.py +++ b/cyclops/evaluate/metrics/f_beta.py @@ -119,14 +119,8 @@ class MulticlassFbetaScore(MulticlassStatScores, registry_key="multiclass_fbeta_ >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [2, 1, 2, 0]] >>> preds = [ - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]], - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]] + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) @@ -320,8 +314,10 @@ class FbetaScore(Metric, registry_key="fbeta_score", force_register=True): array([0.83333333, 0. , 0.55555556]) >>> metric.reset_state() >>> target = [[0, 1, 0], [0, 0, 1]] - >>> preds = [[[0.1, 0.8, 0.1], [0.1, 0.1, 0.8], [0.8, 0.1, 0.1]], - ... [[0.1, 0.1, 0.8], [0.8, 0.1, 0.1], [0.1, 0.8, 0.1]]] + >>> preds = [ + ... [[0.1, 0.8, 0.1], [0.1, 0.1, 0.8], [0.8, 0.1, 0.1]], + ... [[0.1, 0.1, 0.8], [0.8, 0.1, 0.1], [0.1, 0.8, 0.1]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -480,8 +476,7 @@ class MulticlassF1Score(MulticlassFbetaScore, registry_key="multiclass_f1_score" array([0.66666667, 0.5 , 0. ]) >>> metric.reset_state() >>> target = [[0, 1], [1, 1]] - >>> preds = [[[0.1, 0.9, 0], [0.05, 0.95, 0]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.1, 0.9, 0], [0.05, 0.95, 0]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -640,8 +635,7 @@ class F1Score(FbetaScore, registry_key="f1_score", force_register=True): array([0.66666667, 0.5 , 0. ]) >>> metric.reset_state() >>> target = [[0, 1], [1, 1]] - >>> preds = [[[0.1, 0.9, 0], [0.05, 0.95, 0]], - ... [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] + >>> preds = [[[0.1, 0.9, 0], [0.05, 0.95, 0]], [[0.1, 0.8, 0.1], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/functional/auroc.py b/cyclops/evaluate/metrics/functional/auroc.py index afb938aae..316d8d638 100644 --- a/cyclops/evaluate/metrics/functional/auroc.py +++ b/cyclops/evaluate/metrics/functional/auroc.py @@ -310,11 +310,13 @@ def multiclass_auroc( -------- >>> from cyclops.evaluate.metrics.functional import multiclass_auroc >>> target = [1, 0, 2, 0] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], - ... [0.05, 0.05, 0.9], [0.9, 0.05, 0.05]] - >>> multiclass_auroc(target, preds, num_classes=3, thresholds=5, - ... average=None - ... ) + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.05, 0.9], + ... [0.9, 0.05, 0.05], + ... ] + >>> multiclass_auroc(target, preds, num_classes=3, thresholds=5, average=None) array([0.5 , 0.33333333, 1. ]) """ @@ -453,8 +455,7 @@ def multilabel_auroc( >>> from cyclops.evaluate.metrics.functional import multilabel_auroc >>> target = [[0, 1, 0], [0, 1, 1], [1, 0, 1]] >>> preds = [[0.1, 0.9, 0.8], [0.05, 0.1, 0.9], [0.8, 0.2, 0.3]] - >>> multilabel_auroc(target, preds, num_labels=3, thresholds=5, - ... average=None) + >>> multilabel_auroc(target, preds, num_labels=3, thresholds=5, average=None) array([1. , 0.75, 0.25]) """ @@ -551,8 +552,14 @@ def auroc( >>> # (multiclass) >>> from cyclops.evaluate.metrics.functional import auroc >>> target = [0, 1, 2, 0, 1, 2] - >>> preds = [[0.1, 0.6, 0.3], [0.05, 0.95, 0], [0.5, 0.3, 0.2], - ... [0.1, 0.6, 0.3], [0.05, 0.95, 0], [0.5, 0.3, 0.2]] + >>> preds = [ + ... [0.1, 0.6, 0.3], + ... [0.05, 0.95, 0], + ... [0.5, 0.3, 0.2], + ... [0.1, 0.6, 0.3], + ... [0.05, 0.95, 0], + ... [0.5, 0.3, 0.2], + ... ] >>> auroc(target, preds, task="multiclass", num_classes=3, average=None) array([0.5, 1. , 0.5]) diff --git a/cyclops/evaluate/metrics/functional/precision_recall.py b/cyclops/evaluate/metrics/functional/precision_recall.py index f127387ce..318e416c8 100644 --- a/cyclops/evaluate/metrics/functional/precision_recall.py +++ b/cyclops/evaluate/metrics/functional/precision_recall.py @@ -399,18 +399,22 @@ def precision( >>> # (multiclass) >>> from cyclops.evaluate.metrics.functional import precision >>> target = [0, 1, 2, 0, 1, 2] - >>> preds = [[0.1, 0.6, 0.3], [0.05, 0.95, 0], [0.1, 0.8, 0.1], - ... [0.5, 0.3, 0.2], [0.2, 0.5, 0.3], [0.2, 0.2, 0.6]] - >>> precision(target, preds, task="multiclass", num_classes=3, - ... average="macro") + >>> preds = [ + ... [0.1, 0.6, 0.3], + ... [0.05, 0.95, 0], + ... [0.1, 0.8, 0.1], + ... [0.5, 0.3, 0.2], + ... [0.2, 0.5, 0.3], + ... [0.2, 0.2, 0.6], + ... ] + >>> precision(target, preds, task="multiclass", num_classes=3, average="macro") 0.8333333333333334 >>> # (multilabel) >>> from cyclops.evaluate.metrics.functional import precision >>> target = [[0, 1], [1, 1]] >>> preds = [[0.1, 0.9], [0.2, 0.8]] - >>> precision(target, preds, task="multilabel", num_labels=2, - ... average="macro") + >>> precision(target, preds, task="multilabel", num_labels=2, average="macro") 0.5 """ @@ -565,8 +569,14 @@ def multiclass_recall( -------- >>> from cyclops.evaluate.metrics.functional import multiclass_recall >>> target = [0, 1, 2, 0, 1, 2] - >>> preds = [[0.4, 0.1, 0.5], [0.1, 0.8, 0.1], [0.2, 0.2, 0.6], - ... [0.5, 0.3, 0.2], [0.2, 0.5, 0.3], [0.2, 0.2, 0.6]] + >>> preds = [ + ... [0.4, 0.1, 0.5], + ... [0.1, 0.8, 0.1], + ... [0.2, 0.2, 0.6], + ... [0.5, 0.3, 0.2], + ... [0.2, 0.5, 0.3], + ... [0.2, 0.2, 0.6], + ... ] >>> multiclass_recall(target, preds, num_classes=3, average="macro") 0.8333333333333334 diff --git a/cyclops/evaluate/metrics/functional/precision_recall_curve.py b/cyclops/evaluate/metrics/functional/precision_recall_curve.py index 14eb37e73..bbe0bcc78 100644 --- a/cyclops/evaluate/metrics/functional/precision_recall_curve.py +++ b/cyclops/evaluate/metrics/functional/precision_recall_curve.py @@ -311,13 +311,11 @@ def binary_precision_recall_curve( Examples -------- - >>> from cyclops.evaluate.metrics.functional import ( - ... binary_precision_recall_curve - ... ) + >>> from cyclops.evaluate.metrics.functional import binary_precision_recall_curve >>> target = [0, 0, 1, 1] >>> preds = [0.1, 0.4, 0.35, 0.8] - >>> precision, recall, thresholds = binary_precision_recall_curve(target, - ... preds, thresholds=5 + >>> precision, recall, thresholds = binary_precision_recall_curve( + ... target, preds, thresholds=5 ... ) >>> precision array([0.5 , 0.66666667, 1. , 1. , 0. ]) @@ -618,12 +616,13 @@ def multiclass_precision_recall_curve( Examples -------- >>> from cyclops.evaluate.metrics.functional import ( - ... multiclass_precision_recall_curve + ... multiclass_precision_recall_curve, ... ) >>> target = [0, 1, 2, 2] >>> preds = [[0.1, 0.6, 0.3], [0.05, 0.95, 0], [0.5, 0.3, 0.2], [0.3, 0.4, 0.3]] - >>> precision, recall, thresholds = multiclass_precision_recall_curve(target, - ... preds, num_classes=3, thresholds=5) + >>> precision, recall, thresholds = multiclass_precision_recall_curve( + ... target, preds, num_classes=3, thresholds=5 + ... ) >>> precision array([[0.25, 0. , 0. , 0. , 0. , 1. ], [0.25, 0.25, 0.5 , 1. , 0. , 1. ], @@ -915,11 +914,13 @@ def multilabel_precision_recall_curve( Examples -------- >>> from cyclops.evaluate.metrics.functional import ( - ... multilabel_precision_recall_curve) + ... multilabel_precision_recall_curve, + ... ) >>> target = [[1, 1, 0], [0, 1, 0]] >>> preds = [[0.1, 0.9, 0.8], [0.05, 0.95, 0.35]] >>> precision, recall, thresholds = multilabel_precision_recall_curve( - ... target, preds, num_labels=3, thresholds=5) + ... target, preds, num_labels=3, thresholds=5 + ... ) >>> precision array([[0.5, 0. , 0. , 0. , 0. , 1. ], [1. , 1. , 1. , 1. , 0. , 1. ], @@ -1024,8 +1025,7 @@ def precision_recall_curve( >>> from cyclops.evaluate.metrics.functional import precision_recall_curve >>> target = [0, 0, 1, 1] >>> preds = [0.1, 0.4, 0.35, 0.8] - >>> precision, recall, thresholds = precision_recall_curve(target, preds, - ... "binary") + >>> precision, recall, thresholds = precision_recall_curve(target, preds, "binary") >>> precision array([0.5 , 0.66666667, 0.5 , 1. , 1. ]) >>> recall @@ -1038,7 +1038,8 @@ def precision_recall_curve( >>> target = [0, 1, 2, 2] >>> preds = [[0.1, 0.6, 0.3], [0.05, 0.95, 0], [0.5, 0.3, 0.2], [0.3, 0.4, 0.3]] >>> precision, recall, thresholds = precision_recall_curve( - ... target, preds, task="multiclass", num_classes=3) + ... target, preds, task="multiclass", num_classes=3 + ... ) >>> [prec.tolist() for prec in precision] [[0.25, 0.3333333333333333, 0.0, 0.0, 1.0], [0.25, 0.3333333333333333, 0.5, 1.0, 1.0], [0.5, 0.6666666666666666, 0.5, 1.0]] >>> [rec.tolist() for rec in recall] @@ -1050,8 +1051,9 @@ def precision_recall_curve( >>> from cyclops.evaluate.metrics.functional import precision_recall_curve >>> target = [[1, 1, 0], [0, 1, 0]] >>> preds = [[0.1, 0.9, 0.8], [0.05, 0.95, 0.35]] - >>> precision, recall, thresholds = precision_recall_curve(target, preds, - ... "multilabel", num_labels=3) + >>> precision, recall, thresholds = precision_recall_curve( + ... target, preds, "multilabel", num_labels=3 + ... ) >>> precision [array([0.5, 1. , 1. ]), array([1., 1., 1.]), array([0., 0., 1.])] >>> recall diff --git a/cyclops/evaluate/metrics/functional/roc.py b/cyclops/evaluate/metrics/functional/roc.py index c61387e00..24eb1dd16 100644 --- a/cyclops/evaluate/metrics/functional/roc.py +++ b/cyclops/evaluate/metrics/functional/roc.py @@ -317,10 +317,14 @@ def multiclass_roc_curve( -------- >>> from cyclops.evaluate.metrics.functional import multiclass_roc_curve >>> target = [1, 0, 2, 0] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], - ... [0.05, 0.05, 0.9], [0.9, 0.05, 0.05]] - >>> fpr, tpr, thresholds = multiclass_roc_curve(target, preds, - ... num_classes=3, thresholds=5 + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.05, 0.9], + ... [0.9, 0.05, 0.05], + ... ] + >>> fpr, tpr, thresholds = multiclass_roc_curve( + ... target, preds, num_classes=3, thresholds=5 ... ) >>> fpr array([[0. , 0.5 , 0.5 , 0.5 , 1. ], @@ -469,8 +473,8 @@ def multilabel_roc_curve( >>> from cyclops.evaluate.metrics.functional import multilabel_roc_curve >>> target = [[0, 1, 0], [0, 1, 1], [1, 0, 1]] >>> preds = [[0.1, 0.9, 0.8], [0.05, 0.1, 0.9], [0.8, 0.2, 0.3]] - >>> fpr, tpr, thresholds = multilabel_roc_curve(target, preds, num_labels=3, - ... thresholds=5 + >>> fpr, tpr, thresholds = multilabel_roc_curve( + ... target, preds, num_labels=3, thresholds=5 ... ) >>> fpr array([[0., 0., 0., 0., 1.], @@ -586,7 +590,7 @@ def roc_curve( >>> from cyclops.evaluate.metrics.functional import roc_curve >>> target = [0, 0, 1, 1] >>> preds = [0.1, 0.4, 0.35, 0.8] - >>> fpr, tpr, thresholds = roc_curve(target, preds, task='binary') + >>> fpr, tpr, thresholds = roc_curve(target, preds, task="binary") >>> fpr array([0. , 0. , 0.5, 0.5, 1. ]) >>> tpr @@ -598,8 +602,8 @@ def roc_curve( >>> from cyclops.evaluate.metrics.functional import roc_curve >>> target = [0, 1, 2] >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.89, 0.06], [0.02, 0.03, 0.95]] - >>> fpr, tpr, thresholds = roc_curve(target, preds, task='multiclass', - ... num_classes=3 + >>> fpr, tpr, thresholds = roc_curve( + ... target, preds, task="multiclass", num_classes=3 ... ) >>> fpr [array([0. , 0. , 0.5, 1. ]), array([0. , 0. , 0.5, 1. ]), array([0. , 0. , 0.5, 1. ])] @@ -612,9 +616,7 @@ def roc_curve( >>> from cyclops.evaluate.metrics.functional import roc_curve >>> target = [[1, 1], [0, 1], [1, 0]] >>> preds = [[0.9, 0.8], [0.2, 0.7], [0.8, 0.3]] - >>> fpr, tpr, thresholds = roc_curve(target, preds, task='multilabel', - ... num_labels=2 - ... ) + >>> fpr, tpr, thresholds = roc_curve(target, preds, task="multilabel", num_labels=2) >>> fpr [array([0. , 0.5, 1. , 1. ]), array([0., 0., 0., 1.])] >>> tpr diff --git a/cyclops/evaluate/metrics/functional/sensitivity.py b/cyclops/evaluate/metrics/functional/sensitivity.py index 3dd1357f2..0ad73dc3a 100644 --- a/cyclops/evaluate/metrics/functional/sensitivity.py +++ b/cyclops/evaluate/metrics/functional/sensitivity.py @@ -115,8 +115,14 @@ def multiclass_sensitivity( -------- >>> from cyclops.evaluate.metrics.functional import multiclass_sensitivity >>> target = [0, 1, 2, 0, 1, 2] - >>> preds = [[0.4, 0.1, 0.5], [0.1, 0.8, 0.1], [0.2, 0.2, 0.6], - ... [0.5, 0.3, 0.2], [0.2, 0.5, 0.3], [0.2, 0.2, 0.6]] + >>> preds = [ + ... [0.4, 0.1, 0.5], + ... [0.1, 0.8, 0.1], + ... [0.2, 0.2, 0.6], + ... [0.5, 0.3, 0.2], + ... [0.2, 0.5, 0.3], + ... [0.2, 0.2, 0.6], + ... ] >>> multiclass_sensitivity(target, preds, num_classes=3, average="macro") 0.8333333333333334 @@ -191,14 +197,13 @@ def multilabel_sensitivity( Examples -------- >>> from cyclops.evaluate.metrics.functional import multilabel_sensitivity - >>> target = [[1, 0, 1], - ... [0, 0, 0], - ... [0, 1, 1], - ... [1, 1, 1]] - >>> preds = [[0.75, 0.05, 0.35], - ... [0.45, 0.75, 0.05], - ... [0.05, 0.55, 0.75], - ... [0.05, 0.65, 0.05]] + >>> target = [[1, 0, 1], [0, 0, 0], [0, 1, 1], [1, 1, 1]] + >>> preds = [ + ... [0.75, 0.05, 0.35], + ... [0.45, 0.75, 0.05], + ... [0.05, 0.55, 0.75], + ... [0.05, 0.65, 0.05], + ... ] >>> multilabel_sensitivity(target, preds, num_labels=3) array([0.5 , 1. , 0.33333333]) diff --git a/cyclops/evaluate/metrics/functional/specificity.py b/cyclops/evaluate/metrics/functional/specificity.py index 046a04c81..b1f1822c7 100644 --- a/cyclops/evaluate/metrics/functional/specificity.py +++ b/cyclops/evaluate/metrics/functional/specificity.py @@ -203,8 +203,14 @@ def multiclass_specificity( -------- >>> from cyclops.evaluate.metrics.functional import multiclass_specificity >>> target = [0, 1, 2, 0, 1, 2] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75], - ... [0.35, 0.5, 0.15], [0.05, 0.9, 0.05], [0.05, 0.05, 0.9]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.2, 0.75], + ... [0.35, 0.5, 0.15], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.05, 0.9], + ... ] >>> multiclass_specificity(target, preds, num_classes=3) array([1. , 0.75, 1. ]) @@ -283,8 +289,13 @@ def multilabel_specificity( -------- >>> from cyclops.evaluate.metrics.functional import multilabel_specificity >>> target = [[0, 1, 1], [1, 0, 1], [1, 1, 0], [0, 0, 1], [1, 0, 0]] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75], - ... [0.35, 0.5, 0.15], [0.05, 0.9, 0.05]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.2, 0.75], + ... [0.35, 0.5, 0.15], + ... [0.05, 0.9, 0.05], + ... ] >>> multilabel_specificity(target, preds, num_labels=3) array([0.5, 0. , 0.5]) @@ -390,16 +401,26 @@ def specificity( >>> # (multiclass) >>> from cyclops.evaluate.metrics.functional import specificity >>> target = [0, 1, 2, 0, 1] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75], - ... [0.35, 0.5, 0.15], [0.05, 0.9, 0.05]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.2, 0.75], + ... [0.35, 0.5, 0.15], + ... [0.05, 0.9, 0.05], + ... ] >>> specificity(target, preds, task="multiclass", num_classes=3) array([1. , 0.66666667, 1. ]) >>> # (multilabel) >>> from cyclops.evaluate.metrics.functional import specificity >>> target = [[0, 1, 1], [1, 0, 1], [1, 1, 0], [0, 0, 1], [1, 0, 0]] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75], - ... [0.35, 0.5, 0.15], [0.05, 0.9, 0.05]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.2, 0.75], + ... [0.35, 0.5, 0.15], + ... [0.05, 0.9, 0.05], + ... ] >>> specificity(target, preds, task="multilabel", num_labels=3) array([0.5, 0. , 0.5]) diff --git a/cyclops/evaluate/metrics/precision_recall.py b/cyclops/evaluate/metrics/precision_recall.py index 77ed43621..6de0f33c4 100644 --- a/cyclops/evaluate/metrics/precision_recall.py +++ b/cyclops/evaluate/metrics/precision_recall.py @@ -111,14 +111,8 @@ class MulticlassPrecision(MulticlassStatScores, registry_key="multiclass_precisi >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [2, 1, 2, 0]] >>> preds = [ - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]], - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]] + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) @@ -194,10 +188,7 @@ class MultilabelPrecision(MultilabelStatScores, registry_key="multilabel_precisi array([0., 1.]) >>> metric.reset_state() >>> target = [[[0, 1], [1, 1]], [[1, 1], [1, 0]]] - >>> preds = [ - ... [[0.1, 0.7], [0.2, 0.8]], - ... [[0.5, 0.9], [0.3, 0.4]] - ... ] + >>> preds = [[[0.1, 0.7], [0.2, 0.8]], [[0.5, 0.9], [0.3, 0.4]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -307,14 +298,8 @@ class Precision(Metric, registry_key="precision", force_register=True): >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [2, 1, 2, 0]] >>> preds = [ - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]], - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]] + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) @@ -331,10 +316,7 @@ class Precision(Metric, registry_key="precision", force_register=True): array([0., 1.]) >>> metric.reset_state() >>> target = [[[0, 1], [1, 1]], [[1, 1], [1, 0]]] - >>> preds = [ - ... [[0.1, 0.7], [0.2, 0.8]], - ... [[0.5, 0.9], [0.3, 0.4]] - ... ] + >>> preds = [[[0.1, 0.7], [0.2, 0.8]], [[0.5, 0.9], [0.3, 0.4]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -484,14 +466,8 @@ class MulticlassRecall(MulticlassStatScores, registry_key="multiclass_recall"): >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [2, 1, 2, 0]] >>> preds = [ - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]], - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]] + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) @@ -562,8 +538,10 @@ class MultilabelRecall(MultilabelStatScores, registry_key="multilabel_recall"): array([0., 1., 1., 0.]) >>> metric.reset_state() >>> target = [[[0, 1, 0, 1], [0, 0, 1, 1]], [[0, 1, 0, 1], [0, 0, 1, 1]]] - >>> preds = [[[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]], - ... [[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]]] + >>> preds = [ + ... [[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]], + ... [[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -670,14 +648,8 @@ class Recall(Metric, registry_key="recall", force_register=True): >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [2, 1, 2, 0]] >>> preds = [ - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]], - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]] + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) @@ -693,10 +665,7 @@ class Recall(Metric, registry_key="recall", force_register=True): array([0., 1.]) >>> metric.reset_state() >>> target = [[[0, 1], [1, 1]], [[1, 1], [1, 0]]] - >>> preds = [ - ... [[0.1, 0.7], [0.2, 0.8]], - ... [[0.5, 0.9], [0.3, 0.4]] - ... ] + >>> preds = [[[0.1, 0.7], [0.2, 0.8]], [[0.5, 0.9], [0.3, 0.4]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/precision_recall_curve.py b/cyclops/evaluate/metrics/precision_recall_curve.py index a93a4114a..64bf08833 100644 --- a/cyclops/evaluate/metrics/precision_recall_curve.py +++ b/cyclops/evaluate/metrics/precision_recall_curve.py @@ -178,8 +178,7 @@ class MulticlassPrecisionRecallCurve( -------- >>> from cyclops.evaluate.metrics import MulticlassPrecisionRecallCurve >>> target = [0, 1, 2, 0] - >>> preds = [[0.1, 0.6, 0.3], [0.05, 0.95, 0.], - ... [0.5, 0.3, 0.2], [0.2, 0.5, 0.3]] + >>> preds = [[0.1, 0.6, 0.3], [0.05, 0.95, 0.0], [0.5, 0.3, 0.2], [0.2, 0.5, 0.3]] >>> metric = MulticlassPrecisionRecallCurve(num_classes=3, thresholds=3) >>> metric(target, preds) (array([[0.5 , 0. , 0. , 1. ], @@ -190,7 +189,7 @@ class MulticlassPrecisionRecallCurve( >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [1, 2, 0, 1]] >>> preds = [ - ... [[0.1, 0.6, 0.3], [0.05, 0.95, 0.], [0.5, 0.3, 0.2], [0.2, 0.5, 0.3]], + ... [[0.1, 0.6, 0.3], [0.05, 0.95, 0.0], [0.5, 0.3, 0.2], [0.2, 0.5, 0.3]], ... [[0.3, 0.2, 0.5], [0.1, 0.7, 0.2], [0.6, 0.1, 0.3], [0.1, 0.8, 0.1]], ... ] >>> for t, p in zip(target, preds): @@ -516,10 +515,8 @@ class PrecisionRecallCurve( >>> # (multiclass) >>> from cyclops.evaluate.metrics import PrecisionRecallCurve >>> target = [0, 1, 2, 2] - >>> preds = [[0.05, 0.95, 0], [0.1, 0.8, 0.1], - ... [0.2, 0.2, 0.6], [0.2, 0.2, 0.6]] - >>> metric = PrecisionRecallCurve(task="multiclass", num_classes=3, - ... thresholds=3) + >>> preds = [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.2, 0.6], [0.2, 0.2, 0.6]] + >>> metric = PrecisionRecallCurve(task="multiclass", num_classes=3, thresholds=3) >>> metric(target, preds) (array([[0.25, 0. , 0. , 1. ], [0.25, 0.5 , 0. , 1. ], @@ -528,10 +525,10 @@ class PrecisionRecallCurve( [1., 1., 0., 0.]]), array([0. , 0.5, 1. ])) >>> metric.reset_state() >>> target = [[0, 1, 2, 2], [1, 2, 0, 1]] - >>> preds = [[[0.05, 0.95, 0], [0.1, 0.8, 0.1], - ... [0.2, 0.2, 0.6], [0.2, 0.2, 0.6]], - ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], - ... [0.2, 0.2, 0.6], [0.2, 0.2, 0.6]]] + >>> preds = [ + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.2, 0.6], [0.2, 0.2, 0.6]], + ... [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.2, 0.6], [0.2, 0.2, 0.6]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -545,16 +542,14 @@ class PrecisionRecallCurve( >>> from cyclops.evaluate.metrics import PrecisionRecallCurve >>> target = [[0, 1], [1, 0]] >>> preds = [[0.1, 0.9], [0.8, 0.2]] - >>> metric = PrecisionRecallCurve(task="multilabel", num_labels=2, - ... thresholds=3) + >>> metric = PrecisionRecallCurve(task="multilabel", num_labels=2, thresholds=3) >>> metric(target, preds) (array([[0.5, 1. , 0. , 1. ], [0.5, 1. , 0. , 1. ]]), array([[1., 1., 0., 0.], [1., 1., 0., 0.]]), array([0. , 0.5, 1. ])) >>> metric.reset_state() >>> target = [[[0, 1], [1, 0]], [[1, 0], [0, 1]]] - >>> preds = [[[0.1, 0.9], [0.8, 0.2]], - ... [[0.1, 0.9], [0.8, 0.2]]] + >>> preds = [[[0.1, 0.9], [0.8, 0.2]], [[0.1, 0.9], [0.8, 0.2]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/roc.py b/cyclops/evaluate/metrics/roc.py index c11416ee9..1b2774c8b 100644 --- a/cyclops/evaluate/metrics/roc.py +++ b/cyclops/evaluate/metrics/roc.py @@ -98,8 +98,7 @@ class MulticlassROCCurve( -------- >>> from cyclops.evaluate.metrics import MulticlassROCCurve >>> target = [0, 1, 2, 0] - >>> preds = [[0.05, 0.95, 0], [0.1, 0.8, 0.1], - ... [0.2, 0.2, 0.6], [0.9, 0.1, 0]] + >>> preds = [[0.05, 0.95, 0], [0.1, 0.8, 0.1], [0.2, 0.2, 0.6], [0.9, 0.1, 0]] >>> metric = MulticlassROCCurve(num_classes=3, thresholds=4) >>> metric(target, preds) (array([[0. , 0. , 0. , 1. ], @@ -109,10 +108,10 @@ class MulticlassROCCurve( [0. , 0. , 1. , 1. ]]), array([1. , 0.66666667, 0.33333333, 0. ])) >>> metric.reset_state() >>> target = [[1, 1, 0, 0], [0, 0, 1, 1]] - >>> preds = [[[0.1, 0.2, 0.7], [0.5, 0.4, 0.1], - ... [0.2, 0.3, 0.5], [0.8, 0.1, 0.1]], - ... [[0.1, 0.2, 0.7], [0.5, 0.4, 0.1], - ... [0.2, 0.3, 0.5], [0.8, 0.1, 0.1]]] + >>> preds = [ + ... [[0.1, 0.2, 0.7], [0.5, 0.4, 0.1], [0.2, 0.3, 0.5], [0.8, 0.1, 0.1]], + ... [[0.1, 0.2, 0.7], [0.5, 0.4, 0.1], [0.2, 0.3, 0.5], [0.8, 0.1, 0.1]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -183,8 +182,7 @@ class MultilabelROCCurve( [0., 0., 0., 0.]]), array([1. , 0.66666667, 0.33333333, 0. ])) >>> metric.reset_state() >>> target = [[[1, 1, 0], [0, 1, 0]], [[1, 1, 0], [0, 1, 0]]] - >>> preds = [[[0.1, 0.9, 0.8], [0.05, 0.95, 0]], - ... [[0.1, 0.9, 0.8], [0.05, 0.95, 0]]] + >>> preds = [[[0.1, 0.9, 0.8], [0.05, 0.95, 0]], [[0.1, 0.9, 0.8], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -305,8 +303,7 @@ class ROCCurve(Metric, registry_key="roc_curve", force_register=True): [0., 0., 0., 0.]]), array([1. , 0.66666667, 0.33333333, 0. ])) >>> metric.reset_state() >>> target = [[[1, 1, 0], [0, 1, 0]], [[1, 1, 0], [0, 1, 0]]] - >>> preds = [[[0.1, 0.9, 0.8], [0.05, 0.95, 0]], - ... [[0.1, 0.9, 0.8], [0.05, 0.95, 0]]] + >>> preds = [[[0.1, 0.9, 0.8], [0.05, 0.95, 0]], [[0.1, 0.9, 0.8], [0.05, 0.95, 0]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/sensitivity.py b/cyclops/evaluate/metrics/sensitivity.py index b58ed0837..5ea9ab5df 100644 --- a/cyclops/evaluate/metrics/sensitivity.py +++ b/cyclops/evaluate/metrics/sensitivity.py @@ -95,14 +95,8 @@ class MulticlassSensitivity(MulticlassRecall, registry_key="multiclass_sensitivi >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [2, 1, 2, 0]] >>> preds = [ - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]], - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]] + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) @@ -164,8 +158,10 @@ class MultilabelSensitivity(MultilabelRecall, registry_key="multilabel_sensitivi array([0., 1., 1., 0.]) >>> metric.reset_state() >>> target = [[[0, 1, 0, 1], [0, 0, 1, 1]], [[0, 1, 0, 1], [0, 0, 1, 1]]] - >>> preds = [[[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]], - ... [[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]]] + >>> preds = [ + ... [[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]], + ... [[0.1, 0.9, 0.8, 0.2], [0.2, 0.3, 0.6, 0.1]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -260,14 +256,8 @@ class Sensitivity(Metric, registry_key="sensitivity", force_register=True): >>> metric.reset_state() >>> target = [[0, 1, 2, 0], [2, 1, 2, 0]] >>> preds = [ - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]], - ... [[0.1, 0.6, 0.3], - ... [0.05, 0.1, 0.85], - ... [0.2, 0.7, 0.1], - ... [0.9, 0.05, 0.05]] + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], + ... [[0.1, 0.6, 0.3], [0.05, 0.1, 0.85], [0.2, 0.7, 0.1], [0.9, 0.05, 0.05]], ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) @@ -283,10 +273,7 @@ class Sensitivity(Metric, registry_key="sensitivity", force_register=True): array([0., 1.]) >>> metric.reset_state() >>> target = [[[0, 1], [1, 1]], [[1, 1], [1, 0]]] - >>> preds = [ - ... [[0.1, 0.7], [0.2, 0.8]], - ... [[0.5, 0.9], [0.3, 0.4]] - ... ] + >>> preds = [[[0.1, 0.7], [0.2, 0.8]], [[0.5, 0.9], [0.3, 0.4]]] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/specificity.py b/cyclops/evaluate/metrics/specificity.py index b2745e32b..e8efabca5 100644 --- a/cyclops/evaluate/metrics/specificity.py +++ b/cyclops/evaluate/metrics/specificity.py @@ -107,8 +107,14 @@ class MulticlassSpecificity( -------- >>> from cyclops.evaluate.metrics import MulticlassSpecificity >>> target = [0, 1, 2, 0, 1, 2] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75], - ... [0.35, 0.5, 0.15], [0.05, 0.9, 0.05], [0.05, 0.05, 0.9]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.2, 0.75], + ... [0.35, 0.5, 0.15], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.05, 0.9], + ... ] >>> metric = MulticlassSpecificity(num_classes=3) >>> metric(target, preds) array([1. , 0.75, 1. ]) @@ -186,16 +192,25 @@ class MultilabelSpecificity( -------- >>> from cyclops.evaluate.metrics import MultilabelSpecificity >>> target = [[0, 1, 1], [1, 0, 1], [1, 1, 0], [0, 0, 1], [1, 0, 0]] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75], - ... [0.35, 0.5, 0.15], [0.05, 0.9, 0.05]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.2, 0.75], + ... [0.35, 0.5, 0.15], + ... [0.05, 0.9, 0.05], + ... ] >>> metric = MultilabelSpecificity(num_labels=3) >>> metric(target, preds) array([0.5, 0. , 0.5]) >>> metric.reset_state() - >>> target = [[[0, 1, 1], [1, 0, 1], [1, 1, 0], [0, 0, 1], [1, 0, 0]], - ... [[1, 0, 1], [0, 1, 0], [1, 1, 0], [0, 0, 1], [1, 0, 0]]] - >>> preds = [[[1, 0, 0], [0, 1, 0], [0, 1, 1], [0, 0, 1], [1, 0, 0]], - ... [[0, 1, 1], [1, 0, 1], [1, 1, 0], [0, 0, 1], [1, 0, 0]]] + >>> target = [ + ... [[0, 1, 1], [1, 0, 1], [1, 1, 0], [0, 0, 1], [1, 0, 0]], + ... [[1, 0, 1], [0, 1, 0], [1, 1, 0], [0, 0, 1], [1, 0, 0]], + ... ] + >>> preds = [ + ... [[1, 0, 0], [0, 1, 0], [0, 1, 1], [0, 0, 1], [1, 0, 0]], + ... [[0, 1, 1], [1, 0, 1], [1, 1, 0], [0, 0, 1], [1, 0, 0]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() @@ -297,15 +312,23 @@ class Specificity(Metric, registry_key="specificity", force_register=True): >>> # (multiclass) >>> from cyclops.evaluate.metrics import Specificity >>> target = [0, 1, 2, 0, 1, 2] - >>> preds = [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75], - ... [0.35, 0.5, 0.15], [0.05, 0.9, 0.05], [0.05, 0.05, 0.9]] + >>> preds = [ + ... [0.9, 0.05, 0.05], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.2, 0.75], + ... [0.35, 0.5, 0.15], + ... [0.05, 0.9, 0.05], + ... [0.05, 0.05, 0.9], + ... ] >>> metric = Specificity(task="multiclass", num_classes=3) >>> metric(target, preds) array([1. , 0.75, 1. ]) >>> metric.reset_state() >>> target = [[0, 1, 1], [1, 2, 1]] - >>> preds = [[[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75]], - ... [[0.35, 0.5, 0.15], [0.25, 0.5, 0.25], [0.5, 0.05, 0.45]]] + >>> preds = [ + ... [[0.9, 0.05, 0.05], [0.05, 0.9, 0.05], [0.05, 0.2, 0.75]], + ... [[0.35, 0.5, 0.15], [0.25, 0.5, 0.25], [0.5, 0.05, 0.45]], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(t, p) >>> metric.compute() diff --git a/cyclops/evaluate/metrics/stat_scores.py b/cyclops/evaluate/metrics/stat_scores.py index f39180082..1b3fee8e9 100644 --- a/cyclops/evaluate/metrics/stat_scores.py +++ b/cyclops/evaluate/metrics/stat_scores.py @@ -206,10 +206,12 @@ class MulticlassStatScores(_AbstractScores, registry_key="multiclass_stat_scores array([[1, 0, 2, 1, 2], [1, 1, 2, 0, 1], [1, 0, 3, 0, 1]]) - >>> preds = [[0.16, 0.26, 0.58], - ... [0.22, 0.61, 0.17], - ... [0.71, 0.09, 0.20], - ... [0.05, 0.82, 0.13]] + >>> preds = [ + ... [0.16, 0.26, 0.58], + ... [0.22, 0.61, 0.17], + ... [0.71, 0.09, 0.20], + ... [0.05, 0.82, 0.13], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(target=t, preds=p) >>> metric.compute() @@ -300,8 +302,7 @@ class MultilabelStatScores(_AbstractScores, registry_key="multilabel_stat_scores [2, 0, 0, 0, 2]]) >>> metric.reset_state() >>> target = [[[0, 1, 1], [1, 0, 1]], [[0, 0, 1], [1, 1, 1]]] - >>> preds = [[[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]], - ... [[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]]] + >>> preds = [[[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]], [[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]]] >>> for t, p in zip(target, preds): ... metric.update_state(target=t, preds=p) >>> metric.compute() @@ -428,21 +429,21 @@ class StatScores(Metric, registry_key="stat_scores", force_register=True): >>> metric.reset_state() >>> target = [[2, 0, 2, 2, 1], [1, 1, 0, 2, 2]] >>> preds = [ - ... [ - ... [0.1, 0.2, 0.7], - ... [0.7, 0.1, 0.2], - ... [0.2, 0.7, 0.1], - ... [0.2, 0.7, 0.1], - ... [0.7, 0.2, 0.1], - ... ], - ... [ - ... [0.05, 0.15, 0.8], - ... [0.15, 0.05, 0.8], - ... [0.8, 0.15, 0.05], - ... [0.25, 0.7, 0.05], - ... [0.15, 0.7, 0.15], - ... ], - ... ] + ... [ + ... [0.1, 0.2, 0.7], + ... [0.7, 0.1, 0.2], + ... [0.2, 0.7, 0.1], + ... [0.2, 0.7, 0.1], + ... [0.7, 0.2, 0.1], + ... ], + ... [ + ... [0.05, 0.15, 0.8], + ... [0.15, 0.05, 0.8], + ... [0.8, 0.15, 0.05], + ... [0.25, 0.7, 0.05], + ... [0.15, 0.7, 0.15], + ... ], + ... ] >>> for t, p in zip(target, preds): ... metric.update_state(target=t, preds=p) >>> metric.compute() @@ -461,8 +462,7 @@ class StatScores(Metric, registry_key="stat_scores", force_register=True): [2, 0, 0, 0, 2]]) >>> metric.reset_state() >>> target = [[[0, 1, 1], [1, 0, 1]], [[0, 0, 1], [1, 1, 1]]] - >>> preds = [[[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]], - ... [[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]]] + >>> preds = [[[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]], [[0.1, 0.9, 0.8], [0.8, 0.2, 0.7]]] >>> for t, p in zip(target, preds): ... metric.update_state(target=t, preds=p) >>> metric.compute() diff --git a/cyclops/models/wrappers/pt_model.py b/cyclops/models/wrappers/pt_model.py index eb9804f96..14bc15308 100644 --- a/cyclops/models/wrappers/pt_model.py +++ b/cyclops/models/wrappers/pt_model.py @@ -1303,15 +1303,11 @@ def save_model(self, filepath: str, overwrite: bool = True, **kwargs): include_optimizer = kwargs.get("include_optimizer", True) if include_optimizer: - state_dict[ - "optimizer" - ] = self.optimizer_.state_dict() # type: ignore[attr-defined] + state_dict["optimizer"] = self.optimizer_.state_dict() # type: ignore[attr-defined] include_lr_scheduler = kwargs.get("include_lr_scheduler", True) if include_lr_scheduler: - state_dict[ - "lr_scheduler" - ] = self.lr_scheduler_.state_dict() # type: ignore[attr-defined] + state_dict["lr_scheduler"] = self.lr_scheduler_.state_dict() # type: ignore[attr-defined] epoch = kwargs.get("epoch", None) if epoch is not None: diff --git a/cyclops/report/report.py b/cyclops/report/report.py index 051c156f6..cc46f4029 100644 --- a/cyclops/report/report.py +++ b/cyclops/report/report.py @@ -669,7 +669,8 @@ def log_dataset( # sensitive features must be in features if features is None and sensitive_features is not None: assert all( - feature in features for feature in sensitive_features # type: ignore + feature in features + for feature in sensitive_features # type: ignore ), "All sensitive features must be in the features list." # TODO: plot dataset distribution diff --git a/cyclops/tasks/utils.py b/cyclops/tasks/utils.py index 4f161ef18..cb442e0bb 100644 --- a/cyclops/tasks/utils.py +++ b/cyclops/tasks/utils.py @@ -108,9 +108,7 @@ def prepare_models( models_dict = {model_name: models} # models contains one model name elif isinstance(models, str): - assert ( - models in list_models() - ), f"Model name is not registered! \ + assert models in list_models(), f"Model name is not registered! \ Available models are: {list_models()}" models_dict = {models: create_model(models)} # models contains a list or tuple of model names or wrapped models @@ -120,9 +118,7 @@ def prepare_models( model_name = _model_names_mapping.get(model.model.__name__) models_dict[model_name] = model elif isinstance(model, str): - assert ( - model in list_models() - ), f"Model name is not registered! \ + assert model in list_models(), f"Model name is not registered! \ Available models are: {list_models()}" models_dict[model] = create_model(model) else: diff --git a/docs/source/contributing.rst b/docs/source/contributing.rst index 5de74254b..95ba77181 100644 --- a/docs/source/contributing.rst +++ b/docs/source/contributing.rst @@ -19,8 +19,8 @@ hooks using: Coding guidelines ----------------- -For code style, we recommend the `google style -guide `__. +For code style, we recommend the `PEP 8 style +guide `__. For docstrings we use `numpy format `__. diff --git a/poetry.lock b/poetry.lock index b43c1ee66..54c49ac3f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -9108,4 +9108,4 @@ xgboost = ["xgboost"] [metadata] lock-version = "2.0" python-versions = ">=3.9, <3.11" -content-hash = "7c84fb05d57be10c95cdb18feba23a38440370406ac100793c5585d4730e277f" +content-hash = "15da0dfaa91408cc1ba11b1f846797215423b085899e817bf7e99287933a29cf" diff --git a/pyproject.toml b/pyproject.toml index 788f4576e..18e19264a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -94,7 +94,6 @@ optional = true [tool.poetry.group.test.dependencies] pytest = "^7.1.1" pre-commit = "^2.17.0" -black = "^22.1.0" pytest-cov = "^3.0.0" codecov = "^2.1.13" nbstripout = "^0.6.1" @@ -188,6 +187,12 @@ exclude = [ "use_cases", "nbs", ] + +[tool.ruff.format] +quote-style = "double" +indent-style = "space" +docstring-code-format = true + [tool.ruff.lint] select = [ "A", # flake8-builtins @@ -216,6 +221,7 @@ ignore = [ "D213", # Multi-line docstring summary should start at the second line "PLR2004", # Replace magic number with named constant "PLR0913", # Too many arguments + "COM812", # Missing trailing comma ] # Ignore import violations in all `__init__.py` files. diff --git a/tests/cyclops/evaluate/metrics/experimental/distributed_backends/test_mpi4py.py b/tests/cyclops/evaluate/metrics/experimental/distributed_backends/test_mpi4py.py index 672c4f5e8..9c0fc2fb1 100644 --- a/tests/cyclops/evaluate/metrics/experimental/distributed_backends/test_mpi4py.py +++ b/tests/cyclops/evaluate/metrics/experimental/distributed_backends/test_mpi4py.py @@ -38,7 +38,10 @@ def _test_mpi4py_class_init(rank: int, worldsize: int = NUM_PROCESSES): @pytest.mark.integration_test() def test_mpi4py_backend_class_init(): """Test `TorchDistributed` class.""" - pytest.mpi_pool.starmap(_test_mpi4py_class_init, [(rank, NUM_PROCESSES) for rank in range(NUM_PROCESSES)]) # type: ignore + pytest.mpi_pool.starmap( + _test_mpi4py_class_init, + [(rank, NUM_PROCESSES) for rank in range(NUM_PROCESSES)], + ) # type: ignore def _test_all_gather_simple(rank: int, worldsize: int = NUM_PROCESSES): @@ -89,7 +92,10 @@ def _test_all_gather_uneven_multidim_arrays(rank: int, worldsize: int = NUM_PROC ) def test_mpi4py_all_gather(case_fn): """Test `all_gather` method.""" - pytest.mpi_pool.starmap(case_fn, [(rank, NUM_PROCESSES) for rank in range(NUM_PROCESSES)]) # type: ignore + pytest.mpi_pool.starmap( + case_fn, + [(rank, NUM_PROCESSES) for rank in range(NUM_PROCESSES)], + ) # type: ignore def _test_dist_sum(rank: int, worldsize: int = NUM_PROCESSES) -> None: