@@ -248,11 +248,20 @@ def ms2prod_condition(condition, ms1_df, ms2_df, reference_conditions_register):
248248 mz_min = mz - mz_tol
249249 mz_max = mz + mz_tol
250250
251+ massdefect_min , massdefect_max = _get_massdefect_min (condition .get ("qualifiers" , None ))
251252 intensity_mask = _get_intensity_mask (ms2_df , condition .get ("qualifiers" , None ))
252253
253254 ms2_filtered_df = ms2_df [(ms2_df ["mz" ] > mz_min ) &
254255 (ms2_df ["mz" ] < mz_max ) &
255256 intensity_mask ]
257+
258+ if massdefect_min > 0 or massdefect_max < 1 :
259+ ms2_filtered_df ["mz_defect" ] = ms2_filtered_df ["mz" ] - ms2_filtered_df ["mz" ].astype (int )
260+
261+ ms2_filtered_df = ms2_filtered_df [
262+ (ms2_filtered_df ["mz_defect" ] > massdefect_min ) &
263+ (ms2_filtered_df ["mz_defect" ] < massdefect_max )
264+ ]
256265
257266 # Setting the intensity match register
258267 _set_intensity_register (ms2_filtered_df , reference_conditions_register , condition )
@@ -328,6 +337,7 @@ def ms2nl_condition(condition, ms1_df, ms2_df, reference_conditions_register):
328337 nl_min = mz - mz_tol
329338 nl_max = mz + mz_tol
330339
340+ massdefect_min , massdefect_max = _get_massdefect_min (condition .get ("qualifiers" , None ))
331341 intensity_mask = _get_intensity_mask (ms2_df , condition .get ("qualifiers" , None ))
332342
333343 ms2_filtered_df = ms2_df [
@@ -336,6 +346,14 @@ def ms2nl_condition(condition, ms1_df, ms2_df, reference_conditions_register):
336346 intensity_mask
337347 ]
338348
349+ if massdefect_min > 0 or massdefect_max < 1 :
350+ ms2_filtered_df ["mz_defect" ] = (ms2_filtered_df ["precmz" ] - ms2_filtered_df ["mz" ]) - (ms2_filtered_df ["precmz" ] - ms2_filtered_df ["mz" ]).astype (int )
351+
352+ ms2_filtered_df = ms2_filtered_df [
353+ (ms2_filtered_df ["mz_defect" ] > massdefect_min ) &
354+ (ms2_filtered_df ["mz_defect" ] < massdefect_max )
355+ ]
356+
339357 # Setting the intensity match register
340358 _set_intensity_register (ms2_filtered_df , reference_conditions_register , condition )
341359
@@ -402,6 +420,7 @@ def ms2prec_condition(condition, ms1_df, ms2_df, reference_conditions_register):
402420 (ms2_filtered_df ["precmz_defect" ] < massdefect_max )
403421 ]
404422 else :
423+ massdefect_min , massdefect_max = _get_massdefect_min (condition .get ("qualifiers" , None ))
405424 mz_tol = _get_mz_tolerance (condition .get ("qualifiers" , None ), mz )
406425 mz_min = mz - mz_tol
407426 mz_max = mz + mz_tol
@@ -411,6 +430,14 @@ def ms2prec_condition(condition, ms1_df, ms2_df, reference_conditions_register):
411430 (ms2_df ["precmz" ] < mz_max )
412431 ]
413432
433+ if massdefect_min > 0 or massdefect_max < 1 :
434+ ms2_filtered_df ["precmz_defect" ] = ms2_filtered_df ["precmz" ] - ms2_filtered_df ["precmz" ].astype (int )
435+
436+ ms2_filtered_df = ms2_filtered_df [
437+ (ms2_filtered_df ["precmz_defect" ] > massdefect_min ) &
438+ (ms2_filtered_df ["precmz_defect" ] < massdefect_max )
439+ ]
440+
414441 ms2_list .append (ms2_filtered_df )
415442
416443 if len (ms2_list ) == 1 :
@@ -494,7 +521,7 @@ def ms1_condition(condition, ms1_df, ms2_df, reference_conditions_register, ms1_
494521 (ms1_df ["mz" ] < mz_max ) &
495522 intensity_mask ]
496523
497- if massdefect_min > 0 or massdefect_max < 1 :
524+ if massdefect_min != 0 or massdefect_max != 1 :
498525 ms1_filtered_df ["mz_defect" ] = ms1_filtered_df ["mz" ] - ms1_filtered_df ["mz" ].astype (int )
499526
500527 ms1_filtered_df = ms1_filtered_df [
@@ -608,7 +635,7 @@ def ms1_filter(condition, ms1_df):
608635 (ms1_df ["mz" ] < mz_max ) &
609636 intensity_mask ]
610637
611- if massdefect_min > 0 or massdefect_max < 1 :
638+ if massdefect_min != 0 or massdefect_max != 1 :
612639 ms1_filtered_df ["mz_defect" ] = ms1_filtered_df ["mz" ] - ms1_filtered_df ["mz" ].astype (int )
613640
614641 ms1_filtered_df = ms1_filtered_df [
0 commit comments