view macros.xml @ 6:740057a5126d draft

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/circos commit 1584882716a1d2c598e8485da9d73bcf80d9b29a"
author iuc
date Fri, 01 May 2020 07:28:50 -0400
parents a64dc31ab7f2
children 4b519282a05b
line wrap: on
line source

<?xml version="1.0"?>
<macros>
  <token name="@CIRCOS_VERSION@">0.69.8</token>

  <token name="@WRAPPER_VERSION@">@CIRCOS_VERSION@+galaxy5</token>

  <xml name="requirements">
      <requirements>
        <requirement type="package" version="@CIRCOS_VERSION@">circos</requirement>
        <requirement type="package" version="2.7">python</requirement>
        <requirement type="package" version="0.6.4">bcbiogff</requirement>
        <requirement type="package" version="1.70">biopython</requirement>
        <requirement type="package" version="0.3.13">pybigwig</requirement>
        <requirement type="package" version="0.23">circos-tools</requirement>
        <requirement type="package" version="3.4">grep</requirement>
        <requirement type="package" version="5.1.0">gawk</requirement>
        <requirement type="package" version="1.29">tar</requirement>
        <yield />
      </requirements>
  </xml>

  <token name="@UTILS@">
#def circosColor($value)
    #set $value = str($value)
    #set $r = int($value[1:3], 16)
    #set $g = int($value[3:5], 16)
    #set $b = int($value[5:], 16)
$r, $g, $b
#end def
#def circosColorAlpha($value, $alpha)
    #set $value = str($value)
    #set $r = int($value[1:3], 16)
    #set $g = int($value[3:5], 16)
    #set $b = int($value[5:], 16)
    #set $a = float($alpha)
$r, $g, $b, $a
#end def
#def chromosomesToOrder($value)
    #set $q = ','.join([x if ':' not in x else x[x:x.index(':')] for x in str($value).split(';')])
    $q
#end def
  </token>

  <xml name="citations">
    <citations>
        <citation type="doi">10.1101/gr.092759.109</citation>
    </citations>
  </xml>

  <xml name="stroke_opts">
    <expand macro="circos_color_alpha" name="stroke_color" value="#000000" label="Stroke Color"/>
    <param name="stroke_thickness" type="integer" value="1" label="Stroke Thickness"/>
  </xml>

  <xml name="minmax">
    <conditional name="minmax">
        <param name="minmax_select" type="select" label="Minimum / maximum options">
            <option value="yes">Supply min/max values</option>
            <option value="no" selected="true">Plot all values</option>
        </param>
        <when value="yes">
            <param name="min_value" type="float" value="1.0" label="Minimum value" />
            <param name="max_value" type="float" value="5.0" label="Maximum value" />
        </when>
        <when value="no">
        </when>
    </conditional>
  </xml>

  <xml name="circos_color"
      token_label="Color"
      token_name="color"
      token_value="#000000"
      token_help=""
      >
    <param label="@LABEL@" type="color" name="@NAME@" value="@VALUE@" help="@HELP@">
      <sanitizer>
        <valid initial="string.letters,string.digits">
          <add value="#" />
        </valid>
      </sanitizer>
    </param>
  </xml>

  <xml name="chrom_units"
      token_label="Position"
      token_help="In bases (e.g. 1000) or chromosome units (e.g. 1u)"
      token_value="5u"
      token_name="position"
      >
    <param name="@NAME@" type="text" value="@VALUE@" label="@LABEL@" help="@HELP@">
        <sanitizer>
            <valid initial="string.digits">
                <add value="u"/>
                <add value="b"/>
                <add value="."/>
            </valid>
        </sanitizer>
    </param>
  </xml>

  <xml name="circos_color_alpha"
      token_label="Color"
      token_name="color"
      token_value="#000000"
      token_help=""
      >
    <param label="@LABEL@" type="color" name="@NAME@" value="@VALUE@" help="@HELP@">
      <sanitizer>
        <valid initial="string.letters,string.digits">
          <add value="#" />
        </valid>
      </sanitizer>
    </param>
    <param name="@NAME@_alpha" type="float" label="@LABEL@ Transparency" value="1" min="0" max="1" help="1 = fully opaque, 0 = fully transparent"/>
  </xml>

  <xml name="brewer_scale"
      token_name="color"
      token_label="Color"
      token_help="">
    <param name="@NAME@" type="select" label="@LABEL@" help="@HELP@">
      <option value="purples-13-seq">Sequential: Purples</option>
      <option value="reds-13-seq">Sequential: Reds</option>
      <option value="oranges-13-seq">Sequential: Oranges</option>
      <option value="greens-13-seq">Sequential: Greens</option>
      <option value="blues-13-seq">Sequential: Blues</option>
      <option value="greys-13-seq">Sequential: Greys</option>

      <option value="bugn-13-seq">Sequential: Blue - Green</option>
      <option value="bupu-13-seq">Sequential: Blue - Purple</option>
      <option value="gnbu-13-seq">Sequential: Green - Blue</option>
      <option value="orrd-13-seq">Sequential: Orange - Red</option>
      <option value="pubu-13-seq">Sequential: Purple - Blue</option>
      <option value="pubugn-13-seq">Sequential: Purple - Blue - Green</option>
      <option value="purd-13-seq">Sequential: Purple - Red</option>
      <option value="rdpu-13-seq">Sequential: Red - Purple</option>
      <option value="ylgn-13-seq">Sequential: Yellow - Green</option>
      <option value="ylgnbu-13-seq">Sequential: Yellow - Green - Blue</option>
      <option value="ylorbr-13-seq">Sequential: Yellow - Orange - Brown</option>
      <option value="ylorrd-13-seq">Sequential: Yellow - Orange - Red</option>

      <option value="brbg-15-div">Diverging: Brown - Blue Green</option>
      <option value="piyg-15-div">Diverging: Pink - Yellow Green</option>
      <option value="prgn-15-div">Diverging: Purple - Green</option>
      <option value="puor-15-div">Diverging: Purple - Orange</option>
      <option value="rdbu-15-div">Diverging: Red - Blue</option>
      <option value="rdgy-15-div">Diverging: Red - Grey</option>
      <option value="rdylbu-15-div">Diverging: Red - Yellow - Blue</option>
      <option value="rdylgn-15-div">Diverging: Red - Yellow - Green</option>
      <option value="spectral-15-div">Diverging: Spectral</option>

      <option value="accent-8-qual">Qualitative: Accent</option>
      <option value="dark2-8-qual">Qualitative: Dark2</option>
      <option value="paired-12-qual" selected="true">Qualitative: Paired</option>
      <option value="pastel1-9-qual">Qualitative: Pastel1</option>
      <option value="pastel2-8-qual">Qualitative: Pastel2</option>
      <option value="set1-9-qual">Qualitative: Set1</option>
      <option value="set2-8-qual">Qualitative: Set2</option>
      <option value="set3-12-qual">Qualitative: Set3</option>
    </param>
  </xml>

  <xml name="zdepth"
       token_name="zdepth"
      >
    <param name="@NAME@" type="integer" value="0" optional="true" label="Z-index"
        help="Datasets with a higher z-index value are drawn on top of data sets with a lower value. 0 is the default and plots added lower in the configuration file will be plotted above."/>
  </xml>

  <xml name="font_select"
      token_normal="true"
      token_bold="false">
    <param name="font" type="select" label="Font">
      <option value="light">light</option>
      <option value="normal" selected="@NORMAL@">normal</option>
      <option value="default">default</option>
      <option value="semibold">semibold</option>
      <option value="bold" selected="@BOLD@">bold</option>
      <option value="italic">italic</option>
      <option value="bolditalic">bolditalic</option>
      <option value="italicbold">italicbold</option>
    </param>
  </xml>

  <xml name="radial_position">
    <conditional name="radial_position">
        <param name="select" type="select" label="Radial Position">
            <option value="plot">Relative position</option>
            <option value="data" selected="True">Absolute position (values match data values)</option>
        </param>
        <when value="plot">
            <param name="y0" type="float" value="0" label="y0" help="Values are relative (0=inside of track, 1=outside of track)"/>
            <param name="y1" type="float" value="1" label="y1" help="Values are relative (0=inside of track, 1=outside of track)"/>
        </when>
        <when value="data">
            <param name="y0" type="float" value="0" label="y0" help="Values are according to minimum and maximum values of dataset. E.g. if your dataset goes from -10 to 10, y0 should be -10."/>
            <param name="y1" type="float" value="1" label="y1" help="Values are according to minimum and maximum values of dataset. E.g. if your dataset goes from -10 to 10, y1 should be 10."/>
        </when>
    </conditional>
  </xml>

  <xml name="radial_position_axes">
    <conditional name="radial_position">
        <param name="select" type="select" label="Radial Position">
            <option value="plot">Relative position</option>
            <option value="data" selected="True">Absolute position (values match data values)</option>
        </param>
        <when value="plot">
            <param name="spacing" type="float" value="0.1" min="0" max="1" label="Spacing" help="This many % of the distance between axis lines, set between the data minimum/maximum. If data goes from -1 to 1, and this is set to 0.33, and y0/y1 radius are 0/1, this produces two bands [0.33, 1]. If the y0/y1 radius are set to -1/1, this produces 4 bands: [-1, -0.33, 0.33, 1]. The y0/y1 radius act as clipping."/>
        </when>
        <when value="data">
            <param name="spacing" type="float" value="0.1" label="Spacing" help="Equal to data value difference. E.g. 0.25 here when data goes from -1 to 1 and y0/y1 are 0/1 produces 5 bands at [0, 0.25, 0.5, 0.75, 1]. If y0/y1 and radius are -1/1 produces 9 bands at [-1, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, 1]. The y0/y1 radius act as clipping."/>
        </when>
    </conditional>
    <param name="y0" type="float" value="0" label="y0" help="Values are according to minimum and maximum values of dataset. E.g. if your dataset goes from -10 to 10, y0 should be -10. These clip the axes, any axes which would be drawn on the data outside of these bounds will not be drawn."/>
    <param name="y1" type="float" value="1" label="y1" help="Values are according to minimum and maximum values of dataset. E.g. if your dataset goes from -10 to 10, y1 should be 10. These clip the axes, any axes which would be drawn on the data outside of these bounds will not be drawn."/>
  </xml>

  <xml name="minsize">
    <param name="minsize" type="float" value="0" label="Minimum size (in chromosome units)" min="0"/>
  </xml>

  <xml name="only_if_data">
    <param name="only_if_data" type="select" label="When to show">
        <option value="always" selected="True">Always</option>
        <option value="data">Only when data is present on the ideogram</option>
    </param>
  </xml>

  <xml name="axes">
    <section name="sec_axes" title="Axes">
        <repeat name="axes" title="Axis">
            <expand macro="radial_position_axes" />
            <expand macro="circos_color_alpha"/>
            <param name="thickness" type="integer" value="1" label="Thickness"/>
        </repeat>
        <expand macro="only_if_data" />
    </section>
  </xml>

  <xml name="backgrounds">
    <section name="sec_bkgs" title="Backgrounds">
        <repeat name="backgrounds" title="Background">
            <expand macro="radial_position" />
            <expand macro="circos_color_alpha"/>
        </repeat>
        <expand macro="only_if_data" />
    </section>
  </xml>

  <xml name="rules">
    <section name="sec_rule" title="Rules">
        <repeat name="rules" title="Rule">
            <repeat name="conditions" title="Conditions to Apply">
                <conditional name="application">
                    <param name="application_select" type="select" label="Condition">
                        <option value="always">Apply to Every Point</option>
                        <option value="random">Randomly</option>
                        <option value="on">Check for presence/absence per chromosome</option>
                        <option value="pos">Based on position on chromosome</option>
                        <option value="value">Based on position value (ONLY for scatter/histogram/heatmap/line)</option>
                        <option value="var">Based on qualifier value (when available)</option>
                    </param>
                    <when value="always">
                    </when>
                    <when value="on">
                        <param name="on_genomes" type="text" label="Chromosome IDs" help="Pipe | separated list of chromosome IDs">
                            <sanitizer>
                                <valid initial="string.letters,string.digits">
                                  <add value="|" />
                                  <add value="-" />
                                  <add value="." />
                                </valid>
                            </sanitizer>
                        </param>
                    </when>
                    <when value="pos">
                        <param name="pos_gt" type="float" label="Greater than this base" optional="true"/>
                        <param name="pos_lt" type="float" label="Less than this base" optional="true"/>
                        <param name="pos_lt_sub" type="boolean" truevalue="yes" falsevalue="no" label="Count 'Less than this base' from end of chromosome" />
                    </when>
                    <when value="random">
                        <param name="value" type="float" label="Percentage of bins" value="0.5" min="0" max="1" help="Randomly apply with this probability"/>
                    </when>
                    <when value="value">
                        <param name="pos_gt" type="float" label="Points above this value" optional="true"/>
                        <param name="pos_lt" type="float" label="Points below this value" optional="true"/>
                    </when>
                    <when value="var">
                        <param name="varname" type="text" label="Qualifier name"
                            help="Set to the name of the qualifier in the file you wish to compare against" />

                        <param name="cond_select" type="select" label="Condition">
                            <option value="eq">Equal to (string)</option>
                            <option value="==">Equal to (numeric)</option>
                            <option value="ne">Not equal to (string)</option>
                            <option value="!=">Not equal to (numeric)</option>
                            <option value="&lt;">Less than (numeric)</option>
                            <option value="&gt;">Greater than (numeric)</option>
                            <option value="%">Modulus (numeric)</option>
                            <sanitizer>
                              <valid initial="string.letters">
                                <add value="&gt;" />
                                <add value="&lt;" />
                                <add value="!" />
                                <add value="=" />
                                <add value="%" />
                              </valid>
                            </sanitizer>
                        </param>

                        <param name="varvalue" type="text" label="Qualifier value to compare against">
                            <sanitizer>
                                <valid initial="string.letters,string.digits">
                                </valid>
                            </sanitizer>
                        </param>
                    </when>
                </conditional>
            </repeat>
            <repeat name="actions" title="Actions to Apply">
                <conditional name="action">
                    <param name="action_select" type="select" label="Action">
                        <option value="show">Change Visibility</option>
                        <option value="z">Change Z-index</option>
                        <option value="fill_color">Change Fill Color for all points</option>
                        <option value="fill_color_value">Change Fill Color based on Value</option>
                        <option value="stroke_color">Change Stroke Color</option>
                        <option value="color_value">Change Stroke Color based on Value</option>
                        <option value="value_from_attr">Change value of point based on attribute</option>
                    </param>
                    <when value="show">
                        <param name="action_value" type="boolean" truevalue="yes" falsevalue="no" label="Show"/>
                    </when>
                    <when value="value_from_attr">
                        <param name="action_value" type="text" label="Attribute to pull value from" help="From the optional x1=y1;x2=y2... formatted attributes in the last column">
                            <sanitizer>
                                <valid initial="string.letters,string.digits">
                                </valid>
                            </sanitizer>
                        </param>
                    </when>
                    <when value="fill_color">
                        <expand macro="circos_color" name="action_value" label="Fill Color"/>
                    </when>
                    <when value="stroke_color">
                        <expand macro="circos_color" name="action_value" label="Stroke Color"/>
                    </when>
                    <when value="fill_color_value">
                        <expand macro="brewer_scale" name="action_value" label="Fill Color" help="Fill will be changed based on a mapping of dataset values to colours, but to do this the mapping needs to be defined. Minimum and maximum values are defined below, and will map to the minimum and maximum values of this brewer scale."/>
                        <param name="min_value" type="float" value="-1" label="Minimum value of dataset"/>
                        <param name="max_value" type="float" value="1" label="Maximum value of dataset"/>
                        <param name="invert" type="boolean" truevalue="True" falsevalue="False" label="Invert Color Scale" />
                    </when>
                    <when value="color_value">
                        <expand macro="brewer_scale" name="action_value" label="Stroke Color" help="Stroke will be changed based on a mapping of dataset values to colours, but to do this the mapping needs to be defined. Minimum and maximum values are defined below, and will map to the minimum and maximum values of this brewer scale."/>
                        <param name="min_value" type="float" value="-1" label="Minimum value of dataset"/>
                        <param name="max_value" type="float" value="1" label="Maximum value of dataset"/>
                        <param name="invert" type="boolean" truevalue="True" falsevalue="False" label="Invert Color Scale" />
                    </when>
                    <when value="z">
                        <conditional name="dynamic">
                            <param name="dynamic_select" type="select" label="Static or Dynamic Z-Index">
                                <option value="static">Static</option>
                                <option value="dynamic">Dynamic (based on value)</option>
                            </param>
                            <when value="static">
                                <expand macro="zdepth" name="action_value"/>
                            </when>
                            <when value="dynamic">
                                <param name="min_value" type="float" value="-1" label="Expected minimum value of dataset"/>
                                <param name="max_value" type="float" value="1" label="Expected maximum value of dataset"/>
                                <param name="invert" type="boolean" truevalue="True" falsevalue="False" label="Invert Z-Index Mapping" />
                            </when>
                        </conditional>
                    </when>
                </conditional>
            </repeat>
            <param name="continue_flow" type="boolean" truevalue="flow = continue" falsevalue="" label="Continue flow"
                help="Allow rules after this one to be applied in addition to this rule. E.g. if one rule modifies font size, and another font colour, with continued flow they could both be applied rather than whichever was encountered first."/>
        </repeat>
    </section>
  </xml>

  <xml name="link_color_action_options"
      token_section="ERROR">

    <conditional name="dynamic">
        <param name="dynamic_select" type="select" label="Static / Dynamic Change">
            <option value="static">Color is always applied</option>
            <option value="dynamic">Color is applied based on value</option>
            <option value="source">Color based on source chromosome color</option>
            <option value="dest">Color based on destination chromosome color</option>
        </param>
        <when value="static">
            <expand macro="circos_color_alpha" label="@SECTION@ Color" name="action_value"/>
        </when>
        <when value="dynamic">
            <expand macro="brewer_scale" name="action_value" label="@SECTION@ Color" help="@SECTION@ will be changed based on a mapping of dataset values to colours, but to do this the mapping needs to be defined. Minimum and maximum values are defined below, and will map to the minimum and maximum values of this brewer scale."/>
            <param name="min_value" type="float" value="-1" label="Minimum value of dataset"/>
            <param name="max_value" type="float" value="1" label="Maximum value of dataset"/>
            <param name="invert" type="boolean" truevalue="True" falsevalue="False" label="Invert Color Scale" />
        </when>
        <when value="source">
        </when>
        <when value="dest">
        </when>
    </conditional>
  </xml>

  <xml name="linkrules">
    <section name="sec_link_rule" title="Rules">
        <repeat name="rules" title="Rule">
            <repeat name="conditions" title="Conditions to Apply" help="Multiple conditions will be combined using AND">
                <conditional name="application">
                    <param name="application_select" type="select" label="Condition">
                        <option value="always" selected="true">True / Always Applied</option>
                        <option value="random">Randomly</option>
                        <option value="interchr">Interchromosomal</option>
                        <option value="intrachr">Intrachromosomal</option>
                        <option value="chr">Chromosome</option>
                        <option value="dist">Distance between sides</option>
                        <option value="start1">Start position Left</option>
                        <option value="end1">End Position Left</option>
                        <option value="pos1">Middle position Left</option>
                        <option value="size1">Size Left</option>
                        <option value="start2">Start position Right</option>
                        <option value="end2">End Position Right</option>
                        <option value="pos2">Middle position Right</option>
                        <option value="size2">Size Right</option>
                        <option value="rev1">Reversed Left (link end is reversed (e.g. start &gt; end) </option>
                        <option value="rev2">Reversed Right (link end is reversed (e.g. start &gt; end) </option>
                        <option value="inv">Inverted (link is inverted (i.e. one of its ends is reversed). If both ends are reversed, the link is not inverted )</option>
                    </param>
                    <when value="chr">
                        <expand macro="chromosome_comparison"/>
                    </when>
                    <when value="start1">
                        <expand macro="integer_comparison"/>
                    </when>
                    <when value="end1">
                        <expand macro="integer_comparison"/>
                    </when>
                    <when value="pos1">
                        <expand macro="integer_comparison"/>
                    </when>
                    <when value="size1">
                        <expand macro="integer_comparison"/>
                    </when>
                    <when value="start2">
                        <expand macro="integer_comparison"/>
                    </when>
                    <when value="end2">
                        <expand macro="integer_comparison"/>
                    </when>
                    <when value="pos2">
                        <expand macro="integer_comparison"/>
                    </when>
                    <when value="size2">
                        <expand macro="integer_comparison"/>
                    </when>
                    <when value="dist">
                        <expand macro="integer_comparison"/>
                    </when>
                    <when value="rev1"/>
                    <when value="rev2"/>
                    <when value="inv"/>
                    <when value="interchr"/>
                    <when value="intrachr"/>
                    <when value="always"/>
                    <when value="random">
                        <param name="value" type="float" label="Percentage" value="0.5" min="0" max="1" help="Randomly apply with this probability"/>
                    </when>
                </conditional>
            </repeat>
            <repeat name="actions" title="Actions to Apply">
                <conditional name="action">
                    <param name="action_select" type="select" label="Action">
                        <option value="show">Change Visibility</option>
                        <option value="z">Change Z-index</option>
                        <option value="color">Change Fill Color</option>
                        <option value="stroke_color">Change Stroke Color (Ribbons Only)</option>
                        <option value="thickness">Change Thickness</option>
                    </param>
                    <when value="show">
                        <param name="action_value" type="boolean" label="Show" truevalue="yes" falsevalue="no"/>
                    </when>
                    <when value="stroke_color">
                        <expand macro="link_color_action_options" section="Stroke"/>
                    </when>
                    <when value="color">
                        <expand macro="link_color_action_options" section="Fill"/>
                    </when>
                    <when value="thickness">
                        <param name="action_value" type="integer" value="1" label="Thickness"/>
                    </when>
                    <when value="z">
                        <conditional name="dynamic">
                            <param name="dynamic_select" type="select" label="Static or Dynamic Z-Index">
                                <option value="static">Static</option>
                                <option value="dynamic">Dynamic (based on value)</option>
                            </param>
                            <when value="static">
                                <expand macro="zdepth" name="action_value"/>
                            </when>
                            <when value="dynamic">
                                <param name="min_value" type="float" value="-1" label="Expected minimum value of dataset"/>
                                <param name="max_value" type="float" value="1" label="Expected maximum value of dataset"/>
                                <param name="invert" type="boolean" truevalue="True" falsevalue="False" label="Invert Z-Index Mapping" />
                            </when>
                        </conditional>
                    </when>
                </conditional>
            </repeat>

            <param name="continue_flow" type="boolean" label="Continue flow" truevalue="flow = continue" falsevalue="" help="Allow rules after this one to be applied in addition to this rule. E.g. if one rule modifies font size, and another font colour, with continued flow they could both be applied rather than whichever was encountered first." />
        </repeat>
    </section>
  </xml>

  <xml name="integer_comparison">
    <conditional name="comparison" >
        <param name="compare" type="select" label="Comparison">
            <option value="lt">less than</option>
            <option value="gt">greater than</option>
        </param>
        <when value="lt">
            <param name="compval" value="0" type="integer" label="value"/>
        </when>
        <when value="gt">
            <param name="compval" value="0" type="integer" label="value"/>
        </when>
    </conditional>
  </xml>

  <xml name="chromosome_comparison">
    <conditional name="comparison" >
        <param name="compare" type="select" label="Comparison">
            <option value="on">on chromosome (either side)</option>
            <option value="from">from chromosome</option>
            <option value="to">to chromosome</option>
            <option value="fromto">from-to chromosome</option>
            <option value="between">between chromosomes</option>
        </param>
        <!-- TODO select chromosome from metadata/file column instead of text fields -->
        <when value="on">
            <param name="compval" value="chr1" type="text" label="Chromosome" help="Comma separated values are supported in this field"/>
        </when>
        <when value="from">
            <param name="compval" value="chr1" type="text" label="Chromosome"/>
        </when>
        <when value="to">
            <param name="compval" value="chr1" type="text" label="Chromosome"/>
        </when>
        <when value="fromto">
            <param name="compval" value="chr1" type="text" label="From Chromosome"/>
            <param name="compval2" value="chr1" type="text" label="To Chromosome"/>
        </when>
        <when value="between">
            <param name="compval" value="chr1" type="text" label="Chromosome"/>
            <param name="compval2" value="chr1" type="text" label="Chromosome"/>
        </when>
    </conditional>
  </xml>

</macros>