Nesvilab / FragPipe

A cross-platform proteomics data analysis suite
http://fragpipe.nesvilab.org
Other
201 stars 38 forks source link

Only use CrystalC results in "Running a FragPipe-equivalent workflow on Linux"? #230

Closed lydiayliu closed 4 years ago

lydiayliu commented 4 years ago

Describe the bug I am following the instructions on "Running a FragPipe-equivalent workflow on Linux", here: https://msfragger.nesvilab.org/tutorial_linux.html

Specifically for Non-ion mobility data and open-search.

I have a question about the following lines:

# Move pepXML files to current directory.
mv $dataDirPath/*.pepXML ./

# Move MSFragger tsv files to current directory.
mv $dataDirPath/*.tsv ./ # Comment this line if localize_delta_mass = 0 in your fragger.params file.

# For open searches, run Crystal-C. Otherwise, don't run Crystal-C (comment this for-loop).
for myFile in ./*.pepXML
do
    java -Xmx64G -cp $crystalcPath Main $crystalcParameterPath $myFile
done

Essentially, this code instructs for the moving of MSFragger outputs to the working directory, and running CrystalC on the output pepXML, which I have done. But CrystalC creates a set of new pepXMLs in the same directory, each corresponding to one raw MSFeagger pepXML, and they are names *_c.pepXML.

But when continuing the pipeline, the instruction is to give Philosopher peptideprophet input as ./*.pepXML* `$philosopherPath peptideprophet --nonparam --expectscore --decoyprobs --masswidth 1000.0 --clevel -2 --decoy $decoyPrefix --combine --database $fastaPath ./.pepXML # Open search ` I'm confused at this step, does this mean I should input ALL pepXMLs** (those from MSFragger + those from CrystalC) to peptideprophet, or should this only be the *_c.pepXML outputted by CrystalC?

Thank you


If you're submitting a bug report, please attach log file

As I'm running the pipeline as is, peptideprophet took both sets of pepXML as input, and the pipeline died at the filter step.

$ $philosopherPath filter --sequential --razor --mapmods --tag $decoyPrefix --pepxml ./combined.pep.xml --protxml ./combined.prot.xml # Open search
+ philosopher filter --sequential --razor --mapmods --tag rev_ --pepxml ./combined.pep.xml --protxml ./combined.prot.xml
INFO[15:18:50] Executing Filter  v3.2.9                     
INFO[15:18:50] Processing peptide identification files      

INFO[15:33:31] 1+ Charge profile                             decoy=0 target=0
INFO[15:33:31] 2+ Charge profile                             decoy=508186 target=1890213
INFO[15:33:32] 3+ Charge profile                             decoy=422912 target=1209500
INFO[15:33:32] 4+ Charge profile                             decoy=116547 target=231305
INFO[15:33:32] 5+ Charge profile                             decoy=17857 target=26883
INFO[15:33:33] 6+ Charge profile                             decoy=0 target=0
INFO[15:33:58] Database search results                       ions=1133399 peptides=774286 psms=4423403
INFO[15:34:10] Converged to 0.00 % FDR with 0 PSMs           decoy=0 threshold=10 total=0
INFO[15:34:15] Converged to 0.00 % FDR with 0 Peptides       decoy=0 threshold=10 total=0
INFO[15:34:19] Converged to 0.00 % FDR with 0 Ions           decoy=0 threshold=10 total=0
INFO[15:37:07] Protein inference results                     decoy=61704 target=60910
ERRO[15:37:12] The protein FDR filter didn't reach the desired threshold, try a higher threshold using the --prot parameter 
panic: runtime error: index out of range [5884] with length 5884

goroutine 1 [running]:
philosopher/lib/fil.ProtXMLFilter(0x0, 0x0, 0x7ffdb50538c0, 0x4, 0xc1f56ce000, 0xaf59, 0xd733, 0xc1e9d31940, 0x11, 0x3f847ae147ae147b, ...)
        /workspace/philosopher/lib/fil/fdr.go:592 +0x1a7f
philosopher/lib/fil.processProteinIdentifications(0x0, 0x0, 0x7ffdb50538c0, 0x4, 0xc1f56ce000, 0xaf59, 0xd733, 0xc1e9d31940, 0x11, 0x3f847ae147ae147b, ...)
        /workspace/philosopher/lib/fil/fil.go:647 +0x339
philosopher/lib/fil.Run(0xc00002a4b0, 0x24, 0xc000024da8, 0x5, 0xc00002a4e0, 0x29, 0xc000022500, 0x14, 0xc000024dd0, 0xb, ...)
        /workspace/philosopher/lib/fil/fil.go:60 +0x1239
philosopher/cmd.glob..func5(0x86dc040, 0xc00018e5a0, 0x0, 0x9)
        /workspace/philosopher/cmd/filter.go:51 +0xa00
github.com/spf13/cobra.(*Command).execute(0x86dc040, 0xc00018e510, 0x9, 0x9, 0x86dc040, 0xc00018e510)
        /home/prvst/go/pkg/mod/github.com/spf13/cobra@v0.0.6/command.go:844 +0x29d
github.com/spf13/cobra.(*Command).ExecuteC(0x86ddfc0, 0x0, 0x0, 0x0)
        /home/prvst/go/pkg/mod/github.com/spf13/cobra@v0.0.6/command.go:945 +0x317
github.com/spf13/cobra.(*Command).Execute(...)
        /home/prvst/go/pkg/mod/github.com/spf13/cobra@v0.0.6/command.go:885
philosopher/cmd.Execute()
        /workspace/philosopher/cmd/root.go:35 +0x2d
main.main()
        /workspace/philosopher/main.go:22 +0x6e
fcyu commented 4 years ago

Yes, you are right. Should use *_c.pepXML. I will correct the script soon.

Thanks,

Fengchao