1+ import shutil
2+
13from corems .mass_spectrum .input .numpyArray import ms_from_array_centroid
24from corems .molecular_id .search .molecularFormulaSearch import SearchMolecularFormulas
35from corems .encapsulation .factory .parameters import MSParameters
46from corems .mass_spectrum .output .export import HighResMassSpecExport
57from corems .mass_spectrum .input .coremsHDF5 import ReadCoreMSHDF_MassSpectrum
68
9+
710def 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+
3137def 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