diff --git a/scripts/detect_regressions.py b/scripts/detect_regressions.py
index 8f2dd8a961d1d30bb019481770d05b8f45202b9d..8ee38f9d6a5d26d2ecc2c707e3eee5cf20d94669 100644
--- a/scripts/detect_regressions.py
+++ b/scripts/detect_regressions.py
@@ -61,7 +61,7 @@ def main(args):
rng = result.columns[3:] # Whole history
else:
rng = result.columns[-days:]
- result = result.dropna(subset=rng)
+ result = result.dropna(subset=rng, how="all")
result = result.reset_index(drop=True)
ratio = result.copy()
@@ -87,15 +87,19 @@ def main(args):
currdate = dates[-(days - i)] # Make robust for shorter history
prevdate = dates[-(days - i + 1)]
- idx = ratio.groupby("format")[currdate].idxmax()
- all_indices.extend(idx.tolist())
-
- # Store worst case per format for plotting
- for f in formats:
- plotdata.loc[f, currdate] = ratio.iloc[idx[f]][currdate]
- plottext.loc[f, currdate] = (
- f"Job: {result.iloc[idx[f]]['job']}
Testcase: {result.iloc[idx[f]]['testcase']}
Max {measure} ratio: {ratio.iloc[idx[f]][currdate]:.2f}
Date: {currdate}"
- )
+ # Get max ratio per format, skip formats with no data on this date
+ col = ratio[["format", currdate]].dropna()
+ if not col.empty:
+ idx = col.groupby("format")[currdate].idxmax()
+ all_indices.extend(idx.tolist())
+
+ # Store worst case per format for plotting
+ for f in formats:
+ if f in idx.index:
+ plotdata.loc[f, currdate] = ratio.iloc[idx[f]][currdate]
+ plottext.loc[f, currdate] = (
+ f"Job: {result.iloc[idx[f]]['job']}
Testcase: {result.iloc[idx[f]]['testcase']}
Max {measure} ratio: {ratio.iloc[idx[f]][currdate]:.2f}
Date: {currdate}"
+ )
fig = make_subplots(
rows=5,