Cloud Parallel Processing of Tandem Mass Spectrometry Based Proteomics Data: X!Tandem
Created: 2012-09-10 09:49:08
A workflow for searching LC−MS/MS mass spectrometry data using X!Tandem on the cloud. The workflow consists of 5 processors. The objectLogic processor prepares all inputs in the right format, i.e. keeping or converting strings into file object according to the following processor. The mzxmlDecomposer and pepxmlComposer run the decomposing/recomposing algorithms. objectLogic, mzxmlDecomposer and pepxmlComposer are Beanshell processors and they run locally. Xtandem runs X!Tandem on a remote machine and pepxmlUnzip unzip the pepXML files to a local directory; both are Tool processors.
more details can be found here: http://pubs.acs.org/doi/abs/10.1021/pr300561q
Preview
Run
Run this Workflow in the Taverna Workbench...
Workflow Components
Authors (1)
Yassene Mohammed
Biomolecular Mass Spectrometry Unit
Department of Parasitology
Leiden University Medical Center
PO Box 9600, 2300 RC Leiden, The Netherlands
Email address: y.mohammed@lumc.nl |
Titles (1)
Descriptions (1)
Cloud X!Tandem Workflow Version 1.0
This workflow runs X!Tandem on the cloud. X!Tandem is an opensource database search engine for peptide identification, i.e. the mapping of each spectrum to a unique peptide or more peptides. The cloud here includes any Linux machine to which Taverna has an SSH access to. The workflow takes 5 fixed and 3 variable inputs.
The fixed inputs should normally be set once for multiple runs. These inputs are:
- mzxmlDecomposerExe: a string indicates the full path to the mzxmlDecomposer executable (mzxmlDecomposer_vXXX.jar)
- pepxmlComposerExe: a string indicates the full path to the pepxmlComposer executable (pepxmlComposer_vXXX.jar)
- runTandemExe: a string indicates the full path to the runTandem executable (runTandem_vXXX.jar)
- tandem2xmlExe: a string indicates the full path to the tandem2xml executable. This executable is part of the Trans Proteomics Pipeline (TPP) package and should be compiled for the cloud target machine, which the workflow will use to run X!Tandem.
- tandemExe: a string indicates the full path to the tandem (X!Tandem) executable. This executable is part of the Trans Proteomics Pipeline (TPP) package and should be compiled for the cloud target machine, which the workflow will use to run X!Tandem.
The three variable inputs are modified normally for each run. These are:
- nrOfDaughters: the number of intended daughter files. In order to use the available cloud machines/workers to their maximum, the noOfDaughters is ideally an integer factor of the available cloud workers.
- fastaFileZipped: a string indicates the full path to the zipped search data base in FASTA format.
- mzxmlFile: a string or a list of strings indicate the full path to the mzXML file(s).
The access to the cloud workers should be configured in the Too Invocation. This includes adding the IP address of the workers. More information about this can be found online in the Taverna documentation.
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License (CC BY-SA).
Copyright© 2012 Yassene Mohammed
Please send your feedback, questions, comments and suggestions for improvement to y.mohammed@lumc.nl
25 June 2012
Yassene |
Dependencies (0)
Inputs (3)
Name |
Description |
mzxmlFile |
|
fastaFileZipped |
|
nrOfDaughters |
|
Processors (10)
Name |
Type |
Description |
Xtandem |
externaltool |
|
mzxmlDecomposer |
beanshell |
Script// This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License (CC BY-SA).
// Copyright© 2012 Yassene Mohammed
// Please send your feedback, questions, comments and suggestions for improvement to y.mohammed@lumc.nl
// 25 June 2012
// Yassene
String stdout = "beanshell \n";
String fullcommand = "java -jar " + mzxmlDecomposerExe + " " + mzxmlFile + " " + nrOfDaughters + " " + outputDirectory;
stdout = stdout + "running " + fullcommand + "\n";
exec(fullcommand);
class FileExtFilter implements FileFilter {
public FileExtFilter(String ext) {
this.ext = ext;
}
public boolean accept(File file) {
return file.getName().endsWith(ext);
}
String ext = null;
}
File dirObj = new File(outputDirectory);
String extension = "zip";
File[] fileObjList = dirObj.listFiles(new FileExtFilter(extension));
List filelist = new ArrayList();
for (int i = 0; i < fileObjList.length; i++) {
filelist.add(fileObjList[i].getAbsolutePath());
} |
pepxmlComposer |
beanshell |
Script// This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License (CC BY-SA).
// Copyright© 2012 Yassene Mohammed
// Please send your feedback, questions, comments and suggestions for improvement to y.mohammed@lumc.nl
// 25 June 2012
// Yassene
String stdout = "beanshell \n";
File folder = new File(outputDirectory);
String fileslist= " ";
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++)
{
if (listOfFiles[i].isFile() && listOfFiles[i].getName().endsWith("pep.xml"))
{
fileslist = fileslist + " " + listOfFiles[i].getAbsolutePath();
}
}
String fullcommand = "java -jar " + pepxmlComposerExe + fileslist;
stdout = stdout + "running " + fullcommand + "\n";
exec(fullcommand);
for (int i = 0; i < listOfFiles.length; i++)
{
if (listOfFiles[i].isFile() && !(listOfFiles[i].getName().contains("composed")))
{
rm(listOfFiles[i].getAbsolutePath());
}
}
File folder = new File(outputDirectory);
String fileslist;
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++)
{
if (listOfFiles[i].isFile())
{
fileslist = listOfFiles[i].getName();
stdout= stdout + "\n" + fileslist;
}
}
|
pepxmlUnzip |
externaltool |
|
objectLogic |
beanshell |
Script// This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License (CC BY-SA).
// Copyright© 2012 Yassene Mohammed
// Please send your feedback, questions, comments and suggestions for improvement to y.mohammed@lumc.nl
// 25 June 2012
// Yassene
String nrOfDaughters = nrOfDaughters;
String mzxmlFile = mzxmlFile;
String mzxmlDecomposerExe = mzxmlDecomposerExe;
File fastaFileZipped = new File(fastaFileZipped);
File tandemExe = new File(tandemExe);
File runTandemExe = new File(runTandemExe);
String outputDirectory = mzxmlFile+"_xtandemResults";
String pepxmlComposerExe = pepxmlComposerExe;
File tandem2xmlExe = new File(tandem2xmlExe); |
mzxmlDecomposerExe |
stringconstant |
Value/media/sf_shared/workflows/cloud_paper/xtandemExperiment/mzxmlSplitter.jar |
pepxmlComposerExe |
stringconstant |
Value/media/sf_shared/workflows/cloud_paper/xtandemExperiment/pepxmlComposer.jar |
runTandemExe |
stringconstant |
Value/media/sf_shared/workflows/cloud_paper/xtandemExperiment/runTandem.jar |
tandem2xmlExe |
stringconstant |
Value/media/sf_shared/workflows/cloud_paper/xtandemExperiment/Tandem2XML |
tandemExe |
stringconstant |
Value/media/sf_shared/workflows/cloud_paper/xtandemExperiment/tandem.exe |
Beanshells (3)
Name |
Description |
Inputs |
Outputs |
mzxmlDecomposer |
|
mzxmlFile
nrOfDaughters
mzxmlDecomposerExe
outputDirectory
|
stdout
filelist
fileObjList
|
pepxmlComposer |
|
pepxmlComposerExe
outputDirectory
|
stdout
|
objectLogic |
|
nrOfDaughters
mzxmlFile
mzxmlDecomposerExe
fastaFileZipped
tandemExe
runTandemExe
pepxmlComposerExe
tandem2xmlExe
|
nrOfDaughters
mzxmlFile
mzxmlDecomposerExe
fastaFileZipped
tandemExe
runTandemExe
outputDirectory
pepxmlComposerExe
tandem2xmlExe
|
Outputs (4)
Name |
Description |
mzxmlDecomposer_stdout |
|
pepxmlComposer_stdout |
|
pepxmlUnzip_stdout |
|
Xtandem_stdout |
|
Datalinks (25)
Source |
Sink |
objectLogic:fastaFileZipped |
Xtandem:fastaFileZipped |
objectLogic:tandemExe |
Xtandem:tandemExe |
mzxmlDecomposer:fileObjList |
Xtandem:mzxmlFileZipped |
objectLogic:runTandemExe |
Xtandem:runTandemExe |
objectLogic:tandem2xmlExe |
Xtandem:tandem2xmlExe |
objectLogic:mzxmlFile |
mzxmlDecomposer:mzxmlFile |
objectLogic:outputDirectory |
mzxmlDecomposer:outputDirectory |
objectLogic:mzxmlDecomposerExe |
mzxmlDecomposer:mzxmlDecomposerExe |
objectLogic:nrOfDaughters |
mzxmlDecomposer:nrOfDaughters |
objectLogic:outputDirectory |
pepxmlComposer:outputDirectory |
objectLogic:pepxmlComposerExe |
pepxmlComposer:pepxmlComposerExe |
objectLogic:outputDirectory |
pepxmlUnzip:outputDirectory |
Xtandem:pepxmlFileZipped |
pepxmlUnzip:pepxmlFileZipped |
fastaFileZipped |
objectLogic:fastaFileZipped |
mzxmlFile |
objectLogic:mzxmlFile |
nrOfDaughters |
objectLogic:nrOfDaughters |
tandemExe:value |
objectLogic:tandemExe |
tandem2xmlExe:value |
objectLogic:tandem2xmlExe |
runTandemExe:value |
objectLogic:runTandemExe |
pepxmlComposerExe:value |
objectLogic:pepxmlComposerExe |
mzxmlDecomposerExe:value |
objectLogic:mzxmlDecomposerExe |
mzxmlDecomposer:stdout |
mzxmlDecomposer_stdout |
pepxmlComposer:stdout |
pepxmlComposer_stdout |
pepxmlUnzip:STDOUT |
pepxmlUnzip_stdout |
Xtandem:STDOUT |
Xtandem_stdout |
Coordinations (1)
Controller |
Target |
pepxmlUnzip |
pepxmlComposer |
Uploader
License
All versions of this Workflow are
licensed under:
Version 1
(of 1)
Credits (1)
(People/Groups)
Attributions (0)
(Workflows/Files)
None
Shared with Groups (0)
None
Featured In Packs (0)
None
Log in to add to one of your Packs
Attributed By (2)
(Workflows/Files)
Favourited By (0)
No one
Statistics
Other workflows that use similar services
(0)
There are no workflows in myExperiment that use similar services to this Workflow.
Comments (0)
No comments yet
Log in to make a comment