Nesvilab / TMT-Integrator

A tool integrates channel abundances from multiple TMT samples and exports a general report for downstream analysis.
http://tmt-integrator.nesvilab.org
12 stars 1 forks source link

NumberFormatException running from FragPipe #14

Closed chambm closed 3 years ago

chambm commented 3 years ago
TmtIntegrator [Work dir: D:\test\Thermo\tmt10-ups-silac-ms3\fragpipe4]
java -Xmx12G -cp "D:\Downloads\fragpipe\tools\tmt-integrator-2.1.5.jar" TMTIntegrator D:\test\Thermo\tmt10-ups-silac-ms3\fragpipe4\tmt-integrator-conf.yml D:\test\Thermo\tmt10-ups-silac-ms3\fragpipe4\1\psm.tsv
Exception in thread "main" java.lang.NumberFormatException: For input string: "false"
    at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
    at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
    at java.base/java.lang.Double.parseDouble(Double.java:549)
    at TMTIntegrator.UpdateColumns(TMTIntegrator.java:497)
    at TMTIntegrator.main(TMTIntegrator.java:43)
Process 'TmtIntegrator' finished, exit code: 1
Version info:
FragPipe version 14.0
MSFragger version 3.1.1
Philosopher version 3.4.13 (build 1611589727)
TMT-Integrator 2.1.5 (which comes from the 2.1.15 release? Did the wrong zip get uploaded?)

psm-subset.txt tmt-integrator-conf.txt

I've managed to get quite a few different errors from TMT-Integrator running from FragPipe. Another one is when I set the replicate field in the Workflow tab. I then get a path error about annotation.tsv not existing.

huiyinc commented 3 years ago

Hi Matt,

The error says TMT-Integrator expects a Double value as the input, but your input is a string, "false". Maybe you could check your parameter file first. Also, we have a new release of TMT-Integrator: https://github.com/Nesvilab/TMT-Integrator/releases/tag/2.4.0 Can you please update your TMT-Integrator and try again? Thanks.

Huiyin

Matt Chambers notifications@github.com 於 2021年3月2日 上午4:14 寫道:



psm-subset.txt tmt-integrator-conf.txt TmtIntegrator [Work dir: D:\test\Thermo\tmt10-ups-silac-ms3\fragpipe4] java -Xmx12G -cp "D:\Downloads\fragpipe\tools\tmt-integrator-2.1.5.jar" TMTIntegrator D:\test\Thermo\tmt10-ups-silac-ms3\fragpipe4\tmt-integrator-conf.yml D:\test\Thermo\tmt10-ups-silac-ms3\fragpipe4\1\psm.tsv Exception in thread "main" java.lang.NumberFormatException: For input string: "false" at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054) at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110) at java.base/java.lang.Double.parseDouble(Double.java:549) at TMTIntegrator.UpdateColumns(TMTIntegrator.java:497) at TMTIntegrator.main(TMTIntegrator.java:43) Process 'TmtIntegrator' finished, exit code: 1

Version info: FragPipe version 14.0 MSFragger version 3.1.1 Philosopher version 3.4.13 (build 1611589727) TMT-Integrator 2.1.5 (which comes from the 2.1.15 release? Did the wrong zip get uploaded?)

I've managed to get quite a few different errors from TMT-Integrator running from FragPipe. Another one is when I set the replicate field in the Workflow tab. I then get a path error about annotation.tsv not existing.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/Nesvilab/TMT-Integrator/issues/14, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALAWWA4T65DFOPOOR3UTDBLTBPYR5ANCNFSM4YNHG55Q .

chambm commented 3 years ago

Same error with 2.4.0. The problem is the error doesn't tell me which parameter is causing the error (you'll probably want a try/catch around each parameter so you can say which one is causing an error).

This yml file came straight from FragPipe so if it's giving the wrong param type then it will be a FragPipe bug.

chambm commented 3 years ago

As far as I can tell the example config that comes with TMTIntegrator's release has the same data types as the FragPipe config. There's a new aggregation_method param in 2.4 that's missing in the FragPipe config, but if that's causing a NumberFormatException it's a TMTIntegrator bug.

diff --git "a/D:\\test\\Thermo\\tmt10-ups-silac-ms3\\fragpipe4\\1\\tmt-integrator-conf.yml" "b/D:\\Downloads\\tmt-i_param_v2.4.0.yml"
index d4c9a5c..3ac62c1 100644
--- "a/D:\\test\\Thermo\\tmt10-ups-silac-ms3\\fragpipe4\\1\\tmt-integrator-conf.yml"
+++ "b/D:\\Downloads\\tmt-i_param_v2.4.0.yml"
@@ -1,13 +1,13 @@
 tmtintegrator: 
-  add_Ref: 1
-
+  add_Ref: -1
+  aggregation_method: 0
   allow_overlabel: true
   allow_unlabeled: false
   best_psm: true
   channel_num: 10
-  groupby: 0
-  max_pep_prob_thres: 0.9
+  groupby: -1
+  max_pep_prob_thres: 0
   min_ntt: 0
   min_pep_prob: 0.9
   min_percent: 0.05
@@ -16,14 +16,14 @@ tmtintegrator:
   mod_tag: none
   ms1_int: true
   outlier_removal: true
   print_RefInt: false
   prot_exclude: none
-  prot_norm: 1
+  prot_norm: -1
   psm_norm: false
-  ref_tag: Bridge
+  ref_tag: pool
   top3_pep: true
   unique_gene: 0
   unique_pep: false
chambm commented 3 years ago

Ran it under jdb. Seems like it's actually having this error when reading the PSM file. Need more try/catch to localize these errors for users! :)

What's wrong with the psm-subset.txt file I posted? I only see false for the Is Unique and Is Used columns, which definitely seem boolean. Is the Purity column supposed to be all zeros and tab separated?

huiyinc commented 3 years ago

Hi Matt,

I have checked your psm-sub.txt and noticed that there is no sample names in the columns and the sample abundances are all zero (as the figure show below) fig

To me, it seems that the annotation file is not correctly specified and the Philosopher labelquant function is not executed. Are you processing the files via FragPipe? Or you process the files using command lines? Thanks.

Huiyin

Matt Chambers notifications@github.com 於 2021年3月3日 上午12:40 寫道:



Ran it under jdb. Seems like it's actually having this error when reading the PSM file. Need more try/catch to localize these errors for users! :)

What's wrong with the psm-subset.txt file I posted? I only see false for the Is Unique and Is Used columns, which definitely seem boolean. Is the Purity column supposed to be all zeros and tab separated?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Nesvilab/TMT-Integrator/issues/14#issuecomment-789043345, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALAWWAYNQV4RBSNKC3I7YILTBUIGDANCNFSM4YNHG55Q .

chambm commented 3 years ago

I think you've identified the problem. I changed from using RAW to mzML because TMT-Integrator only supports mzML files. It turns out these mzML files were filtered for only MS2s (they were originally created for just searching). Probably not a terribly uncommon mistake (at least for people who know how to create filtered mzMLs with msconvert). I suppose this messed up MS1 purity calculation too! So which step(s) of the pipeline here should be responsible for giving an appropriate warning/error that there are no MS1s and no MS3s in the input files even though it's set it to the TMT10-MS3 workflow in FragPipe? Is that on Philosopher, or on TMT-Integrator?

Why isn't TMT-Integrator able to read RAW files like MSFragger? If that feature isn't planned, can I port TMT-Integrator into ProteoWizard like I've done for DIA-Umpire (signal extraction)? That way it could read all the data formats ProteoWizard can.

anesvi commented 3 years ago

Hi Matt,

TMT-Integrator uses PSM.tsv files as input, and pexpects recursor ion intensity in them (from Philosopher labelfree) and Purity and TMT values (from Philosopher labelquant). Unfortunately Philosopher only can deal with mzML. So if mzML does not have MS1, that's a problem (we should add a check and print an error). We had other issues with mzML in the past, related to linking MS2 and MS3 scans (I think we sorted it out).

I agree not being able to use RAW for TMT workflow is a limitation. In the long run, we can use IonQuant to extract precursor ion intensities and Purity/TMT scores. IonQuant reads RAW and .d. Or move that to TMT-Integrator and read from there. So there are several possible routes here.

Alexey