EMSL-Computing / CoreMS

CoreMS is a comprehensive mass spectrometry software framework
BSD 2-Clause "Simplified" License
51 stars 25 forks source link

Fix min and max mz filtering in cut_mz_domain_noise #13

Open Kzra opened 1 year ago

Kzra commented 1 year ago

I noticed that changing the min_mz_noise and max_mz_noise parameters did not effect the baseline noise calculation when the threshold method was 'signal_noise'.

This seems to be fixed by changing the indexing in the cut_mz_domain_noise method in the NoiseThresholdCalc class. Because mz_exp_profile was ordered from high to low in my tests, the indexing in the following commands needed to be reversed.

So I changed

 low_mz_index = (where(self.mz_exp_profile >= min_mz_noise)[0][0])
 high_mz_index = (where(self.mz_exp_profile <= max_mz_noise)[-1][-1])

to:

low_mz_index = (where(self.mz_exp_profile >= min_mz_noise)[-1][-1])
high_mz_index = (where(self.mz_exp_profile <= max_mz_noise)[0][0]) 

I saw that there was an if statement at the end of the function which compares the low_mz_index and high_mz_index to determine the order of the slice. This implies that the order of mz_exp_profile is not always fixed, in which case a more flexible solution is required. Happy to implement this if this is the case, otherwise I think the current fix will be fine.

I also changed the if statement at the end of the function which had the low_mz_index and high_mz_index variables in the wrong order.

EDIT 07/03/23: Changed the first index to -1 for low_mz_index in case the mz_exp_profile is a 2D array

wkew commented 10 months ago

mz should be ordered from low to high mz by default now, so this may not be required anymore.