Cloud Parallel Processing of Tandem Mass Spectrometry Based Proteomics Data: SpectraST
Created: 2012-09-10 12:20:30
A workflow for searching LC−MS/MS data using SpectraST on the cloud. The processor mzxmlDecomposer, pepxmlUnzip, and pepxmlComposer are identical to the one in the X!Tandem workflow (Figure 2). The only difference is that the Xtandem processor is exchanged with the Spectrast processor and the constant inputs are adjusted to SpectraST. This approach is also possible for other search engines as described in
Data Decomposition and Recomposition Algorithms.
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 SpectraST Workflow Version 1.0
This workflow runs SpectraST on the cloud. SpectraST is an open source library 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:
- spectrastParamerters: a string contains the command line parameters for SpectraST search.
- 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)
- indexmzxmlExe: a string indicates the full path to the indexmzxml 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 SpectraST.
- spectrastExe: a string indicates the full path to the SpectraST 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 the search.
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.
- NISTLibraryZipped: a string indicates the full path to the zipped search library files (including the .slip, .spidx and .pepidx files).
- 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 |
NISTLibraryZipped |
|
mzxmlFile |
|
nrOfDaughters |
|
Processors (10)
Name |
Type |
Description |
SpectraST |
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
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
String stdout = "beanshell \n";
String fullcommand = "java -version";
stdout = stdout + "running " + fullcommand + "\n";
Process p = null;
BufferedReader br = null;
p = Runtime.getRuntime().exec(fullcommand);
br = new BufferedReader(new InputStreamReader( p.getInputStream() ));
int c;
StringBuffer sb = new StringBuffer();
while ((c = br.read()) != -1) {
sb.append((char) c);
}
br.close();
stdout = stdout + sb.toString();
String fullcommand = "java -jar " + mzxmlDecomposerExe + " " + mzxmlFile + " " + nrOfDaughters + " " + outputDirectory;
stdout = stdout + "running " + fullcommand + "\n";
Process p = null;
BufferedReader br = null;
p = Runtime.getRuntime().exec(fullcommand);
br = new BufferedReader(new InputStreamReader( p.getInputStream() ));
int c;
StringBuffer sb = new StringBuffer();
while ((c = br.read()) != -1) {
sb.append((char) c);
}
br.close();
stdout = stdout + sb.toString();
//System.out.println( "Results: " + stdout);
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());
}
//System.out.println(filelist.toString()); |
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 NISTLibraryZipped = new File(NISTLibraryZipped);
File spectrastExe = new File(spectrastExe);
File indexmzxmlExe = new File(indexmzxmlExe);
String outputDirectory = mzxmlFile+"_spectrastResults";
String pepxmlComposerExe = pepxmlComposerExe;
String spectrastParamerters = spectrastParamerters;
|
spectrastParamerters |
stringconstant |
Value-sTAA -sA! -s_HOM4 -sR! |
pepxmlComposerExe |
stringconstant |
Value/media/sf_shared/workflows/cloud_paper/spectrastExperiment/pepxmlComposer.jar |
mzxmlDecomposerExe |
stringconstant |
Value/media/sf_shared/workflows/cloud_paper/spectrastExperiment/mzxmlSplitter.jar |
indexmzxmlExe |
stringconstant |
Value/media/sf_shared/workflows/cloud_paper/spectrastExperiment/indexmzXML |
spectrastExe |
stringconstant |
Value/media/sf_shared/workflows/cloud_paper/spectrastExperiment/spectrast |
Beanshells (3)
Name |
Description |
Inputs |
Outputs |
mzxmlDecomposer |
|
mzxmlFile
nrOfDaughters
mzxmlDecomposerExe
outputDirectory
|
stdout
filelist
fileObjList
|
pepxmlComposer |
|
pepxmlComposerExe
outputDirectory
|
stdout
|
objectLogic |
|
nrOfDaughters
mzxmlFile
mzxmlDecomposerExe
NISTLibraryZipped
spectrastExe
indexmzxmlExe
pepxmlComposerExe
spectrastParamerters
|
nrOfDaughters
mzxmlFile
mzxmlDecomposerExe
NISTLibraryZipped
spectrastExe
indexmzxmlExe
outputDirectory
pepxmlComposerExe
spectrastParamerters
|
Outputs (4)
Name |
Description |
pepxmlComposer_stdout |
|
unzipPepxml_stdout |
|
SpectraST_stdout |
|
mzxmlDecomposer_stdout |
|
Datalinks (25)
Source |
Sink |
objectLogic:NISTLibraryZipped |
SpectraST:NISTLibraryZipped |
mzxmlDecomposer:fileObjList |
SpectraST:mzXMLFileZipped |
objectLogic:indexmzxmlExe |
SpectraST:indexmzxmlExe |
objectLogic:spectrastExe |
SpectraST:spectrastExe |
objectLogic:spectrastParamerters |
SpectraST:spectrastParameters |
objectLogic:mzxmlFile |
mzxmlDecomposer:mzxmlFile |
objectLogic:mzxmlDecomposerExe |
mzxmlDecomposer:mzxmlDecomposerExe |
objectLogic:nrOfDaughters |
mzxmlDecomposer:nrOfDaughters |
objectLogic:outputDirectory |
mzxmlDecomposer:outputDirectory |
objectLogic:outputDirectory |
pepxmlComposer:outputDirectory |
objectLogic:pepxmlComposerExe |
pepxmlComposer:pepxmlComposerExe |
objectLogic:outputDirectory |
pepxmlUnzip:outputDirectory |
SpectraST:pepxmlFileZipped |
pepxmlUnzip:pepxmlFileZipped |
mzxmlFile |
objectLogic:mzxmlFile |
NISTLibraryZipped |
objectLogic:NISTLibraryZipped |
pepxmlComposerExe:value |
objectLogic:pepxmlComposerExe |
mzxmlDecomposerExe:value |
objectLogic:mzxmlDecomposerExe |
nrOfDaughters |
objectLogic:nrOfDaughters |
indexmzxmlExe:value |
objectLogic:indexmzxmlExe |
spectrastParamerters:value |
objectLogic:spectrastParamerters |
spectrastExe:value |
objectLogic:spectrastExe |
pepxmlComposer:stdout |
pepxmlComposer_stdout |
pepxmlUnzip:STDOUT |
unzipPepxml_stdout |
SpectraST:STDOUT |
SpectraST_stdout |
mzxmlDecomposer:stdout |
mzxmlDecomposer_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 (0)
(Workflows/Files)
None
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