compomics / peptide-shaker

Interpretation of proteomics identification results
http://compomics.github.io/projects/peptide-shaker.html
48 stars 18 forks source link

Custom modifications and SearchCLI and PeptideShakerCLI #299

Closed chrishuges closed 6 years ago

chrishuges commented 6 years ago

Hi,

I am running into some difficulties when handling custom modifications in SearchCLU and PeptideShakerCLI. After looking around at ModificationsCLI a bit, I wasn't able to figure out how to work it correctly, so I ended up making a custom modification in the SearchGUI interface on Windows and porting the parameters file over to the CentOS server where I usually run these programs. The modification is for the TMT zero reagent. Although this modification has an accession in unimod (739), it does not have a name there. I made sure the file paths were correct in the file before using it.

The search seems to run ok. However, when I go to run PeptideShaker I get hit with the error shown below. I looked in the PeptideShaker log, and there isn't actually anything written there about this error. Any ideas?

Or even better, any help on getting a custom modification into SearchCLI (ideally without having to use the GUI) and having it work correctly if it is not listed in psi-mod?

Thanks! Chris

Importing PSMs from ch_15Feb2018_HEK293-TMT0_undCHARGE_2_MGF.comet.pep.xml

java.lang.NullPointerException

    at com.compomics.util.experiment.biology.Peptide.getPotentialModificationSites(Peptide.java:1039)

    at com.compomics.util.experiment.biology.PTMFactory.checkFixedModifications(PTMFactory.java:522)

    at eu.isas.peptideshaker.fileimport.PsmImporter.importAssumptions(PsmImporter.java:498)

    at eu.isas.peptideshaker.fileimport.PsmImporter.importPsm(PsmImporter.java:384)

    at eu.isas.peptideshaker.fileimport.PsmImporter.access$000(PsmImporter.java:68)

    at eu.isas.peptideshaker.fileimport.PsmImporter$PsmImporterRunnable.run(PsmImporter.java:1466)

    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)

    at java.util.concurrent.FutureTask.run(FutureTask.java:262)

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

    at java.lang.Thread.run(Thread.java:745)

Wed Feb 21 07:05:43 PST 2018 PeptideShaker Processing Canceled.

hbarsnes commented 6 years ago

Hi Chris,

To start with the last question first, at the moment there is no way to set up custom PTMs from the command line. This migth be possible in the next release though, but until then the recommended way is to create it via the GUI and use it on the command line. To use the created PTM on a different machine you have copy the file called ptmFactory-4.12.1.json, located in your .compomics folder, to the new machine.

Regarding the missing PSI-MS name in the Unimod mapping, you can leave this empty unless you plan to export the results as mzIdentML, because then the PSI-MS term is requried to properly annotate the PTM. Strange that this PTM does not have a name though. However, it should be safe to use the Unimod interim name instead, i.e. TMT. This what is used in the Ontology Lookup Service, for example.

Best regards, Harald

chrishuges commented 6 years ago

Hi Harald,

Just commenting on this issue again. Where does this .json folder live on a linux machine? If I create a custom modification in SearchGUI in Windows, how do I transfer this to another machine that has Linux on it to use in SearchCLI?

I looked in .compomics in my home directory, and a few other spots, and I cannot locate it.

Thanks, Chris

hbarsnes commented 6 years ago

Hi Chris,

You should be looking in the right folder. Unless you changed the default locations of the temp files: https://github.com/compomics/peptide-shaker/wiki/PeptideShakerCLI#e---pathsettingscli?

Note however that the tool will have to have been run at least once for the ptmFactory file to be created.

And yes, it should just be a matter of moving the json file from the Windows machine to the .compomics folder on the Linux machine.

A quick test to see if the wanted PTMs are available is to run the IdentificationParametersCLI with the only the -mods option: https://github.com/compomics/compomics-utilities/wiki/IdentificationParametersCLI#general-command-lines.

Best regards, Harald

chrishuges commented 6 years ago

Hi Harald,

I still can't seem to locate this file, even though the program has been run. I am running SearchCLI from a remote machine that accesses SearchCLI.jar from a directory mounted to that machine, so perhaps it is going somewhere unexpected.

Is there somewhere that the .compomics location is written or stored, such as a config file buried in SearchCLI that I can use to discover the location?

hbarsnes commented 6 years ago

Hi Chris,

I still can't seem to locate this file, even though the program has been run.

Can't you do a system wide search for files named ptmFactory-*.json?

Is there somewhere that the .compomics location is written or stored, such as a config file buried in SearchCLI that I can use to discover the location?

Only if you've changed the location via the command line or the graphical user interface. In thay case there will be a file called paths.txt inside the SearchGUI-X.Y.Z\resources\conf folder.

But if you are able to run the graphical user interface of SearchGUI you can also see the paths via Edit > Resource Settings.

Best regards, Harald

chrishuges commented 6 years ago

Thanks Harald. I still can't find it even after a search. I think it is getting stored on one of the mapped drives and it will take a lifetime to search them all.

I worked around it by just using PathSettingsCLI to set the ptm_configuration path to somewhere I wanted.

Cheers, Chris

hbarsnes commented 6 years ago

Hi Chris,

I worked around it by just using PathSettingsCLI to set the ptm_configuration path to somewhere I wanted.

That's a novel way of locating a file one cannot find: change the location and make a new copy in the new location... ;)

Best regards, Harald

jflucier commented 5 years ago

Hello,

I am trying to load new PTM on centos7 cluster as discussed in this thread but cant seem to get this done right. Here is the context:

`

copy fresh install on compute node

cp -r /nfs3_ib/ip32/home/xroucou_group/analysis/test/pej_newmodif/programs/SearchGUI-3.3.13/ $TEMPDIR/softwares/ cp -r /nfs3_ib/ip32/home/xroucou_group/analysis/test/pej_newmodif/programs/PeptideShaker-1.16.38/ $TEMPDIR/softwares/ cp /nfs3_ib/ip32/home/xroucou_group/apps/compomics/clean_install/ptmFactory-4.12.14.json $TEMPDIR/mods/

point to jar file

SEARCHGUI_JAR_PATH=$TEMPDIR/softwares/SearchGUI-3.3.13/SearchGUI-3.3.13.jar SHAKER_JAR_PATH=$TEMPDIR/softwares/PeptideShaker-1.16.38/PeptideShaker-1.16.38.jar PWIZ_PATH=/nfs3_ib/ip32/home/xroucou_group/apps_centos7/pwiz_release-3_0_8789

build db

java -cp $SEARCHGUI_JAR_PATH eu.isas.searchgui.cmd.FastaCLI \ -in $TEMPDIR/db/searchgui_db.fasta -decoy > $OUTPUT_DIR/logs/FastaCLI.log 2>&1

mxxml to mgf

$PWIZ_PATH/msconvert \ $__IN_DATASET \ --mgf --outdir $TEMPDIR/ --outfile "${__IN_DATASET_NAME}.mgf"

set ptm path

java -cp $SHAKER_JAR_PATH eu.isas.peptideshaker.cmd.PathSettingsCLI \ -ptm_configuration $TEMPDIR/mods/

create parameter file

java -cp $SHAKER_JAR_PATH eu.isas.peptideshaker.cmd.IdentificationParametersCLI \ -ms_low_mem_mode $MS_LOW_MEM_MODE \ -max_charge $MAX_CHARGE \ -xtandem_min_frag_mz $XTANDEM_MIN_FRAG_MZ \ -msgf_num_ptms $MSGF_NUM_PTMS \ -myrimatch_num_ptms $MYRIMATCH_NUM_PTMS \ -ms_amanda_instrument "'$MS_AMANDA_INSTRUMENT'" \ -comet_num_ptms $COMET_NUM_PTMS \ -comet_remove_meth $COMET_REMOVE_METH \ -tide_num_ptms $TIDE_NUM_PTMS \ -tide_use_neutral_losses $TIDE_USE_NEUTRAL_LOSSES \ -db $TEMPDIR/db/searchgui_db_concatenated_target_decoy.fasta \ -out $TEMPDIR/searchgui.parameters \ -enzyme "$ENZYME_LIST" \ -fixed_mods '"'"$FIXED_MODS"'"' \ -variable_mods '"'"$VARIABLE_MODS"'"' \ -frag_tol $FRAG_TOL \ -frag_ppm $FRAG_PPM \ -prec_tol $PREC_TOL \ -prec_ppm $__PREC_PPM \ -protein_fdr 0.001 \ -msgf_instrument $__MSGF_INSTRUMENT

`

The variable $__VARIABLE_MODS is set to Biotinylation of K, Biotinylation of N-termini.

When I execute IdentificationParametersCLI it returns an error the modification doesnt exist. However in path.txt, the ptm_configuration path is set well. Also if I grep json file I find the modification:

` [jflucier@ip15-mp2 QE_0817_10973]$ head -n 100 /nfs3_ib/ip32/home/xroucou_group/analysis/test/pej_newmodif/temp//temp_ms/QE_0817_10973/softwares/PeptideShaker-1.16.38/resources/conf/paths.txt peptideshaker_matches_directory=resources peptideshaker_user_preferences=/home/jflucier/.peptideshaker peptideshaker_exports=/home/jflucier/.peptideshaker unzip=default utilities_user_preferences=/home/jflucier/.compomics ptm_configuration=/nfs3_ib/ip32/home/xroucou_group/analysis/test/pej_newmodif/temp//temp_ms/QE_0817_10973/mods/ enzyme_configuration=default fasta_indexes=/home/jflucier/.compomics/proteins/indexes/ gene_mapping=/home/jflucier/.compomics/gene_mappings pride_annotation=/home/jflucier/.compomics/pride/ identification_parameters=/home/jflucier/.compomics

[jflucier@ip15-mp2 QE_0817_10973]$ grep -e 'Biotinylation of K' /nfs3_ib/ip32/home/xroucou_group/analysis/test/pej_newmodif/temp//temp_ms/QE_0817_10973/mods/ptmFactory-4.12.14.json "Biotinylation of K": { "name": "Biotinylation of K", "Biotinylation of K", `

Here is the identificationcli output:

` [jflucier@ip15-mp2 QE_0817_10973]$ java -cp $SHAKER_JAR_PATH eu.isas.peptideshaker.cmd.IdentificationParametersCLI \

-ms_low_mem_mode $MS_LOW_MEM_MODE \ -max_charge $MAX_CHARGE \ -xtandem_min_frag_mz $XTANDEM_MIN_FRAG_MZ \ -msgf_num_ptms $MSGF_NUM_PTMS \ -myrimatch_num_ptms $MYRIMATCH_NUM_PTMS \ -ms_amanda_instrument "'$MS_AMANDA_INSTRUMENT'" \ -comet_num_ptms $COMET_NUM_PTMS \ -comet_remove_meth $COMET_REMOVE_METH \ -tide_num_ptms $TIDE_NUM_PTMS \ -tide_use_neutral_losses $TIDE_USE_NEUTRAL_LOSSES \ -db $TEMPDIR/db/searchgui_db_concatenated_target_decoy.fasta \ -out $TEMPDIR/searchgui.parameters \ -enzyme "$ENZYME_LIST" \ -fixed_mods '"'"$FIXED_MODS"'"' \ -variable_mods '"'"$VARIABLE_MODS"'"' \ -frag_tol $FRAG_TOL \ -frag_ppm $FRAG_PPM \ -prec_tol $PREC_TOL \ -prec_ppm $__PREC_PPM \ -protein_fdr 0.001 \ -msgf_instrument $__MSGF_INSTRUMENT

An error occurred while parsing the variable modifications: PTM Biotinylation of K not found.

======================== Available Modifications:

........

` Thanks in asdvance for your help JF