diff jbrowse2broken.xml @ 57:94264fe60478 draft

planemo upload for repository https://github.com/usegalaxy-eu/temporary-tools/tree/master/jbrowse2 commit 4b5df41484f6bdf316edaf95b53c92d328ec1674-dirty
author fubar
date Thu, 21 Mar 2024 08:01:42 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jbrowse2broken.xml	Thu Mar 21 08:01:42 2024 +0000
@@ -0,0 +1,961 @@
+ <tool id="jbrowse2" name="jbrowse2" version="@TOOL_VERSION@+@WRAPPER_VERSION@_7" profile="22.05">
+    <description>genome browser</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="edamInc"/>
+    <xrefs>
+        <xref type="bio.tools">jbrowse2</xref>
+    </xrefs>
+    <expand macro="requirements"/>
+    <version_command>python '${__tool_directory__}/jbrowse2.py' --version</version_command>
+    <command detect_errors="aggressive"><![CDATA[
+mkdir -p '$output.files_path' &&
+## Copy the XML file into the directory, mostly for debugging
+## but nice if users want to reproduce locally
+cp '$trackxml' '$output.files_path/galaxy.xml' &&
+
+export JBROWSE2_PATH=\$(dirname \$(which jbrowse))/../opt/jbrowse2  &&
+
+#if $jbgen.ucol.formcoll=="collect":
+    python '$__tool_directory__/autogenJB2.py'
+    #for $key in $autoCollection.keys():
+        #if $autoCollection[$key].is_collection:
+            #set subCol=$autoCollection[$key]
+            #set pafs=[($subCol[x],$subcol[x].ext,x) for x in $subCol.keys() if $subCol[x].ext == 'paf']
+            #if len($pafs) > 0:
+                 --pafmeta '$pafs[0]'
+                #set refs = [($pafs[0][2],$subCol[x],x) for x in $subCol.keys() if $subCol[x].ext == 'fasta']
+                #for $ref in $refs:
+                 --pafreferencemeta '$ref'
+                #end for
+            #end if
+        #else if $autoCollection[$key].ext == 'fasta':
+          --referencemeta '$autoCollection[$key],$autoCollection[$key].ext,$key'
+        #else if $autoCollection[$key].ext in ['bed', 'bigwig', 'cool', 'gff', 'gff3', 'hic', 'maf', 'mcool', 'scool', 'vcf']
+          --trackmeta '$autoCollection[$key],$autoCollection[$key].ext,$key'
+        #else if $autoCollection[$key].ext in ['bam',]
+          --trackmeta '$autoCollection[$key],$autoCollection[$key].ext,$key,$autoCollection[$key].metadata.bam_index'
+         #else if $autoCollection[$key].ext in ['cram',]
+          --trackmeta '$autoCollection[$key],$autoCollection[$key].ext,$key,$autoCollection[$key].metadata.cram_index'
+        #end if
+    #end for
+    --outdir '$output.files_path'
+    --jbrowse2path \${JBROWSE2_PATH}
+    --sessName "Autogen JBrowse" &&
+    #if $jbgen.zipOut == "true":
+        (cd '$output.files_path' && zip -r - . ) > '$output'
+    #else
+      cp '$output.files_path/index.html' '$output'
+    #end if
+#else:
+    python '$__tool_directory__/jbrowse2.py'
+    --jbrowse2path \${JBROWSE2_PATH}
+    --outdir '$output.files_path'
+    --xml '$trackxml' &&
+    #if $jbgen.zipOut == "true":
+        (cd '$output.files_path' && zip -r - . ) > '$output'
+    #else
+      cp '$output.files_path/index.html' '$output'
+    #end if
+    ## Ugly testing hack since I cannot get <extra_files> to test the files I want to test. Hmph.
+    #if str($uglyTestingHack) == "enabled":
+       &&   cp '$trackxml' '$output'
+    #end if
+#end if
+  ]]></command>
+<configfiles>
+        <configfile name="trackxml"><![CDATA[<?xml version="1.0"?>
+#if $jbgen.ucol.formcoll=="form":
+<root>
+    <metadata>
+        <genomes>
+            #if str($reference_genome.genome_type_select) == "uri":
+              <genome path="${reference_genome.uri}" label="${reference_genome.refname}" useuri="yes">
+                  <metadata>
+                     <dataset
+                      dname = "${reference_genome.refname}" />
+              </metadata>
+              </genome>
+            #else if str($reference_genome.genome_type_select) == "indexed":
+              <genome path="${reference_genome.genome.fields.path}" label="${reference_genome.genome.fields.name}" useuri="no">
+                  <metadata>
+                     <dataset
+                      dname = "${reference_genome.genome.fields.name}" />
+                  </metadata>
+              </genome>
+            #else
+              <genome path="$reference_genome.genome" label="${reference_genome.genome.name}" useuri="no">
+                <metadata>
+                  <dataset id="${__app__.security.encode_id($reference_genome.genome.id)}" hid="${reference_genome.genome.hid}"
+                      size="${reference_genome.genome.get_size(nice_size=True)}"
+                      edam_format="${reference_genome.genome.datatype.edam_format}"
+                      file_ext="${reference_genome.genome.ext}"
+                      dname = "${reference_genome.genome.name}" />
+                  <history id="${__app__.security.encode_id($reference_genome.genome.history_id)}"
+                      #if $reference_genome.genome.history.user:
+                      user_email="${reference_genome.genome.history.user.email}"
+                      user_id="${reference_genome.genome.history.user_id}"
+                      display_name="${reference_genome.genome.history.get_display_name()}"/>
+                      #else
+                      user_email="anonymous"
+                      user_id="-1"
+                      display_name="Unnamed History"/>
+                      #end if
+                  <metadata
+                      #for (key, value) in $reference_genome.genome.get_metadata().items():
+                      #if "_types" not in $key:
+                        #if isinstance($value, list):
+                          #set value_str = "[%s]" % ','.join([str(val) for val in value])
+                          ${key}="$value_str"
+                        #else
+                          ${key}="${value}"
+                        #end if
+                      #end if
+                      #end for
+                      />
+                  <tool
+                      tool_id="${reference_genome.genome.creating_job.tool_id}"
+                      tool_version="${reference_genome.genome.creating_job.tool_version}"
+                      />
+                </metadata>
+              </genome>
+            #end if
+        </genomes>
+        <general>
+            <defaultLocation>${jbgen.defaultLocation}</defaultLocation>
+            <zipOut>${jbgen.zipOut}</zipOut>
+            <analytics>${jbgen.enableAnalytics}</analytics>
+            <primary_color>${jbgen.primary_color}</primary_color>
+            <secondary_color>${jbgen.secondary_color}</secondary_color>
+            <tertiary_color>${jbgen.tertiary_color}</tertiary_color>
+            <quaternary_color>${jbgen.quaternary_color}</quaternary_color>
+            <font_size>${jbgen.font_size}</font_size>
+            <session_name>${jbgen.session_name}</session_name>
+        </general>
+        <galaxyUrl>${__app__.config.galaxy_infrastructure_url}</galaxyUrl>
+    </metadata>
+    <tracks>
+        #for $tg in $track_groups:
+            #for $track in $tg.data_tracks:
+                #if $track.data_format.useuri.insource == "uri":
+                   <track cat="${tg.category}" format="${track.data_format.data_format_select}" visibility="${track.data_format.track_visibility}">
+                      <files>
+                        <trackFile path="${track.data_format.useuri.annouri}" ext="${track.data_format.data_format_select}" label="${track.data_format.useuri.annoname}" useuri="yes">
+                            <metadata>
+                            <dataset id = "${track.data_format.useuri.annouri}" />
+                            </metadata>
+                         </trackFile>
+                     </files>
+                    <options/>
+                </track>
+                #else if $track.data_format.useuri.insource == "history":
+                    #if $track.data_format.useuri.annotation:
+                    <track cat="${tg.category}" format="${track.data_format.data_format_select}" visibility="${track.data_format.track_visibility}">
+                    <files>
+                        #for $dataset in $track.data_format.useuri.annotation:
+                              <trackFile path="${dataset}" ext="${dataset.ext}" label="${dataset.name}" useuri="no">
+                                <metadata>
+
+                                  <dataset id="${__app__.security.encode_id($dataset.id)}" hid="${dataset.hid}"
+                                      size="${dataset.get_size(nice_size=True)}"
+                                      edam_format="${dataset.datatype.edam_format}"
+                                      file_ext="${dataset.ext}" />
+                                  <history id="${__app__.security.encode_id($dataset.history_id)}"
+                                      #if $dataset.history.user:
+                                      user_email="${dataset.history.user.email}"
+                                      user_id="${dataset.history.user_id}"
+                                      display_name="${dataset.history.get_display_name()}"/>
+                                      #else
+                                      user_email="anonymous"
+                                      user_id="-1"
+                                      display_name="Unnamed History"/>
+                                      #end if
+
+                                  <metadata
+                                    #for (key, value) in $dataset.get_metadata().items():
+                                    #if "_types" not in $key and $value is not None and len(str($value)) < 5000:
+                                      #if isinstance($value, list):
+                                        #set value_str = "[%s]" % ','.join([str(val) for val in value])
+                                        ${key}="$value_str"
+                                      #else
+                                        ${key}="${value}"
+                                      #end if
+                                    #end if
+                                    #end for
+                                      />
+                                  <tool
+                                      tool_id="${dataset.creating_job.tool_id}"
+                                      tool_version="${dataset.creating_job.tool_version}"
+                                      />
+                                </metadata>
+                              </trackFile>
+                       #end for
+                    </files>
+
+                    <options>
+                      <style>
+                        #if str($track.data_format.data_format_select) in ["gff", "bed", "paf", "blastxml"]:
+                            <type>${track.data_format.jbstyle.track_style.display}</type>
+                            #if str($track.data_format.jbstyle.track_style.display) in ["LinearBasicDisplay"]:
+                                <trackShowLabels>${track.data_format.jbstyle.track_style.show_labels}</trackShowLabels>
+                                <trackShowDescriptions>${track.data_format.jbstyle.track_style.show_descriptions}</trackShowDescriptions>
+                            #end if
+                        #end if
+                        #if str($track.data_format.data_format_select) in ["bam", "cram"]:
+                            <type>"LinearAlignmentsDisplay"</type>
+                        #end if
+                    </style>
+                    #if str($track.data_format.data_format_select) == "bam":
+                        <bam>
+                            #for $dataset in $track.data_format.useuri.annotation:
+                                <bam_index>${dataset.metadata.bam_index}</bam_index>
+                            #end for
+                        </bam>
+                    #else if str($track.data_format.data_format_select) == "cram":
+                        <cram>
+                            #for $dataset in $track.data_format.useuri.annotation:
+                                <cram_index>${dataset.metadata.cram_index}</cram_index>
+                            #end for
+                        </cram>
+                    #else if str($track.data_format.data_format_select) == "blastxml":
+                        <blast>
+                          #if str($track.data_format.blast_parent) != "":
+                            <parent>${track.data_format.blast_parent}</parent>
+                          #end if
+                            <protein>${track.data_format.is_protein}</protein>
+                            <min_gap>${track.data_format.min_gap}</min_gap>
+                        </blast>
+                    #else if str($track.data_format.data_format_select) == "gff":
+                        <gff>
+                          #if $track.data_format.match_part.match_part_select == "true":
+                            <match>${track.data_format.match_part.name}</match>
+                          #end if
+                        </gff>
+                    #else if str($track.data_format.data_format_select) == "paf":
+                        <paf>
+                            <genome>
+                            #for gnome in $track.data_format.synteny_genome:
+                                $gnome,
+                            #end for
+                            </genome>
+                            <genome_label>
+                            #for gnome in $track.data_format.synteny_genome:
+                                $gnome.name,
+                            #end for
+                            </genome_label>
+                        </paf>
+                    #else if str($track.data_format.data_format_select) == "hic":
+                        <hic>
+                        </hic>
+                    #else if str($track.data_format.data_format_select) == "cool":
+                        <cool>
+                        </cool>
+                    #else if str($track.data_format.data_format_select) == "bed":
+                        <bed>
+                        </bed>
+                    #else if str($track.data_format.data_format_select) == "sparql":
+                        <label>${track.data_format.label}</label>
+                        <sparql>
+                            <url>${track.data_format.url}</url>
+                            <query>${track.data_format.query}</query>
+                            <query_refnames>${track.data_format.query_refnames}</query_refnames>
+                        </sparql>
+                    #end if
+                    </options>
+                  </track>
+                  #end if
+                #end if
+            #end for
+        #end for
+    </tracks>
+</root>
+#end if
+]]></configfile>
+    </configfiles>
+
+    <inputs>
+        <conditional name="reference_genome">
+            <param help="Built-in references" label="Reference genome to display" name="genome_type_select" type="select">
+                <option selected="True" value="indexed">Use a built-in genome</option>
+                <option value="history">Use a genome from history</option>
+                <option value="uri">URI for a reference in tabix .gz format </option>
+            </param>
+            <when value="indexed">
+                <param
+                    help="If your genome of interest is not listed, contact the Galaxy team"
+                    label="Select a reference genome"
+                    name="genome"
+                    type="select"
+                    optional="true">
+                    <options from_data_table="all_fasta">
+                        <filter column="2" type="sort_by"/>
+                        <validator message="No genomes are available for the selected input dataset" type="no_options">
+                            </validator>
+                    </options>
+                </param>
+            </when>
+            <when value="history">
+                <param
+                    format="fasta"
+                    label="Select the reference genome"
+                    name="genome"
+                    type="data"
+                    optional="true">
+                </param>
+            </when>
+            <when value="uri">
+                <param
+                    label="URI pointing to tabix compressed fasta"
+                    name="uri"
+                    type="text">
+                </param>
+                <param
+                    label="Reference key - dbkey equivalent"
+                    name="refname"
+                    type="text">
+                </param>
+            </when>
+        </conditional>
+
+        <repeat name="track_groups" title="Track Group">
+            <param label="Track Category"
+                name="category"
+                type="text"
+                value="Default"
+                help="Organise your tracks into Categories for a nicer end-user experience. You can use #date# and it will be replaced with the current date in 'yyyy-mm-dd' format, which is very useful for repeatedly updating a JBrowse instance when member databases / underlying tool versions are updated." optional="False"/>
+            <repeat name="data_tracks" title="Annotation Track">
+                <conditional name="data_format" label="Track Data Selection Options">
+                    <param type="select" label="Track Type" name="data_format_select">
+                        <option value="bam">BAM Pileup track</option>
+                        <option value="bed">BED track</option>
+                        <option value="bigwig">BigWig track</option>
+                        <option value="blastxml">Blast XML track - converted to GFF</option>
+                        <option value="cool">HiC as cool/mcool/scool format files</option>
+                        <option value="cram">CRAM</option>
+                        <option value="gff">GFF/GFF3 feature track</option>
+                        <option value="hic">HiC as juicebox_hic format file. Tabular hic_matrix will NOT work.</option>
+                        <option value="maf">Multiple alignment format. Reference name must match the MAF name exactly to work correctly</option>
+                        <option value="paf">PAF - approximate mapping positions between two set of sequences</option>
+                       <option value="vcf">VCF SNP</option>
+                    </param>
+                    <when value="blastxml">
+                        <expand macro="input_conditional" label="BlastXML Track Data" format="blastxml" />
+
+                        <param label="Features used in Blast Search"
+                            help="in GFF3. This is used  so we know where to map features. E.g. where results of which CDS Protein32 match up to. The query IDs in your blast results should MATCH some feature IDs in your GFF3 file. This is an optional field and is most useful if using JBrowse to display protein blast results on a DNA genome. blastn results don't need this, blastp results on a protein sequence don't need this."
+                            format="gff3"
+                            name="blast_parent"
+                            optional="true"
+                            type="data"/>
+
+                        <param label="Minimum Gap Size"
+                            help="before a new match_part feature is created"
+                            name="min_gap"
+                            type="integer"
+                            value="10"
+                            min="2" />
+                        <param label="Is this a protein blast search?"
+                            type="boolean"
+                            name="is_protein"
+                            truevalue="true"
+                            falsevalue="false" />
+                        <expand macro="track_styling_feature" />
+                        <expand macro="track_visibility" />
+                    </when>
+                    <when value="vcf">
+                        <expand macro="input_conditional" label="SNP Track Data" format="vcf,vcf_bgzip" />
+                        <expand macro="track_styling_vcf"/>
+                        <expand macro="track_visibility" />
+                    </when>
+                    <when value="gff">
+                        <expand macro="input_conditional" label="GFF/GFF3 Track Data" format="gff,gff3" />
+                        <conditional name="match_part" label="match/match_part data">
+                        <param help="Match part data selection " label="This is match/match_part data" name="match_part_select" type="select">
+                            <option selected="True" value="false">Not match/match part data</option>
+                            <option value="true">Match/match part data</option>
+                        </param>
+                            <when value="true">
+                                <param label="Match Part Feature Type"
+                                    name="name"
+                                    type="text"
+                                    value="match"
+                                    help="Match_parts have options for the parent feature type, such as cDNA_match, match, translated_nucleotide_match, etc. Please select the appropriate one here. You can leave empty to try autodetection (only works with CanvasFeatures track type)."
+                                    optional="True"/>
+                            </when>
+                            <when value="false" />
+                        </conditional>
+                        <expand macro="track_styling_feature" />
+                        <expand macro="track_visibility" />
+                    </when>
+                    <when value="bam">
+                        <expand macro="input_conditional" label="BAM Track Data" format="bam" />
+                        <expand macro="track_styling_feature" />
+                        <expand macro="track_visibility" />
+                    </when>
+                    <when value="bed">
+                        <expand macro="input_conditional" label="BED Track Data" format="bed" />
+                        <expand macro="track_styling_feature" />
+                        <expand macro="track_visibility" />
+                    </when>
+                    <when value="cram">
+                        <expand macro="input_conditional" label="CRAM Track Data" format="cram" />
+                        <expand macro="track_styling_feature" />
+                        <expand macro="track_visibility" />
+                    </when>
+                    <when value="maf">
+                        <expand macro="input_conditional" label="MAF Track Data" format="maf" />
+                        <expand macro="track_styling_feature" />
+                        <expand macro="track_visibility" />
+                    </when>
+                    <when value="bigwig">
+                        <expand macro="input_conditional" label="BigWig Track Data" format="bigwig" />
+                        <expand macro="track_styling_bigwig" />
+                        <expand macro="track_visibility" />
+                    </when>
+                    <when value="paf">
+                        <param label="Comparison genome sequence" help="Paf from these as the reference(s), using the common reference as the reads to map"
+                            format="fasta"
+                            name="synteny_genome"
+                            type="data"
+                            multiple="True"/>
+                        <expand macro="input_conditional" label="Synteny data" format="paf"
+                          help="Make paf with mashmap or minimap2 mapping real reference onto desired syntenic references"/>
+                        <expand macro="track_styling_feature" />
+                        <expand macro="track_visibility" />
+                    </when>
+
+                    <when value="hic">
+                        <expand macro="input_conditional" label="Binary Juicebox HiC data" format="hic,juicebox_hic" />
+                        <expand macro="track_visibility" />
+                    </when>
+                    <when value="cool">
+                        <expand macro="input_conditional" label="HiC data in cool/mcool/scool format" format="cool,mcool,scool" />
+                        <expand macro="track_visibility" />
+                    </when>
+                </conditional>
+            </repeat>
+        </repeat>
+
+        <expand macro="general_options" />
+
+        <param type="hidden" name="uglyTestingHack" value="" />
+    </inputs>
+    <outputs>
+        <data format="html" name="output" label="JBrowse2">
+            <change_format>
+                <when input="zipOut" value="true" format="zip" />
+            </change_format>
+        </data>
+    </outputs>
+    <tests>
+         <test>
+            <param name="reference_genome|genome_type_select" value="history"/>
+            <param name="reference_genome|genome" value="merlin.fa"/>
+            <repeat name="track_groups">
+                <param name="category" value="Default" />
+                <repeat name="data_tracks">
+                    <conditional name="data_format">
+                        <param name="data_format_select" value="bigwig"/>
+                        <conditional name="useuri">
+                            <param name="annotation" value="bw/merlin.bw"/>
+                            <param name="insource" value="history"/>
+                        </conditional>
+                    </conditional>
+                </repeat>
+            </repeat>
+            <param name="uglyTestingHack" value="enabled" />
+            <output name="output">
+                <assert_contents>
+                    <has_text text="genome path="></has_text>
+                    <has_text text="dataset id="></has_text>
+                    <has_text text="history id="></has_text>
+                    <has_text text="metadata"></has_text>
+                    <has_text text="tool_id"></has_text>
+                    <has_text text="trackFile path="></has_text>
+                    <has_text text="file_ext=&quot;bigwig&quot;"></has_text>
+                    <has_text text="format=&quot;bigwig&quot;"></has_text>
+                </assert_contents>
+            </output>
+        </test>
+        <test>
+            <param name="reference_genome|genome_type_select" value="history"/>
+            <param name="reference_genome|genome" value="merlin.fa"/>
+            <repeat name="track_groups">
+                <param name="category" value="Default" />
+                <repeat name="data_tracks">
+                    <conditional name="data_format">
+                        <param name="data_format_select" value="vcf"/>
+                        <conditional name="useuri">
+                            <param name="insource" value="history"/>
+                            <param name="annotation" value="vcf/merlin.vcf"/>
+                        </conditional>
+                    </conditional>
+                </repeat>
+            </repeat>
+            <param name="uglyTestingHack" value="enabled" />
+            <output name="output">
+                <assert_contents>
+                    <has_text text="genome path="></has_text>
+                    <has_text text="dataset id="></has_text>
+                    <has_text text="history id="></has_text>
+                    <has_text text="metadata"></has_text>
+                    <has_text text="tool_id"></has_text>
+                    <has_text text="trackFile path="></has_text>
+                    <has_text text="ext=&quot;vcf&quot; label=&quot;merlin.vcf&quot;"></has_text>
+                </assert_contents>
+            </output>
+        </test>
+        <test>
+            <param name="reference_genome|genome_type_select" value="history"/>
+            <param name="reference_genome|genome" value="merlin.fa"/>
+            <param name="uglyTestingHack" value="enabled" />
+            <output name="output">
+                <assert_contents>
+                    <has_text text="genome path="></has_text>
+                    <has_text text="dataset id="></has_text>
+                    <has_text text="history id="></has_text>
+                    <has_text text="metadata"></has_text>
+                    <has_text text="tool_id"></has_text>
+                </assert_contents>
+            </output>
+        </test>
+        <test>
+            <param name="reference_genome|genome_type_select" value="history"/>
+            <param name="reference_genome|genome" value="merlin.fa"/>
+            <repeat name="track_groups">
+                <param name="category" value="Default" />
+                <repeat name="data_tracks">
+                    <conditional name="data_format">
+                        <param name="data_format_select" value="bed"/>
+                       <conditional name="useuri">
+                            <param name="insource" value="history"/>
+                            <param name="annotation" value="bed/test-3.bed"/>
+                       </conditional>
+                    </conditional>
+                </repeat>
+            </repeat>
+            <param name="uglyTestingHack" value="enabled" />
+            <output name="output">
+                <assert_contents>
+                    <has_text text="genome path="></has_text>
+                    <has_text text="dataset id="></has_text>
+                    <has_text text="history id="></has_text>
+                    <has_text text="metadata"></has_text>
+                    <has_text text="tool_id"></has_text>
+                    <has_text text="trackFile path="></has_text>
+                    <has_text text="ext=&quot;bed&quot; label=&quot;test-3.bed&quot;"></has_text>
+                </assert_contents>
+            </output>
+        </test>
+        <test>
+            <param name="reference_genome|genome_type_select" value="history"/>
+            <param name="reference_genome|genome" value="merlin.fa"/>
+            <repeat name="track_groups">
+                <param name="category" value="Auto Coloured" />
+                <repeat name="data_tracks">
+                    <conditional name="data_format">
+                        <param name="data_format_select" value="gff"/>
+                       <conditional name="useuri">
+                            <param name="insource" value="history"/>
+                           <param name="annotation" value="gff3/A.gff"/>
+                        </conditional>
+                        <conditional name="match_part">
+                            <param name="match_part_select" value="false"/>
+                        </conditional>
+                        <section name="jbcolor_scale">
+                            <conditional name="color_score">
+                                <param name="color_score_select" value="none"/>
+                            </conditional>
+                            <conditional name="color">
+                                <param name="color_select" value="automatic"/>
+                            </conditional>
+                        </section>
+                    </conditional>
+                </repeat>
+            </repeat>
+
+            <repeat name="track_groups">
+                <param name="category" value="Ignore Scale" />
+                <repeat name="data_tracks">
+                    <conditional name="data_format">
+                        <param name="data_format_select" value="gff"/>
+                       <conditional name="useuri">
+                            <param name="insource" value="history"/>
+                        <param name="annotation" value="gff3/1.gff"/>
+                        </conditional>
+                        <conditional name="match_part">
+                            <param name="match_part_select" value="false"/>
+                        </conditional>
+                        <section name="jbcolor_scale">
+                            <conditional name="color_score">
+                                <param name="color_score_select" value="none"/>
+                                <conditional name="color">
+                                    <param name="color_select" value="manual"/>
+                                    <param name="style_color" value="#ff00ff"/>
+                                </conditional>
+                            </conditional>
+                        </section>
+                    </conditional>
+                </repeat>
+            </repeat>
+
+            <repeat name="track_groups">
+                <param name="category" value="Scaled Colour" />
+                <repeat name="data_tracks">
+                    <conditional name="data_format">
+                        <param name="data_format_select" value="gff"/>
+                       <conditional name="useuri">
+                            <param name="insource" value= "history"/>
+                            <param name="annotation" value="gff3/C.gff"/>
+                        </conditional>
+                        <conditional name="match_part">
+                            <param name="match_part_select" value="false"/>
+                        </conditional>
+                        <section name="jbcolor_scale">
+                            <conditional name="color_score">
+                                <param name="color_score_select" value="score"/>
+                                <param name="score_scaling" value="linear"/>
+                                <conditional name="score_scales">
+                                    <param name="scale_select" value="automatic"/>
+                                </conditional>
+                                <conditional name="color_scheme">
+                                    <param name="score_scheme" value="opacity"/>
+                                    <conditional name="color">
+                                        <param name="color_select" value="automatic"/>
+                                    </conditional>
+                                </conditional>
+                            </conditional>
+                        </section>
+                    </conditional>
+                </repeat>
+                <repeat name="data_tracks">
+                    <conditional name="data_format">
+                        <param name="data_format_select" value="gff"/>
+                       <conditional name="useuri">
+                            <param name="annotation" value="gff3/B.gff"/>
+                            <param name="insource" value= "history"/>
+                        </conditional>
+                       <conditional name="match_part">
+                            <param name="match_part_select" value="false"/>
+                        </conditional>
+                        <section name="jbcolor_scale">
+                            <conditional name="color_score">
+                                <param name="color_score_select" value="score"/>
+                                <param name="score_scaling" value="linear"/>
+                                <conditional name="score_scales">
+                                    <param name="scale_select" value="automatic"/>
+                                </conditional>
+                                <conditional name="color_scheme">
+                                    <param name="score_scheme" value="opacity"/>
+                                    <conditional name="color">
+                                        <param name="color_select" value="manual"/>
+                                        <param name="style_color" value="#0000ff"/>
+                                    </conditional>
+                                </conditional>
+                            </conditional>
+                        </section>
+                    </conditional>
+                </repeat>
+                <repeat name="data_tracks">
+                    <conditional name="data_format">
+                        <param name="data_format_select" value="gff"/>
+                       <conditional name="useuri">
+                            <param name="annotation" value="gff3/A.gff"/>
+                            <param name="insource" value= "history"/>
+                        </conditional>
+                        <conditional name="match_part">
+                            <param name="match_part_select" value="false"/>
+                        </conditional>
+                        <section name="jbcolor_scale">
+                            <conditional name="color_score">
+                                <param name="color_score_select" value="score"/>
+                                <param name="score_scaling" value="linear"/>
+                                <conditional name="score_scales">
+                                    <param name="scale_select" value="manual"/>
+                                    <param name="minimum" value="0"/>
+                                    <param name="maximum" value="1000"/>
+                                </conditional>
+                                <conditional name="color_scheme">
+                                    <param name="score_scheme" value="opacity"/>
+                                    <conditional name="color">
+                                        <param name="color_select" value="automatic"/>
+                                    </conditional>
+                                </conditional>
+                            </conditional>
+                        </section>
+                    </conditional>
+                </repeat>
+                <repeat name="data_tracks">
+                    <conditional name="data_format">
+                        <param name="data_format_select" value="gff"/>
+                        <conditional name="useuri">
+                            <param name="annotation" value="gff3/1.gff"/>
+                            <param name="insource" value= "history"/>
+                        </conditional>
+                        <conditional name="match_part">
+                            <param name="match_part_select" value="false"/>
+                        </conditional>
+                        <section name="jbcolor_scale">
+                            <conditional name="color_score">
+                                <param name="color_score_select" value="score"/>
+                                <param name="score_scaling" value="linear"/>
+                                <conditional name="score_scales">
+                                    <param name="scale_select" value="manual"/>
+                                    <param name="minimum" value="0"/>
+                                    <param name="maximum" value="1000"/>
+                                </conditional>
+                                <conditional name="color_scheme">
+                                    <param name="score_scheme" value="opacity"/>
+                                    <conditional name="color">
+                                        <param name="color_select" value="manual"/>
+                                        <param name="style_color" value="#ff0000"/>
+                                    </conditional>
+                                </conditional>
+                            </conditional>
+                        </section>
+                    </conditional>
+                </repeat>
+            </repeat>
+
+            <repeat name="track_groups">
+                <param name="category" value="Realistic" />
+                <repeat name="data_tracks">
+                    <conditional name="data_format">
+                        <param name="data_format_select" value="gff"/>
+                        <conditional name="useuri">
+                            <param name="annotation" value="gff3/interpro.gff"/>
+                            <param name="insource" value= "history"/>
+                        </conditional>
+                        <conditional name="match_part">
+                            <param name="match_part_select" value="false"/>
+                        </conditional>
+                        <section name="jbcolor_scale">
+                            <conditional name="color_score">
+                                <param name="color_score_select" value="none"/>
+                            </conditional>
+                            <conditional name="color">
+                                <param name="color_select" value="automatic"/>
+                            </conditional>
+                        </section>
+                    </conditional>
+                </repeat>
+                <repeat name="data_tracks">
+                    <conditional name="data_format">
+                        <param name="data_format_select" value="gff"/>
+                         <conditional name="useuri">
+                            <param name="annotation" value="gff3/2.gff"/>
+                            <param name="insource" value= "history"/>
+                        </conditional>
+                        <conditional name="match_part">
+                            <param name="match_part_select" value="true"/>
+                            <param name="name" value="cDNA_match"/>
+                        </conditional>
+                        <section name="jbcolor_scale">
+                            <conditional name="color_score">
+                                <param name="color_score_select" value="none"/>
+                            </conditional>
+                            <conditional name="color">
+                                <param name="color_select" value="automatic"/>
+                            </conditional>
+                        </section>
+                    </conditional>
+                </repeat>
+            </repeat>
+
+            <param name="uglyTestingHack" value="enabled" />
+            <output name="output">
+                <assert_contents>
+                        <has_text text="Auto Coloured"/>
+                        <has_text text="A.gff"/>
+                        <has_text text="B.gff"/>
+                        <has_text text="C.gff"/>
+                        <has_text text="interpro.gff"/>
+                        <has_text text="Scaled Colour"/>
+                        <has_text text="1.gff"/>
+                        <has_text text="2.gff"/>
+                </assert_contents>
+            </output>
+        </test>
+        <test>
+            <param name="reference_genome|genome_type_select" value="history"/>
+            <param name="reference_genome|genome" value="merlin.fa"/>
+
+            <repeat name="track_groups">
+                <param name="category" value="With menu or index" />
+                <repeat name="data_tracks">
+                    <conditional name="data_format">
+                        <param name="data_format_select" value="gff"/>
+                        <conditional name="useuri">
+                            <param name="annotation" value="gff3/1.gff"/>
+                            <param name="insource" value= "history"/>
+                        </conditional>
+                        <conditional name="match_part">
+                            <param name="match_part_select" value="false"/>
+                        </conditional>
+                        <section name="jbcolor_scale">
+                            <conditional name="color_score">
+                                <param name="color_score_select" value="none"/>
+                            </conditional>
+                            <conditional name="color">
+                                <param name="color_select" value="automatic"/>
+                            </conditional>
+                        </section>
+                        <section name="jbmenu">
+                            <repeat name="track_menu">
+                                <param name="menu_action" value="iframeDialog"/>
+                                <param name="menu_label" value="Some menu item"/>
+                                <param name="menu_title" value="Frame title"/>
+                                <param name="menu_url" value="https://example.com/#!/?id={name}&amp;q={type}&amp;z=&quot;{end}&quot;"/>
+                                <param name="menu_icon" value="dijitIconNewTask"/>
+                            </repeat>
+                            <repeat name="track_menu">
+                                <param name="menu_action" value="newWindow"/>
+                                <param name="menu_label" value="Another menu item"/>
+                                <param name="menu_title" value="Frame title 2"/>
+                                <param name="menu_url" value="https://example.com/#!/?id={name}&amp;q={type}&amp;z=&quot;{end}&quot;"/>
+                            </repeat>
+                        </section>
+                    </conditional>
+                </repeat>
+                <repeat name="data_tracks">
+                    <conditional name="data_format">
+                        <param name="data_format_select" value="gff"/>
+                         <conditional name="useuri">
+                            <param name="annotation" value="gff3/1.gff"/>
+                            <param name="insource" value= "history"/>
+                        </conditional>
+                        <param name="insource" value= "history"/>
+                        <conditional name="match_part">
+                            <param name="match_part_select" value="false"/>
+                        </conditional>
+                        <section name="jbcolor_scale">
+                            <conditional name="color_score">
+                                <param name="color_score_select" value="none"/>
+                            </conditional>
+                            <conditional name="color">
+                                <param name="color_select" value="automatic"/>
+                            </conditional>
+                        </section>
+                    </conditional>
+                </repeat>
+            </repeat>
+
+            <param name="uglyTestingHack" value="enabled" />
+            <output name="output">
+                <assert_contents>
+                    <has_text text="With menu or index"/>
+                    <has_text text="gff"/>
+                </assert_contents>
+            </output>
+        </test>
+        <!-- TODO add a synteny test -->
+        <!-- TODO add a bam and a cram test -->
+        <!-- TODO add an hic test -->
+        <!-- TODO add a vcf_bgzip test -->
+    </tests>
+    <help><![CDATA[
+
+JBrowse2-in-Galaxy
+==================
+
+JBrowse2-in-Galaxy offers a highly configurable, workflow-compatible
+alternative to JBrowse1-in-Galaxy and Trackster.
+
+Compared to JBrowse1-in-Galaxy, there is no support for alternative codons for unusual genomes,
+and detailed track styling is not yet implemented. Send code.
+JBrowse1 development has now ceased in favour of JBrowse2.
+
+Use and local viewing
+=====================
+
+
+A JBrowse2 history item can be opened by viewing it (the "eye" icon).
+
+The same browser data and setup can also be downloaded as a compressed zip archive by clicking the download ("floppy disk") icon in the history.
+This can be shared and viewed without Galaxy.
+
+A replacement application to serve the browser is required without Galaxy. A local python web server can be started using a script included in each archive,
+assuming that Python3 is already working on your desktop - if not you will have to install it first. Unzip the archive (*unzip [filename].zip*) and change
+directory to the first level in that zip archive. It contains a file named *jb2_webserver.py*
+
+With python3 installed,
+
+*python3 jb2_webserver.py*
+
+will serve the unarchived JBrowse2 configuration from the same directory as the python script automatically. If a new browser window does not open,
+but the script appears to be running, try pointing your web browser to the default of *localhost:8080*
+
+Overview
+--------
+
+JBrowse is a fast, embeddable genome browser built completely with
+JavaScript and HTML5.
+
+The JBrowse-in-Galaxy (JiG) tool was written to help build complex
+JBrowse installations straight from Galaxy. It allows you to build up a JBrowse instance without worrying
+about how to run the command line tools to format your data, and which
+options need to be supplied and where.
+
+Options
+-------
+
+**Reference or Assembly**
+
+Choose either a built-in or select one from your history.
+
+Track coordinates and contig names *must* match this reference precisely
+or they will not display.
+
+**Track Groups** represent a set of tracks in a single category.
+
+Annotation Tracks
+-----------------
+
+GFF3/BED
+~~~~~~~~
+
+Standard feature tracks. They usually highlight genes, mRNAs and other features of interest along a genomic region.
+
+When these contain tens of millions of features, such as repeat regions from a VGP assembly, displaying one at a time leads
+to extremely slow loading times when a large region is in view, unless the "LinearPileupDisplay" display option is
+selected for that track in the styling options section. The default is LinearBasicDisplay, which shows all details and works
+well for relatively sparse bed files. A better option is to make a bigwig track using a set of windows based on the
+lengths of each assembly or reference contig.
+
+BAM Pileups
+~~~~~~~~~~~
+
+We support BAM files and can automatically generate SNP tracks based on
+that bam data.
+
+
+BlastXML
+~~~~~~~~
+
+JiG now supports both blastn and blastp datasets. JiG internally uses a
+blastXML to gapped GFF3 tool to convert your blastxml datasets into a
+format amenable to visualization in JBrowse. This tool is also
+available separately from the IUC on the toolshed.
+
+**Minimum Gap Size** reflects how long a gap must be before it becomes a
+real gap in the processed gff3 file. In the picture above, various sizes
+of gaps can be seen. If the minimum gap size was set much higher, say
+100nt, many of the smaller gaps would disappear, and the features on
+both sides would be merged into one, longer feature. This setting is
+inversely proportional to runtime and output file size. *Do not set this
+to a low value for large datasets*. By setting this number lower, you
+will have extremely large outputs and extremely long runtimes. The
+default was configured based off of the author's experience, but the
+author only works on small viruses. It is *strongly* recommended that
+you filter your blast results before display, e.g. picking out the top
+10 hits or so.
+
+**Protein blast search** option merely informs underlying tools that
+they should adjust feature locations by 3x.
+
+
+@ATTRIBUTION@
+]]></help>
+    <expand macro="citations"/>
+</tool>