Repository revision
16:545054b15d7c

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

msconvert tool metadata
Miscellaneous
msconvert
Convert and/or filter mass spectrometry files
msconvert
toolshed.g2.bx.psu.edu/repos/galaxyp/msconvert/msconvert/3.0.20287.3
3.0.20287.3
None
True
Version lineage of this tool (guids ordered most recent to oldest)
toolshed.g2.bx.psu.edu/repos/galaxyp/msconvert/msconvert/3.0.20287.3 (this tool)
toolshed.g2.bx.psu.edu/repos/galaxyp/msconvert/msconvert/3.0.20287.2
toolshed.g2.bx.psu.edu/repos/galaxyp/msconvert/msconvert/3.0.19052.1
toolshed.g2.bx.psu.edu/repos/galaxyp/msconvert/msconvert/3.0.19052.0
toolshed.g2.bx.psu.edu/repos/galaxyp/msconvert/msconvert/0.3.0
msconvert
Requirements (dependencies defined in the <requirements> tag set)
No requirements defined
Additional information about this tool
#import re
    #set $ext = $input.ext

    ## sanitize display name for use as temp filename
    #set basename = $re.sub(r'[^\w ,.\-+]','_',$input.element_identifier)

    #if $ext == 'wiff':
      ln -s '${input.extra_files_path}/wiff' '${basename}.wiff' &&
      ln -s '${input.extra_files_path}/wiff_scan' '${basename}.wiff.scan' &&
      #set inputmask = "'"+$basename+"'"
    #elif $ext.endswith('tar'):
      ln -s '$input' '${basename}' &&
      tar xf '${basename}' &&
      #set basename = $os.path.splitext($basename)[0]
      #if $ext.startswith('waters'):
        #set inputmask = '*.raw'
      #elif $ext.startswith('agilent') or $ext.startswith('bruker'):
        #set inputmask = '*.d'
      #elif $ext.startswith('wiff'):
        #set inputmask = '*.wiff *.wiff2'
      #else
        #raise RuntimeError("Unrecognized type of tar (${ext})")
      #end if
    #else
      ln -s '$input' '${basename}' &&
      #set inputmask = "'"+$basename+"'"
    #end if

    #if $data_processing.precursor_refinement.use_mzrefinement
      #set input_ident_name = ".".join((os.path.splitext($basename)[0], $data_processing.precursor_refinement.input_ident.ext))
      #set output_refinement_name = os.path.splitext($basename)[0] + '.mzRefinement.tsv'
      ln -s '$data_processing.precursor_refinement.input_ident' '$input_ident_name' &&
    #end if

    CAN_SUDO=\$(sudo -n -l > /dev/null 2> /dev/null; echo $?) &&
    if [ "\$CAN_SUDO" -eq "0" ]; then
      uid=`id -u` &&
      gid=`id -g` &&    
      WINE="wine64_anyuser";
    else
      WINE="wine64" &&
      ## create a writable copy of wine prefix (since copying fails for some html
      ## stderr and exit code is swallowed)
      export WINEPREFIX=\$(mktemp -d) &&
      (cp -a /wineprefix64/* \$WINEPREFIX 2> /dev/null || true);
    fi
    &&
    \$WINE msconvert ${inputmask}

    --outdir outputs
    --${output_type}
    $general_options.combineIonMobilitySpectra
    $general_options.simAsSpectra
    $general_options.srmAsSpectra
    $general_options.acceptZeroLengthSpectra
    $general_options.ignoreUnknownInstrumentError

    #if $general_options.scan_summing.do_scan_summing:
      --filter "scanSumming precursorTol=$general_options.scan_summing.precursorTol scanTimeTol=$general_options.scan_summing.scanTimeTol ionMobilityTol=$general_options.scan_summing.ionMobilityTol"
    #end if

    #if $general_options.multi_run_output.do_multi_run_output:
      #if len($general_options.multi_run_output.run_index_set) > 0
        --runIndexSet "
        #for $index in $general_options.multi_run_output.run_index_set
          [${index.from},${index.to}]
        #end for
        "
      #end if
    #else
      --runIndexSet $general_options.multi_run_output.runIndexSet
    #end if

    ## Strip sourceFile location since it is meaningless on HPC systems and causes problems with functional tests
    --stripLocationFromSourceFiles

    ## DATA PROCESSING FILTERS (NOTE: FOR VENDOR METHOD TO WORK, PEAK PICKING MUST BE THE FIRST FILTER!)
      #if $data_processing.peak_picking.pick_peaks
        --filter "peakPicking $data_processing.peak_picking.pick_peaks_algorithm msLevel=$data_processing.peak_picking.pick_peaks_ms_levels"
      #end if

      #if $data_processing.precursor_refinement.use_mzrefinement
      --filter "mzRefiner $input_ident_name
        msLevels=$data_processing.precursor_refinement.precursor_refinement_ms_levels
        thresholdScore=$data_processing.precursor_refinement.thresholdScore
        thresholdValue=$data_processing.precursor_refinement.thresholdValue
        thresholdStep=$data_processing.precursor_refinement.thresholdStep
        maxSteps=$data_processing.precursor_refinement.thresholdMaxSteps assumeHighRes=1"
      #end if

      #if str($data_processing.charge_state_calculation.charge_state_calculation_method) == "predictor"
      --filter "chargeStatePredictor
        overrideExistingCharge=$data_processing.charge_state_calculation.predictor_overrideExistingCharge
        minMultipleCharge=$data_processing.charge_state_calculation.minMultipleCharge
        maxMultipleCharge=$data_processing.charge_state_calculation.maxMultipleCharge
        singleChargeFractionTIC=$data_processing.charge_state_calculation.singleChargeFractionTIC
        maxKnownCharge=$data_processing.charge_state_calculation.maxKnownCharge"
      #else if str($data_processing.charge_state_calculation.charge_state_calculation_method) == "turbocharger"
      --filter "turbocharger
        minCharge=$data_processing.charge_state_calculation.minCharge
        maxCharge=$data_processing.charge_state_calculation.maxCharge
        precursorsBefore=$data_processing.charge_state_calculation.precursorsBefore
        precursorsAfter=$data_processing.charge_state_calculation.precursorsAfter
        halfIsoWidth=$data_processing.charge_state_calculation.halfIsoWidth
        defaultMinCharge=$data_processing.charge_state_calculation.defaultMinCharge
        defaultMaxCharge=$data_processing.charge_state_calculation.defaultMaxCharge"
      #end if

      #for threshold_entry in $data_processing.thresholds
        --filter "threshold $threshold_entry.threshold_type $threshold_entry.value $threshold_entry.orientation"
      #end for

      #if $data_processing.filter_mz_windows.do_mzwindow_filter
        --filter "mzWindow [$data_processing.filter_mz_windows.mz_window_from,$data_processing.filter_mz_windows.mz_window_to]"
      #end if

      #if $data_processing.etd_filtering.do_etd_filtering
        --filter "ETDFilter $data_processing.etd_filtering.remove_precursor
          $data_processing.etd_filtering.remove_charge_reduced
          $data_processing.etd_filtering.remove_neutral_loss
          $data_processing.etd_filtering.blanket_removal
          $data_processing.etd_filtering.matching_tolerance$data_processing.etd_filtering.matching_tolerance_units"
      #end if

      #if $data_processing.ms2denoise.denoise
        --filter "MS2Denoise $data_processing.ms2denoise.num_peaks $data_processing.ms2denoise.window_width $data_processing.ms2denoise.relax"
      #end if

      #if str($data_processing.ms2deisotope) == "true"
        --filter "MS2Deisotope"
      #end if

      #if $data_processing.demultiplex.demultiplex_on
        --filter "demultiplex massError=$data_processing.demultiplex.massError$data_processing.demultiplex.massErrorUnits nnlsMaxIter=$data_processing.demultiplex.nnlsMaxIter nnlsEps=$data_processing.demultiplex.nnlsEps noWeighting=$data_processing.demultiplex.noWeighting demuxBlockExtra=$data_processing.demultiplex.demuxBlockExtra variableFill=$data_processing.demultiplex.variableFill noSumNormalize=$data_processing.demultiplex.noSumNormalize optimization=$data_processing.demultiplex.optimization interpolateRT=$data_processing.demultiplex.interpolateRT minWindowSize=$data_processing.demultiplex.minWindowSize"
      #end if

    ## SCAN INCLUSION/EXCLUSION FILTERS
      #if str($filtering.activation) != "false"
      --filter "activation $filtering.activation"
      #end if

      #if len($filtering.indices) > 0
        --filter "index
        #for $index in $filtering.indices
          [${index.from},${index.to}]
        #end for
        "
      #end if

      #if len($filtering.scan_numbers) > 0
        --filter "scanNumber
        #for $scan_number in $filtering.scan_numbers
          [${scan_number.from},${scan_number.to}]
        #end for
        "
      #end if

      #if $filtering.strip_it.value
         --filter "stripIT"
      #end if

      #if $filtering.filter_ms_levels.do_ms_level_filter
        --filter "msLevel [$filtering.filter_ms_levels.ms_level_from, $filtering.filter_ms_levels.ms_level_to]"
      #end if

      #if str($filtering.polarity) != "false"
        --filter "polarity $filtering.polarity"
      #end if

      #if str($filtering.analyzer) != "false"
        --filter "analyzer $filtering.analyzer"
      #end if

      ## OUTPUT ENCODING
      #set $mz_encoding = str($settings.mz_encoding)
      #set $intensity_encoding = str($settings.intensity_encoding)
      #if $mz_encoding == $intensity_encoding
        #if $mz_encoding == "64"
          --64
        #else
          --32
        #end if
      #else
        --mz${mz_encoding}
        --inten${intensity_encoding}
      #end if

      #set binary_compression = str($settings.binary_compression)
      #if $binary_compression == "zlib"
        --zlib
      #else if $binary_compression == "numpressLinearPic"
        --numpressLinear --numpressPic
      #else if $binary_compression == "numpressLinearSlof"
        --numpressLinear --numpressSlof
      #else if $binary_compression == "numpressLinear"
        --numpressLinear
      #else if $binary_compression == "numpressPic"
        --numpressPic
      #else if $binary_compression == "numpressSlof"
        --numpressSlof
      #end if

      #if $settings.gzip_compression
        --gzip
      #end if

      #if $general_options.multi_run_output.do_multi_run_output == 'false':
        --outfile '${os.path.splitext($basename)[0]}'
      #end if
      && 
      if [ "\$CAN_SUDO" -eq "0" ]; then
        sudo chown -R \$uid:\$gid './';
      fi
      #if $general_options.multi_run_output.do_multi_run_output == 'false':
        && mv 'outputs/${os.path.splitext($basename)[0]}.${output_type}' '${output}'
      #else
        ## make mzML and mzXML extensions lower case (the Galaxy data type is ) otherwise detetion of the file
        ## this won't be necessay from Galaxy 21.01 https://github.com/galaxyproject/galaxy/pull/10803
        #if $output_type == 'mzML' or $output_type == 'mzXML'
          && find outputs/ -name "*.$output_type" | xargs -I "FILE" sh -c 'mv FILE outputs/\$(basename FILE .$output_type).#echo str($output_type).lower()
          ## a newline is needed after `#echo ...` therefore the `;'` on the next line
;'
        #end if
      #end if

      #if $data_processing.precursor_refinement.use_mzrefinement
        && mv '$output_refinement_name' '$output_refinement';
      #end if

    
None
False
Functional tests
name inputs outputs required files
Test-1 input: small.mzML
license_agreement: True
output_type: mzML
data_processing|peak_picking|pick_peaks_ms_levels: 1-
data_processing|peak_picking|pick_peaks_algorithm: cwt
data_processing|peak_picking|pick_peaks: true
name: value
small.mzML
value
Test-2 input: small.RAW
license_agreement: True
output_type: mzML
data_processing|peak_picking|pick_peaks_ms_levels: 1-
data_processing|peak_picking|pick_peaks_algorithm: vendor
data_processing|peak_picking|pick_peaks: true
name: value
small.RAW
value
Test-3 input: ThyroglobMRM000003.d.tar
license_agreement: True
output_type: mzML
general_options|combineIonMobilitySpectra: True
general_options|scan_summing|do_scan_summing: true
name: value
ThyroglobMRM000003.d.tar
value
Test-4 input: MassLynxTest.raw.tar
license_agreement: True
output_type: mzML
name: value
MassLynxTest.raw.tar
value
Test-5 input: AgilentMassHunterTest.d.tar
license_agreement: True
output_type: mzXML
name: value
AgilentMassHunterTest.d.tar
value
Test-6 input: BrukerBafTest.d.tar
license_agreement: True
output_type: mzML
data_processing|peak_picking|pick_peaks_ms_levels: 1-
data_processing|peak_picking|pick_peaks_algorithm: vendor
data_processing|peak_picking|pick_peaks: true
name: value
BrukerBafTest.d.tar
value
Test-7 input: SciexTest.wiff.tar
license_agreement: True
output_type: mzML
general_options|multi_run_output|runIndexSet: 0
general_options|multi_run_output|do_multi_run_output: false
name: value
SciexTest.wiff.tar
value
Test-8 input: SciexTest.wiff.tar
license_agreement: True
output_type: mzXML
filtering|indices_0|from: 0
filtering|indices_0|to: 499
general_options|srmAsSpectra: True
general_options|multi_run_output|runIndexSet: 0
general_options|multi_run_output|do_multi_run_output: false
name: value
SciexTest.wiff.tar
value
Test-9 input: SciexTest.wiff.tar
license_agreement: True
output_type: mzXML
filtering|indices_0|from: 0
filtering|indices_0|to: 499
general_options|srmAsSpectra: True
general_options|multi_run_output|runIndexSet: 1
general_options|multi_run_output|do_multi_run_output: false
name: value
SciexTest.wiff.tar
value
Test-10 input: SciexTest.wiff.tar
license_agreement: True
output_type: mzML
general_options|multi_run_output|run_index_set_0|from: 0
general_options|multi_run_output|run_index_set_0|to: 1
general_options|multi_run_output|do_multi_run_output: true
SciexTest.wiff.tar
Test-11 input: SciexTest.wiff.tar
license_agreement: True
output_type: mzML
general_options|multi_run_output|do_multi_run_output: true
SciexTest.wiff.tar
Test-12 input: small.mzML
license_agreement: True
output_type: mzML
data_processing|peak_picking|pick_peaks_ms_levels: 1
data_processing|peak_picking|pick_peaks_algorithm: cwt
data_processing|peak_picking|pick_peaks: true
name: value
small.mzML
value
Test-13 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mz5
settings|mz_encoding: 64
settings|intensity_encoding: 64
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-14 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzXML
settings|mz_encoding: 32
settings|intensity_encoding: 32
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-15 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
settings|binary_compression: numpressLinearPic
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-16 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
settings|binary_compression: numpressLinearSlof
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-17 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
settings|binary_compression: numpressLinear
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-18 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
settings|binary_compression: numpressPic
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-19 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
settings|binary_compression: numpressSlof
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-20 input: Rpal_01.mz5
license_agreement: True
output_type: mzML
data_processing|precursor_refinement|input_ident: Rpal_01.pepXML
data_processing|precursor_refinement|thresholdScore: mvh
data_processing|precursor_refinement|thresholdValue: 40-
data_processing|precursor_refinement|use_mzrefinement: true
settings|binary_compression: numpressLinearPic
name: value
name: value
Rpal_01.mz5
Rpal_01.pepXML
value
Test-21 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
data_processing|charge_state_calculation|predictor_overrideExistingCharge: True
data_processing|charge_state_calculation|minMultipleCharge: 2
data_processing|charge_state_calculation|maxMultipleCharge: 5
data_processing|charge_state_calculation|singleChargeFractionTIC: 0.95
data_processing|charge_state_calculation|maxKnownCharge: 8
data_processing|charge_state_calculation|charge_state_calculation_method: predictor
settings|binary_compression: numpressLinearPic
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-22 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
data_processing|charge_state_calculation|minCharge: 1
data_processing|charge_state_calculation|maxCharge: 5
data_processing|charge_state_calculation|precursorsBefore: 1
data_processing|charge_state_calculation|precursorsAfter: 1
data_processing|charge_state_calculation|halfIsoWidth: 1.5
data_processing|charge_state_calculation|defaultMinCharge: 1
data_processing|charge_state_calculation|defaultMaxCharge: 5
data_processing|charge_state_calculation|charge_state_calculation_method: turbocharger
settings|binary_compression: numpressLinearPic
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-23 input: D100930_yeast_SCX10S_rak_ft8E_pc_01.mz5
license_agreement: True
output_type: mzML
data_processing|etd_filtering|remove_precursor: true
data_processing|etd_filtering|remove_charge_reduced: true
data_processing|etd_filtering|remove_neutral_loss: false
data_processing|etd_filtering|blanket_removal: false
data_processing|etd_filtering|matching_tolerance: 50
data_processing|etd_filtering|matching_tolerance_units: PPM
data_processing|etd_filtering|do_etd_filtering: true
settings|binary_compression: numpressLinearPic
name: value
D100930_yeast_SCX10S_rak_ft8E_pc_01.mz5
value
Test-24 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
data_processing|thresholds_0|threshold_type: count
data_processing|thresholds_0|value: 100
data_processing|thresholds_0|orientation: most-intense
data_processing|thresholds_1|threshold_type: absolute
data_processing|thresholds_1|value: 1
data_processing|thresholds_1|orientation: most-intense
settings|binary_compression: numpressLinearPic
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-25 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
data_processing|filter_mz_windows|mz_window_from: 420
data_processing|filter_mz_windows|mz_window_to: 840
data_processing|filter_mz_windows|do_mzwindow_filter: true
settings|binary_compression: numpressLinearPic
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-26 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
data_processing|ms2denoise|num_peaks: 10
data_processing|ms2denoise|window_width: 40
data_processing|ms2denoise|relax: False
data_processing|ms2denoise|denoise: true
settings|binary_compression: numpressLinearPic
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-27 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
data_processing|ms2deisotope: True
settings|binary_compression: numpressLinearPic
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-28 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
filtering|activation: CID
settings|binary_compression: numpressLinearPic
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-29 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
filtering|indices_0|from: 2
filtering|indices_0|to: 4
filtering|indices_1|from: 10
filtering|indices_1|to: 10
filtering|indices_2|from: 13
filtering|indices_2|to: 15
settings|binary_compression: numpressLinearPic
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-30 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
filtering|strip_it: True
settings|binary_compression: numpressLinearPic
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-31 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
filtering|filter_ms_levels|ms_level_from: 2
filtering|filter_ms_levels|ms_level_to: 2
filtering|filter_ms_levels|do_ms_level_filter: true
settings|binary_compression: numpressLinearPic
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-32 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
filtering|polarity: positive
settings|binary_compression: numpressLinearPic
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-33 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
filtering|analyzer: IT
settings|binary_compression: numpressLinearPic
name: value
small-peakpicking-cwt-allMS.mzML
value
Test-34 input: small-peakpicking-cwt-allMS.mzML
license_agreement: True
output_type: mzML
filtering|scan_numbers_0|from: 3
filtering|scan_numbers_0|to: 5
filtering|scan_numbers_1|from: 11
filtering|scan_numbers_1|to: 11
filtering|scan_numbers_2|from: 14
filtering|scan_numbers_2|to: 16
settings|binary_compression: numpressLinearPic
name: value
small-peakpicking-cwt-allMS.mzML
value