From 2a92a3598207313557ab963014c08200fe767d36 Mon Sep 17 00:00:00 2001 From: abhi-0203 Date: Thu, 10 Sep 2026 04:38:34 +0000 Subject: [PATCH] fix: guard mzenumeration column check in _merge_filter_cardinality for MS1 data MS1 peak data does not have a 'mzenumeration' column (that column is added by MS2 processing at line 271). When CARDINALITY is applied to an MS1 condition, groupby(['scan', 'mzenumeration']) raises KeyError. Add a column-existence guard before the groupby so MS1 data returns unchanged, letting the cardinality qualifier be a no-op for MS1 scans. --- massql/msql_engine_filters.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/massql/msql_engine_filters.py b/massql/msql_engine_filters.py index 127034c..7dbe0c5 100644 --- a/massql/msql_engine_filters.py +++ b/massql/msql_engine_filters.py @@ -195,6 +195,10 @@ def _merge_filter_cardinality(condition, ms_df_list): # Figuring out the scans ms_peak_df = pd.concat(ms_df_list) + if "mzenumeration" not in ms_peak_df.columns: + # MS1 data does not have per-peak enumeration — cardinality filtering is not applicable + return ms_peak_df + enumeration_df = ms_peak_df.groupby(["scan", "mzenumeration"]).first().reset_index() enumeration_df = enumeration_df.groupby(["scan"]).count() enumeration_df = enumeration_df[enumeration_df["mzenumeration"] >= min_cardinality]