Mercurial > repos > goeckslab > image_learner
annotate plotly_plots.py @ 11:c5150cceab47 draft default tip
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
| author | goeckslab | 
|---|---|
| date | Sat, 18 Oct 2025 03:17:09 +0000 | 
| parents | 85e6f4b2ad18 | 
| children | 
| rev | line source | 
|---|---|
| 8 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 1 import json | 
| 11 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 2 from pathlib import Path | 
| 8 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 3 from typing import Dict, List, Optional | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 4 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 5 import numpy as np | 
| 11 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 6 import pandas as pd | 
| 8 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 7 import plotly.graph_objects as go | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 8 import plotly.io as pio | 
| 11 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 9 from constants import LABEL_COLUMN_NAME, SPLIT_COLUMN_NAME | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 10 from sklearn.metrics import auc, roc_curve | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 11 from sklearn.preprocessing import label_binarize | 
| 8 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 12 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 13 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 14 def build_classification_plots( | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 15 test_stats_path: str, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 16 training_stats_path: Optional[str] = None, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 17 ) -> List[Dict[str, str]]: | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 18 """ | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 19 Read Ludwig’s test_statistics.json and build three interactive Plotly panels: | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 20 - Confusion Matrix | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 21 - ROC-AUC | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 22 - Classification Report Heatmap | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 23 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 24 Returns a list of dicts, each with: | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 25 { | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 26 "title": <plot title>, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 27 "html": <HTML fragment for embedding> | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 28 } | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 29 """ | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 30 # --- Load test stats --- | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 31 with open(test_stats_path, "r") as f: | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 32 test_stats = json.load(f) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 33 label_stats = test_stats["label"] | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 34 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 35 # common sizing | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 36 cell = 40 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 37 n_classes = len(label_stats["confusion_matrix"]) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 38 side_px = max(cell * n_classes + 200, 600) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 39 common_cfg = {"displayModeBar": True, "scrollZoom": True} | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 40 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 41 plots: List[Dict[str, str]] = [] | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 42 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 43 # 0) Confusion Matrix | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 44 cm = np.array(label_stats["confusion_matrix"], dtype=int) | 
| 11 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 45 # Try to get actual class names from per_class_stats keys (which contain the real labels) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 46 pcs = label_stats.get("per_class_stats", {}) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 47 if pcs: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 48 labels = list(pcs.keys()) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 49 else: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 50 labels = label_stats.get("labels", [str(i) for i in range(cm.shape[0])]) | 
| 8 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 51 total = cm.sum() | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 52 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 53 fig_cm = go.Figure( | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 54 go.Heatmap( | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 55 z=cm, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 56 x=labels, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 57 y=labels, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 58 colorscale="Blues", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 59 showscale=True, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 60 colorbar=dict(title="Count"), | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 61 ) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 62 ) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 63 fig_cm.update_traces(xgap=2, ygap=2) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 64 fig_cm.update_layout( | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 65 title=dict(text="Confusion Matrix", x=0.5), | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 66 xaxis_title="Predicted", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 67 yaxis_title="Observed", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 68 yaxis_autorange="reversed", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 69 width=side_px, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 70 height=side_px, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 71 margin=dict(t=100, l=80, r=80, b=80), | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 72 ) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 73 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 74 # annotate counts and percentages | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 75 mval = cm.max() if cm.size else 0 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 76 thresh = mval / 2 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 77 for i in range(cm.shape[0]): | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 78 for j in range(cm.shape[1]): | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 79 v = cm[i, j] | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 80 pct = (v / total * 100) if total > 0 else 0 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 81 color = "white" if v > thresh else "black" | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 82 fig_cm.add_annotation( | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 83 x=labels[j], | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 84 y=labels[i], | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 85 text=f"<b>{v}</b>", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 86 showarrow=False, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 87 font=dict(color=color, size=14), | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 88 xanchor="center", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 89 yanchor="bottom", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 90 yshift=2, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 91 ) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 92 fig_cm.add_annotation( | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 93 x=labels[j], | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 94 y=labels[i], | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 95 text=f"{pct:.1f}%", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 96 showarrow=False, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 97 font=dict(color=color, size=13), | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 98 xanchor="center", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 99 yanchor="top", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 100 yshift=-2, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 101 ) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 102 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 103 plots.append({ | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 104 "title": "Confusion Matrix", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 105 "html": pio.to_html( | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 106 fig_cm, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 107 full_html=False, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 108 include_plotlyjs="cdn", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 109 config=common_cfg | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 110 ) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 111 }) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 112 | 
| 11 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 113 # 1) ROC-AUC Curves (Multi-class) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 114 roc_plot = _build_roc_auc_plot(test_stats_path, labels, common_cfg) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 115 if roc_plot: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 116 plots.append(roc_plot) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 117 | 
| 8 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 118 # 2) Classification Report Heatmap | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 119 pcs = label_stats.get("per_class_stats", {}) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 120 if pcs: | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 121 classes = list(pcs.keys()) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 122 metrics = ["precision", "recall", "f1_score"] | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 123 z, txt = [], [] | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 124 for c in classes: | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 125 row, trow = [], [] | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 126 for m in metrics: | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 127 val = pcs[c].get(m, 0) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 128 row.append(val) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 129 trow.append(f"{val:.2f}") | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 130 z.append(row) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 131 txt.append(trow) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 132 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 133 fig_cr = go.Figure( | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 134 go.Heatmap( | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 135 z=z, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 136 x=metrics, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 137 y=[str(c) for c in classes], | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 138 text=txt, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 139 texttemplate="%{text}", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 140 colorscale="Reds", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 141 showscale=True, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 142 colorbar=dict(title="Value"), | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 143 ) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 144 ) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 145 fig_cr.update_layout( | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 146 title="Classification Report", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 147 xaxis_title="", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 148 yaxis_title="Class", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 149 width=side_px, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 150 height=side_px, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 151 margin=dict(t=80, l=80, r=80, b=80), | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 152 ) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 153 plots.append({ | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 154 "title": "Classification Report", | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 155 "html": pio.to_html( | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 156 fig_cr, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 157 full_html=False, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 158 include_plotlyjs=False, | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 159 config=common_cfg | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 160 ) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 161 }) | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 162 | 
| 
85e6f4b2ad18
planemo upload for repository https://github.com/goeckslab/gleam.git commit 8a42eb9b33df7e1df5ad5153b380e20b910a05b6
 goeckslab parents: diff
changeset | 163 return plots | 
| 11 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 164 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 165 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 166 def _build_roc_auc_plot(test_stats_path: str, class_labels: List[str], config: dict) -> Optional[Dict[str, str]]: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 167 """ | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 168 Build an interactive ROC-AUC curve plot for multi-class classification. | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 169 Following sklearn's ROC example with micro-average and per-class curves. | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 170 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 171 Args: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 172 test_stats_path: Path to test_statistics.json | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 173 class_labels: List of class label names | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 174 config: Plotly config dict | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 175 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 176 Returns: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 177 Dict with title and HTML, or None if data unavailable | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 178 """ | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 179 try: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 180 # Get the experiment directory from test_stats_path | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 181 exp_dir = Path(test_stats_path).parent | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 182 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 183 # Load predictions with probabilities | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 184 predictions_path = exp_dir / "predictions.csv" | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 185 if not predictions_path.exists(): | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 186 return None | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 187 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 188 df_pred = pd.read_csv(predictions_path) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 189 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 190 if SPLIT_COLUMN_NAME in df_pred.columns: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 191 split_series = df_pred[SPLIT_COLUMN_NAME].astype(str).str.lower() | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 192 test_mask = split_series.isin({"2", "test", "testing"}) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 193 if test_mask.any(): | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 194 df_pred = df_pred[test_mask].reset_index(drop=True) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 195 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 196 if df_pred.empty: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 197 return None | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 198 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 199 # Extract probability columns (label_probabilities_0, label_probabilities_1, etc.) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 200 # or label_probabilities_<class_name> for string labels | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 201 prob_cols = [col for col in df_pred.columns if col.startswith('label_probabilities_') and col != 'label_probabilities'] | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 202 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 203 # Sort by class number if numeric, otherwise keep alphabetical order | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 204 if prob_cols and prob_cols[0].split('_')[-1].isdigit(): | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 205 prob_cols.sort(key=lambda x: int(x.split('_')[-1])) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 206 else: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 207 prob_cols.sort() # Alphabetical sort for string class names | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 208 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 209 if not prob_cols: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 210 return None | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 211 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 212 # Get probabilities matrix (n_samples x n_classes) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 213 y_score = df_pred[prob_cols].values | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 214 n_classes = len(prob_cols) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 215 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 216 y_true = None | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 217 candidate_cols = [ | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 218 LABEL_COLUMN_NAME, | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 219 f"{LABEL_COLUMN_NAME}_ground_truth", | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 220 f"{LABEL_COLUMN_NAME}__ground_truth", | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 221 f"{LABEL_COLUMN_NAME}_target", | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 222 f"{LABEL_COLUMN_NAME}__target", | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 223 ] | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 224 candidate_cols.extend( | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 225 [ | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 226 col | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 227 for col in df_pred.columns | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 228 if (col.startswith(f"{LABEL_COLUMN_NAME}_") or col.startswith(f"{LABEL_COLUMN_NAME}__")) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 229 and "probabilities" not in col | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 230 and "predictions" not in col | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 231 ] | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 232 ) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 233 for col in candidate_cols: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 234 if col in df_pred.columns and col not in prob_cols: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 235 y_true = df_pred[col].values | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 236 break | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 237 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 238 if y_true is None: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 239 desc_path = exp_dir / "description.json" | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 240 if desc_path.exists(): | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 241 try: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 242 with open(desc_path, 'r') as f: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 243 desc = json.load(f) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 244 dataset_path = desc.get('dataset', '') | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 245 if dataset_path and Path(dataset_path).exists(): | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 246 df_orig = pd.read_csv(dataset_path) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 247 if SPLIT_COLUMN_NAME in df_orig.columns: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 248 df_orig = df_orig[df_orig[SPLIT_COLUMN_NAME] == 2].reset_index(drop=True) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 249 if LABEL_COLUMN_NAME in df_orig.columns: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 250 y_true = df_orig[LABEL_COLUMN_NAME].values | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 251 if len(y_true) != len(df_pred): | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 252 print( | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 253 f"Warning: Test set size mismatch. Truncating to {len(df_pred)} samples for ROC plot." | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 254 ) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 255 y_true = y_true[:len(df_pred)] | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 256 else: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 257 print("Warning: Original dataset referenced in description.json is unavailable.") | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 258 except Exception as exc: # pragma: no cover - defensive | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 259 print(f"Warning: Failed to recover labels from dataset: {exc}") | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 260 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 261 if y_true is None or len(y_true) == 0: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 262 print("Warning: Unable to locate ground-truth labels for ROC plot.") | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 263 return None | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 264 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 265 if len(y_true) != len(y_score): | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 266 limit = min(len(y_true), len(y_score)) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 267 if limit == 0: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 268 return None | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 269 print(f"Warning: Aligning prediction and label lengths to {limit} samples for ROC plot.") | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 270 y_true = y_true[:limit] | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 271 y_score = y_score[:limit] | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 272 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 273 # Get actual class names from probability column names | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 274 actual_classes = [col.replace('label_probabilities_', '') for col in prob_cols] | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 275 display_classes = class_labels if len(class_labels) == n_classes else actual_classes | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 276 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 277 # Binarize the output following sklearn example | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 278 # Use actual class names if they're strings, otherwise use range | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 279 if isinstance(y_true[0], str): | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 280 y_test = label_binarize(y_true, classes=actual_classes) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 281 else: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 282 y_test = label_binarize(y_true, classes=list(range(n_classes))) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 283 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 284 # Handle binary classification case | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 285 if y_test.ndim != 2: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 286 y_test = np.atleast_2d(y_test) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 287 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 288 if n_classes == 2: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 289 if y_test.shape[1] == 1: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 290 y_test = np.hstack([1 - y_test, y_test]) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 291 elif y_test.shape[1] != 2: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 292 print("Warning: Unexpected label binarization shape for binary ROC plot.") | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 293 return None | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 294 elif y_test.shape[1] != n_classes: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 295 print("Warning: Label binarization did not produce expected class dimension; skipping ROC plot.") | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 296 return None | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 297 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 298 # Compute ROC curve and ROC area for each class (following sklearn example) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 299 fpr = dict() | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 300 tpr = dict() | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 301 roc_auc = dict() | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 302 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 303 for i in range(n_classes): | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 304 if np.sum(y_test[:, i]) > 0: # Check if class exists in test set | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 305 fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i]) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 306 roc_auc[i] = auc(fpr[i], tpr[i]) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 307 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 308 # Compute micro-average ROC curve and ROC area (sklearn example) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 309 fpr["micro"], tpr["micro"], _ = roc_curve(y_test.ravel(), y_score.ravel()) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 310 roc_auc["micro"] = auc(fpr["micro"], tpr["micro"]) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 311 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 312 # Create ROC curve plot | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 313 fig_roc = go.Figure() | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 314 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 315 # Colors for different classes | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 316 colors = [ | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 317 '#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 318 '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf' | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 319 ] | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 320 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 321 # Plot micro-average ROC curve first (most important) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 322 fig_roc.add_trace(go.Scatter( | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 323 x=fpr["micro"], | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 324 y=tpr["micro"], | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 325 mode='lines', | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 326 name=f'Micro-average ROC (AUC = {roc_auc["micro"]:.3f})', | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 327 line=dict(color='deeppink', width=3, dash='dot'), | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 328 hovertemplate=('<b>Micro-average ROC</b><br>' | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 329 'FPR: %{x:.3f}<br>' | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 330 'TPR: %{y:.3f}<br>' | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 331 f'AUC: {roc_auc["micro"]:.3f}<extra></extra>') | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 332 )) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 333 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 334 # Plot ROC curve for each class | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 335 for i in range(n_classes): | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 336 if i in roc_auc: # Only plot if class exists in test set | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 337 class_name = display_classes[i] if i < len(display_classes) else f"Class {i}" | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 338 color = colors[i % len(colors)] | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 339 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 340 fig_roc.add_trace(go.Scatter( | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 341 x=fpr[i], | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 342 y=tpr[i], | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 343 mode='lines', | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 344 name=f'{class_name} (AUC = {roc_auc[i]:.3f})', | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 345 line=dict(color=color, width=2), | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 346 hovertemplate=(f'<b>{class_name}</b><br>' | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 347 'FPR: %{x:.3f}<br>' | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 348 'TPR: %{y:.3f}<br>' | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 349 f'AUC: {roc_auc[i]:.3f}<extra></extra>') | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 350 )) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 351 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 352 # Add diagonal line (random classifier) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 353 fig_roc.add_trace(go.Scatter( | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 354 x=[0, 1], | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 355 y=[0, 1], | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 356 mode='lines', | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 357 name='Random Classifier', | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 358 line=dict(color='gray', width=1, dash='dash'), | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 359 hovertemplate='Random Classifier<br>AUC = 0.500<extra></extra>' | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 360 )) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 361 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 362 # Calculate macro-average AUC | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 363 class_aucs = [roc_auc[i] for i in range(n_classes) if i in roc_auc] | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 364 if class_aucs: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 365 macro_auc = np.mean(class_aucs) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 366 title_text = f"ROC Curves (Micro-avg = {roc_auc['micro']:.3f}, Macro-avg = {macro_auc:.3f})" | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 367 else: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 368 title_text = f"ROC Curves (Micro-avg = {roc_auc['micro']:.3f})" | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 369 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 370 fig_roc.update_layout( | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 371 title=dict(text=title_text, x=0.5), | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 372 xaxis_title="False Positive Rate", | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 373 yaxis_title="True Positive Rate", | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 374 width=700, | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 375 height=600, | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 376 margin=dict(t=80, l=80, r=80, b=80), | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 377 legend=dict( | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 378 x=0.6, | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 379 y=0.1, | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 380 bgcolor="rgba(255,255,255,0.9)", | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 381 bordercolor="rgba(0,0,0,0.2)", | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 382 borderwidth=1 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 383 ), | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 384 hovermode='closest' | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 385 ) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 386 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 387 # Set equal aspect ratio and proper range | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 388 fig_roc.update_xaxes(range=[0, 1.0]) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 389 fig_roc.update_yaxes(range=[0, 1.05]) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 390 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 391 return { | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 392 "title": "ROC-AUC Curves", | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 393 "html": pio.to_html( | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 394 fig_roc, | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 395 full_html=False, | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 396 include_plotlyjs=False, | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 397 config=config | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 398 ) | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 399 } | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 400 | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 401 except Exception as e: | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 402 print(f"Error building ROC-AUC plot: {e}") | 
| 
c5150cceab47
planemo upload for repository https://github.com/goeckslab/gleam.git commit 0fe927b618cd4dfc87af7baaa827034cc6813225
 goeckslab parents: 
8diff
changeset | 403 return None | 
