Repository revision
5:ea02cc72f0b9

Repository 'openms_qualitycontrol'
hg clone https://toolshed.g2.bx.psu.edu/repos/galaxyp/openms_qualitycontrol

QualityControl tool metadata
Miscellaneous
Computes various QC metrics from many possible input files (only the consensusXML is required). The more optional files you provide, the more metrics you get
QualityControl
toolshed.g2.bx.psu.edu/repos/galaxyp/openms_qualitycontrol/QualityControl/3.1+galaxy0
3.1+galaxy0
None
True
Version lineage of this tool (guids ordered most recent to oldest)
toolshed.g2.bx.psu.edu/repos/galaxyp/openms_qualitycontrol/QualityControl/3.1+galaxy0 (this tool)
toolshed.g2.bx.psu.edu/repos/galaxyp/openms_qualitycontrol/QualityControl/2.8+galaxy0
toolshed.g2.bx.psu.edu/repos/galaxyp/openms_qualitycontrol/QualityControl/2.6+galaxy0
toolshed.g2.bx.psu.edu/repos/galaxyp/openms_qualitycontrol/QualityControl/2.5+galaxy0
QualityControl
Requirements (dependencies defined in the <requirements> tag set)
name version type
openms 3.1 package
openms-thirdparty 3.1 package
blast 2.14.1 package
ctdopts 1.5 package
Additional information about this tool
#def quote(s):
    #set $s = [ _ for _ in $s.split(" ") if _ != "" ]
    #set $q = False
    #for $i, $p in enumerate($s):
        #if $p == "":
            #continue
        #end if
        #if $p.startswith('"'):
            #set $q = True
        #end if
##        #if p.startswith('-'):
##            #set p = "\\" + p
##        #elif p.startswith('"-'):
##            #set p = "\\" + p[1:]
##        #end if
        #if not $q:
            #set $s[i] = '"%s"' % p
        #end if
        #if $p.endswith('"'):
            #set $q = False
        #end if
    #end for
    #return " ".join($s)
#end def
  
#def oms2gxyext(o)
    #set m={'txt': 'txt', 'tsv': 'tabular', 'bioml': 'xml', 'consensusXML': 'consensusxml', 'csv': 'csv', 'dta': 'dta', 'dta2d': 'dta2d', 'edta': 'edta', 'fa': 'fasta', 'fas': 'fasta', 'fasta': 'fasta', 'FASTA': 'fasta', 'featureXML': 'featurexml', 'featurexml': 'featurexml', 'html': 'html', 'HTML': 'html', 'idXML': 'idxml', 'json': 'json', 'kroenik': 'kroenik', 'mascotXML': 'mascotxml', 'mgf': 'mgf', 'mrm': 'mrm', 'ms': 'sirius.ms', 'ms2': 'ms2', 'msp': 'msp', 'mzData': 'mzdata', 'mzid': 'mzid', 'mzML': 'mzml', 'mzml': 'mzml', 'mzq': 'mzq', 'mzQC': 'mzqc', 'mzTab': 'mztab', 'mzXML': 'mzxml', 'novor': 'txt', 'obo': 'obo', 'oms': 'sqlite', 'omssaXML': 'idxml', 'osw': 'osw', 'OSW': 'osw', 'params': 'txt', 'paramXML': 'paramxml', 'peplist': 'peplist', 'pep.xml': 'pepxml', 'pepXML': 'pepxml', 'png': 'png', 'PNG': 'png', 'protXML': 'protxml', 'psms': 'psms', 'pqp': 'pqp', 'qcML': 'qcml', 'spec.xml': 'spec.xml', 'splib': 'splib', 'sqMass': 'sqmass', 'tandem.xml': 'tandem', 'trafoXML': 'trafoxml', 'traML': 'traml', 'TraML': 'traml', 'tab': 'tabular', 'raw': 'thermo.raw', 'xls': 'tsv', 'XML': 'xml', 'xml': 'xml', 'xquest.xml': 'xquest.xml', 'xsd': 'xsd', 'zip': 'zip'}
    #return m[o]
#end def
#def gxy2omsext(g)
    #set m={'txt': 'txt', 'tabular': 'tsv', 'xml': 'bioml', 'consensusxml': 'consensusXML', 'csv': 'csv', 'dta': 'dta', 'dta2d': 'dta2d', 'edta': 'edta', 'fasta': 'fa', 'featurexml': 'featureXML', 'html': 'html', 'idxml': 'idXML', 'json': 'json', 'kroenik': 'kroenik', 'mascotxml': 'mascotXML', 'mgf': 'mgf', 'mrm': 'mrm', 'sirius.ms': 'ms', 'ms2': 'ms2', 'msp': 'msp', 'mzdata': 'mzData', 'mzid': 'mzid', 'mzml': 'mzML', 'mzq': 'mzq', 'mzqc': 'mzQC', 'mztab': 'mzTab', 'mzxml': 'mzXML', 'obo': 'obo', 'sqlite': 'oms', 'osw': 'osw', 'paramxml': 'paramXML', 'peff': 'fasta', 'peplist': 'peplist', 'pepxml': 'pep.xml', 'png': 'png', 'protxml': 'protXML', 'psms': 'psms', 'pqp': 'pqp', 'qcml': 'qcML', 'spec.xml': 'spec.xml', 'splib': 'splib', 'sqmass': 'sqMass', 'tandem': 'tandem.xml', 'trafoxml': 'trafoXML', 'traml': 'traML', 'thermo.raw': 'raw', 'tsv': 'xls', 'xquest.xml': 'xquest.xml', 'xsd': 'xsd', 'zip': 'zip'}
    #return m[g]
#end def

#import re

## Preprocessing
mkdir in_cm &&
cp '$in_cm' 'in_cm/${re.sub("[^\w\-_]", "_", $in_cm.element_identifier)}.$gxy2omsext($in_cm.ext)' &&
#if $in_raw_cond.in_raw:
  mkdir in_raw_cond.in_raw &&
  #if $in_raw_cond.in_raw_select == "no"
  mkdir ${' '.join(["'in_raw_cond.in_raw/%s'" % (i) for i, f in enumerate($in_raw_cond.in_raw) if f])} && 
  ${' '.join(["cp '%s' 'in_raw_cond.in_raw/%s/%s.%s' && " % (f, i, re.sub('[^\w\-_]', '_', f.element_identifier), $gxy2omsext(f.ext)) for i, f in enumerate($in_raw_cond.in_raw) if f])}
  #else
  cp '$in_raw_cond.in_raw' 'in_raw_cond.in_raw/${re.sub("[^\w\-_]", "_", $in_raw_cond.in_raw.element_identifier)}.$gxy2omsext($in_raw_cond.in_raw.ext)' &&
  #end if
#end if
#if $in_postFDR_cond.in_postFDR:
  mkdir in_postFDR_cond.in_postFDR &&
  #if $in_postFDR_cond.in_postFDR_select == "no"
  mkdir ${' '.join(["'in_postFDR_cond.in_postFDR/%s'" % (i) for i, f in enumerate($in_postFDR_cond.in_postFDR) if f])} && 
  ${' '.join(["cp '%s' 'in_postFDR_cond.in_postFDR/%s/%s.%s' && " % (f, i, re.sub('[^\w\-_]', '_', f.element_identifier), $gxy2omsext(f.ext)) for i, f in enumerate($in_postFDR_cond.in_postFDR) if f])}
  #else
  cp '$in_postFDR_cond.in_postFDR' 'in_postFDR_cond.in_postFDR/${re.sub("[^\w\-_]", "_", $in_postFDR_cond.in_postFDR.element_identifier)}.$gxy2omsext($in_postFDR_cond.in_postFDR.ext)' &&
  #end if
#end if
#if "out_FLAG" in str($OPTIONAL_OUTPUTS).split(',')
  mkdir out &&
#end if
#if "out_cm_FLAG" in str($OPTIONAL_OUTPUTS).split(',')
  mkdir out_cm &&
#end if
#if "out_feat_FLAG" in str($OPTIONAL_OUTPUTS).split(',')
  mkdir out_feat &&
  mkdir ${' '.join(["'out_feat/%s'" % (i) for i, f in enumerate($in_postFDR_cond.in_postFDR) if f])} && 
#end if
#if $in_contaminants:
  mkdir in_contaminants &&
  cp '$in_contaminants' 'in_contaminants/${re.sub("[^\w\-_]", "_", $in_contaminants.element_identifier)}.$gxy2omsext($in_contaminants.ext)' &&
#end if
#if $in_fasta:
  mkdir in_fasta &&
  cp '$in_fasta' 'in_fasta/${re.sub("[^\w\-_]", "_", $in_fasta.element_identifier)}.$gxy2omsext($in_fasta.ext)' &&
#end if
#if $in_trafo_cond.in_trafo:
  mkdir in_trafo_cond.in_trafo &&
  #if $in_trafo_cond.in_trafo_select == "no"
  mkdir ${' '.join(["'in_trafo_cond.in_trafo/%s'" % (i) for i, f in enumerate($in_trafo_cond.in_trafo) if f])} && 
  ${' '.join(["cp '%s' 'in_trafo_cond.in_trafo/%s/%s.%s' && " % (f, i, re.sub('[^\w\-_]', '_', f.element_identifier), $gxy2omsext(f.ext)) for i, f in enumerate($in_trafo_cond.in_trafo) if f])}
  #else
  cp '$in_trafo_cond.in_trafo' 'in_trafo_cond.in_trafo/${re.sub("[^\w\-_]", "_", $in_trafo_cond.in_trafo.element_identifier)}.$gxy2omsext($in_trafo_cond.in_trafo.ext)' &&
  #end if
#end if

## Main program call

set -o pipefail &&
QualityControl -write_ctd ./ &&
python3 '$__tool_directory__/fill_ctd.py' 'QualityControl.ctd' '$args_json' '$hardcoded_json' &&
QualityControl -ini QualityControl.ctd
-in_cm
'in_cm/${re.sub("[^\w\-_]", "_", $in_cm.element_identifier)}.$gxy2omsext($in_cm.ext)'
#if $in_raw_cond.in_raw:
  -in_raw
  #if $in_raw_cond.in_raw_select == "no"
  ${' '.join(["'in_raw_cond.in_raw/%s/%s.%s'"%(i, re.sub('[^\w\-_]', '_', f.element_identifier), $gxy2omsext(f.ext)) for i, f in enumerate($in_raw_cond.in_raw) if f])}
  #else
  'in_raw_cond.in_raw/${re.sub("[^\w\-_]", "_", $in_raw_cond.in_raw.element_identifier)}.$gxy2omsext($in_raw_cond.in_raw.ext)'
  #end if
#end if
#if $in_postFDR_cond.in_postFDR:
  -in_postFDR
  #if $in_postFDR_cond.in_postFDR_select == "no"
  ${' '.join(["'in_postFDR_cond.in_postFDR/%s/%s.%s'"%(i, re.sub('[^\w\-_]', '_', f.element_identifier), $gxy2omsext(f.ext)) for i, f in enumerate($in_postFDR_cond.in_postFDR) if f])}
  #else
  'in_postFDR_cond.in_postFDR/${re.sub("[^\w\-_]", "_", $in_postFDR_cond.in_postFDR.element_identifier)}.$gxy2omsext($in_postFDR_cond.in_postFDR.ext)'
  #end if
#end if
#if "out_FLAG" in str($OPTIONAL_OUTPUTS).split(',')
  -out
  'out/output.${gxy2omsext("mztab")}'
#end if
#if "out_cm_FLAG" in str($OPTIONAL_OUTPUTS).split(',')
  -out_cm
  'out_cm/output.${gxy2omsext("consensusxml")}'
#end if
#if "out_feat_FLAG" in str($OPTIONAL_OUTPUTS).split(',')
  -out_feat
  ${' '.join(["'out_feat/%s/%s.%s'"%(i, re.sub('[^\w\-_]', '_', f.element_identifier), $gxy2omsext("featurexml")) for i, f in enumerate($in_postFDR_cond.in_postFDR) if f])}
#end if
#if $in_contaminants:
  -in_contaminants
  'in_contaminants/${re.sub("[^\w\-_]", "_", $in_contaminants.element_identifier)}.$gxy2omsext($in_contaminants.ext)'
#end if
#if $in_fasta:
  -in_fasta
  'in_fasta/${re.sub("[^\w\-_]", "_", $in_fasta.element_identifier)}.$gxy2omsext($in_fasta.ext)'
#end if
#if $in_trafo_cond.in_trafo:
  -in_trafo
  #if $in_trafo_cond.in_trafo_select == "no"
  ${' '.join(["'in_trafo_cond.in_trafo/%s/%s.%s'"%(i, re.sub('[^\w\-_]', '_', f.element_identifier), $gxy2omsext(f.ext)) for i, f in enumerate($in_trafo_cond.in_trafo) if f])}
  #else
  'in_trafo_cond.in_trafo/${re.sub("[^\w\-_]", "_", $in_trafo_cond.in_trafo.element_identifier)}.$gxy2omsext($in_trafo_cond.in_trafo.ext)'
  #end if
#end if
#if len(str($OPTIONAL_OUTPUTS).split(',')) == 0
  | tee '$stdout'
#end if

## Postprocessing
#if "out_FLAG" in str($OPTIONAL_OUTPUTS).split(',')
  && mv 'out/output.${gxy2omsext("mztab")}' '$out'
#end if
#if "out_cm_FLAG" in str($OPTIONAL_OUTPUTS).split(',')
  && mv 'out_cm/output.${gxy2omsext("consensusxml")}' '$out_cm'
#end if
#if "out_feat_FLAG" in str($OPTIONAL_OUTPUTS).split(',')
  ${' '.join(["&& mv -n 'out_feat/%(bn)s/%(id)s.%(gext)s' 'out_feat/%(bn)s/%(id)s'"%{"bn": i, "id": re.sub('[^\w\-_]', '_', f.element_identifier), "gext": $gxy2omsext("featurexml")} for i, f in enumerate($in_postFDR_cond.in_postFDR) if f])}
#end if
#if "ctd_out_FLAG" in $OPTIONAL_OUTPUTS
  && mv 'QualityControl.ctd' '$ctd_out'
#end if
None
False
Functional tests
name inputs outputs required files
Test-1 in_cm: QualityControl_1_in.consensusXML
in_raw_cond|in_raw: ['QualityControl_1_in1.mzML.gz', 'QualityControl_1_in2.mzML.gz', 'QualityControl_1_in3.mzML.gz']
in_postFDR_cond|in_postFDR: ['QualityControl_1_in1.featureXML', 'QualityControl_1_in2.featureXML', 'QualityControl_1_in3.featureXML']
in_contaminants: QualityControl_1.fasta
in_fasta: PeptideIndexer_1.fasta
in_trafo_cond|in_trafo: ['QualityControl_1_in1.trafoXML', 'QualityControl_1_in2.trafoXML', 'QualityControl_1_in3.trafoXML']
out_evd:
out_msms:
FragmentMassError|unit: auto
FragmentMassError|tolerance: 20.0
MS2_id_rate|assume_all_target: False
adv_opts|force: False
adv_opts|test: true
OPTIONAL_OUTPUTS: ['ctd_out_FLAG', 'out_FLAG', 'out_cm_FLAG']
name: value
name: value
name: value
QualityControl_1_in.consensusXML
QualityControl_1_in1.mzML.gz
QualityControl_1_in2.mzML.gz
QualityControl_1_in3.mzML.gz
QualityControl_1_in1.featureXML
QualityControl_1_in2.featureXML
QualityControl_1_in3.featureXML
QualityControl_1.fasta
PeptideIndexer_1.fasta
QualityControl_1_in1.trafoXML
QualityControl_1_in2.trafoXML
QualityControl_1_in3.trafoXML
value