X!Tandem and PeptideProphet on the Grid
Created: 2013-08-13 17:12:48
Last updated: 2013-09-04 07:21:10
The workflow performs the execution of X!Tandem and PeptideProphet from the TPP toolbox on the Grid. The execution is performed by the UNICORE Plugin for Taverna. mzXMLDecomposer/Composer is used to run the execution of X!Tandem in parallel. extract_values extract relevant information from thetandem.interact.pep.xml File. The file can then remain on the remote storage.
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 (9)
Name |
Description |
FASTA_File |
|
MME_minus |
|
MME_plus |
|
in |
|
P_VALUE |
|
cleavage |
|
fidelity |
|
mzXML_File |
|
nrOfDaughters |
|
Processors (14)
Name |
Type |
Description |
create_Params |
beanshell |
Scriptimport org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(input));
Document doc = db.parse(is);
String nodeName = doc.getDocumentElement().getNodeName();
NodeList biomlList = doc.getElementsByTagName("bioml");
System.out.println(biomlList.toString());
for (int i = 0; i < biomlList.getLength(); i++) {
Node node = biomlList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element bioml = (Element) node;
NodeList noteList = bioml.getElementsByTagName("note");
for (int j = 0; j < noteList.getLength(); j++) {
Node note = noteList.item(j);
if (note.getNodeType() == Node.ELEMENT_NODE) {
Element el = (Element) note;
String attribute1 = el.getAttribute("label");
if(attribute1.equals("spectrum, parent monoisotopic mass error minus")){
el.getFirstChild().setNodeValue(minus);
}
if(attribute1.equals("spectrum, parent monoisotopic mass error plus")){
el.getFirstChild().setNodeValue(plus);
}
if(attribute1.equals("spectrum, parent monoisotopic mass isotope error")){
el.getFirstChild().setNodeValue(error);
}
if(attribute1.equals("scoring, maximum missed cleavage sites")){
el.getFirstChild().setNodeValue(cleavage);
}
if(attribute1.equals("protein, cleavage semi")){
int s= Integer.parseInt(semi);
if(s==0){
el.getParentNode().removeChild(el);
}
}
}
}
}
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
File input_file = new File(directory+"params.xml");
StreamResult result = new StreamResult(input_file);
transformer.transform(source, result); |
tandem |
activity |
|
mzXMLComposer |
activity |
|
extract_values |
activity |
|
PeptideProphetTandem |
activity |
|
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 = "mzxml";
File[] fileObjList = dirObj.listFiles(new FileExtFilter(extension));
List filelist = new ArrayList();
for (int i = 0; i < fileObjList.length; i++) {
filelist.add(fileObjList[i].getAbsolutePath());
}
String extension1 = "zip";
File[] fileObjList1 = dirObj.listFiles(new FileExtFilter(extension1));
List filelist1 = new ArrayList();
for (int i = 0; i < fileObjList1.length; i++) {
fileObjList1[i].delete();
} |
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/home/sholl/Desktop/ProteomicsWF/ParallelWFVersion/mzxmlDecomposer_v0.96.jar |
pepxmlComposerExe |
stringconstant |
Value/home/sholl/Desktop/ProteomicsWF/ParallelWFVersion/pepxmlComposer_v0.96.jar |
runTandemExe |
stringconstant |
Value/home/sholl/Desktop/ProteomicsWF/ParallelWFVersion/mzxmlDecomposer_v0.96.jar |
tandem2xmlExe |
stringconstant |
Value/home/sholl/Desktop/ProteomicsWF/ParallelWFVersion/mzxmlDecomposer_v0.96.jar |
tandemExe |
stringconstant |
Value/home/sholl/Desktop/ProteomicsWF/ParallelWFVersion/mzxmlDecomposer_v0.96.jar |
indexmzXML |
beanshell |
ScriptString fullcommand =indexmzXML + " " + mzxmlFile ;
stdout = stdout + "running " + fullcommand + "\n";
exec(fullcommand);
File file1=new File(mzxmlFile);
File file3 = new File(mzxmlFile+".new");
if(file3.exists()){
boolean success= file1.delete();
}
File file2=new File(mzxmlFile);
file3.renameTo(file2);
File file = new File(mzxmlFile);
String zipCommand = "zip -j "+ mzxmlFile+".zip "+file.getAbsolutePath();
exec(zipCommand);
stdout = stdout + zipCommand; |
indexmzXML_value |
stringconstant |
ValueindexmzXMLExe |
Beanshells (4)
Name |
Description |
Inputs |
Outputs |
create_Params |
|
input
minus
plus
directory
cleavage
semi
|
input_file
|
mzxmlDecomposer |
|
mzxmlFile
nrOfDaughters
mzxmlDecomposerExe
outputDirectory
|
stdout
filelist
fileObjList
|
objectLogic |
|
nrOfDaughters
mzxmlFile
mzxmlDecomposerExe
tandemExe
runTandemExe
pepxmlComposerExe
tandem2xmlExe
|
nrOfDaughters
mzxmlFile
mzxmlDecomposerExe
tandemExe
runTandemExe
outputDirectory
pepxmlComposerExe
tandem2xmlExe
|
indexmzXML |
|
mzxmlFile
indexmzXML
|
file
stdout
|
Outputs (1)
Name |
Description |
num_corr_total |
|
Datalinks (27)
Source |
Sink |
MME_minus |
create_Params:minus |
MME_plus |
create_Params:plus |
in |
create_Params:input |
cleavage |
create_Params:cleavage |
fidelity |
create_Params:semi |
create_Params:input_file |
tandem:DEFAULT_KSCORE |
FASTA_File |
tandem:FASTA_LIB |
indexmzXML:file |
tandem:INPUT_MZXML |
tandem:OUTPUT |
mzXMLComposer:InputFiles |
PeptideProphetTandem:interact_file |
extract_values:OUT_INTERACT |
mzXMLComposer:OUTPUT |
PeptideProphetTandem:input |
FASTA_File |
PeptideProphetTandem:FastaFile |
P_VALUE |
PeptideProphetTandem:P_VALUE |
objectLogic:mzxmlFile |
mzxmlDecomposer:mzxmlFile |
objectLogic:outputDirectory |
mzxmlDecomposer:outputDirectory |
objectLogic:mzxmlDecomposerExe |
mzxmlDecomposer:mzxmlDecomposerExe |
objectLogic:nrOfDaughters |
mzxmlDecomposer:nrOfDaughters |
mzXML_File |
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:filelist |
indexmzXML:mzxmlFile |
indexmzXML_value:value |
indexmzXML:indexmzXML |
extract_values:2_num_correct |
num_corr_total |
Uploader
License
All versions of this Workflow are
licensed under:
Version 1
(of 1)
Credits (3)
(People/Groups)
Attributions (2)
(Workflows/Files)
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