view macros.xml @ 20:2a57fc28ef3a draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/hicexplorer commit fa140a9f660eab2459e21b0b637b129d7de24c02
author iuc
date Tue, 10 Jan 2023 18:58:18 +0000
parents 5aa5ef83f975
children 36dfa2825a59
line wrap: on
line source

<macros>
    <token name="@THREADS@">\${GALAXY_SLOTS:-4}</token>
    <token name="@TOOL_VERSION@">3.6</token>
    <token name="@VERSION_SUFFIX@">1</token>
    <token name="@USE_RANGE@">
        #if $use_range.select_use_range == "yes_use_range":
            --range $use_range.range_min:$use_range.range_max
        #end if
    </token>

    <xml name="requirements">
        <requirements>
            <requirement type="package" version="@TOOL_VERSION@">hicexplorer</requirement>
            <yield />
        </requirements>
        <version_command>@BINARY@ --version</version_command>
    </xml>

    <token name="@CHROMOSOME_LIST@">
        #if $chromosome_list:
            #set $chromosomes = []
            #for $chrom in $chromosome_list:
                #silent $chromosomes.append("'%s'" % $chrom.chromosomes)
            #end for
            #set $chromosome_string = ' '.join($chromosomes)
            --chromosomes $chromosome_string
        #end if
    </token>

    <xml name="chromosome_list">
        <repeat name="chromosome_list" min="0" title="Chromosomes to include" help="Chromosomes to include in the analysis. If not set, all chromosomes are included.">
            <param argument="--chromosomes" type="text" value="">
                <validator type="empty_field" />
            </param>
        </repeat>
    </xml>

    <xml name="citations">
        <citations>
            <citation type="doi">10.5281/zenodo.1133705</citation>
            <yield />
        </citations>
    </xml>
    <xml name="dpi">
        <param argument='--dpi' type='integer' optional='true' min="10" max="1000" label='DPI for image' help='Change the default resolution of the plot.' />
    </xml>

    <xml name="restrictionCutFile">
        <param argument="--restrictionCutFile" type="data" format="bed" optional="false" label="BED file with all restriction cut places" help="Should contaion only  mappable restriction sites. If given, the bins are set to match the restriction fragments
                (i.e. the region between one restriction site and the next)." />
    </xml>

    <xml name="restrictionSequence">
        <param argument="--restrictionSequence" type="text" optional="false" label="Sequence of the restriction site" help="This is used to discard reads that end/start with such sequence and that are considered un-ligated fragments or
            &quot;dangling-ends&quot;. If not given, such statistics will not be available.">
            <validator type="expression" message="Only alphabetic characters (a-z) are allowed.">value.isalpha()</validator>
        </param>
    </xml>
    <xml name="danglingSequence">
        <param argument="--danglingSequence" type="text" optional="false" label="Dangling sequence" help="Sequence left by the restriction enzyme after cutting.
                    Each restriction enzyme recognizes a different DNA sequence and,
                    after cutting, they leave behind a specific ‘sticky’ end or dangling end sequence.
                    For example, for HindIII the restriction site is AAGCTT and the dangling end is AGCT.
                    For DpnII, the restriction site and dangling end sequence are the same: GATC.
                    This information is easily found on the description of the restriction enzyme.
                    The dangling sequence is used to classify and report reads whose 5’ end starts with such sequence as dangling-end reads.
                    A significant portion of dangling-end reads in a sample are indicative of a problem with the re-ligation step of the protocol. ">
            <validator type="expression" message="Only alphabetic characters (a-z) are allowed.">value.isalpha()</validator>
        </param>
    </xml>

    <xml name="zMax">
        <param argument="--zMax" name="zMax" type="float" optional="true" label="zMax for 3D plot" />
        <!-- this should only be enabled when both or 3d is selected for param whatToShow -->
    </xml>
    <xml name="use_range">
        <conditional name="use_range">            <!-- argparse specifies one argument of type min_range:max_range -->
            <param name="select_use_range" argument="--range" type="select" label="Range restriction (in bp)" help="If given, only counts within the specified range are considered.">
                <option value="no_use_range">No restriction</option>
                <option value="yes_use_range">Only consider counts within a range</option>
            </param>
            <when value="no_use_range" />
            <when value="yes_use_range">
                <expand macro='range' />
            </when>
        </conditional>
    </xml>

    <xml name="range">
        <param name='range_min' type="integer" value="" min="0" label="Minimum range to consider interactions" help="The minimum range should be farer from the diagonal than median TAD size in order to reduce background interactions." />
        <param name='range_max' type="integer" value="" min="0" label="Maximum range to consider interactions" />
    </xml>

    <xml name="colormap">
        <param argument="--colorMap" name="colormap" type="select" optional="True" label="Color map to use for the heatmap" help=" Available color map names can be found here: https://matplotlib.org/examples/color/colormaps_reference.html">
            <option value="RdYlBu">RdYlBu</option>
            <option value="Accent">Accent</option>
            <option value="Spectral">Spectral</option>
            <option value="Set1">Set1</option>
            <option value="Set2">Set2</option>
            <option value="Set3">Set3</option>
            <option value="Dark2">Dark2</option>
            <option value="Reds">Reds</option>
            <option value="Oranges">Oranges</option>
            <option value="Greens">Greens</option>
            <option value="Blues">Blues</option>
            <option value="Greys">Greys</option>
            <option value="Purples">Purples</option>
            <option value="Paired">Paired</option>
            <option value="Pastel1">Pastel1</option>
            <option value="Pastel2">Pastel2</option>
            <option value="spring">spring</option>
            <option value="summer">summer</option>
            <option value="autumn">autumn</option>
            <option value="winter">winter</option>
            <option value="hot">hot</option>
            <option value="coolwarm">coolwarm</option>
            <option value="cool">cool</option>
            <option value="seismic">seismic</option>
            <option value="terrain">terrain</option>
            <option value="ocean">ocean</option>
            <option value="rainbow">rainbow</option>
            <option value="bone">bone</option>
            <option value="flag">flag</option>
            <option value="prism">prism</option>
            <option value="cubehelix">cubehelix</option>
            <option value="binary">binary</option>
            <option value="pink">pink</option>
            <option value="gray">gray</option>
            <option value="copper">copper</option>
            <option value="BrBG">BrBG</option>
            <option value="BuGn">BuGn</option>
            <option value="BuPu">BuPu</option>
            <option value="GnBu">GnBu</option>
            <option value="OrRd">OrRd</option>
            <option value="PiYG">PiYG</option>
            <option value="PRGn">PRGn</option>
            <option value="PuOr">PuOr</option>
            <option value="PuRd">PuRd</option>
            <option value="PuBu">PuBu</option>
            <option value="RdBu">RdBu</option>
            <option value="RdGy">RdGy</option>
            <option value="RdPu">RdPu</option>
            <option value="YlGn">YlGn</option>
            <option value="PuBuGn">PuBuGn</option>
            <option value="RdYlGn">RdYlGn</option>
            <option value="YlGnBu">YlGnBu</option>
            <option value="YlOrBr">YlOrBr</option>
            <option value="YlOrRd">YlOrRd</option>
            <option value="gist_gray">gist_gray</option>
            <option value="gist_stern">gist_stern</option>
            <option value="gist_earth">gist_earth</option>
            <option value="gist_yarg">gist_yarg</option>
            <option value="gist_ncar">gist_ncar</option>
            <option value="gist_rainbow">gist_rainbow</option>
            <option value="gist_heat">gist_heat</option>
            <option value="gnuplot">gnuplot</option>
            <option value="gnuplot2">gnuplot2</option>
            <option value="CMRmap">CMRmap</option>
            <option value="bwr">bwr</option>
            <option value="hsv">hsv</option>
            <option value="brg">brg</option>
            <option value="jet">jet</option>
            <option value="afmhot">afmhot</option>
            <option value="plasma">plasma</option>
            <option value="Accent_r">Accent reversed</option>
            <option value="Spectral_r">Spectral reversed</option>
            <option value="Set1_r">Set1 reversed</option>
            <option value="Set2_r">Set2 reversed</option>
            <option value="Set3_r">Set3 reversed</option>
            <option value="Dark2_r">Dark2 reversed</option>
            <option value="Reds_r">Reds reversed</option>
            <option value="Oranges_r">Oranges reversed</option>
            <option value="Greens_r">Greens reversed</option>
            <option value="Blues_r">Blues reversed</option>
            <option value="Greys_r">Greys reversed</option>
            <option value="Purples_r">Purples reversed</option>
            <option value="Paired_r">Paired reversed</option>
            <option value="Pastel1_r">Pastel1 reversed</option>
            <option value="Pastel2_r">Pastel2 reversed</option>
            <option value="spring_r">spring reversed</option>
            <option value="summer_r">summer reversed</option>
            <option value="autumn_r">autumn reversed</option>
            <option value="winter_r">winter reversed</option>
            <option value="hot_r">hot reversed</option>
            <option value="coolwarm_r">coolwarm reversed</option>
            <option value="cool_r">cool reversed</option>
            <option value="seismic_r">seismic reversed</option>
            <option value="terrain_r">terrain reversed</option>
            <option value="ocean_r">ocean reversed</option>
            <option value="rainbow_r">rainbow reversed</option>
            <option value="bone_r">bone reversed</option>
            <option value="flag_r">flag reversed</option>
            <option value="prism_r">prism reversed</option>
            <option value="cubehelix_r">cubehelix reversed</option>
            <option value="binary_r">binary reversed</option>
            <option value="pink_r">pink reversed</option>
            <option value="gray_r">gray reversed</option>
            <option value="copper_r">copper reversed</option>
            <option value="BrBG_r">BrBG reversed</option>
            <option value="BuGn_r">BuGn reversed</option>
            <option value="BuPu_r">BuPu reversed</option>
            <option value="GnBu_r">GnBu reversed</option>
            <option value="OrRd_r">OrRd reversed</option>
            <option value="PiYG_r">PiYG reversed</option>
            <option value="PRGn_r">PRGn reversed</option>
            <option value="PuOr_r">PuOr reversed</option>
            <option value="PuRd_r">PuRd reversed</option>
            <option value="PuBu_r">PuBu reversed</option>
            <option value="RdBu_r">RdBu reversed</option>
            <option value="RdGy_r">RdGy reversed</option>
            <option value="RdPu_r">RdPu reversed</option>
            <option value="YlGn_r">YlGn reversed</option>
            <option value="PuBuGn_r">PuBuGn reversed</option>
            <option value="RdYlBu_r" selected="True">RdYlBu reversed</option>
            <option value="RdYlGn_r">RdYlGn reversed</option>
            <option value="YlGnBu_r">YlGnBu reversed</option>
            <option value="YlOrBr_r">YlOrBr reversed</option>
            <option value="YlOrRd_r">YlOrRd reversed</option>
            <option value="gist_gray_r">gist_gray reversed</option>
            <option value="gist_stern_r">gist_stern reversed</option>
            <option value="gist_earth_r">gist_earth reversed</option>
            <option value="gist_yarg_r">gist_yarg reversed</option>
            <option value="gist_ncar_r">gist_ncar reversed</option>
            <option value="gist_rainbow_r">gist_rainbow reversed</option>
            <option value="gist_heat_r">gist_heat reversed</option>
            <option value="gnuplot_r">gnuplot reversed</option>
            <option value="gnuplot2_r">gnuplot2 reversed</option>
            <option value="CMRmap_r">CMRmap reversed</option>
            <option value="bwr_r">bwr reversed</option>
            <option value="hsv_r">hsv reversed</option>
            <option value="brg_r">brg reversed</option>
            <option value="jet_r">jet reversed</option>
            <option value="afmhot_r">afmhot reversed</option>
            <option value="plasma_r">plasma reversed</option>
        </param>
    </xml>

    <xml name="multiple_input_matrices">
        <repeat name="input_files" title="Hi-C Matrix files" min="2">
            <param name="matrix" type="data" format="h5,cool" label="Hi-C Matrix file" help="" />
            <param name="mlabel" type="text" optional="true" value="" label="Label" help="Label to use in the output. If not given the dataset name will be used instead." />
        </repeat>
    </xml>

    <token name="@multiple_input_matrices@">
        #set $matrices = []
        #set $mlabels = []
        #for $counter, $i in enumerate($input_files):
            ln -s '$i.matrix' '${counter}_matrix.$i.matrix.ext'; 
            #silent $matrices.append( '\'%s_matrix.%s\'' % ($counter,  $i.matrix.ext))

            #if str($i.mlabel.value) != "":
                #set $mlabels += ['\'%s\'' % ($i.mlabel.value)]
            #else
                #set $mlabels += ['\'%s\'' % ($i.matrix.name)]
            #end if
        #end for
        #set $mlabels = ' '.join($mlabels)
        #set $matrices = ' '.join($matrices)
    </token>

    <token name="@ESCAPE_IDENTIFIER_FILE@"><![CDATA[re.sub('[^\s\w\-\.]', '_', str($file.element_identifier))]]></token>
    <token name="@ESCAPE_IDENTIFIER_MATRIX@"><![CDATA[re.sub('[^\s\w\-\.]', '_', str($matrix.element_identifier))]]></token>
    <token name="@ESCAPE_IDENTIFIER_M@"><![CDATA[re.sub('[^\s\w\-\.]', '_', str($m.element_identifier))]]></token>

    <xml name="region">
        <param argument="--region" type="text" label="Region of the genome to limit the operation" help="The format is chr:start-end. Also valid is just to specify a chromosome, for example chr10:10-500">
            <validator type="expression" message="Only alphanumeric characters, the colon or a dash are allowed.">not value or value.replace(':', '').replace('-', '').isalnum()</validator>
        </param>
    </xml>

    <xml name="kmeans_clustering">
        <conditional name="used_multiple_regions">
            <param name="used_multiple_regions_options" type="select" label="Did you compute the matrix with more than one groups of regions?" help="Would you like to cluster the regions according to the similarity of the signal distribution? This is only possible if you used computeMatrix on only one group of regions.">
                <option value="yes">Yes, I used multiple groups of regions</option>
                <option value="no">No, I used only one group</option>
            </param>
            <when value="no">
                <conditional name="clustering">
                    <param name="clustering_options" type="select" label="Clustering algorithm">
                        <option value="none">No clustering</option>
                        <option value="kmeans">Kmeans clustering</option>
                    </param>
                    <when value="kmeans">
                        <param name="k_kmeans" type="integer" value="0" label="Number of clusters to compute" help="When this option is set, then the matrix is split into clusters using the kmeans algorithm. Only works for data that is not grouped, otherwise only the first group will be clustered. If more specific clustering methods are required it is advisable to save the underlying matrix and run the clustering using other software. The plotting of the clustering may fail (Error: Segmentation fault) if a cluster has very few members compared to the total number or regions. (default: None)." />
                    </when>
                    <when value="none" />
                </conditional>
            </when>
            <when value="yes" />
        </conditional>
    </xml>

    <token name="@KMEANS_CLUSTERING@">
        #if $advancedOpt.used_multiple_regions.used_multiple_regions_options == 'no':
            #if $advancedOpt.used_multiple_regions.clustering.clustering_options == 'kmeans':
                #if int($advancedOpt.used_multiple_regions.clustering.k_kmeans) > 0:
                    --kmeans $advancedOpt.used_multiple_regions.clustering.k_kmeans
                #end if
            #end if
        #end if
    </token>

    <xml name="samFlag">
        <param name="samFlag" type="integer" optional="true" value="" label="Filter reads based on the SAM flag" help="For example to get only reads that are the first mate use a flag of 64. This is useful to count properly paired reads only once, otherwise the second mate will be also considered for the coverage. (--samFlag)" />
    </xml>
    <xml name="plotNumbers">
        <param argument="--plotNumbers" type="boolean" truevalue="--plotNumbers" falsevalue="" label="Plot the correlation value" help="If set, then the correlation number is plotted on top of the heatmap. (--plotNumbers)" />
    </xml>
    <xml name="doNotExtendPairedEnds">
        <param argument="--doNotExtendPairedEnds" type="boolean" truevalue="--doNotExtendPairedEnds" falsevalue="" label="Do not extend paired ends" help="If set, reads are not extended to match the fragment length reported in the BAM file, instead they will be extended to match the fragment length. Default is to extend the reads if paired end information is available. (--doNotExtendPairedEnds)" />
    </xml>
    <xml name="ignoreDuplicates">
        <param argument="--ignoreDuplicates" type="boolean" truevalue="--ignoreDuplicates" falsevalue="" label="Ignore duplicates" help="If set, reads that have the same orientation and start position will be considered only once. If reads are paired, the mate position also has to coincide to ignore a read. (--ignoreDuplicates)" />
    </xml>
    <xml name="minMappingQuality">
        <param argument="--minMappingQuality" type="integer" optional="true" value="" min="1" label="Minimum mapping quality" help= "If set, only reads that have a mapping quality score higher than the given value are considered.
                *Note* Bowtie's Mapping quality is related to uniqueness: the higher the score, the more unique is a read.
                A mapping quality defined by Bowtie of 10 or less indicates that there is at least a 1 in 10 chance that the read truly originated elsewhere." />
    </xml>

    <xml name="skipZeros">
        <param argument="--skipZeros" type="boolean" truevalue="--skipZeros" falsevalue="" label="Skip zeros" help="If set, then zero counts that happen for *all* BAM files given are ignored. This might have the effect that fewer regions are considered than indicated in the option where the number of samples is defined. (--skipZeros)" />
    </xml>

    <xml name="fragmentLength">
        <param argument="--fragmentLength" type="integer" value="300" min="1" label="Fragment length used for the sequencing" help="If paired-end reads are used, the fragment length is computed from the BAM file. (--fragmentLength)" />
    </xml>

    <xml name="scaleFactor">
        <param name="scaleFactor1" type="float" value="1" label="Scale factor for treatment" help="(--scaleFactors)" />
        <param name="scaleFactor2" type="float" value="1" label="Scale factor for input" help="(--scaleFactors)" />
    </xml>
    <xml name="xMax">
        <param argument="--xMax" type="integer" optional="true" value="" label="Max value for the x-axis in counts per bin" />
    </xml>
    <xml name="filterThreshold">
        <param argument="--filterThreshold" name="filterThreshold_low" type="float" value="-1.5" label="Remove bins of low coverage" help="e.g. -1.5; Both Thresholds needs to be set to take effect." />
        <param argument="--filterThreshold" name="filterThreshold_large" type="float" value="5.0" label="Remove bins of large coverage" help="e.g. 5; Both Thresholds needs to be set to take effect." />
    </xml>
    <xml name="pseudocount">
        <param name="pseudocount" type="float" value="1" label="Pseudocount" help="Small number to avoid dividing by zero." />
    </xml>
    <xml name='matrix_h5_cooler_macro'>
        <param name='matrix_h5_cooler' type="data" format="h5,cool" label="Matrix to compute on" />
    </xml>
    <xml name='matrix_h5_cooler_multiple_macro'>
        <param name='matrix_h5_cooler_multiple' type="data" format="h5,cool" multiple="true" label="Matricies to compute on" />
    </xml>
    <xml name='convertFormat_single_macro'>
        <conditional name="inputFormat_conditional">
            <param name="inputFormat_selector" type="select" label="Choose input file type">
                <option value="optionCool" selected="True">cool</option>
                <option value="optionH5">h5</option>
                <option value="optionHic">hic</option>
                <option value="optionHomer">Homer</option>
                <option value="optionHicpro">HiCPro</option>
            </param>
            <when value="optionCool">
                <expand macro='matrix_h5_cooler_macro' />
                <param name='correctionName' type='text' label='Correction factors column name' />
                <param name='correctionDivision' type="boolean" truevalue="yes" falsevalue="" label='Apply correction factors with a division instead multiplication' />
                <param name='chromosome' type='text' label='Load only one chromosome' />
                <param name='loadRawValues' type="boolean" truevalue="yes" falsevalue="" label='Load raw data' />
            </when>
            <when value="optionH5">
                <expand macro='matrix_h5_cooler_macro' />
            </when>
            <when value="optionHic">
                <param name='matrixHic' type='data' format='hic' label='.hic matrix' />
                <param name='resolutions' type='text' label='List of resolutions' help="Resolutions can be specified seperated with a space, e.g. '10000 20000 50000'">
                    <validator type="expression" message="Only numeric characters and the a space as seperator are allowed.">value.replace(' ', '').isnumeric()</validator>
                </param>
            </when>
            <when value="optionHomer">
                <param name='matrixHomer' type='data' format='txt' label='Homer interaction matrix' />
            </when>
            <when value="optionHicpro">
                <param name='matrixHicpro' type='data' format='txt' label='.hic matrix' />
                <param name='bedHicpro' type='data' format='bed' label='HicPro bed file' />
            </when>
        </conditional>
    </xml>

    <xml name='convertFormat_multiple_macro'>
        <conditional name="inputFormat_conditional">
            <param name="inputFormat_selector" type="select" label="Choose input file type">
                <option value="optionCool" selected="True">cool</option>
                <option value="optionH5">h5</option>
                <option value="optionHomer">Homer</option>
                <option value="optionHicpro">HiCPro</option>
            </param>
            <when value="optionCool">
                <expand macro='matrix_h5_cooler_multiple_macro' />
                <param name='correctionName' type='text' label='Correction factors column name' />
                <param name='correctionDivision' type="boolean" truevalue="yes" falsevalue="" label='Apply correction factors with a division instead multiplication' />
                <param name='chromosome' type='text' label='Load only one chromosome' />
                <param name='loadRawValues' type="boolean" truevalue="yes" falsevalue="" label='Load raw data' />
            </when>
            <when value="optionH5">
                <expand macro='matrix_h5_cooler_multiple_macro' />
            </when>
            <when value="optionHomer">
                <param name='matrixHomer' type='data' format='txt' multiple="true" label='Homer interaction matrix' />
            </when>
            <when value="optionHicpro">
                <param name='matrixHicpro' type='data' format='txt' multiple="true" label='.hic matrix' />
                <param name='bedHicpro' type='data' format='bed' multiple="true" label='HicPro bed file' />
            </when>
        </conditional>
    </xml>
    <xml name='convertFormat_single_output_macro'>
        <!-- <filter>outputSingleMultiple_conditional.inputFormat_conditional.inputFormat_selector == 'optionCool'</filter> -->
        <conditional name="outputFormat_conditional">
            <param name="outputFormat_selector" type="select" label="Choose output file type">
                <option value="cool" selected="True">cool</option>
                <option value="h5">h5</option>
                <option value="homer">Homer</option>
                <option value="ginteractions">ginteractions</option>
            </param>
            <when value="cool">
                <param name='storeAppliedCorrection' type="boolean" truevalue="yes" falsevalue="" label='Store applied correction factors in column count' />
                <param name='enforceInteger' type="boolean" truevalue="yes" falsevalue="" label='Enforce integer for count column' />
            </when>
            <when value='h5' />
            <when value='homer' />
            <when value='ginteractions' />
        </conditional>
    </xml>
    <token name="@REFERENCES@">

.. class:: infomark

For more information on the tools, please visit our `help site`_.

If you would like to give us feedback or you run into any trouble, please send an email to deeptools@googlegroups.com

This tool is developed by the `Bioinformatics and Deep-Sequencing Unit`_ at the `Max Planck Institute for Immunobiology and Epigenetics`_.

.. _Bioinformatics and Deep-Sequencing Unit: http://www3.ie-freiburg.mpg.de/facilities/research-facilities/bioinformatics-and-deep-sequencing-unit/
.. _Max Planck Institute for Immunobiology and Epigenetics: http://www3.ie-freiburg.mpg.de
.. _help site: https://hicexplorer.readthedocs.org

    </token>

    <xml name="multiple_input_bams">
        <repeat name="input_files" title="BAM files" min="2">
            <param name="bamfile" type="data" format="bam" label="BAM file" />
            <param name="label" type="text" optional="true" value="" label="Label" help="Label to use in the output. If not given the dataset name will be used instead." />
        </repeat>
    </xml>

    <xml name="multiple_input_bigwigs">
        <repeat name="input_files" title="BigWig files" min="2">
            <param name="bigwigfile" type="data" format="bigwig" label="Bigwig file" />
            <param name="label" type="text" optional="true" value="" label="Label" help="Label to use in the output. If not given the dataset name will be used instead.">
                <validator type="expression" message="Only alphanumeric characters and a space are allowed.">value.isalnum()</validator>
            </param>
        </repeat>
    </xml>

    <xml name="plotTitle">
        <param name="plotTitle" type="text" value="" optional="True" label="Title of the plot" help="Title of the plot, to be printed on top of the generated image. (--plotTitle)">
            <validator type="expression" message="Only alphanumeric characters and a space are allowed.">value.isalnum()</validator>
        </param>
    </xml>

    <token name="@multiple_input_bams@">
        #import tempfile
        #set $temp_dir = os.path.abspath(tempfile.mkdtemp())
        #set files=[]
        #set labels=[]
        #for $i in $input_files:
            #set $temp_input_handle = tempfile.NamedTemporaryFile( dir=$temp_dir )
            #set $temp_input_path = $temp_input_handle.name
            #silent $temp_input_handle.close()
            #silent os.system("ln -s %s %s.bam" % (str($i.bamfile), $temp_input_path))
            #silent os.system("ln -s %s %s.bam.bai" % (str($i.bamfile.metadata.bam_index), $temp_input_path))
            #silent $files.append('%s.bam' % $temp_input_path)

            ##set $files += [str($i.bamfile)]
            #if str($i.label.value) != "":
                #set $labels += ["\"%s\"" % ($i.label.value)]
            #else
                #set $labels += ["\"%s\"" % ($i.bamfile.name)]
            #end if
        #end for
    </token>

    <token name="@multiple_input_bigwigs@">
        #import tempfile
        #set $temp_dir = os.path.abspath(tempfile.mkdtemp())
        #set files=[]
        #set labels=[]
        #for $i in $input_files:
            #set $temp_input_handle = tempfile.NamedTemporaryFile( dir=$temp_dir )
            #set $temp_input_path = $temp_input_handle.name
            #silent $temp_input_handle.close()
            #silent os.system("ln -s %s %s.bw" % (str($i.bigwigfile), $temp_input_path))
            #silent $files.append('%s.bw' % $temp_input_path)

            ##set $files += [str($i.bigwigfile)]
            #if str($i.label.value) != "":
                #set $labels += ["\"%s\"" % ($i.label.value)]
            #else
                #set $labels += ["\"%s\"" % ($i.bigwigfile.name)]
            #end if
        #end for
    </token>

    <xml name="reference_genome_source">
        <conditional name="source">
            <param name="ref_source" type="select" label="Reference genome">
                <option value="cached">locally cached</option>
                <option value="history">in your history</option>
            </param>
            <when value="cached">
                <param name="input1_2bit" type="select" label="Using reference genome" help="If your genome of interest is not listed, contact the Galaxy team">
                    <options from_data_table="deepTools_seqs">
                        <filter type="sort_by" column="1" />
                        <validator type="no_options" message="No indexes are available." />
                    </options>
                </param>
            </when>
            <when value="history">
                <param name="input1" type="data" format="twobit" label="Select a reference dataset in 2bit format" />
            </when>
        </conditional>
    </xml>

    <token name="@reference_genome_source@">
    #if $source.ref_source=="history":
        --genome $source.input1
    #else:
        --genome "${source.input1_2bit.fields.path}"
    #end if
    </token>

    <xml name="effectiveGenomeSize">
        <conditional name="effectiveGenomeSize">
            <param name="effectiveGenomeSize_opt" type="select" label="Effective genome size" help="The effective genome size is the portion of the genome that is mappable. Large fractions of the genome are stretches of NNNN that should be discarded.
                    Also, if repetitive regions were not included in the mapping of reads, the effective genome size needs to be adjusted accordingly.
                    See Table 2 of http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0030377 or http://www.nature.com/nbt/journal/v27/n1/fig_tab/nbt.1518_T1.html for several effective genome sizes.">
                <option value="93260000">ce10 (93260000)</option>
                <option value="121400000">dm3 (121400000)</option>
                <option value="2451960000" selected="true">hg19 (2451960000)</option>
                <option value="2150570000">mm9 (2150570000)</option>
                <option value="specific">user specified</option>
            </param>
            <when value="specific">
                <param name="effectiveGenomeSize" type="integer" value="" label="Effective genome size" help="e.g. ce10: 93260000, dm3: 121400000, hg19: 2451960000, mm9: 2150570000" />
            </when>
            <when value="2150570000" />
            <when value="2451960000" />
            <when value="121400000" />
            <when value="93260000" />
        </conditional>
    </xml>

    <xml name="image_file_format">
        <param name="outFileFormat" type="select" label="Image file format">
            <option value="png" selected="true">png</option>
            <option value="pdf">pdf</option>
            <option value="svg">svg</option>
            <option value="eps">eps</option>
            <option value="emf">emf</option>
        </param>
    </xml>

    <xml name="missingDataAsZero">
        <param name="missingDataAsZero" type="boolean" truevalue="yes" falsevalue="no" checked="True" label="Treat missing data as zero" help="This parameter determines if missing data should be treated as zeros. If unchecked, missing data will be ignored and not included in the output file. Missing data is defined as those regions for which both BAM files have 0 reads." />
    </xml>

    <xml name="input_save_matrix_values">
        <param name="saveMatrix" type="boolean" label="Save the matrix of values underlying the heatmap" />
    </xml>

    <xml name="input_graphic_output_settings">
        <conditional name="output">
            <param name="showOutputSettings" type="select" label="Show advanced output settings">
                <option value="no" selected="true">no</option>
                <option value="yes">yes</option>
            </param>
            <when value="no" />
            <when value="yes">
                <yield />
                <param name="saveData" type="boolean" label="Save the data underlying the average profile" />
                <param name="saveSortedRegions" type="boolean" label="Save the regions after skipping zeros or min/max threshold values" help="The order of the regions in the file follows the sorting order selected. This is useful, for example, to generate other heatmaps keeping the sorting of the first heatmap." />
            </when>
        </conditional>
    </xml>

    <xml name="input_image_file_format">
        <param name="outFileFormat" type="select" label="Image file format">
            <option value="png" selected="true">png</option>
            <option value="pdf">pdf</option>
            <option value="svg">svg</option>
            <option value="eps">eps</option>
            <option value="emf">emf</option>
        </param>
    </xml>

    <xml name="output_image_file_format">
        <data format="png" name="outFileName" label="${tool.name} image">
            <change_format>
                <when input="output.outFileFormat" value="pdf" format="pdf" />
                <when input="output.outFileFormat" value="svg" format="svg" />
                <when input="output.outFileFormat" value="eps" format="eps" />
                <when input="output.outFileFormat" value="emf" format="emf" />
            </change_format>
        </data>
    </xml>

    <xml name="output_save_matrix_values">
        <data format="tabular" name="outFileNameMatrix" label="${tool.name} on ${on_string}: Heatmap values">
            <filter>
            ((
                output['showOutputSettings'] == 'yes' and
                output['saveMatrix'] is True
            ))
            </filter>
        </data>
    </xml>

    <xml name="output_graphic_outputs">
        <data format="tabular" name="outFileNameData" label="${tool.name} on ${on_string}: averages per matrix column">
            <filter>
            ((
                output['showOutputSettings'] == 'yes' and
                output['saveData'] is True
            ))
            </filter>
        </data>
        <data format="bed" name="outFileSortedRegions" label="${tool.name} on ${on_string}: sorted/filtered regions">
            <filter>
            ((
                output['showOutputSettings'] == 'yes' and
                output['saveSortedRegions'] is True
            ))
            </filter>
        </data>
    </xml>

    <xml name="track_input_h5_macro">
        <param name="track_input_h5" type="data" format="h5, cool" label="Track file h5 or cool format" />
    </xml>
    <xml name="track_input_bed_macro">
        <param name="track_input_bed" type="data" format="bed" label="Track file BED format" />
    </xml>
    <xml name="track_input_bedgraph_macro">
        <param name="track_input_bedgraph" type="data" format="bedgraph" label="Track file bedgraph format" />
    </xml>
    <xml name="track_input_bigwig_macro">
        <param name="track_input_bigwig" type="data" format="bigwig" label="Track file bigwig format" />
    </xml>
    <xml name="track_input_bedgraph_matrix_macro">
        <param name="track_input_bedgraph_matrix" type="data" format="bedgraph" label="Track file bigwig format" />
    </xml>
    <xml name="track_input_tabular_macro">
        <param name="track_input_tabular" type="data" format="tabular" label="Track file tabular format" />
    </xml>
    <xml name="plot_title">
        <param name="title" type="text" optional="true" label="Plot title">
            <validator type="expression" message="Only alphanumeric characters and a space are allowed.">value.isalnum()</validator>
        </param>
    </xml>

    <xml name="spacer_macro">
        <param name="spacer_width" type="float" value="" min="0" optional="True" label="Include spacer at the end of the track" help="Width of the spacer." />
    </xml>
    <xml name="fontsize_macro">
        <param name="fontsize" type="integer" value="" min="5" optional="True" label="Fontsize" />
    </xml>
</macros>