diff metfrag.py @ 4:eb581a101672 draft

planemo upload for repository https://github.com/computational-metabolomics/metfrag-galaxy commit 28da8cdf5f9cc45575b614a329da5790803e59c4
author tomnl
date Thu, 01 Aug 2019 09:02:47 -0400
parents 5ee936e570a7
children c53ed894d736
line wrap: on
line diff
--- a/metfrag.py	Tue Jun 25 06:02:26 2019 -0400
+++ b/metfrag.py	Thu Aug 01 09:02:47 2019 -0400
@@ -50,14 +50,20 @@
 parser.add_argument('--cores_top_level', default=1)
 parser.add_argument('--chunks', default=1)
 parser.add_argument('--meta_select_col', default='name')
+parser.add_argument('--skip_invalid_adducts',  action='store_true')
 
 parser.add_argument('--ScoreSuspectLists', default='')
 parser.add_argument('--MetFragScoreTypes', default="FragmenterScore,OfflineMetFusionScore")
 parser.add_argument('--MetFragScoreWeights', default="1.0,1.0")
 
+
 args = parser.parse_args()
 print(args)
 
+if os.stat(args.input_pth).st_size == 0:
+    exit('Input file empty')
+
+
 # Create temporary working directory
 if args.temp_dir:
     wd = args.temp_dir
@@ -119,6 +125,10 @@
     '[M+2ACN+H]+': 83.06037,
     '[M-H]-': -1.007276,
     '[M+Cl]-': 34.969402,
+    '[M+HCOO]-': 44.99819,
+    '[M-H+HCOOH]-': 44.99819,  # same as above but different style of writing adduct
+    '[M+CH3COO]-': 59.01385,
+    '[M-H+CH3COOH]-': 59.01385  # same as above but different style of writing adduct
 }
 
 # function to extract the meta data using the regular expressions
@@ -262,13 +272,14 @@
     # =============== Update param based on MSP metadata ======================
     # Replace param details with details from MSP if required
     if 'precursor_type' in meta_info and meta_info['precursor_type'] in adduct_types:
-
-        nm = float(meta_info['precursor_mz']) + adduct_types[meta_info['precursor_type']]
+        nm = float(meta_info['precursor_mz']) - adduct_types[meta_info['precursor_type']]
         paramd["PrecursorIonMode"] = int(round(adduct_types[meta_info['precursor_type']], 0))
+    elif not args.skip_invalid_adducts:
+        paramd["PrecursorIonMode"] = paramd['PrecursorIonModeDefault']
+        nm = float(meta_info['precursor_mz']) - paramd['nm_mass_diff_default']
     else:
-
-        paramd["PrecursorIonMode"] = paramd['PrecursorIonModeDefault']
-        nm = float(meta_info['precursor_mz']) + paramd['nm_mass_diff_default']
+        print('Skipping {}'.format(paramd["SampleName"]))
+        return '', ''
 
     paramd["NeutralPrecursorMass"] = nm
 
@@ -279,6 +290,7 @@
             cmd += " {}={}".format(str(k), str(v))
 
     # =============== Run metfrag ==============================================
+    print(cmd)
     # Filter before process with a minimum number of MS/MS peaks
     if plinesread >= float(args.minMSMSpeaks):
 
@@ -336,8 +348,9 @@
             spectrac += 1
             paramd, cmd = run_metfrag(meta_info, peaklist, args, wd, spectrac, adduct_types)
 
-            paramds[paramd["SampleName"]] = paramd
-            cmds.append(cmd)
+            if paramd:
+                paramds[paramd["SampleName"]] = paramd
+                cmds.append(cmd)
 
             meta_info = {}
             pnumlines = 0
@@ -348,9 +361,9 @@
 
         paramd, cmd = run_metfrag(meta_info, peaklist, args, wd, spectrac+1, adduct_types)
 
-        paramds[paramd["SampleName"]] = paramd
-        cmds.append(cmd)
-
+        if paramd:
+            paramds[paramd["SampleName"]] = paramd
+            cmds.append(cmd)