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,