Skip to content

Commit bd70a3b

Browse files
committed
Add error handling if import data does not have all expected data
1 parent d6bf4b4 commit bd70a3b

2 files changed

Lines changed: 58 additions & 37 deletions

File tree

corems/mass_spectrum/input/massList.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,12 @@ def add_molecular_formula(self, mass_spec_obj, dataframe):
173173
mfobj.mspeak_index_mono_isotopic = int(dataframe.iloc[df_index]['Mono Isotopic Index'])
174174

175175
# Add the confidence score and isotopologue similarity and average MZ error score
176-
mfobj._mass_error_average_score = float(dataframe.iloc[df_index]['m/z Error Score'])
177-
mfobj._confidence_score = float(dataframe.iloc[df_index]['Confidence Score'])
178-
mfobj._isotopologue_similarity = float(dataframe.iloc[df_index]['Isotopologue Similarity'])
176+
if 'm/z Error Score' in dataframe:
177+
mfobj._mass_error_average_score = float(dataframe.iloc[df_index]['m/z Error Score'])
178+
if 'Confidence Score' in dataframe:
179+
mfobj._confidence_score = float(dataframe.iloc[df_index]['Confidence Score'])
180+
if 'Isotopologue Similarity' in dataframe:
181+
mfobj._isotopologue_similarity = float(dataframe.iloc[df_index]['Isotopologue Similarity'])
179182
mass_spec_obj[ms_peak_index].add_molecular_formula(mfobj)
180183

181184

Lines changed: 52 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,74 @@
1+
import shutil
2+
13
from corems.mass_spectrum.input.numpyArray import ms_from_array_centroid
24
from corems.molecular_id.search.molecularFormulaSearch import SearchMolecularFormulas
35
from corems.encapsulation.factory.parameters import MSParameters
46
from corems.mass_spectrum.output.export import HighResMassSpecExport
57
from corems.mass_spectrum.input.coremsHDF5 import ReadCoreMSHDF_MassSpectrum
68

9+
710
def prep_mass_spec_obj():
811
# Test for generating accurate molecular formula from a single mass using the local sql database
912
# Now also tests that it is handling isotopes correctly (for non-adducts)
1013
mz = [760.58156938877, 761.58548]
1114
abundance = [1000, 400]
12-
rp, s2n = [[1, 1],[10, 10]]
13-
14-
MSParameters.mass_spectrum.noise_threshold_method = 'relative_abundance'
15-
MSParameters.mass_spectrum.noise_threshold_absolute_abundance = 0
16-
17-
MSParameters.molecular_search.url_database = ''
18-
MSParameters.molecular_search.error_method = 'None'
19-
MSParameters.molecular_search.min_ppm_error = -5
15+
rp, s2n = [[1, 1], [10, 10]]
16+
17+
MSParameters.mass_spectrum.noise_threshold_method = "relative_abundance"
18+
MSParameters.mass_spectrum.noise_threshold_absolute_abundance = 0
19+
20+
MSParameters.molecular_search.url_database = ""
21+
MSParameters.molecular_search.error_method = "None"
22+
MSParameters.molecular_search.min_ppm_error = -5
2023
MSParameters.molecular_search.max_ppm_error = 5
2124
MSParameters.molecular_search.mz_error_range = 1
22-
MSParameters.molecular_search.isProtonated = True
23-
MSParameters.molecular_search.isRadical= False
24-
MSParameters.molecular_search.isAdduct= False
25+
MSParameters.molecular_search.isProtonated = True
26+
MSParameters.molecular_search.isRadical = False
27+
MSParameters.molecular_search.isAdduct = False
2528

26-
usedatoms = {'C': (1,57) , 'H': (4,200), 'N': (0,1)}
29+
usedatoms = {"C": (1, 57), "H": (4, 200), "N": (0, 1)}
2730
MSParameters.molecular_search.usedAtoms = usedatoms
28-
mass_spectrum_obj = ms_from_array_centroid(mz, abundance, rp, s2n, 'single mf search', polarity=1, auto_process=True)
31+
mass_spectrum_obj = ms_from_array_centroid(
32+
mz, abundance, rp, s2n, "single mf search", polarity=1, auto_process=True
33+
)
2934
return mass_spectrum_obj
3035

36+
3137
def run_molecular_formula_search(mass_spectrum_obj):
3238
mass_spectrum_obj.molecular_search_settings.use_min_peaks_filter = False
3339
mass_spectrum_obj.molecular_search_settings.use_isotopologue_filter = False
34-
SearchMolecularFormulas(mass_spectrum_obj, find_isotopologues=True).run_worker_ms_peaks([mass_spectrum_obj[0]])
40+
SearchMolecularFormulas(
41+
mass_spectrum_obj, find_isotopologues=True
42+
).run_worker_ms_peaks([mass_spectrum_obj[0]])
3543
return mass_spectrum_obj
3644

37-
mass_spectrum_obj = prep_mass_spec_obj()
38-
mass_spectrum_obj = run_molecular_formula_search(mass_spectrum_obj)
39-
ms_df1 = mass_spectrum_obj.to_dataframe()
40-
assert mass_spectrum_obj[0][0].string == 'C56 H73 N1'
41-
assert ms_df1.shape == (2, 26)
42-
assert mass_spectrum_obj[1][0].string == 'C55 H73 N1 13C1'
43-
44-
exportMS = HighResMassSpecExport('my_mass_spec', mass_spectrum_obj)
45-
exportMS._output_type = 'hdf5'
46-
exportMS.save()
47-
48-
parser = ReadCoreMSHDF_MassSpectrum('my_mass_spec.hdf5')
49-
mass_spectrum_obj2 = parser.get_mass_spectrum(auto_process=True, load_settings=True)
50-
51-
# Below errors out:
52-
ms_df2 = mass_spectrum_obj2.to_dataframe()
53-
assert mass_spectrum_obj2[0][0].string == 'C56 H73 N1'
54-
assert ms_df2.shape == (2, 26)
55-
assert mass_spectrum_obj2[1][0].string == 'C55 H73 N1 13C1'
56-
45+
46+
def test_mass_spec_export_import_with_annote():
47+
mass_spectrum_obj = prep_mass_spec_obj()
48+
mass_spectrum_obj = run_molecular_formula_search(mass_spectrum_obj)
49+
ms_df1 = mass_spectrum_obj.to_dataframe()
50+
assert mass_spectrum_obj[0][0].string == "C56 H73 N1"
51+
assert ms_df1.shape == (2, 26)
52+
assert mass_spectrum_obj[1][0].string == "C55 H73 N1 13C1"
53+
54+
exportMS = HighResMassSpecExport("my_mass_spec", mass_spectrum_obj)
55+
exportMS._output_type = "hdf5"
56+
exportMS.save()
57+
58+
parser = ReadCoreMSHDF_MassSpectrum("my_mass_spec.hdf5")
59+
mass_spectrum_obj2 = parser.get_mass_spectrum(auto_process=True, load_settings=True)
60+
61+
ms_df2 = mass_spectrum_obj2.to_dataframe()
62+
assert mass_spectrum_obj2[0][0].string == "C56 H73 N1"
63+
assert ms_df2.shape == (2, 26)
64+
assert mass_spectrum_obj2[1][0].string == "C55 H73 N1 13C1"
65+
66+
# Remove the file
67+
shutil.rmtree(
68+
"my_mass_spec.hdf5",
69+
ignore_errors=True,
70+
)
71+
72+
73+
if __name__ == "__main__":
74+
test_mass_spec_export_import_with_annote()

0 commit comments

Comments
 (0)