changeset 137:e237edee9a53 draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/jbrowse2 commit 5482aa86f906615d9bddcc32cfbc2d45b24e6345
author iuc
date Fri, 24 Oct 2025 07:50:40 +0000
parents 93fdd696c281
children
files jbrowse2.py jbrowse2.xml macros.xml test-data/gtf/merlin.gtf test-data/out/01_all_tracks/config.json test-data/out/01_all_tracks/galaxy.xml test-data/out/03_synteny/config.json test-data/out/03_synteny/galaxy.xml test-data/out/04_synteny_remote/config.json test-data/out/04_synteny_remote/galaxy.xml test-data/out/05_synteny_full_remote/galaxy.xml test-data/out/06_various_options/config.json test-data/out/06_various_options/galaxy.xml test-data/out/07_synteny_mixed/config.json test-data/out/07_synteny_mixed/galaxy.xml
diffstat 15 files changed, 1170 insertions(+), 609 deletions(-) [+]
line wrap: on
line diff
--- a/jbrowse2.py	Thu Oct 02 10:20:29 2025 +0000
+++ b/jbrowse2.py	Fri Oct 24 07:50:40 2025 +0000
@@ -31,7 +31,9 @@
     "}": "__cc__",
     "@": "__at__",
     "#": "__pd__",
-    "": "__cn__",
+    "\n": "__cn__",
+    "\r": "__cr__",
+    "\t": "__tc__",
 }
 
 
@@ -62,6 +64,14 @@
 INSTALLED_TO = os.path.dirname(os.path.realpath(__file__))
 
 
+def unsanitize(input):
+
+    for key, value in mapped_chars.items():
+        input = input.replace(value, key)
+
+    return input
+
+
 def metadata_from_node(node):
     metadata = {}
 
@@ -74,7 +84,7 @@
             metadata[f"history_{key}"] = value
 
         for key, value in node.findall("metadata")[0].attrib.items():
-            metadata[f"metadata_{key}"] = value
+            metadata[f"metadata_{key}"] = unsanitize(value)
 
         for key, value in node.findall("tool")[0].attrib.items():
             metadata[f"tool_{key}"] = value
@@ -265,15 +275,11 @@
         }
 
         if "feature" in xml_conf["formatdetails"]:
-            feat_jexl = xml_conf["formatdetails"]["feature"]
-            for key, value in mapped_chars.items():
-                feat_jexl = feat_jexl.replace(value, key)
+            feat_jexl = unsanitize(xml_conf["formatdetails"]["feature"])
             formatDetails["feature"] = feat_jexl
 
         if "subfeature" in xml_conf["formatdetails"]:
-            sfeat_jexl = xml_conf["formatdetails"]["subfeature"]
-            for key, value in mapped_chars.items():
-                sfeat_jexl = sfeat_jexl.replace(value, key)
+            sfeat_jexl = unsanitize(xml_conf["formatdetails"]["subfeature"])
             formatDetails["subfeatures"] = sfeat_jexl
 
         if "depth" in xml_conf["formatdetails"]:
@@ -773,6 +779,54 @@
             remote=trackData['remote']
         )
 
+    def add_gtf(self, parent, data, format, trackData, gffOpts, **kwargs):
+        # Not a super recommended format
+        # https://github.com/GMOD/jbrowse-components/pull/2389
+        # https://github.com/GMOD/jbrowse-components/issues/3876
+        if trackData['remote']:
+            rel_dest = data
+        else:
+            rel_dest = os.path.join("data", trackData["label"] + ".gtf")
+            dest = os.path.join(self.outdir, rel_dest)
+            shutil.copy(os.path.realpath(data), dest)
+
+        json_track_data = {
+            "type": "FeatureTrack",
+            "trackId": trackData["label"],
+            "name": trackData["key"],
+            "adapter": {
+                "type": "GtfAdapter",
+                "gtfLocation": {
+                    "uri": rel_dest,
+                    "locationType": "UriLocation"
+                },
+            },
+            "category": [trackData["category"]],
+            "assemblyNames": [parent['uniq_id']],
+        }
+
+        style_json = self._prepare_track_style(trackData)
+
+        formatdetails = self._prepare_format_details(trackData)
+
+        style_json.update(formatdetails)
+
+        track_metadata = self._prepare_track_metadata(trackData)
+
+        style_json.update(track_metadata)
+
+        json_track_data.update(style_json)
+
+        self.subprocess_check_call(
+            [
+                "jbrowse",
+                "add-track-json",
+                "--target",
+                self.outdir,
+                json.dumps(json_track_data),
+            ]
+        )
+
     def add_bed(self, parent, data, format, trackData, gffOpts, **kwargs):
         if trackData['remote']:
             rel_dest = data
@@ -1115,8 +1169,7 @@
             extra_metadata,
         ) in enumerate(track["trackfiles"]):
             # Unsanitize labels (element_identifiers are always sanitized by Galaxy)
-            for key, value in mapped_chars.items():
-                track_human_label = track_human_label.replace(value, key)
+            track_human_label = unsanitize(track_human_label)
 
             is_multi = type(dataset_path) is list
 
@@ -1180,6 +1233,14 @@
                     outputTrackConfig,
                     track["conf"]["options"]["gff"],
                 )
+            elif dataset_ext in ("gtf"):
+                self.add_gtf(
+                    parent,
+                    dataset_path,
+                    dataset_ext,
+                    outputTrackConfig,
+                    track["conf"]["options"]["gff"],
+                )
             elif dataset_ext == "bed":
                 self.add_bed(
                     parent,
@@ -1288,13 +1349,10 @@
                     track["conf"]["options"]["hic"]
                 )
             elif dataset_ext == "sparql":
-                sparql_query = track["conf"]["options"]["sparql"]["query"]
-                for key, value in mapped_chars.items():
-                    sparql_query = sparql_query.replace(value, key)
+                sparql_query = unsanitize(track["conf"]["options"]["sparql"]["query"])
                 sparql_query_refnames = track["conf"]["options"]["sparql"].get("query_refnames", "")
                 if sparql_query_refnames:
-                    for key, value in mapped_chars.items():
-                        sparql_query_refnames = sparql_query_refnames.replace(value, key)
+                    sparql_query_refnames = unsanitize(sparql_query_refnames)
                 self.add_sparql(
                     parent,
                     track["conf"]["options"]["sparql"]["url"],
@@ -1308,7 +1366,7 @@
                     outputTrackConfig,
                 )
             else:
-                log.error(f"Do not know how to handle {dataset_ext}")
+                raise RuntimeError(f"Do not know how to handle dataset of type '{dataset_ext}'")
 
             track_labels.append(outputTrackConfig["label"])
 
@@ -1710,7 +1768,8 @@
 
             track_labels = jc.process_annotations(track_conf, genome)
 
-            if track.attrib["visibility"] == "default_on":
+            if track.attrib["visibility"] == "default_on" and \
+               (track_conf["format"] != "synteny" or track_conf["style"]["display"] != "LinearSyntenyDisplay"):
                 for tlabel in track_labels:
                     default_tracks_on.append(tlabel)
 
--- a/jbrowse2.xml	Thu Oct 02 10:20:29 2025 +0000
+++ b/jbrowse2.xml	Fri Oct 24 07:50:40 2025 +0000
@@ -85,7 +85,7 @@
                     display_name="Unnamed History"/>
                     #end if
                 <metadata
-                    #for (key, value) in $assembly.reference_genome.genome.get_metadata().items():
+                    #for (key, value) in $assembly.reference_genome.genome.metadata.items():
                     #if "_types" not in $key:
                     #if isinstance($value, list):
                         #set value_str = "[%s]" % ','.join([str(val) for val in value])
@@ -144,8 +144,12 @@
                             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:
+                            #for (key, value) in $dataset.metadata.items():
+                            ## Skip a few useless metadata
+                            ##   _index = internal paths to index files
+                            ##   species_chromosomes = internal path to .len file
+                            ##   metadata_incomplete = internal galaxy stuff
+                            #if "_types" not in $key and not $key.endswith("_index") and $key != "species_chromosomes" and $key != "metadata_incomplete" and $value is not None and len(str($value)) < 5000:
                             #if isinstance($value, list) or isinstance($value, dict):
                                 #set value_str = json.dumps(value).replace('"', "&quot;")
                                 ${key}="${value_str}"
@@ -310,7 +314,7 @@
             </when>
         </conditional>
 
-        <repeat name="assemblies" min="1" title="Genome Assemblies">
+        <repeat name="assemblies" min="1" title="Genome Assembly">
         <conditional name="reference_genome">
             <param label="Reference genome to display" name="genome_type_select" type="select">
                 <option selected="True" value="indexed">Use a built-in genome</option>
@@ -348,19 +352,21 @@
              https://github.com/GMOD/jbrowse-components/issues/1765
         -->
 
-        <param label="Default region to display" type="text" name="defaultLocation" value="" help="e.g. 'ctgA:1234..5678'"/>
+        <param label="Default region to display" type="text" name="defaultLocation" value="" help="e.g. 'ctgA:1234..5678'">
+            <validator type="expression" message="Region should be like ctgA:1234..5678">'^[a-zA-Z0-9_]:\d+\.\.\d+$'</validator>
+        </param>
 
         <param name="ref_name_aliases" type="data" format="tsv,tabular" label="Reference sequence name aliases" help="Use when chromosomes have alternate names (TSV file: first column is the names from your genome sequence, the rest of the columns are aliases." optional="true" />
 
         <param name="cytobands" type="data" format="bed" label="cytobands data" help="BED file containing cytobands locations" optional="true" />
 
-        <repeat name="track_groups" title="Track Group">
-            <param label="Track Category"
+        <repeat name="track_groups" title="Track Category" help="Organise your tracks into different Categories for a nicer end-user experience.">
+            <param label="Track Category Label"
                 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">
+                help="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="Track">
                 <conditional name="data_format" label="Track Options">
                     <param type="select" label="Track Type" name="data_format_select">
                         <option value="gene_calls">GFF/GFF3/BED Features</option>
@@ -375,7 +381,7 @@
                         <option value="gc">GC content</option>
                     </param>
                     <when value="gene_calls">
-                        <expand macro="input_conditional" label="GFF/GFF3/BED Track Data" format="gff,gff3,bed" />
+                        <expand macro="input_conditional" label="GFF/GFF3/BED Track Data" format="gff,gff3,bed" help="GTF format is supported but GFF should be preferred" />
 
                         <param label="Index this track" name="index" type="boolean" checked="false" truevalue="true" falsevalue="false" />
 
@@ -512,6 +518,15 @@
                     </repeat>
                     <repeat name="data_tracks">
                         <conditional name="data_format">
+                            <param name="data_format_select" value="gene_calls" />
+                            <conditional name="annotation_cond">
+                                <param name="annotation_source" value="history" />
+                                <param name="annotation" value="gtf/merlin.gtf" ftype="gtf" />
+                            </conditional>
+                        </conditional>
+                    </repeat>
+                    <repeat name="data_tracks">
+                        <conditional name="data_format">
                             <param name="data_format_select" value="gene_calls"/>
                             <conditional name="annotation_cond">
                                 <param name="annotation_source" value="history" />
@@ -593,8 +608,12 @@
                 </repeat>
             </repeat>
             <output name="output">
-                <extra_files name="galaxy.xml" type="file" value="out/01_all_tracks/galaxy.xml" compare="sim_size" />
-                <extra_files name="config.json" type="file" value="out/01_all_tracks/config.json" compare="sim_size" />
+                <extra_files name="galaxy.xml" type="file" value="out/01_all_tracks/galaxy.xml" compare="sim_size" delta="0">
+                    <assert_contents>
+                        <is_valid_xml />
+                    </assert_contents>
+                </extra_files>
+                <extra_files name="config.json" type="file" value="out/01_all_tracks/config.json" compare="sim_size" delta="0" />
             </output>
         </test>
         <test> <!-- Remote data -->
@@ -703,8 +722,17 @@
                 </repeat>
             </repeat>
             <output name="output">
-                <extra_files name="galaxy.xml" type="file" value="out/02_remote/galaxy.xml" compare="sim_size" />
-                <extra_files name="config.json" type="file" value="out/02_remote/config.json" compare="sim_size" />
+                <extra_files name="galaxy.xml" type="file" value="out/02_remote/galaxy.xml" compare="sim_size" delta="0">
+                    <assert_contents>
+                        <is_valid_xml />
+                    </assert_contents>
+                </extra_files>
+                <extra_files name="config.json" type="file" value="out/02_remote/config.json" compare="sim_size" delta="0">
+                    <assert_contents>
+                        <has_json_property_with_value property="adapter" value="{&quot;type&quot;:&quot;BigWigAdapter&quot;,&quot;bigWigLocation&quot;:{&quot;uri&quot;:&quot;https://s3.amazonaws.com/jbrowse.org/genomes/hg19/reads_lr_skbr3.fa_ngmlr-0.2.3_mapped.bam.regions.bw&quot;,&quot;locationType&quot;:&quot;UriLocation&quot;}}" />
+                        <has_json_property_with_value property="adapter" value="{&quot;type&quot;:&quot;MultiWiggleAdapter&quot;,&quot;subadapters&quot;:[{&quot;type&quot;:&quot;BigWigAdapter&quot;,&quot;name&quot;:&quot;SKBR3 pacbio coverage (NGMLR)&quot;,&quot;bigWigLocation&quot;:{&quot;uri&quot;:&quot;https://s3.amazonaws.com/jbrowse.org/genomes/hg19/reads_lr_skbr3.fa_ngmlr-0.2.3_mapped.bam.regions.bw&quot;,&quot;locationType&quot;:&quot;UriLocation&quot;}}]}" />
+                    </assert_contents>
+                </extra_files>
             </output>
         </test>
         <test> <!-- Synteny merlin -->
@@ -721,6 +749,11 @@
                                 <param name="annotation_source" value="history" />
                                 <param name="annotation" value="paf/merlun_on_merlon.paf"/>
                             </conditional>
+                            <section name="jbstyle">
+                                <conditional name="track_style">
+                                    <param name="display" value="LinearSyntenyDisplay" />
+                                </conditional>
+                            </section>
                         </conditional>
                     </repeat>
                 </repeat>
@@ -738,6 +771,11 @@
                                 <param name="annotation_source" value="history" />
                                 <param name="annotation" value="paf/merlon_on_merlin.paf"/>
                             </conditional>
+                            <section name="jbstyle">
+                                <conditional name="track_style">
+                                    <param name="display" value="LinearSyntenyDisplay" />
+                                </conditional>
+                            </section>
                         </conditional>
                     </repeat>
                 </repeat>
@@ -760,8 +798,12 @@
                 </repeat>
             </repeat>
             <output name="output">
-                <extra_files name="galaxy.xml" type="file" value="out/03_synteny/galaxy.xml" compare="sim_size" />
-                <extra_files name="config.json" type="file" value="out/03_synteny/config.json" compare="sim_size" />
+                <extra_files name="galaxy.xml" type="file" value="out/03_synteny/galaxy.xml" compare="sim_size" delta="0">
+                    <assert_contents>
+                        <is_valid_xml />
+                    </assert_contents>
+                </extra_files>
+                <extra_files name="config.json" type="file" value="out/03_synteny/config.json" compare="sim_size" delta="0" />
             </output>
         </test>
         <test> <!-- Synteny with remote genomes -->
@@ -779,6 +821,11 @@
                                 <param name="annotation_source" value="history" />
                                 <param name="annotation" value="paf/peach-grape-map.paf"/>
                             </conditional>
+                            <section name="jbstyle">
+                                <conditional name="track_style">
+                                    <param name="display" value="LinearSyntenyDisplay" />
+                                </conditional>
+                            </section>
                         </conditional>
                     </repeat>
                 </repeat>
@@ -791,8 +838,12 @@
                 </conditional>
             </repeat>
             <output name="output">
-                <extra_files name="galaxy.xml" type="file" value="out/04_synteny_remote/galaxy.xml" compare="sim_size" />
-                <extra_files name="config.json" type="file" value="out/04_synteny_remote/config.json" compare="sim_size" />
+                <extra_files name="galaxy.xml" type="file" value="out/04_synteny_remote/galaxy.xml" compare="sim_size" delta="0">
+                    <assert_contents>
+                        <is_valid_xml />
+                    </assert_contents>
+                </extra_files>
+                <extra_files name="config.json" type="file" value="out/04_synteny_remote/config.json" compare="sim_size" delta="0" />
             </output>
         </test>
         <test> <!-- Synteny with remote genomes *and* paf -->
@@ -811,6 +862,11 @@
                                 <param name="uri" value="https://s3.amazonaws.com/jbrowse.org/genomes/synteny/peach_grape.paf.gz" />
                                 <param name="label" value="Peach vs grape" />
                             </conditional>
+                            <section name="jbstyle">
+                                <conditional name="track_style">
+                                    <param name="display" value="LinearSyntenyDisplay" />
+                                </conditional>
+                            </section>
                         </conditional>
                     </repeat>
                 </repeat>
@@ -823,8 +879,12 @@
                 </conditional>
             </repeat>
             <output name="output">
-                <extra_files name="galaxy.xml" type="file" value="out/05_synteny_full_remote/galaxy.xml" compare="sim_size" />
-                <extra_files name="config.json" type="file" value="out/05_synteny_full_remote/config.json" compare="sim_size" />
+                <extra_files name="galaxy.xml" type="file" value="out/05_synteny_full_remote/galaxy.xml" compare="sim_size" delta="0">
+                    <assert_contents>
+                        <is_valid_xml />
+                    </assert_contents>
+                </extra_files>
+                <extra_files name="config.json" type="file" value="out/05_synteny_full_remote/config.json" compare="sim_size" delta="0" />
             </output>
         </test>
         <test> <!-- various options,  cytobands, ref name aliases -->
@@ -891,8 +951,12 @@
                 <param name="font_size" value="15" />
             </section>
             <output name="output">
-                <extra_files name="galaxy.xml" type="file" value="out/06_various_options/galaxy.xml" compare="sim_size" />
-                <extra_files name="config.json" type="file" value="out/06_various_options/config.json" compare="sim_size" />
+                <extra_files name="galaxy.xml" type="file" value="out/06_various_options/galaxy.xml" compare="sim_size" delta="0">
+                    <assert_contents>
+                        <is_valid_xml />
+                    </assert_contents>
+                </extra_files>
+                <extra_files name="config.json" type="file" value="out/06_various_options/config.json" compare="sim_size" delta="0" />
             </output>
         </test>
         <test> <!-- Synteny, mixed basic / viewer -->
@@ -909,6 +973,11 @@
                                 <param name="annotation_source" value="history" />
                                 <param name="annotation" value="paf/merlun_on_merlon.paf"/>
                             </conditional>
+                            <section name="jbstyle">
+                                <conditional name="track_style">
+                                    <param name="display" value="LinearSyntenyDisplay" />
+                                </conditional>
+                            </section>
                         </conditional>
                     </repeat>
                     <repeat name="data_tracks">
@@ -940,6 +1009,11 @@
                                 <param name="annotation_source" value="history" />
                                 <param name="annotation" value="paf/merlon_on_merlin.paf"/>
                             </conditional>
+                            <section name="jbstyle">
+                                <conditional name="track_style">
+                                    <param name="display" value="LinearSyntenyDisplay" />
+                                </conditional>
+                            </section>
                         </conditional>
                     </repeat>
                     <repeat name="data_tracks">
@@ -976,8 +1050,12 @@
                 </repeat>
             </repeat>
             <output name="output">
-                <extra_files name="galaxy.xml" type="file" value="out/07_synteny_mixed/galaxy.xml" compare="sim_size" />
-                <extra_files name="config.json" type="file" value="out/07_synteny_mixed/config.json" compare="sim_size" />
+                <extra_files name="galaxy.xml" type="file" value="out/07_synteny_mixed/galaxy.xml" compare="sim_size" delta="0">
+                    <assert_contents>
+                        <is_valid_xml />
+                    </assert_contents>
+                </extra_files>
+                <extra_files name="config.json" type="file" value="out/07_synteny_mixed/config.json" compare="sim_size" delta="0" />
             </output>
         </test>
     </tests>
@@ -1016,15 +1094,15 @@
 To add an assembly, you will need to input its sequence, either from a FASTA file in your history
 or from a genome pre-installed by your server administrators.
 
-### Track Groups
+### Track Categories
 
-Track groups represent a set of tracks in a single category. These
+Track Categories represent a set of related tracks. These
 can be used to let your users understand relationships between large
 groups of tracks.
 
-### Annotation Tracks
+### Tracks
 
-Within Track Groups, you have one or more **Annotation Tracks**. Each
+Within Track Categories, you have one or more **Tracks**. Each
 Annotation Track is a dataset, or a group of datasets which have similar styling.
 This allows you to rapidly build up JBrowse instances without having to
 configure tracks individually. For example, if you have five different GFF3 files from
--- a/macros.xml	Thu Oct 02 10:20:29 2025 +0000
+++ b/macros.xml	Fri Oct 24 07:50:40 2025 +0000
@@ -11,7 +11,7 @@
             <yield/>
         </requirements>
     </xml>
-    <token name="@VERSION_SUFFIX@">0</token>
+    <token name="@VERSION_SUFFIX@">1</token>
 
     <xml name="general_options">
         <section name="jbgen" title="Advanced: general JBrowse options" expanded="false">
@@ -223,7 +223,7 @@
             <conditional name="track_style">
                 <param name="display" type="select" label="Display style" help="How the track will be displayed by default">
                     <option value="LinearBasicDisplay" selected="true">Basic track display</option>
-                    <option value="LinearSyntenyDisplay" selected="true">Synteny viewer</option>
+                    <option value="LinearSyntenyDisplay">Synteny viewer</option>
                 </param>
                 <when value="LinearBasicDisplay"/>
                 <when value="LinearSyntenyDisplay"/>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/gtf/merlin.gtf	Fri Oct 24 07:50:40 2025 +0000
@@ -0,0 +1,292 @@
+Merlin	merlin	transcript	2	691	.	+	.	transcript_id "Merlin_1_exon"; gene_id "Merlin_1_exon"
+Merlin	merlin	CDS	2	691	.	+	0	transcript_id "Merlin_1_exon";
+Merlin	merlin	transcript	2	691	.	+	.	transcript_id "Merlin_1_mRNA"; gene_id "Merlin_1"
+Merlin	merlin	exon	2	691	.	+	.	transcript_id "Merlin_1_mRNA"; gene_id "Merlin_1";
+Merlin	merlin	transcript	752	1039	.	+	.	transcript_id "Merlin_2_exon"; gene_id "Merlin_2_exon"
+Merlin	merlin	CDS	752	1039	.	+	0	transcript_id "Merlin_2_exon";
+Merlin	merlin	transcript	752	1039	.	+	.	transcript_id "Merlin_2_mRNA"; gene_id "Merlin_2"
+Merlin	merlin	exon	752	1039	.	+	.	transcript_id "Merlin_2_mRNA"; gene_id "Merlin_2";
+Merlin	merlin	transcript	1067	2011	.	-	.	transcript_id "Merlin_3_exon"; gene_id "Merlin_3_exon"
+Merlin	merlin	CDS	1067	2011	.	-	0	transcript_id "Merlin_3_exon";
+Merlin	merlin	transcript	1067	2011	.	-	.	transcript_id "Merlin_3_mRNA"; gene_id "Merlin_3"
+Merlin	merlin	exon	1067	2011	.	-	.	transcript_id "Merlin_3_mRNA"; gene_id "Merlin_3";
+Merlin	merlin	transcript	2011	3066	.	-	.	transcript_id "Merlin_4_exon"; gene_id "Merlin_4_exon"
+Merlin	merlin	CDS	2011	3066	.	-	0	transcript_id "Merlin_4_exon";
+Merlin	merlin	transcript	2011	3066	.	-	.	transcript_id "Merlin_4_mRNA"; gene_id "Merlin_4"
+Merlin	merlin	exon	2011	3066	.	-	.	transcript_id "Merlin_4_mRNA"; gene_id "Merlin_4";
+Merlin	merlin	transcript	3066	4796	.	-	.	transcript_id "Merlin_5_exon"; gene_id "Merlin_5_exon"
+Merlin	merlin	CDS	3066	4796	.	-	0	transcript_id "Merlin_5_exon";
+Merlin	merlin	transcript	3066	4796	.	-	.	transcript_id "Merlin_5_mRNA"; gene_id "Merlin_5"
+Merlin	merlin	exon	3066	4796	.	-	.	transcript_id "Merlin_5_mRNA"; gene_id "Merlin_5";
+Merlin	merlin	transcript	4793	5317	.	-	.	transcript_id "Merlin_6_exon"; gene_id "Merlin_6_exon"
+Merlin	merlin	CDS	4793	5317	.	-	0	transcript_id "Merlin_6_exon";
+Merlin	merlin	transcript	4793	5317	.	-	.	transcript_id "Merlin_6_mRNA"; gene_id "Merlin_6"
+Merlin	merlin	exon	4793	5317	.	-	.	transcript_id "Merlin_6_mRNA"; gene_id "Merlin_6";
+Merlin	merlin	transcript	5289	6431	.	-	.	transcript_id "Merlin_7_exon"; gene_id "Merlin_7_exon"
+Merlin	merlin	CDS	5289	6431	.	-	0	transcript_id "Merlin_7_exon";
+Merlin	merlin	transcript	5289	6431	.	-	.	transcript_id "Merlin_7_mRNA"; gene_id "Merlin_7"
+Merlin	merlin	exon	5289	6431	.	-	.	transcript_id "Merlin_7_mRNA"; gene_id "Merlin_7";
+Merlin	merlin	transcript	6428	7180	.	-	.	transcript_id "Merlin_8_exon"; gene_id "Merlin_8_exon"
+Merlin	merlin	CDS	6428	7180	.	-	0	transcript_id "Merlin_8_exon";
+Merlin	merlin	transcript	6428	7180	.	-	.	transcript_id "Merlin_8_mRNA"; gene_id "Merlin_8"
+Merlin	merlin	exon	6428	7180	.	-	.	transcript_id "Merlin_8_mRNA"; gene_id "Merlin_8";
+Merlin	merlin	transcript	7228	7857	.	+	.	transcript_id "Merlin_9_exon"; gene_id "Merlin_9_exon"
+Merlin	merlin	CDS	7228	7857	.	+	0	transcript_id "Merlin_9_exon";
+Merlin	merlin	transcript	7228	7857	.	+	.	transcript_id "Merlin_9_mRNA"; gene_id "Merlin_9"
+Merlin	merlin	exon	7228	7857	.	+	.	transcript_id "Merlin_9_mRNA"; gene_id "Merlin_9";
+Merlin	merlin	transcript	7857	8252	.	+	.	transcript_id "Merlin_10_exon"; gene_id "Merlin_10_exon"
+Merlin	merlin	CDS	7857	8252	.	+	0	transcript_id "Merlin_10_exon";
+Merlin	merlin	transcript	7857	8252	.	+	.	transcript_id "Merlin_10_mRNA"; gene_id "Merlin_10"
+Merlin	merlin	exon	7857	8252	.	+	.	transcript_id "Merlin_10_mRNA"; gene_id "Merlin_10";
+Merlin	merlin	transcript	8340	8753	.	+	.	transcript_id "Merlin_11_exon"; gene_id "Merlin_11_exon"
+Merlin	merlin	CDS	8340	8753	.	+	0	transcript_id "Merlin_11_exon";
+Merlin	merlin	transcript	8340	8753	.	+	.	transcript_id "Merlin_11_mRNA"; gene_id "Merlin_11"
+Merlin	merlin	exon	8340	8753	.	+	.	transcript_id "Merlin_11_mRNA"; gene_id "Merlin_11";
+Merlin	merlin	transcript	8787	8951	.	+	.	transcript_id "Merlin_12_exon"; gene_id "Merlin_12_exon"
+Merlin	merlin	CDS	8787	8951	.	+	0	transcript_id "Merlin_12_exon";
+Merlin	merlin	transcript	8787	8951	.	+	.	transcript_id "Merlin_12_mRNA"; gene_id "Merlin_12"
+Merlin	merlin	exon	8787	8951	.	+	.	transcript_id "Merlin_12_mRNA"; gene_id "Merlin_12";
+Merlin	merlin	transcript	9014	9241	.	-	.	transcript_id "Merlin_13_exon"; gene_id "Merlin_13_exon"
+Merlin	merlin	CDS	9014	9241	.	-	0	transcript_id "Merlin_13_exon";
+Merlin	merlin	transcript	9014	9241	.	-	.	transcript_id "Merlin_13_mRNA"; gene_id "Merlin_13"
+Merlin	merlin	exon	9014	9241	.	-	.	transcript_id "Merlin_13_mRNA"; gene_id "Merlin_13";
+Merlin	merlin	transcript	9248	10747	.	-	.	transcript_id "Merlin_14_exon"; gene_id "Merlin_14_exon"
+Merlin	merlin	CDS	9248	10747	.	-	0	transcript_id "Merlin_14_exon";
+Merlin	merlin	transcript	9248	10747	.	-	.	transcript_id "Merlin_14_mRNA"; gene_id "Merlin_14"
+Merlin	merlin	exon	9248	10747	.	-	.	transcript_id "Merlin_14_mRNA"; gene_id "Merlin_14";
+Merlin	merlin	transcript	10800	11435	.	+	.	transcript_id "Merlin_15_exon"; gene_id "Merlin_15_exon"
+Merlin	merlin	CDS	10800	11435	.	+	0	transcript_id "Merlin_15_exon";
+Merlin	merlin	transcript	10800	11435	.	+	.	transcript_id "Merlin_15_mRNA"; gene_id "Merlin_15"
+Merlin	merlin	exon	10800	11435	.	+	.	transcript_id "Merlin_15_mRNA"; gene_id "Merlin_15";
+Merlin	merlin	transcript	11469	12290	.	+	.	transcript_id "Merlin_16_exon"; gene_id "Merlin_16_exon"
+Merlin	merlin	CDS	11469	12290	.	+	0	transcript_id "Merlin_16_exon";
+Merlin	merlin	transcript	11469	12290	.	+	.	transcript_id "Merlin_16_mRNA"; gene_id "Merlin_16"
+Merlin	merlin	exon	11469	12290	.	+	.	transcript_id "Merlin_16_mRNA"; gene_id "Merlin_16";
+Merlin	merlin	transcript	12365	12601	.	+	.	transcript_id "Merlin_17_exon"; gene_id "Merlin_17_exon"
+Merlin	merlin	CDS	12365	12601	.	+	0	transcript_id "Merlin_17_exon";
+Merlin	merlin	transcript	12365	12601	.	+	.	transcript_id "Merlin_17_mRNA"; gene_id "Merlin_17"
+Merlin	merlin	exon	12365	12601	.	+	.	transcript_id "Merlin_17_mRNA"; gene_id "Merlin_17";
+Merlin	merlin	transcript	12598	12951	.	+	.	transcript_id "Merlin_18_exon"; gene_id "Merlin_18_exon"
+Merlin	merlin	CDS	12598	12951	.	+	0	transcript_id "Merlin_18_exon";
+Merlin	merlin	transcript	12598	12951	.	+	.	transcript_id "Merlin_18_mRNA"; gene_id "Merlin_18"
+Merlin	merlin	exon	12598	12951	.	+	.	transcript_id "Merlin_18_mRNA"; gene_id "Merlin_18";
+Merlin	merlin	transcript	13067	13330	.	+	.	transcript_id "Merlin_19_exon"; gene_id "Merlin_19_exon"
+Merlin	merlin	CDS	13067	13330	.	+	0	transcript_id "Merlin_19_exon";
+Merlin	merlin	transcript	13067	13330	.	+	.	transcript_id "Merlin_19_mRNA"; gene_id "Merlin_19"
+Merlin	merlin	exon	13067	13330	.	+	.	transcript_id "Merlin_19_mRNA"; gene_id "Merlin_19";
+Merlin	merlin	transcript	13340	14341	.	+	.	transcript_id "Merlin_20_exon"; gene_id "Merlin_20_exon"
+Merlin	merlin	CDS	13340	14341	.	+	0	transcript_id "Merlin_20_exon";
+Merlin	merlin	transcript	13340	14341	.	+	.	transcript_id "Merlin_20_mRNA"; gene_id "Merlin_20"
+Merlin	merlin	exon	13340	14341	.	+	.	transcript_id "Merlin_20_mRNA"; gene_id "Merlin_20";
+Merlin	merlin	transcript	14320	14883	.	+	.	transcript_id "Merlin_21_exon"; gene_id "Merlin_21_exon"
+Merlin	merlin	CDS	14320	14883	.	+	0	transcript_id "Merlin_21_exon";
+Merlin	merlin	transcript	14320	14883	.	+	.	transcript_id "Merlin_21_mRNA"; gene_id "Merlin_21"
+Merlin	merlin	exon	14320	14883	.	+	.	transcript_id "Merlin_21_mRNA"; gene_id "Merlin_21";
+Merlin	merlin	transcript	14911	16197	.	-	.	transcript_id "Merlin_22_exon"; gene_id "Merlin_22_exon"
+Merlin	merlin	CDS	14911	16197	.	-	0	transcript_id "Merlin_22_exon";
+Merlin	merlin	transcript	14911	16197	.	-	.	transcript_id "Merlin_22_mRNA"; gene_id "Merlin_22"
+Merlin	merlin	exon	14911	16197	.	-	.	transcript_id "Merlin_22_mRNA"; gene_id "Merlin_22";
+Merlin	merlin	transcript	16289	17836	.	-	.	transcript_id "Merlin_23_exon"; gene_id "Merlin_23_exon"
+Merlin	merlin	CDS	16289	17836	.	-	0	transcript_id "Merlin_23_exon";
+Merlin	merlin	transcript	16289	17836	.	-	.	transcript_id "Merlin_23_mRNA"; gene_id "Merlin_23"
+Merlin	merlin	exon	16289	17836	.	-	.	transcript_id "Merlin_23_mRNA"; gene_id "Merlin_23";
+Merlin	merlin	transcript	17858	18673	.	-	.	transcript_id "Merlin_24_exon"; gene_id "Merlin_24_exon"
+Merlin	merlin	CDS	17858	18673	.	-	0	transcript_id "Merlin_24_exon";
+Merlin	merlin	transcript	17858	18673	.	-	.	transcript_id "Merlin_24_mRNA"; gene_id "Merlin_24"
+Merlin	merlin	exon	17858	18673	.	-	.	transcript_id "Merlin_24_mRNA"; gene_id "Merlin_24";
+Merlin	merlin	transcript	18707	19351	.	-	.	transcript_id "Merlin_25_exon"; gene_id "Merlin_25_exon"
+Merlin	merlin	CDS	18707	19351	.	-	0	transcript_id "Merlin_25_exon";
+Merlin	merlin	transcript	18707	19351	.	-	.	transcript_id "Merlin_25_mRNA"; gene_id "Merlin_25"
+Merlin	merlin	exon	18707	19351	.	-	.	transcript_id "Merlin_25_mRNA"; gene_id "Merlin_25";
+Merlin	merlin	transcript	19351	19776	.	-	.	transcript_id "Merlin_26_exon"; gene_id "Merlin_26_exon"
+Merlin	merlin	CDS	19351	19776	.	-	0	transcript_id "Merlin_26_exon";
+Merlin	merlin	transcript	19351	19776	.	-	.	transcript_id "Merlin_26_mRNA"; gene_id "Merlin_26"
+Merlin	merlin	exon	19351	19776	.	-	.	transcript_id "Merlin_26_mRNA"; gene_id "Merlin_26";
+Merlin	merlin	transcript	19776	19988	.	-	.	transcript_id "Merlin_27_exon"; gene_id "Merlin_27_exon"
+Merlin	merlin	CDS	19776	19988	.	-	0	transcript_id "Merlin_27_exon";
+Merlin	merlin	transcript	19776	19988	.	-	.	transcript_id "Merlin_27_mRNA"; gene_id "Merlin_27"
+Merlin	merlin	exon	19776	19988	.	-	.	transcript_id "Merlin_27_mRNA"; gene_id "Merlin_27";
+Merlin	merlin	transcript	19988	21550	.	-	.	transcript_id "Merlin_28_exon"; gene_id "Merlin_28_exon"
+Merlin	merlin	CDS	19988	21550	.	-	0	transcript_id "Merlin_28_exon";
+Merlin	merlin	transcript	19988	21550	.	-	.	transcript_id "Merlin_28_mRNA"; gene_id "Merlin_28"
+Merlin	merlin	exon	19988	21550	.	-	.	transcript_id "Merlin_28_mRNA"; gene_id "Merlin_28";
+Merlin	merlin	transcript	21625	22116	.	-	.	transcript_id "Merlin_29_exon"; gene_id "Merlin_29_exon"
+Merlin	merlin	CDS	21625	22116	.	-	0	transcript_id "Merlin_29_exon";
+Merlin	merlin	transcript	21625	22116	.	-	.	transcript_id "Merlin_29_mRNA"; gene_id "Merlin_29"
+Merlin	merlin	exon	21625	22116	.	-	.	transcript_id "Merlin_29_mRNA"; gene_id "Merlin_29";
+Merlin	merlin	transcript	22240	24216	.	-	.	transcript_id "Merlin_30_exon"; gene_id "Merlin_30_exon"
+Merlin	merlin	CDS	22240	24216	.	-	0	transcript_id "Merlin_30_exon";
+Merlin	merlin	transcript	22240	24216	.	-	.	transcript_id "Merlin_30_mRNA"; gene_id "Merlin_30"
+Merlin	merlin	exon	22240	24216	.	-	.	transcript_id "Merlin_30_mRNA"; gene_id "Merlin_30";
+Merlin	merlin	transcript	24250	26094	.	-	.	transcript_id "Merlin_31_exon"; gene_id "Merlin_31_exon"
+Merlin	merlin	CDS	24250	26094	.	-	0	transcript_id "Merlin_31_exon";
+Merlin	merlin	transcript	24250	26094	.	-	.	transcript_id "Merlin_31_mRNA"; gene_id "Merlin_31"
+Merlin	merlin	exon	24250	26094	.	-	.	transcript_id "Merlin_31_mRNA"; gene_id "Merlin_31";
+Merlin	merlin	transcript	26072	26569	.	-	.	transcript_id "Merlin_32_exon"; gene_id "Merlin_32_exon"
+Merlin	merlin	CDS	26072	26569	.	-	0	transcript_id "Merlin_32_exon";
+Merlin	merlin	transcript	26072	26569	.	-	.	transcript_id "Merlin_32_mRNA"; gene_id "Merlin_32"
+Merlin	merlin	exon	26072	26569	.	-	.	transcript_id "Merlin_32_mRNA"; gene_id "Merlin_32";
+Merlin	merlin	transcript	26572	27390	.	-	.	transcript_id "Merlin_33_exon"; gene_id "Merlin_33_exon"
+Merlin	merlin	CDS	26572	27390	.	-	0	transcript_id "Merlin_33_exon";
+Merlin	merlin	transcript	26572	27390	.	-	.	transcript_id "Merlin_33_mRNA"; gene_id "Merlin_33"
+Merlin	merlin	exon	26572	27390	.	-	.	transcript_id "Merlin_33_mRNA"; gene_id "Merlin_33";
+Merlin	merlin	transcript	27434	28204	.	-	.	transcript_id "Merlin_34_exon"; gene_id "Merlin_34_exon"
+Merlin	merlin	CDS	27434	28204	.	-	0	transcript_id "Merlin_34_exon";
+Merlin	merlin	transcript	27434	28204	.	-	.	transcript_id "Merlin_34_mRNA"; gene_id "Merlin_34"
+Merlin	merlin	exon	27434	28204	.	-	.	transcript_id "Merlin_34_mRNA"; gene_id "Merlin_34";
+Merlin	merlin	transcript	28201	29130	.	-	.	transcript_id "Merlin_35_exon"; gene_id "Merlin_35_exon"
+Merlin	merlin	CDS	28201	29130	.	-	0	transcript_id "Merlin_35_exon";
+Merlin	merlin	transcript	28201	29130	.	-	.	transcript_id "Merlin_35_mRNA"; gene_id "Merlin_35"
+Merlin	merlin	exon	28201	29130	.	-	.	transcript_id "Merlin_35_mRNA"; gene_id "Merlin_35";
+Merlin	merlin	transcript	29162	30553	.	-	.	transcript_id "Merlin_36_exon"; gene_id "Merlin_36_exon"
+Merlin	merlin	CDS	29162	30553	.	-	0	transcript_id "Merlin_36_exon";
+Merlin	merlin	transcript	29162	30553	.	-	.	transcript_id "Merlin_36_mRNA"; gene_id "Merlin_36"
+Merlin	merlin	exon	29162	30553	.	-	.	transcript_id "Merlin_36_mRNA"; gene_id "Merlin_36";
+Merlin	merlin	transcript	30564	31982	.	-	.	transcript_id "Merlin_37_exon"; gene_id "Merlin_37_exon"
+Merlin	merlin	CDS	30564	31982	.	-	0	transcript_id "Merlin_37_exon";
+Merlin	merlin	transcript	30564	31982	.	-	.	transcript_id "Merlin_37_mRNA"; gene_id "Merlin_37"
+Merlin	merlin	exon	30564	31982	.	-	.	transcript_id "Merlin_37_mRNA"; gene_id "Merlin_37";
+Merlin	merlin	transcript	31982	32632	.	-	.	transcript_id "Merlin_38_exon"; gene_id "Merlin_38_exon"
+Merlin	merlin	CDS	31982	32632	.	-	0	transcript_id "Merlin_38_exon";
+Merlin	merlin	transcript	31982	32632	.	-	.	transcript_id "Merlin_38_mRNA"; gene_id "Merlin_38"
+Merlin	merlin	exon	31982	32632	.	-	.	transcript_id "Merlin_38_mRNA"; gene_id "Merlin_38";
+Merlin	merlin	transcript	32632	34437	.	-	.	transcript_id "Merlin_39_exon"; gene_id "Merlin_39_exon"
+Merlin	merlin	CDS	32632	34437	.	-	0	transcript_id "Merlin_39_exon";
+Merlin	merlin	transcript	32632	34437	.	-	.	transcript_id "Merlin_39_mRNA"; gene_id "Merlin_39"
+Merlin	merlin	exon	32632	34437	.	-	.	transcript_id "Merlin_39_mRNA"; gene_id "Merlin_39";
+Merlin	merlin	transcript	34434	35300	.	-	.	transcript_id "Merlin_40_exon"; gene_id "Merlin_40_exon"
+Merlin	merlin	CDS	34434	35300	.	-	0	transcript_id "Merlin_40_exon";
+Merlin	merlin	transcript	34434	35300	.	-	.	transcript_id "Merlin_40_mRNA"; gene_id "Merlin_40"
+Merlin	merlin	exon	34434	35300	.	-	.	transcript_id "Merlin_40_mRNA"; gene_id "Merlin_40";
+Merlin	merlin	transcript	35372	36385	.	-	.	transcript_id "Merlin_41_exon"; gene_id "Merlin_41_exon"
+Merlin	merlin	CDS	35372	36385	.	-	0	transcript_id "Merlin_41_exon";
+Merlin	merlin	transcript	35372	36385	.	-	.	transcript_id "Merlin_41_mRNA"; gene_id "Merlin_41"
+Merlin	merlin	exon	35372	36385	.	-	.	transcript_id "Merlin_41_mRNA"; gene_id "Merlin_41";
+Merlin	merlin	transcript	36378	39479	.	-	.	transcript_id "Merlin_42_exon"; gene_id "Merlin_42_exon"
+Merlin	merlin	CDS	36378	39479	.	-	0	transcript_id "Merlin_42_exon";
+Merlin	merlin	transcript	36378	39479	.	-	.	transcript_id "Merlin_42_mRNA"; gene_id "Merlin_42"
+Merlin	merlin	exon	36378	39479	.	-	.	transcript_id "Merlin_42_mRNA"; gene_id "Merlin_42";
+Merlin	merlin	transcript	39476	41416	.	-	.	transcript_id "Merlin_43_exon"; gene_id "Merlin_43_exon"
+Merlin	merlin	CDS	39476	41416	.	-	0	transcript_id "Merlin_43_exon";
+Merlin	merlin	transcript	39476	41416	.	-	.	transcript_id "Merlin_43_mRNA"; gene_id "Merlin_43"
+Merlin	merlin	exon	39476	41416	.	-	.	transcript_id "Merlin_43_mRNA"; gene_id "Merlin_43";
+Merlin	merlin	transcript	41416	41709	.	-	.	transcript_id "Merlin_44_exon"; gene_id "Merlin_44_exon"
+Merlin	merlin	CDS	41416	41709	.	-	0	transcript_id "Merlin_44_exon";
+Merlin	merlin	transcript	41416	41709	.	-	.	transcript_id "Merlin_44_mRNA"; gene_id "Merlin_44"
+Merlin	merlin	exon	41416	41709	.	-	.	transcript_id "Merlin_44_mRNA"; gene_id "Merlin_44";
+Merlin	merlin	transcript	41709	42224	.	-	.	transcript_id "Merlin_45_exon"; gene_id "Merlin_45_exon"
+Merlin	merlin	CDS	41709	42224	.	-	0	transcript_id "Merlin_45_exon";
+Merlin	merlin	transcript	41709	42224	.	-	.	transcript_id "Merlin_45_mRNA"; gene_id "Merlin_45"
+Merlin	merlin	exon	41709	42224	.	-	.	transcript_id "Merlin_45_mRNA"; gene_id "Merlin_45";
+Merlin	merlin	transcript	42224	43951	.	-	.	transcript_id "Merlin_46_exon"; gene_id "Merlin_46_exon"
+Merlin	merlin	CDS	42224	43951	.	-	0	transcript_id "Merlin_46_exon";
+Merlin	merlin	transcript	42224	43951	.	-	.	transcript_id "Merlin_46_mRNA"; gene_id "Merlin_46"
+Merlin	merlin	exon	42224	43951	.	-	.	transcript_id "Merlin_46_mRNA"; gene_id "Merlin_46";
+Merlin	merlin	transcript	43951	44526	.	-	.	transcript_id "Merlin_47_exon"; gene_id "Merlin_47_exon"
+Merlin	merlin	CDS	43951	44526	.	-	0	transcript_id "Merlin_47_exon";
+Merlin	merlin	transcript	43951	44526	.	-	.	transcript_id "Merlin_47_mRNA"; gene_id "Merlin_47"
+Merlin	merlin	exon	43951	44526	.	-	.	transcript_id "Merlin_47_mRNA"; gene_id "Merlin_47";
+Merlin	merlin	transcript	44576	45025	.	+	.	transcript_id "Merlin_48_exon"; gene_id "Merlin_48_exon"
+Merlin	merlin	CDS	44576	45025	.	+	0	transcript_id "Merlin_48_exon";
+Merlin	merlin	transcript	44576	45025	.	+	.	transcript_id "Merlin_48_mRNA"; gene_id "Merlin_48"
+Merlin	merlin	exon	44576	45025	.	+	.	transcript_id "Merlin_48_mRNA"; gene_id "Merlin_48";
+Merlin	merlin	transcript	45025	45855	.	+	.	transcript_id "Merlin_49_exon"; gene_id "Merlin_49_exon"
+Merlin	merlin	CDS	45025	45855	.	+	0	transcript_id "Merlin_49_exon";
+Merlin	merlin	transcript	45025	45855	.	+	.	transcript_id "Merlin_49_mRNA"; gene_id "Merlin_49"
+Merlin	merlin	exon	45025	45855	.	+	.	transcript_id "Merlin_49_mRNA"; gene_id "Merlin_49";
+Merlin	merlin	transcript	45940	46527	.	+	.	transcript_id "Merlin_50_exon"; gene_id "Merlin_50_exon"
+Merlin	merlin	CDS	45940	46527	.	+	0	transcript_id "Merlin_50_exon";
+Merlin	merlin	transcript	45940	46527	.	+	.	transcript_id "Merlin_50_mRNA"; gene_id "Merlin_50"
+Merlin	merlin	exon	45940	46527	.	+	.	transcript_id "Merlin_50_mRNA"; gene_id "Merlin_50";
+Merlin	merlin	transcript	46527	47255	.	+	.	transcript_id "Merlin_51_exon"; gene_id "Merlin_51_exon"
+Merlin	merlin	CDS	46527	47255	.	+	0	transcript_id "Merlin_51_exon";
+Merlin	merlin	transcript	46527	47255	.	+	.	transcript_id "Merlin_51_mRNA"; gene_id "Merlin_51"
+Merlin	merlin	exon	46527	47255	.	+	.	transcript_id "Merlin_51_mRNA"; gene_id "Merlin_51";
+Merlin	merlin	transcript	47252	47485	.	+	.	transcript_id "Merlin_52_exon"; gene_id "Merlin_52_exon"
+Merlin	merlin	CDS	47252	47485	.	+	0	transcript_id "Merlin_52_exon";
+Merlin	merlin	transcript	47252	47485	.	+	.	transcript_id "Merlin_52_mRNA"; gene_id "Merlin_52"
+Merlin	merlin	exon	47252	47485	.	+	.	transcript_id "Merlin_52_mRNA"; gene_id "Merlin_52";
+Merlin	merlin	transcript	47485	47940	.	+	.	transcript_id "Merlin_53_exon"; gene_id "Merlin_53_exon"
+Merlin	merlin	CDS	47485	47940	.	+	0	transcript_id "Merlin_53_exon";
+Merlin	merlin	transcript	47485	47940	.	+	.	transcript_id "Merlin_53_mRNA"; gene_id "Merlin_53"
+Merlin	merlin	exon	47485	47940	.	+	.	transcript_id "Merlin_53_mRNA"; gene_id "Merlin_53";
+Merlin	merlin	transcript	47937	48143	.	+	.	transcript_id "Merlin_54_exon"; gene_id "Merlin_54_exon"
+Merlin	merlin	CDS	47937	48143	.	+	0	transcript_id "Merlin_54_exon";
+Merlin	merlin	transcript	47937	48143	.	+	.	transcript_id "Merlin_54_mRNA"; gene_id "Merlin_54"
+Merlin	merlin	exon	47937	48143	.	+	.	transcript_id "Merlin_54_mRNA"; gene_id "Merlin_54";
+Merlin	merlin	transcript	48140	48358	.	+	.	transcript_id "Merlin_55_exon"; gene_id "Merlin_55_exon"
+Merlin	merlin	CDS	48140	48358	.	+	0	transcript_id "Merlin_55_exon";
+Merlin	merlin	transcript	48140	48358	.	+	.	transcript_id "Merlin_55_mRNA"; gene_id "Merlin_55"
+Merlin	merlin	exon	48140	48358	.	+	.	transcript_id "Merlin_55_mRNA"; gene_id "Merlin_55";
+Merlin	merlin	transcript	48418	48600	.	+	.	transcript_id "Merlin_56_exon"; gene_id "Merlin_56_exon"
+Merlin	merlin	CDS	48418	48600	.	+	0	transcript_id "Merlin_56_exon";
+Merlin	merlin	transcript	48418	48600	.	+	.	transcript_id "Merlin_56_mRNA"; gene_id "Merlin_56"
+Merlin	merlin	exon	48418	48600	.	+	.	transcript_id "Merlin_56_mRNA"; gene_id "Merlin_56";
+Merlin	merlin	transcript	48584	48769	.	+	.	transcript_id "Merlin_57_exon"; gene_id "Merlin_57_exon"
+Merlin	merlin	CDS	48584	48769	.	+	0	transcript_id "Merlin_57_exon";
+Merlin	merlin	transcript	48584	48769	.	+	.	transcript_id "Merlin_57_mRNA"; gene_id "Merlin_57"
+Merlin	merlin	exon	48584	48769	.	+	.	transcript_id "Merlin_57_mRNA"; gene_id "Merlin_57";
+Merlin	merlin	transcript	48826	49053	.	+	.	transcript_id "Merlin_58_exon"; gene_id "Merlin_58_exon"
+Merlin	merlin	CDS	48826	49053	.	+	0	transcript_id "Merlin_58_exon";
+Merlin	merlin	transcript	48826	49053	.	+	.	transcript_id "Merlin_58_mRNA"; gene_id "Merlin_58"
+Merlin	merlin	exon	48826	49053	.	+	.	transcript_id "Merlin_58_mRNA"; gene_id "Merlin_58";
+Merlin	merlin	transcript	49076	49432	.	+	.	transcript_id "Merlin_59_exon"; gene_id "Merlin_59_exon"
+Merlin	merlin	CDS	49076	49432	.	+	0	transcript_id "Merlin_59_exon";
+Merlin	merlin	transcript	49076	49432	.	+	.	transcript_id "Merlin_59_mRNA"; gene_id "Merlin_59"
+Merlin	merlin	exon	49076	49432	.	+	.	transcript_id "Merlin_59_mRNA"; gene_id "Merlin_59";
+Merlin	merlin	transcript	49844	50110	.	+	.	transcript_id "Merlin_60_exon"; gene_id "Merlin_60_exon"
+Merlin	merlin	CDS	49844	50110	.	+	0	transcript_id "Merlin_60_exon";
+Merlin	merlin	transcript	49844	50110	.	+	.	transcript_id "Merlin_60_mRNA"; gene_id "Merlin_60"
+Merlin	merlin	exon	49844	50110	.	+	.	transcript_id "Merlin_60_mRNA"; gene_id "Merlin_60";
+Merlin	merlin	transcript	50983	51234	.	+	.	transcript_id "Merlin_61_exon"; gene_id "Merlin_61_exon"
+Merlin	merlin	CDS	50983	51234	.	+	0	transcript_id "Merlin_61_exon";
+Merlin	merlin	transcript	50983	51234	.	+	.	transcript_id "Merlin_61_mRNA"; gene_id "Merlin_61"
+Merlin	merlin	exon	50983	51234	.	+	.	transcript_id "Merlin_61_mRNA"; gene_id "Merlin_61";
+Merlin	merlin	transcript	51596	51838	.	+	.	transcript_id "Merlin_62_exon"; gene_id "Merlin_62_exon"
+Merlin	merlin	CDS	51596	51838	.	+	0	transcript_id "Merlin_62_exon";
+Merlin	merlin	transcript	51596	51838	.	+	.	transcript_id "Merlin_62_mRNA"; gene_id "Merlin_62"
+Merlin	merlin	exon	51596	51838	.	+	.	transcript_id "Merlin_62_mRNA"; gene_id "Merlin_62";
+Merlin	merlin	transcript	51835	52182	.	+	.	transcript_id "Merlin_63_exon"; gene_id "Merlin_63_exon"
+Merlin	merlin	CDS	51835	52182	.	+	0	transcript_id "Merlin_63_exon";
+Merlin	merlin	transcript	51835	52182	.	+	.	transcript_id "Merlin_63_mRNA"; gene_id "Merlin_63"
+Merlin	merlin	exon	51835	52182	.	+	.	transcript_id "Merlin_63_mRNA"; gene_id "Merlin_63";
+Merlin	merlin	transcript	52175	52684	.	+	.	transcript_id "Merlin_64_exon"; gene_id "Merlin_64_exon"
+Merlin	merlin	CDS	52175	52684	.	+	0	transcript_id "Merlin_64_exon";
+Merlin	merlin	transcript	52175	52684	.	+	.	transcript_id "Merlin_64_mRNA"; gene_id "Merlin_64"
+Merlin	merlin	exon	52175	52684	.	+	.	transcript_id "Merlin_64_mRNA"; gene_id "Merlin_64";
+Merlin	merlin	transcript	52681	52827	.	+	.	transcript_id "Merlin_65_exon"; gene_id "Merlin_65_exon"
+Merlin	merlin	CDS	52681	52827	.	+	0	transcript_id "Merlin_65_exon";
+Merlin	merlin	transcript	52681	52827	.	+	.	transcript_id "Merlin_65_mRNA"; gene_id "Merlin_65"
+Merlin	merlin	exon	52681	52827	.	+	.	transcript_id "Merlin_65_mRNA"; gene_id "Merlin_65";
+Merlin	merlin	transcript	52806	53030	.	+	.	transcript_id "Merlin_66_exon"; gene_id "Merlin_66_exon"
+Merlin	merlin	CDS	52806	53030	.	+	0	transcript_id "Merlin_66_exon";
+Merlin	merlin	transcript	52806	53030	.	+	.	transcript_id "Merlin_66_mRNA"; gene_id "Merlin_66"
+Merlin	merlin	exon	52806	53030	.	+	.	transcript_id "Merlin_66_mRNA"; gene_id "Merlin_66";
+Merlin	merlin	transcript	53032	53475	.	+	.	transcript_id "Merlin_67_exon"; gene_id "Merlin_67_exon"
+Merlin	merlin	CDS	53032	53475	.	+	0	transcript_id "Merlin_67_exon";
+Merlin	merlin	transcript	53032	53475	.	+	.	transcript_id "Merlin_67_mRNA"; gene_id "Merlin_67"
+Merlin	merlin	exon	53032	53475	.	+	.	transcript_id "Merlin_67_mRNA"; gene_id "Merlin_67";
+Merlin	merlin	transcript	53647	54225	.	+	.	transcript_id "Merlin_68_exon"; gene_id "Merlin_68_exon"
+Merlin	merlin	CDS	53647	54225	.	+	0	transcript_id "Merlin_68_exon";
+Merlin	merlin	transcript	53647	54225	.	+	.	transcript_id "Merlin_68_mRNA"; gene_id "Merlin_68"
+Merlin	merlin	exon	53647	54225	.	+	.	transcript_id "Merlin_68_mRNA"; gene_id "Merlin_68";
+Merlin	merlin	transcript	54316	54516	.	+	.	transcript_id "Merlin_69_exon"; gene_id "Merlin_69_exon"
+Merlin	merlin	CDS	54316	54516	.	+	0	transcript_id "Merlin_69_exon";
+Merlin	merlin	transcript	54316	54516	.	+	.	transcript_id "Merlin_69_mRNA"; gene_id "Merlin_69"
+Merlin	merlin	exon	54316	54516	.	+	.	transcript_id "Merlin_69_mRNA"; gene_id "Merlin_69";
+Merlin	merlin	transcript	54569	55168	.	+	.	transcript_id "Merlin_70_exon"; gene_id "Merlin_70_exon"
+Merlin	merlin	CDS	54569	55168	.	+	0	transcript_id "Merlin_70_exon";
+Merlin	merlin	transcript	54569	55168	.	+	.	transcript_id "Merlin_70_mRNA"; gene_id "Merlin_70"
+Merlin	merlin	exon	54569	55168	.	+	.	transcript_id "Merlin_70_mRNA"; gene_id "Merlin_70";
+Merlin	merlin	transcript	55216	55860	.	+	.	transcript_id "Merlin_71_exon"; gene_id "Merlin_71_exon"
+Merlin	merlin	CDS	55216	55860	.	+	0	transcript_id "Merlin_71_exon";
+Merlin	merlin	transcript	55216	55860	.	+	.	transcript_id "Merlin_71_mRNA"; gene_id "Merlin_71"
+Merlin	merlin	exon	55216	55860	.	+	.	transcript_id "Merlin_71_mRNA"; gene_id "Merlin_71";
+Merlin	merlin	transcript	55857	56279	.	+	.	transcript_id "Merlin_72_exon"; gene_id "Merlin_72_exon"
+Merlin	merlin	CDS	55857	56279	.	+	0	transcript_id "Merlin_72_exon";
+Merlin	merlin	transcript	55857	56279	.	+	.	transcript_id "Merlin_72_mRNA"; gene_id "Merlin_72"
+Merlin	merlin	exon	55857	56279	.	+	.	transcript_id "Merlin_72_mRNA"; gene_id "Merlin_72";
+Merlin	merlin	transcript	56276	56644	.	+	.	transcript_id "Merlin_73_exon"; gene_id "Merlin_73_exon"
+Merlin	merlin	CDS	56276	56644	.	+	0	transcript_id "Merlin_73_exon";
+Merlin	merlin	transcript	56276	56644	.	+	.	transcript_id "Merlin_73_mRNA"; gene_id "Merlin_73"
+Merlin	merlin	exon	56276	56644	.	+	.	transcript_id "Merlin_73_mRNA"; gene_id "Merlin_73";
--- a/test-data/out/01_all_tracks/config.json	Thu Oct 02 10:20:29 2025 +0000
+++ b/test-data/out/01_all_tracks/config.json	Fri Oct 24 07:50:40 2025 +0000
@@ -55,18 +55,19 @@
           "assembly": "merlin.fa",
           "loc": "Merlin",
           "tracks": [
-            "6843cfc92b274808c8baa5a15cab5855_0_0",
-            "902614424ab2f62ce4edd6a978b2a71f_1_0",
-            "6b7dbed6d89698464c37243cb7a711de_1_1",
-            "793abf2f5fb78801c2863e040ad7c658_2_0",
-            "d9f3b09a4719c3b0b6cca3f73de6f425_3_0",
-            "c48d88e425802c8d168ec01575c6c43a_4_0",
-            "08ddbbfb7c03c6b254db206a6415cc2a_5_0",
-            "96b0beda20fb7fb90960ad5024a7a97a_5_1",
-            "7dffd3bd033fc065c4a413aa9bfa4899_6_0",
-            "7381e3e08a3fe229fa516fc0abf20950_7_0",
-            "0448d8682eef9e71183fbc9b84962afa_8_0",
-            "936a5285fbedf1c37f5daf26837035b2_9_0"
+            "a7e8fe627b3e52b4c1f8c3c886aa9e57_0_0",
+            "da7c1329ab838dfaeee1703c013a5bc0_1_0",
+            "f2b6c4173397b6b812014c2b32e822a1_2_0",
+            "dd9f9b6093c48d07509eee6176e1bb1a_2_1",
+            "c488f0dd81de5234363870aac1b6099e_3_0",
+            "48ffd6161c7eec8f82482fb614f08d13_4_0",
+            "8f850b3775e54706acf8e3ae3856c21e_5_0",
+            "f04ae7e29a15ee551a3d5cb1b7df6d9f_6_0",
+            "69acdc3612406c3cb0347062091c4228_6_1",
+            "780b1598e6368efa353cc705c9d08ab3_7_0",
+            "f329aa022d2aa8aea5316bfa9c7cc113_8_0",
+            "74b81aa00dec3d38a9ac2a1176c3cc7e_9_0",
+            "936a5285fbedf1c37f5daf26837035b2_10_0"
           ]
         }
       }
@@ -75,17 +76,17 @@
   "tracks": [
     {
       "type": "FeatureTrack",
-      "trackId": "6843cfc92b274808c8baa5a15cab5855_0_0",
+      "trackId": "a7e8fe627b3e52b4c1f8c3c886aa9e57_0_0",
       "name": "merlin.gff",
       "adapter": {
         "type": "Gff3TabixAdapter",
         "gffGzLocation": {
-          "uri": "data/6843cfc92b274808c8baa5a15cab5855_0_0.gff.gz",
+          "uri": "data/a7e8fe627b3e52b4c1f8c3c886aa9e57_0_0.gff.gz",
           "locationType": "UriLocation"
         },
         "index": {
           "location": {
-            "uri": "data/6843cfc92b274808c8baa5a15cab5855_0_0.gff.gz.tbi",
+            "uri": "data/a7e8fe627b3e52b4c1f8c3c886aa9e57_0_0.gff.gz.tbi",
             "locationType": "UriLocation"
           },
           "indexType": "TBI"
@@ -100,7 +101,66 @@
       "displays": [
         {
           "type": "LinearBasicDisplay",
-          "displayId": "6843cfc92b274808c8baa5a15cab5855_0_0_LinearBasicDisplay",
+          "displayId": "a7e8fe627b3e52b4c1f8c3c886aa9e57_0_0_LinearBasicDisplay",
+          "renderer": {
+            "type": "SvgFeatureRenderer",
+            "showLabels": true,
+            "showDescriptions": true,
+            "labels": {
+              "name": "jexl:get(feature,'name') || get(feature,'id')",
+              "description": "jexl:get(feature,'note') || get(feature,'description')"
+            },
+            "displayMode": "normal",
+            "maxHeight": 600
+          }
+        }
+      ],
+      "formatDetails": {
+        "depth": 1
+      },
+      "metadata": {
+        "dataset_id": "2a23db38ccbbc7de",
+        "dataset_hid": "2",
+        "dataset_size": "110.3 KB",
+        "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_1975\">gff3</a>",
+        "dataset_file_ext": "gff3",
+        "history_id": "4d30d636fed0a9f6",
+        "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
+        "history_user_id": "1",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/4d30d636fed0a9f6\">Tool Test History for jbrowse2/3.6.5+galaxy1-0</a>",
+        "metadata_dbkey": "?",
+        "metadata_data_lines": "1228",
+        "metadata_comment_lines": "2",
+        "metadata_columns": "9",
+        "metadata_column_names": "[]",
+        "metadata_delimiter": "\t",
+        "metadata_attributes": "4",
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/2a23db38ccbbc7de/show_params\">__DATA_FETCH__</a>"
+      }
+    },
+    {
+      "type": "FeatureTrack",
+      "trackId": "da7c1329ab838dfaeee1703c013a5bc0_1_0",
+      "name": "merlin.gtf",
+      "adapter": {
+        "type": "GtfAdapter",
+        "gtfLocation": {
+          "uri": "data/da7c1329ab838dfaeee1703c013a5bc0_1_0.gtf",
+          "locationType": "UriLocation"
+        }
+      },
+      "category": [
+        "Default"
+      ],
+      "assemblyNames": [
+        "merlin.fa"
+      ],
+      "displays": [
+        {
+          "type": "LinearBasicDisplay",
+          "displayId": "da7c1329ab838dfaeee1703c013a5bc0_1_0_LinearBasicDisplay",
           "renderer": {
             "type": "SvgFeatureRenderer",
             "showLabels": true,
@@ -118,40 +178,40 @@
         "depth": 1
       },
       "metadata": {
-        "dataset_id": "33b9ecfea4207697",
-        "dataset_hid": "2",
-        "dataset_size": "110.3 KB",
-        "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_1975\">gff3</a>",
-        "dataset_file_ext": "gff3",
-        "history_id": "ffb0709d52bfbdea",
+        "dataset_id": "0b7812b25f4cfb76",
+        "dataset_hid": "3",
+        "dataset_size": "25.0 KB",
+        "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_2306\">gtf</a>",
+        "dataset_file_ext": "gtf",
+        "history_id": "4d30d636fed0a9f6",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/ffb0709d52bfbdea\">Tool Test History for jbrowse2/3.6.5+galaxy0-0</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/4d30d636fed0a9f6\">Tool Test History for jbrowse2/3.6.5+galaxy1-0</a>",
         "metadata_dbkey": "?",
-        "metadata_data_lines": "1228",
-        "metadata_comment_lines": "2",
+        "metadata_data_lines": "292",
+        "metadata_comment_lines": "0",
         "metadata_columns": "9",
         "metadata_column_names": "[]",
-        "metadata_delimiter": "__tc__",
-        "metadata_attributes": "4",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/33b9ecfea4207697/show_params\">upload1</a>"
+        "metadata_delimiter": "\t",
+        "metadata_attributes": "2",
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/0b7812b25f4cfb76/show_params\">__DATA_FETCH__</a>"
       }
     },
     {
       "type": "FeatureTrack",
-      "trackId": "902614424ab2f62ce4edd6a978b2a71f_1_0",
+      "trackId": "f2b6c4173397b6b812014c2b32e822a1_2_0",
       "name": "test-3.bed",
       "adapter": {
         "type": "BedTabixAdapter",
         "bedGzLocation": {
-          "uri": "data/902614424ab2f62ce4edd6a978b2a71f_1_0.bed.gz",
+          "uri": "data/f2b6c4173397b6b812014c2b32e822a1_2_0.bed.gz",
           "locationType": "UriLocation"
         },
         "index": {
           "location": {
-            "uri": "data/902614424ab2f62ce4edd6a978b2a71f_1_0.bed.gz.tbi",
+            "uri": "data/f2b6c4173397b6b812014c2b32e822a1_2_0.bed.gz.tbi",
             "locationType": "UriLocation"
           },
           "indexType": "TBI"
@@ -166,7 +226,7 @@
       "displays": [
         {
           "type": "LinearBasicDisplay",
-          "displayId": "902614424ab2f62ce4edd6a978b2a71f_1_0_LinearBasicDisplay",
+          "displayId": "f2b6c4173397b6b812014c2b32e822a1_2_0_LinearBasicDisplay",
           "renderer": {
             "type": "SvgFeatureRenderer",
             "showLabels": true,
@@ -184,44 +244,45 @@
         "depth": 1
       },
       "metadata": {
-        "dataset_id": "dad64ae4d71c7372",
-        "dataset_hid": "3",
+        "dataset_id": "bd91a97d652fafe1",
+        "dataset_hid": "4",
         "dataset_size": "49 bytes",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_3003\">bed</a>",
         "dataset_file_ext": "bed",
-        "history_id": "ffb0709d52bfbdea",
+        "history_id": "4d30d636fed0a9f6",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/ffb0709d52bfbdea\">Tool Test History for jbrowse2/3.6.5+galaxy0-0</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/4d30d636fed0a9f6\">Tool Test History for jbrowse2/3.6.5+galaxy1-0</a>",
         "metadata_dbkey": "?",
         "metadata_data_lines": "3",
         "metadata_comment_lines": "0",
         "metadata_columns": "3",
         "metadata_column_names": "[]",
-        "metadata_delimiter": "__tc__",
+        "metadata_delimiter": "\t",
         "metadata_chromCol": "1",
         "metadata_startCol": "2",
         "metadata_endCol": "3",
         "metadata_strandCol": "0",
-        "metadata_viz_filter_cols": "[4]",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/dad64ae4d71c7372/show_params\">upload1</a>"
+        "metadata_nameCol": "0",
+        "metadata_viz_filter_cols": "4",
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/bd91a97d652fafe1/show_params\">__DATA_FETCH__</a>"
       }
     },
     {
       "type": "FeatureTrack",
-      "trackId": "6b7dbed6d89698464c37243cb7a711de_1_1",
+      "trackId": "dd9f9b6093c48d07509eee6176e1bb1a_2_1",
       "name": "test-6.bed",
       "adapter": {
         "type": "BedTabixAdapter",
         "bedGzLocation": {
-          "uri": "data/6b7dbed6d89698464c37243cb7a711de_1_1.bed.gz",
+          "uri": "data/dd9f9b6093c48d07509eee6176e1bb1a_2_1.bed.gz",
           "locationType": "UriLocation"
         },
         "index": {
           "location": {
-            "uri": "data/6b7dbed6d89698464c37243cb7a711de_1_1.bed.gz.tbi",
+            "uri": "data/dd9f9b6093c48d07509eee6176e1bb1a_2_1.bed.gz.tbi",
             "locationType": "UriLocation"
           },
           "indexType": "TBI"
@@ -236,7 +297,7 @@
       "displays": [
         {
           "type": "LinearBasicDisplay",
-          "displayId": "6b7dbed6d89698464c37243cb7a711de_1_1_LinearBasicDisplay",
+          "displayId": "dd9f9b6093c48d07509eee6176e1bb1a_2_1_LinearBasicDisplay",
           "renderer": {
             "type": "SvgFeatureRenderer",
             "showLabels": true,
@@ -254,44 +315,45 @@
         "depth": 1
       },
       "metadata": {
-        "dataset_id": "36cc4ad69bb5f2a1",
-        "dataset_hid": "4",
+        "dataset_id": "3aa468ce9e79eed2",
+        "dataset_hid": "5",
         "dataset_size": "180 bytes",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_3003\">bed</a>",
         "dataset_file_ext": "bed",
-        "history_id": "ffb0709d52bfbdea",
+        "history_id": "4d30d636fed0a9f6",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/ffb0709d52bfbdea\">Tool Test History for jbrowse2/3.6.5+galaxy0-0</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/4d30d636fed0a9f6\">Tool Test History for jbrowse2/3.6.5+galaxy1-0</a>",
         "metadata_dbkey": "?",
         "metadata_data_lines": "3",
         "metadata_comment_lines": "0",
         "metadata_columns": "6",
         "metadata_column_names": "[]",
-        "metadata_delimiter": "__tc__",
+        "metadata_delimiter": "\t",
         "metadata_chromCol": "1",
         "metadata_startCol": "2",
         "metadata_endCol": "3",
         "metadata_strandCol": "6",
-        "metadata_viz_filter_cols": "[4]",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/36cc4ad69bb5f2a1/show_params\">upload1</a>"
+        "metadata_nameCol": "4",
+        "metadata_viz_filter_cols": "4",
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/3aa468ce9e79eed2/show_params\">__DATA_FETCH__</a>"
       }
     },
     {
       "type": "AlignmentsTrack",
-      "trackId": "793abf2f5fb78801c2863e040ad7c658_2_0",
+      "trackId": "c488f0dd81de5234363870aac1b6099e_3_0",
       "name": "merlin-sample.bam",
       "adapter": {
         "type": "BamAdapter",
         "bamLocation": {
-          "uri": "data/793abf2f5fb78801c2863e040ad7c658_2_0.bam",
+          "uri": "data/c488f0dd81de5234363870aac1b6099e_3_0.bam",
           "locationType": "UriLocation"
         },
         "index": {
           "location": {
-            "uri": "data/793abf2f5fb78801c2863e040ad7c658_2_0.bam.bai",
+            "uri": "data/c488f0dd81de5234363870aac1b6099e_3_0.bam.bai",
             "locationType": "UriLocation"
           },
           "indexType": "BAI"
@@ -321,42 +383,41 @@
       "displays": [
         {
           "type": "LinearAlignmentsDisplay",
-          "displayId": "793abf2f5fb78801c2863e040ad7c658_2_0_LinearAlignmentsDisplay"
+          "displayId": "c488f0dd81de5234363870aac1b6099e_3_0_LinearAlignmentsDisplay"
         }
       ],
       "metadata": {
-        "dataset_id": "ea3d8239d386c6a4",
-        "dataset_hid": "5",
+        "dataset_id": "c8d274edba5d366b",
+        "dataset_hid": "6",
         "dataset_size": "12.9 KB",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_2572\">bam</a>",
         "dataset_file_ext": "bam",
-        "history_id": "ffb0709d52bfbdea",
+        "history_id": "4d30d636fed0a9f6",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/ffb0709d52bfbdea\">Tool Test History for jbrowse2/3.6.5+galaxy0-0</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/4d30d636fed0a9f6\">Tool Test History for jbrowse2/3.6.5+galaxy1-0</a>",
         "metadata_dbkey": "?",
         "metadata_columns": "12",
-        "metadata_column_names": "[\"QNAME\", \"FLAG\", \"RNAME\", \"POS\", \"MAPQ\", \"CIGAR\", \"MRNM\", \"MPOS\", \"ISIZE\", \"SEQ\", \"QUAL\", \"OPT\"]",
+        "metadata_column_names": "['QNAME', 'FLAG', 'RNAME', 'POS', 'MAPQ', 'CIGAR', 'MRNM', 'MPOS', 'ISIZE', 'SEQ', 'QUAL', 'OPT']",
         "metadata_bam_version": "1.3",
         "metadata_sort_order": "coordinate",
         "metadata_read_groups": "[]",
-        "metadata_reference_names": "[\"Merlin\"]",
+        "metadata_reference_names": "['Merlin']",
         "metadata_reference_lengths": "[172788]",
-        "metadata_bam_header": "{\"HD\": {\"SO\": \"coordinate\", \"VN\": \"1.3\"}, \"PG\": [{\"CL\": \"minimap2 -a -x sr -t 1 reference.fa /net/datasrv3hs.sanbi.ac.za/datastore/cip0/software/galaxy/galaxy-ctb/galaxy/database/files/004/dataset_4697.dat\", \"ID\": \"minimap2\", \"PN\": \"minimap2\", \"VN\": \"2.5-r572\"}], \"SQ\": [{\"LN\": 172788, \"SN\": \"Merlin\"}]}",
-        "metadata_bam_index": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/ea3d8239d386c6a4/show_params\">upload1</a>"
+        "metadata_bam_header": "{'HD': {'SO': 'coordinate', 'VN': '1.3'}, 'PG': [{'CL': 'minimap2 -a -x sr -t 1 reference.fa /net/datasrv3hs.sanbi.ac.za/datastore/cip0/software/galaxy/galaxy-ctb/galaxy/database/files/004/dataset_4697.dat', 'ID': 'minimap2', 'PN': 'minimap2', 'VN': '2.5-r572'}], 'SQ': [{'LN': 172788, 'SN': 'Merlin'}]}",
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/c8d274edba5d366b/show_params\">__DATA_FETCH__</a>"
       }
     },
     {
       "type": "QuantitativeTrack",
-      "trackId": "d9f3b09a4719c3b0b6cca3f73de6f425_3_0",
+      "trackId": "48ffd6161c7eec8f82482fb614f08d13_4_0",
       "name": "data.bw",
       "adapter": {
         "type": "BigWigAdapter",
         "bigWigLocation": {
-          "uri": "data/d9f3b09a4719c3b0b6cca3f73de6f425_3_0.bw",
+          "uri": "data/48ffd6161c7eec8f82482fb614f08d13_4_0.bw",
           "locationType": "UriLocation"
         }
       },
@@ -369,38 +430,38 @@
       "displays": [
         {
           "type": "LinearWiggleDisplay",
-          "displayId": "d9f3b09a4719c3b0b6cca3f73de6f425_3_0_LinearWiggleDisplay",
+          "displayId": "48ffd6161c7eec8f82482fb614f08d13_4_0_LinearWiggleDisplay",
           "defaultRendering": "xyplot"
         }
       ],
       "metadata": {
-        "dataset_id": "d753b8dba6e25d09",
-        "dataset_hid": "8",
+        "dataset_id": "2f8b42de958784ae",
+        "dataset_hid": "7",
         "dataset_size": "81.6 KB",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_3006\">bigwig</a>",
         "dataset_file_ext": "bigwig",
-        "history_id": "ffb0709d52bfbdea",
+        "history_id": "4d30d636fed0a9f6",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/ffb0709d52bfbdea\">Tool Test History for jbrowse2/3.6.5+galaxy0-0</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/4d30d636fed0a9f6\">Tool Test History for jbrowse2/3.6.5+galaxy1-0</a>",
         "metadata_dbkey": "?",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/d753b8dba6e25d09/show_params\">upload1</a>"
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/2f8b42de958784ae/show_params\">__DATA_FETCH__</a>"
       }
     },
     {
       "type": "AlignmentsTrack",
-      "trackId": "c48d88e425802c8d168ec01575c6c43a_4_0",
+      "trackId": "8f850b3775e54706acf8e3ae3856c21e_5_0",
       "name": "merlin-sample.cram",
       "adapter": {
         "type": "CramAdapter",
         "cramLocation": {
-          "uri": "data/c48d88e425802c8d168ec01575c6c43a_4_0.cram",
+          "uri": "data/8f850b3775e54706acf8e3ae3856c21e_5_0.cram",
           "locationType": "UriLocation"
         },
         "craiLocation": {
-          "uri": "data/c48d88e425802c8d168ec01575c6c43a_4_0.cram.crai",
+          "uri": "data/8f850b3775e54706acf8e3ae3856c21e_5_0.cram.crai",
           "locationType": "UriLocation"
         },
         "sequenceAdapter": {
@@ -428,35 +489,34 @@
       "displays": [
         {
           "type": "LinearAlignmentsDisplay",
-          "displayId": "c48d88e425802c8d168ec01575c6c43a_4_0_LinearAlignmentsDisplay"
+          "displayId": "8f850b3775e54706acf8e3ae3856c21e_5_0_LinearAlignmentsDisplay"
         }
       ],
       "metadata": {
-        "dataset_id": "1f72eafab720ae62",
-        "dataset_hid": "7",
+        "dataset_id": "76ca3a0a3de24f95",
+        "dataset_hid": "8",
         "dataset_size": "8.3 KB",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_3462\">cram</a>",
         "dataset_file_ext": "cram",
-        "history_id": "ffb0709d52bfbdea",
+        "history_id": "4d30d636fed0a9f6",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/ffb0709d52bfbdea\">Tool Test History for jbrowse2/3.6.5+galaxy0-0</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/4d30d636fed0a9f6\">Tool Test History for jbrowse2/3.6.5+galaxy1-0</a>",
         "metadata_dbkey": "?",
         "metadata_cram_version": "3.0",
-        "metadata_cram_index": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/1f72eafab720ae62/show_params\">upload1</a>"
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/76ca3a0a3de24f95/show_params\">__DATA_FETCH__</a>"
       }
     },
     {
       "type": "QuantitativeTrack",
-      "trackId": "08ddbbfb7c03c6b254db206a6415cc2a_5_0",
+      "trackId": "f04ae7e29a15ee551a3d5cb1b7df6d9f_6_0",
       "name": "data.bw",
       "adapter": {
         "type": "BigWigAdapter",
         "bigWigLocation": {
-          "uri": "data/08ddbbfb7c03c6b254db206a6415cc2a_5_0.bw",
+          "uri": "data/f04ae7e29a15ee551a3d5cb1b7df6d9f_6_0.bw",
           "locationType": "UriLocation"
         }
       },
@@ -469,34 +529,34 @@
       "displays": [
         {
           "type": "LinearWiggleDisplay",
-          "displayId": "08ddbbfb7c03c6b254db206a6415cc2a_5_0_LinearWiggleDisplay",
+          "displayId": "f04ae7e29a15ee551a3d5cb1b7df6d9f_6_0_LinearWiggleDisplay",
           "defaultRendering": "xyplot"
         }
       ],
       "metadata": {
-        "dataset_id": "d753b8dba6e25d09",
-        "dataset_hid": "8",
+        "dataset_id": "2f8b42de958784ae",
+        "dataset_hid": "7",
         "dataset_size": "81.6 KB",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_3006\">bigwig</a>",
         "dataset_file_ext": "bigwig",
-        "history_id": "ffb0709d52bfbdea",
+        "history_id": "4d30d636fed0a9f6",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/ffb0709d52bfbdea\">Tool Test History for jbrowse2/3.6.5+galaxy0-0</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/4d30d636fed0a9f6\">Tool Test History for jbrowse2/3.6.5+galaxy1-0</a>",
         "metadata_dbkey": "?",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/d753b8dba6e25d09/show_params\">upload1</a>"
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/2f8b42de958784ae/show_params\">__DATA_FETCH__</a>"
       }
     },
     {
       "type": "QuantitativeTrack",
-      "trackId": "96b0beda20fb7fb90960ad5024a7a97a_5_1",
+      "trackId": "69acdc3612406c3cb0347062091c4228_6_1",
       "name": "smaller2.bw",
       "adapter": {
         "type": "BigWigAdapter",
         "bigWigLocation": {
-          "uri": "data/96b0beda20fb7fb90960ad5024a7a97a_5_1.bw",
+          "uri": "data/69acdc3612406c3cb0347062091c4228_6_1.bw",
           "locationType": "UriLocation"
         }
       },
@@ -509,39 +569,39 @@
       "displays": [
         {
           "type": "LinearWiggleDisplay",
-          "displayId": "96b0beda20fb7fb90960ad5024a7a97a_5_1_LinearWiggleDisplay",
+          "displayId": "69acdc3612406c3cb0347062091c4228_6_1_LinearWiggleDisplay",
           "defaultRendering": "xyplot"
         }
       ],
       "metadata": {
-        "dataset_id": "ee963fc82e556fe8",
+        "dataset_id": "fff5871153f6d061",
         "dataset_hid": "9",
         "dataset_size": "10.9 KB",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_3006\">bigwig</a>",
         "dataset_file_ext": "bigwig",
-        "history_id": "ffb0709d52bfbdea",
+        "history_id": "4d30d636fed0a9f6",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/ffb0709d52bfbdea\">Tool Test History for jbrowse2/3.6.5+galaxy0-0</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/4d30d636fed0a9f6\">Tool Test History for jbrowse2/3.6.5+galaxy1-0</a>",
         "metadata_dbkey": "?",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/ee963fc82e556fe8/show_params\">upload1</a>"
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/fff5871153f6d061/show_params\">__DATA_FETCH__</a>"
       }
     },
     {
       "type": "VariantTrack",
-      "trackId": "7dffd3bd033fc065c4a413aa9bfa4899_6_0",
+      "trackId": "780b1598e6368efa353cc705c9d08ab3_7_0",
       "name": "test.vcf",
       "adapter": {
         "type": "VcfTabixAdapter",
         "vcfGzLocation": {
-          "uri": "data/7dffd3bd033fc065c4a413aa9bfa4899_6_0.vcf.gz",
+          "uri": "data/780b1598e6368efa353cc705c9d08ab3_7_0.vcf.gz",
           "locationType": "UriLocation"
         },
         "index": {
           "location": {
-            "uri": "data/7dffd3bd033fc065c4a413aa9bfa4899_6_0.vcf.gz.tbi",
+            "uri": "data/780b1598e6368efa353cc705c9d08ab3_7_0.vcf.gz.tbi",
             "locationType": "UriLocation"
           },
           "indexType": "TBI"
@@ -556,41 +616,41 @@
       "displays": [
         {
           "type": "LinearVariantDisplay",
-          "displayId": "7dffd3bd033fc065c4a413aa9bfa4899_6_0_LinearVariantDisplay"
+          "displayId": "780b1598e6368efa353cc705c9d08ab3_7_0_LinearVariantDisplay"
         }
       ],
       "formatDetails": {},
       "metadata": {
-        "dataset_id": "2a8101cbb778a3ae",
+        "dataset_id": "d68659e09db1368d",
         "dataset_hid": "10",
         "dataset_size": "1.5 KB",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_3016\">vcf</a>",
         "dataset_file_ext": "vcf",
-        "history_id": "ffb0709d52bfbdea",
+        "history_id": "4d30d636fed0a9f6",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/ffb0709d52bfbdea\">Tool Test History for jbrowse2/3.6.5+galaxy0-0</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/4d30d636fed0a9f6\">Tool Test History for jbrowse2/3.6.5+galaxy1-0</a>",
         "metadata_dbkey": "?",
         "metadata_data_lines": "5",
         "metadata_comment_lines": "18",
         "metadata_columns": "12",
         "metadata_column_names": "[]",
-        "metadata_delimiter": "__tc__",
-        "metadata_viz_filter_cols": "[5]",
-        "metadata_sample_names": "[\"NA00001\", \"NA00002\", \"NA00003\"]",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/2a8101cbb778a3ae/show_params\">upload1</a>"
+        "metadata_delimiter": "\t",
+        "metadata_viz_filter_cols": "5",
+        "metadata_sample_names": "['NA00001', 'NA00002', 'NA00003']",
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/d68659e09db1368d/show_params\">__DATA_FETCH__</a>"
       }
     },
     {
       "type": "HicTrack",
-      "trackId": "7381e3e08a3fe229fa516fc0abf20950_7_0",
+      "trackId": "f329aa022d2aa8aea5316bfa9c7cc113_8_0",
       "name": "merlin.hic",
       "adapter": {
         "type": "HicAdapter",
         "hicLocation": {
-          "uri": "data/7381e3e08a3fe229fa516fc0abf20950_7_0.hic",
+          "uri": "data/f329aa022d2aa8aea5316bfa9c7cc113_8_0.hic",
           "locationType": "UriLocation"
         }
       },
@@ -603,29 +663,29 @@
       "displays": [
         {
           "type": "LinearHicDisplay",
-          "displayId": "7381e3e08a3fe229fa516fc0abf20950_7_0_LinearHicDisplay"
+          "displayId": "f329aa022d2aa8aea5316bfa9c7cc113_8_0_LinearHicDisplay"
         }
       ],
       "metadata": {
-        "dataset_id": "bc183b162fdbb361",
+        "dataset_id": "6294e1cb82136e37",
         "dataset_hid": "11",
         "dataset_size": "931 bytes",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_2333\">hic</a>",
         "dataset_file_ext": "hic",
-        "history_id": "ffb0709d52bfbdea",
+        "history_id": "4d30d636fed0a9f6",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/ffb0709d52bfbdea\">Tool Test History for jbrowse2/3.6.5+galaxy0-0</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/4d30d636fed0a9f6\">Tool Test History for jbrowse2/3.6.5+galaxy1-0</a>",
         "metadata_dbkey": "?",
         "metadata_version": "9",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/bc183b162fdbb361/show_params\">upload1</a>"
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/6294e1cb82136e37/show_params\">__DATA_FETCH__</a>"
       }
     },
     {
       "type": "MafTrack",
-      "trackId": "0448d8682eef9e71183fbc9b84962afa_8_0",
+      "trackId": "74b81aa00dec3d38a9ac2a1176c3cc7e_9_0",
       "name": "merlinlastz.maf",
       "adapter": {
         "type": "MafTabixAdapter",
@@ -639,11 +699,11 @@
           "Merlin6"
         ],
         "bedGzLocation": {
-          "uri": "data/0448d8682eef9e71183fbc9b84962afa_8_0.maf.gz"
+          "uri": "data/74b81aa00dec3d38a9ac2a1176c3cc7e_9_0.maf.gz"
         },
         "index": {
           "location": {
-            "uri": "data/0448d8682eef9e71183fbc9b84962afa_8_0.maf.gz.tbi"
+            "uri": "data/74b81aa00dec3d38a9ac2a1176c3cc7e_9_0.maf.gz.tbi"
           }
         }
       },
@@ -656,33 +716,31 @@
       "displays": [
         {
           "type": "LinearMafDisplay",
-          "displayId": "0448d8682eef9e71183fbc9b84962afa_8_0_LinearMafDisplay"
+          "displayId": "74b81aa00dec3d38a9ac2a1176c3cc7e_9_0_LinearMafDisplay"
         }
       ],
       "metadata": {
-        "dataset_id": "4a7d65b0c4d72bd3",
+        "dataset_id": "7217695b024bd3ec",
         "dataset_hid": "12",
         "dataset_size": "1.5 KB",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_3008\">maf</a>",
         "dataset_file_ext": "maf",
-        "history_id": "ffb0709d52bfbdea",
+        "history_id": "4d30d636fed0a9f6",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/ffb0709d52bfbdea\">Tool Test History for jbrowse2/3.6.5+galaxy0-0</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/4d30d636fed0a9f6\">Tool Test History for jbrowse2/3.6.5+galaxy1-0</a>",
         "metadata_dbkey": "?",
         "metadata_data_lines": "0",
-        "metadata_species": "[\"Merlin\", \"Merlin1\", \"Merlin2\", \"Merlin3\", \"Merlin4\", \"Merlin5\", \"Merlin6\"]",
+        "metadata_species": "Merlin,Merlin1,Merlin2,Merlin3,Merlin4,Merlin5,Merlin6",
         "metadata_blocks": "6",
-        "metadata_species_chromosomes": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
-        "metadata_maf_index": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/4a7d65b0c4d72bd3/show_params\">upload1</a>"
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/7217695b024bd3ec/show_params\">__DATA_FETCH__</a>"
       }
     },
     {
       "type": "GCContentTrack",
-      "trackId": "936a5285fbedf1c37f5daf26837035b2_9_0",
+      "trackId": "936a5285fbedf1c37f5daf26837035b2_10_0",
       "name": "GC Content",
       "adapter": {
         "type": "BgzipFastaAdapter",
@@ -708,7 +766,7 @@
       "displays": [
         {
           "type": "LinearGCContentDisplay",
-          "displayId": "936a5285fbedf1c37f5daf26837035b2_9_0_LinearGCContentDisplay"
+          "displayId": "936a5285fbedf1c37f5daf26837035b2_10_0_LinearGCContentDisplay"
         }
       ]
     }
--- a/test-data/out/01_all_tracks/galaxy.xml	Thu Oct 02 10:20:29 2025 +0000
+++ b/test-data/out/01_all_tracks/galaxy.xml	Fri Oct 24 07:50:40 2025 +0000
@@ -12,25 +12,25 @@
         <galaxyUrl>http://localhost:8080</galaxyUrl>
     </metadata>
     <assembly>
-            <genome path="/tmp/tmpgvo11tmf/files/9/2/a/dataset_92aaecec-b349-4c14-bda6-e269d6466611.dat" label="merlin.fa">
+            <genome path="/tmp/tmpiyg6gzbz/files/f/3/c/dataset_f3c0184e-59c4-433e-8dd8-681079b35a97.dat" label="merlin.fa">
             <metadata>
-                <dataset id="ffb0709d52bfbdea" hid="1"
+                <dataset id="4d30d636fed0a9f6" hid="1"
                     size="171.6 KB"
                     edam_format="format_1929"
                     file_ext="fasta"
                     dname = "merlin.fa" />
-                <history id="ffb0709d52bfbdea"
+                <history id="4d30d636fed0a9f6"
                     user_email="planemo@galaxyproject.org"
                     user_id="1"
-                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-0"/>
+                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-0"/>
                 <metadata
                         dbkey="?"
                         data_lines="2881"
                         sequences="1"
                     />
                 <tool
-                    tool_id="upload1"
-                    tool_version="1.1.7"
+                    tool_id="__DATA_FETCH__"
+                    tool_version="0.1.0"
                     />
             </metadata>
             </genome>
@@ -40,28 +40,28 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/3/3/2/dataset_332bfd0e-e9c1-4d46-94e8-e0f9cfd6eeee.dat" ext="gff3" label="merlin.gff">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/6/c/7/dataset_6c7ccdb8-be7f-4998-be93-92e5098e16ae.dat" ext="gff3" label="merlin.gff">
                         <metadata>
-                        <dataset id="33b9ecfea4207697" hid="2"
+                        <dataset id="2a23db38ccbbc7de" hid="2"
                             size="110.3 KB"
                             edam_format="format_1975"
                             file_ext="gff3" />
-                        <history id="ffb0709d52bfbdea"
+                        <history id="4d30d636fed0a9f6"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-0"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-0"/>
                         <metadata
                                 dbkey="?"
                                 data_lines="1228"
                                 comment_lines="2"
                                 columns="9"
-                                column_names="[]"
+                                column_names="__ob____cb__"
                                 delimiter="__tc__"
                                 attributes="4"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
@@ -95,61 +95,118 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/4/5/f/dataset_45fd75ec-a81d-4419-b00b-867540edefb3.dat" ext="bed" label="test-3.bed">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/d/c/f/dataset_dcf75edc-7a03-4e95-b28c-47ae364af589.dat" ext="gtf" label="merlin.gtf">
                         <metadata>
-                        <dataset id="dad64ae4d71c7372" hid="3"
+                        <dataset id="0b7812b25f4cfb76" hid="3"
+                            size="25.0 KB"
+                            edam_format="format_2306"
+                            file_ext="gtf" />
+                        <history id="4d30d636fed0a9f6"
+                            user_email="planemo@galaxyproject.org"
+                            user_id="1"
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-0"/>
+                        <metadata
+                                dbkey="?"
+                                data_lines="292"
+                                comment_lines="0"
+                                columns="9"
+                                column_names="__ob____cb__"
+                                delimiter="__tc__"
+                                attributes="2"
+                            />
+                        <tool
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
+                            />
+                        </metadata>
+                    </trackFile>
+                    </files>
+
+            <options>
+                <style>
+                        <display>LinearBasicDisplay</display>
+
+                            <show_labels type="boolean">true</show_labels>
+                            <show_descriptions type="boolean">true</show_descriptions>
+                            <labels_name>jexl:get(feature,'name') || get(feature,'id')</labels_name>
+                            <descriptions_name>jexl:get(feature,'note') || get(feature,'description')</descriptions_name>
+                            <display_mode>normal</display_mode>
+                            <max_height type="integer">600</max_height>
+
+
+                </style>
+
+                    <formatdetails>
+                        <depth>1</depth>
+                    </formatdetails>
+
+
+                    <gff>
+                    <index>false</index>
+                    </gff>
+            </options>
+        </track>
+        <track cat="Default" format="gene_calls" visibility="default_on">
+
+
+                    <files>
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/c/3/e/dataset_c3ee5cf0-0cb6-4585-a7d6-d5ddcded7371.dat" ext="bed" label="test-3.bed">
+                        <metadata>
+                        <dataset id="bd91a97d652fafe1" hid="4"
                             size="49 bytes"
                             edam_format="format_3003"
                             file_ext="bed" />
-                        <history id="ffb0709d52bfbdea"
+                        <history id="4d30d636fed0a9f6"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-0"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-0"/>
                         <metadata
                                 dbkey="?"
                                 data_lines="3"
                                 comment_lines="0"
                                 columns="3"
-                                column_names="[]"
+                                column_names="__ob____cb__"
                                 delimiter="__tc__"
                                 chromCol="1"
                                 startCol="2"
                                 endCol="3"
                                 strandCol="0"
-                                viz_filter_cols="[4]"
+                                nameCol="0"
+                                viz_filter_cols="4"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/8/3/9/dataset_839210d9-cf81-49bb-b733-f14be084f8aa.dat" ext="bed" label="test-6.bed">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/7/2/0/dataset_72051c30-7fb8-4063-af07-c74536915fa9.dat" ext="bed" label="test-6.bed">
                         <metadata>
-                        <dataset id="36cc4ad69bb5f2a1" hid="4"
+                        <dataset id="3aa468ce9e79eed2" hid="5"
                             size="180 bytes"
                             edam_format="format_3003"
                             file_ext="bed" />
-                        <history id="ffb0709d52bfbdea"
+                        <history id="4d30d636fed0a9f6"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-0"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-0"/>
                         <metadata
                                 dbkey="?"
                                 data_lines="3"
                                 comment_lines="0"
                                 columns="6"
-                                column_names="[]"
+                                column_names="__ob____cb__"
                                 delimiter="__tc__"
                                 chromCol="1"
                                 startCol="2"
                                 endCol="3"
                                 strandCol="6"
-                                viz_filter_cols="[4]"
+                                nameCol="4"
+                                viz_filter_cols="4"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
@@ -183,31 +240,30 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/f/0/2/dataset_f0263ec1-34ec-43b3-871b-39d6e44f8703.dat" ext="bam" label="merlin-sample.bam">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/8/a/5/dataset_8a5eca75-b2e7-436a-8596-659ca480cfc2.dat" ext="bam" label="merlin-sample.bam">
                         <metadata>
-                        <dataset id="ea3d8239d386c6a4" hid="5"
+                        <dataset id="c8d274edba5d366b" hid="6"
                             size="12.9 KB"
                             edam_format="format_2572"
                             file_ext="bam" />
-                        <history id="ffb0709d52bfbdea"
+                        <history id="4d30d636fed0a9f6"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-0"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-0"/>
                         <metadata
                                 dbkey="?"
                                 columns="12"
-                                column_names="[&quot;QNAME&quot;, &quot;FLAG&quot;, &quot;RNAME&quot;, &quot;POS&quot;, &quot;MAPQ&quot;, &quot;CIGAR&quot;, &quot;MRNM&quot;, &quot;MPOS&quot;, &quot;ISIZE&quot;, &quot;SEQ&quot;, &quot;QUAL&quot;, &quot;OPT&quot;]"
+                                column_names="__ob____sq__QNAME__sq__, __sq__FLAG__sq__, __sq__RNAME__sq__, __sq__POS__sq__, __sq__MAPQ__sq__, __sq__CIGAR__sq__, __sq__MRNM__sq__, __sq__MPOS__sq__, __sq__ISIZE__sq__, __sq__SEQ__sq__, __sq__QUAL__sq__, __sq__OPT__sq____cb__"
                                 bam_version="1.3"
                                 sort_order="coordinate"
-                                read_groups="[]"
-                                reference_names="[&quot;Merlin&quot;]"
-                                reference_lengths="[172788]"
-                                bam_header="{&quot;HD&quot;: {&quot;SO&quot;: &quot;coordinate&quot;, &quot;VN&quot;: &quot;1.3&quot;}, &quot;PG&quot;: [{&quot;CL&quot;: &quot;minimap2 -a -x sr -t 1 reference.fa /net/datasrv3hs.sanbi.ac.za/datastore/cip0/software/galaxy/galaxy-ctb/galaxy/database/files/004/dataset_4697.dat&quot;, &quot;ID&quot;: &quot;minimap2&quot;, &quot;PN&quot;: &quot;minimap2&quot;, &quot;VN&quot;: &quot;2.5-r572&quot;}], &quot;SQ&quot;: [{&quot;LN&quot;: 172788, &quot;SN&quot;: &quot;Merlin&quot;}]}"
-                                bam_index="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
+                                read_groups="__ob____cb__"
+                                reference_names="__ob____sq__Merlin__sq____cb__"
+                                reference_lengths="__ob__172788__cb__"
+                                bam_header="__oc____sq__HD__sq__: __oc____sq__SO__sq__: __sq__coordinate__sq__, __sq__VN__sq__: __sq__1.3__sq____cc__, __sq__PG__sq__: __ob____oc____sq__CL__sq__: __sq__minimap2 -a -x sr -t 1 reference.fa /net/datasrv3hs.sanbi.ac.za/datastore/cip0/software/galaxy/galaxy-ctb/galaxy/database/files/004/dataset_4697.dat__sq__, __sq__ID__sq__: __sq__minimap2__sq__, __sq__PN__sq__: __sq__minimap2__sq__, __sq__VN__sq__: __sq__2.5-r572__sq____cc____cb__, __sq__SQ__sq__: __ob____oc____sq__LN__sq__: 172788, __sq__SN__sq__: __sq__Merlin__sq____cc____cb____cc__"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
@@ -225,7 +281,7 @@
 
                     <pileup>
                             <bam_indices>
-                                    <bam_index>/tmp/tmpgvo11tmf/files/_metadata_files/f/b/d/metadata_fbd6b6b1-16cf-4eb2-b415-ed9608b99203.dat</bam_index>
+                                    <bam_index>/tmp/tmpiyg6gzbz/files/_metadata_files/2/1/b/metadata_21b9af11-e7ea-4393-ba2a-b79f92ff130c.dat</bam_index>
                             </bam_indices>
                     </pileup>
             </options>
@@ -234,22 +290,22 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/4/c/b/dataset_4cb5c8f6-fe5d-4ea0-bdc7-8d5a462676f8.dat" ext="bigwig" label="data.bw">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/7/8/e/dataset_78e8146d-3719-46af-acda-41f5a2678a26.dat" ext="bigwig" label="data.bw">
                         <metadata>
-                        <dataset id="d753b8dba6e25d09" hid="8"
+                        <dataset id="2f8b42de958784ae" hid="7"
                             size="81.6 KB"
                             edam_format="format_3006"
                             file_ext="bigwig" />
-                        <history id="ffb0709d52bfbdea"
+                        <history id="4d30d636fed0a9f6"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-0"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-0"/>
                         <metadata
                                 dbkey="?"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
@@ -274,24 +330,23 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/0/2/d/dataset_02df8cff-9b5e-4548-8087-12b66cb989e1.dat" ext="cram" label="merlin-sample.cram">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/f/0/7/dataset_f07f766a-6f31-4207-85c3-0c86ff22b574.dat" ext="cram" label="merlin-sample.cram">
                         <metadata>
-                        <dataset id="1f72eafab720ae62" hid="7"
+                        <dataset id="76ca3a0a3de24f95" hid="8"
                             size="8.3 KB"
                             edam_format="format_3462"
                             file_ext="cram" />
-                        <history id="ffb0709d52bfbdea"
+                        <history id="4d30d636fed0a9f6"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-0"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-0"/>
                         <metadata
                                 dbkey="?"
                                 cram_version="3.0"
-                                cram_index="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
@@ -309,7 +364,7 @@
 
                     <cram>
                             <cram_indices>
-                                <cram_index>/tmp/tmpgvo11tmf/files/_metadata_files/8/b/b/metadata_8bb20c68-09a9-49f2-9281-f376d48cfc30.dat</cram_index>
+                                <cram_index>/tmp/tmpiyg6gzbz/files/_metadata_files/5/7/3/metadata_5734b699-7e5d-438c-bd25-c2736b084db4.dat</cram_index>
                             </cram_indices>
                     </cram>
             </options>
@@ -318,41 +373,41 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/4/c/b/dataset_4cb5c8f6-fe5d-4ea0-bdc7-8d5a462676f8.dat" ext="bigwig" label="data.bw">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/7/8/e/dataset_78e8146d-3719-46af-acda-41f5a2678a26.dat" ext="bigwig" label="data.bw">
                         <metadata>
-                        <dataset id="d753b8dba6e25d09" hid="8"
+                        <dataset id="2f8b42de958784ae" hid="7"
                             size="81.6 KB"
                             edam_format="format_3006"
                             file_ext="bigwig" />
-                        <history id="ffb0709d52bfbdea"
+                        <history id="4d30d636fed0a9f6"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-0"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-0"/>
                         <metadata
                                 dbkey="?"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/1/b/0/dataset_1b015933-e132-43fb-bc26-ee5d1a0b7b9a.dat" ext="bigwig" label="smaller2.bw">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/a/9/3/dataset_a9398956-bf32-43da-8bb1-047d817af62a.dat" ext="bigwig" label="smaller2.bw">
                         <metadata>
-                        <dataset id="ee963fc82e556fe8" hid="9"
+                        <dataset id="fff5871153f6d061" hid="9"
                             size="10.9 KB"
                             edam_format="format_3006"
                             file_ext="bigwig" />
-                        <history id="ffb0709d52bfbdea"
+                        <history id="4d30d636fed0a9f6"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-0"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-0"/>
                         <metadata
                                 dbkey="?"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
@@ -377,29 +432,29 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/6/a/5/dataset_6a574bcf-cc1d-4a8a-b69e-e98bd1617f5e.dat" ext="vcf" label="test.vcf">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/3/e/3/dataset_3e3ea273-7836-480f-a599-c0c8e3878ed7.dat" ext="vcf" label="test.vcf">
                         <metadata>
-                        <dataset id="2a8101cbb778a3ae" hid="10"
+                        <dataset id="d68659e09db1368d" hid="10"
                             size="1.5 KB"
                             edam_format="format_3016"
                             file_ext="vcf" />
-                        <history id="ffb0709d52bfbdea"
+                        <history id="4d30d636fed0a9f6"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-0"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-0"/>
                         <metadata
                                 dbkey="?"
                                 data_lines="5"
                                 comment_lines="18"
                                 columns="12"
-                                column_names="[]"
+                                column_names="__ob____cb__"
                                 delimiter="__tc__"
-                                viz_filter_cols="[5]"
-                                sample_names="[&quot;NA00001&quot;, &quot;NA00002&quot;, &quot;NA00003&quot;]"
+                                viz_filter_cols="5"
+                                sample_names="__ob____sq__NA00001__sq__, __sq__NA00002__sq__, __sq__NA00003__sq____cb__"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
@@ -421,23 +476,23 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/7/2/7/dataset_7278954d-ff52-449f-8bc0-c7400b60b2d5.dat" ext="hic" label="merlin.hic">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/9/e/7/dataset_9e7fc4c4-f84c-436c-95d4-d1f26d102b1e.dat" ext="hic" label="merlin.hic">
                         <metadata>
-                        <dataset id="bc183b162fdbb361" hid="11"
+                        <dataset id="6294e1cb82136e37" hid="11"
                             size="931 bytes"
                             edam_format="format_2333"
                             file_ext="hic" />
-                        <history id="ffb0709d52bfbdea"
+                        <history id="4d30d636fed0a9f6"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-0"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-0"/>
                         <metadata
                                 dbkey="?"
                                 version="9"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
@@ -461,27 +516,25 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/5/e/2/dataset_5e253171-263d-484f-a87f-c6931b8befbb.dat" ext="maf" label="merlinlastz.maf">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/6/d/8/dataset_6d887995-018c-4119-ae61-2bb8af89301f.dat" ext="maf" label="merlinlastz.maf">
                         <metadata>
-                        <dataset id="4a7d65b0c4d72bd3" hid="12"
+                        <dataset id="7217695b024bd3ec" hid="12"
                             size="1.5 KB"
                             edam_format="format_3008"
                             file_ext="maf" />
-                        <history id="ffb0709d52bfbdea"
+                        <history id="4d30d636fed0a9f6"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-0"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-0"/>
                         <metadata
                                 dbkey="?"
                                 data_lines="0"
-                                species="[&quot;Merlin&quot;, &quot;Merlin1&quot;, &quot;Merlin2&quot;, &quot;Merlin3&quot;, &quot;Merlin4&quot;, &quot;Merlin5&quot;, &quot;Merlin6&quot;]"
+                                species="Merlin,Merlin1,Merlin2,Merlin3,Merlin4,Merlin5,Merlin6"
                                 blocks="6"
-                                species_chromosomes="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
-                                maf_index="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
--- a/test-data/out/03_synteny/config.json	Thu Oct 02 10:20:29 2025 +0000
+++ b/test-data/out/03_synteny/config.json	Fri Oct 24 07:50:40 2025 +0000
@@ -118,7 +118,7 @@
               "assembly": "merlin.fa",
               "loc": "Merlin",
               "tracks": [
-                "934c1f5638ce0d620590c14ae0784692_0_0"
+                "82179179689d9c4c5bdef6eec72630d5_0_0"
               ]
             }
           }
@@ -129,11 +129,11 @@
             "tracks": [
               {
                 "type": "SyntenyTrack",
-                "configuration": "561a4df3bf3652f55cb5419b02dba7f2_0_0",
+                "configuration": "2d3285aa6e070d75c8017044c0deaafd_0_0",
                 "displays": [
                   {
                     "type": "LinearSyntenyDisplay",
-                    "configuration": "561a4df3bf3652f55cb5419b02dba7f2_0_0_LinearSyntenyDisplay"
+                    "configuration": "2d3285aa6e070d75c8017044c0deaafd_0_0_LinearSyntenyDisplay"
                   }
                 ]
               }
@@ -146,11 +146,11 @@
             "tracks": [
               {
                 "type": "SyntenyTrack",
-                "configuration": "32a851bec2514d0aae57afbe0ee757bf_0_0",
+                "configuration": "443bf95452978ab205004d18f01b7011_0_0",
                 "displays": [
                   {
                     "type": "LinearSyntenyDisplay",
-                    "configuration": "32a851bec2514d0aae57afbe0ee757bf_0_0_LinearSyntenyDisplay"
+                    "configuration": "443bf95452978ab205004d18f01b7011_0_0_LinearSyntenyDisplay"
                   }
                 ]
               }
@@ -165,12 +165,12 @@
   "tracks": [
     {
       "type": "QuantitativeTrack",
-      "trackId": "934c1f5638ce0d620590c14ae0784692_0_0",
+      "trackId": "82179179689d9c4c5bdef6eec72630d5_0_0",
       "name": "data.bw",
       "adapter": {
         "type": "BigWigAdapter",
         "bigWigLocation": {
-          "uri": "data/934c1f5638ce0d620590c14ae0784692_0_0.bw",
+          "uri": "data/82179179689d9c4c5bdef6eec72630d5_0_0.bw",
           "locationType": "UriLocation"
         }
       },
@@ -183,29 +183,29 @@
       "displays": [
         {
           "type": "LinearWiggleDisplay",
-          "displayId": "934c1f5638ce0d620590c14ae0784692_0_0_LinearWiggleDisplay",
+          "displayId": "82179179689d9c4c5bdef6eec72630d5_0_0_LinearWiggleDisplay",
           "defaultRendering": "xyplot"
         }
       ],
       "metadata": {
-        "dataset_id": "bbbd1a67b59f937f",
+        "dataset_id": "7a9728aeed7a3efa",
         "dataset_hid": "6",
         "dataset_size": "81.6 KB",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_3006\">bigwig</a>",
         "dataset_file_ext": "bigwig",
-        "history_id": "dad64ae4d71c7372",
+        "history_id": "0b7812b25f4cfb76",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/dad64ae4d71c7372\">Tool Test History for jbrowse2/3.6.5+galaxy0-2</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/0b7812b25f4cfb76\">Tool Test History for jbrowse2/3.6.5+galaxy1-2</a>",
         "metadata_dbkey": "?",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/bbbd1a67b59f937f/show_params\">upload1</a>"
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/7a9728aeed7a3efa/show_params\">__DATA_FETCH__</a>"
       }
     },
     {
       "type": "SyntenyTrack",
-      "trackId": "561a4df3bf3652f55cb5419b02dba7f2_0_0",
+      "trackId": "2d3285aa6e070d75c8017044c0deaafd_0_0",
       "name": "merlun_on_merlon.paf",
       "adapter": {
         "assemblyNames": [
@@ -214,11 +214,11 @@
         ],
         "type": "PairwiseIndexedPAFAdapter",
         "pifGzLocation": {
-          "uri": "data/561a4df3bf3652f55cb5419b02dba7f2_0_0.pif.gz"
+          "uri": "data/2d3285aa6e070d75c8017044c0deaafd_0_0.pif.gz"
         },
         "index": {
           "location": {
-            "uri": "data/561a4df3bf3652f55cb5419b02dba7f2_0_0.pif.gz.tbi"
+            "uri": "data/2d3285aa6e070d75c8017044c0deaafd_0_0.pif.gz.tbi"
           }
         }
       },
@@ -232,29 +232,29 @@
       "displays": [
         {
           "type": "LinearSyntenyDisplay",
-          "displayId": "561a4df3bf3652f55cb5419b02dba7f2_0_0_LinearSyntenyDisplay"
+          "displayId": "2d3285aa6e070d75c8017044c0deaafd_0_0_LinearSyntenyDisplay"
         }
       ],
       "metadata": {
-        "dataset_id": "890f38a71ba6ec9e",
+        "dataset_id": "e744a972b308a2d0",
         "dataset_hid": "2",
         "dataset_size": "227 bytes",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_2330\">paf</a>",
         "dataset_file_ext": "paf",
-        "history_id": "dad64ae4d71c7372",
+        "history_id": "0b7812b25f4cfb76",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/dad64ae4d71c7372\">Tool Test History for jbrowse2/3.6.5+galaxy0-2</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/0b7812b25f4cfb76\">Tool Test History for jbrowse2/3.6.5+galaxy1-2</a>",
         "metadata_dbkey": "?",
         "metadata_data_lines": "2",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/890f38a71ba6ec9e/show_params\">upload1</a>"
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/e744a972b308a2d0/show_params\">__DATA_FETCH__</a>"
       }
     },
     {
       "type": "SyntenyTrack",
-      "trackId": "32a851bec2514d0aae57afbe0ee757bf_0_0",
+      "trackId": "443bf95452978ab205004d18f01b7011_0_0",
       "name": "merlon_on_merlin.paf",
       "adapter": {
         "assemblyNames": [
@@ -263,11 +263,11 @@
         ],
         "type": "PairwiseIndexedPAFAdapter",
         "pifGzLocation": {
-          "uri": "data/32a851bec2514d0aae57afbe0ee757bf_0_0.pif.gz"
+          "uri": "data/443bf95452978ab205004d18f01b7011_0_0.pif.gz"
         },
         "index": {
           "location": {
-            "uri": "data/32a851bec2514d0aae57afbe0ee757bf_0_0.pif.gz.tbi"
+            "uri": "data/443bf95452978ab205004d18f01b7011_0_0.pif.gz.tbi"
           }
         }
       },
@@ -281,24 +281,24 @@
       "displays": [
         {
           "type": "LinearSyntenyDisplay",
-          "displayId": "32a851bec2514d0aae57afbe0ee757bf_0_0_LinearSyntenyDisplay"
+          "displayId": "443bf95452978ab205004d18f01b7011_0_0_LinearSyntenyDisplay"
         }
       ],
       "metadata": {
-        "dataset_id": "fbad2d6a8ae62498",
+        "dataset_id": "1f8c95c7204ee5b9",
         "dataset_hid": "4",
         "dataset_size": "127 bytes",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_2330\">paf</a>",
         "dataset_file_ext": "paf",
-        "history_id": "dad64ae4d71c7372",
+        "history_id": "0b7812b25f4cfb76",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/dad64ae4d71c7372\">Tool Test History for jbrowse2/3.6.5+galaxy0-2</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/0b7812b25f4cfb76\">Tool Test History for jbrowse2/3.6.5+galaxy1-2</a>",
         "metadata_dbkey": "?",
         "metadata_data_lines": "1",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/fbad2d6a8ae62498/show_params\">upload1</a>"
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/1f8c95c7204ee5b9/show_params\">__DATA_FETCH__</a>"
       }
     }
   ],
--- a/test-data/out/03_synteny/galaxy.xml	Thu Oct 02 10:20:29 2025 +0000
+++ b/test-data/out/03_synteny/galaxy.xml	Fri Oct 24 07:50:40 2025 +0000
@@ -12,51 +12,51 @@
         <galaxyUrl>http://localhost:8080</galaxyUrl>
     </metadata>
     <assembly>
-            <genome path="/tmp/tmpgvo11tmf/files/8/f/0/dataset_8f0d6595-a68d-4be0-8ac7-61dfd1088596.dat" label="merlun.fa">
+            <genome path="/tmp/tmpiyg6gzbz/files/e/f/e/dataset_efe9082c-0a47-4f29-b471-263f76881e43.dat" label="merlun.fa">
             <metadata>
-                <dataset id="faee5844a632ee94" hid="1"
+                <dataset id="42ed1747fda63c08" hid="1"
                     size="158.8 KB"
                     edam_format="format_1929"
                     file_ext="fasta"
                     dname = "merlun.fa" />
-                <history id="dad64ae4d71c7372"
+                <history id="0b7812b25f4cfb76"
                     user_email="planemo@galaxyproject.org"
                     user_id="1"
-                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-2"/>
+                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-2"/>
                 <metadata
                         dbkey="?"
                         data_lines="2666"
                         sequences="1"
                     />
                 <tool
-                    tool_id="upload1"
-                    tool_version="1.1.7"
+                    tool_id="__DATA_FETCH__"
+                    tool_version="0.1.0"
                     />
             </metadata>
             </genome>
         <defaultLocation></defaultLocation>
     <tracks>
-        <track cat="Default" format="synteny" visibility="default_off">
+        <track cat="Default" format="synteny" visibility="default_on">
 
 
                     <files>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/4/f/4/dataset_4f4bc28d-2919-4545-8017-f4b4132ef764.dat" ext="paf" label="merlun_on_merlon.paf">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/5/8/c/dataset_58ca4b5e-c634-4686-86f5-8697451aef9b.dat" ext="paf" label="merlun_on_merlon.paf">
                         <metadata>
-                        <dataset id="890f38a71ba6ec9e" hid="2"
+                        <dataset id="e744a972b308a2d0" hid="2"
                             size="227 bytes"
                             edam_format="format_2330"
                             file_ext="paf" />
-                        <history id="dad64ae4d71c7372"
+                        <history id="0b7812b25f4cfb76"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-2"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-2"/>
                         <metadata
                                 dbkey="?"
                                 data_lines="2"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
@@ -79,51 +79,51 @@
     </tracks>
     </assembly>
     <assembly>
-            <genome path="/tmp/tmpgvo11tmf/files/c/1/7/dataset_c17ecf0a-592f-4e02-915f-28968c7204e4.dat" label="merlon.fa">
+            <genome path="/tmp/tmpiyg6gzbz/files/7/6/6/dataset_76654e69-cc8c-4461-8f92-ea2d9a7fa9c8.dat" label="merlon.fa">
             <metadata>
-                <dataset id="e1770ae07453b348" hid="3"
+                <dataset id="1755c1ca08cd39a9" hid="3"
                     size="155.3 KB"
                     edam_format="format_1929"
                     file_ext="fasta"
                     dname = "merlon.fa" />
-                <history id="dad64ae4d71c7372"
+                <history id="0b7812b25f4cfb76"
                     user_email="planemo@galaxyproject.org"
                     user_id="1"
-                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-2"/>
+                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-2"/>
                 <metadata
                         dbkey="?"
                         data_lines="2608"
                         sequences="1"
                     />
                 <tool
-                    tool_id="upload1"
-                    tool_version="1.1.7"
+                    tool_id="__DATA_FETCH__"
+                    tool_version="0.1.0"
                     />
             </metadata>
             </genome>
         <defaultLocation></defaultLocation>
     <tracks>
-        <track cat="Default" format="synteny" visibility="default_off">
+        <track cat="Default" format="synteny" visibility="default_on">
 
 
                     <files>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/c/b/f/dataset_cbf9364c-3c39-46a5-bb7f-cc8bdbdc1267.dat" ext="paf" label="merlon_on_merlin.paf">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/b/2/0/dataset_b20f1b4c-528e-4b33-9f76-3158ecf3e64a.dat" ext="paf" label="merlon_on_merlin.paf">
                         <metadata>
-                        <dataset id="fbad2d6a8ae62498" hid="4"
+                        <dataset id="1f8c95c7204ee5b9" hid="4"
                             size="127 bytes"
                             edam_format="format_2330"
                             file_ext="paf" />
-                        <history id="dad64ae4d71c7372"
+                        <history id="0b7812b25f4cfb76"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-2"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-2"/>
                         <metadata
                                 dbkey="?"
                                 data_lines="1"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
@@ -146,25 +146,25 @@
     </tracks>
     </assembly>
     <assembly>
-            <genome path="/tmp/tmpgvo11tmf/files/3/8/c/dataset_38c183ee-4de2-4b8a-a3bc-2e31912083fa.dat" label="merlin.fa">
+            <genome path="/tmp/tmpiyg6gzbz/files/a/6/7/dataset_a67ee65b-0f84-4ad9-8984-3dc0baf46d35.dat" label="merlin.fa">
             <metadata>
-                <dataset id="915adfc032ee90e6" hid="5"
+                <dataset id="30deb7a376313549" hid="5"
                     size="171.6 KB"
                     edam_format="format_1929"
                     file_ext="fasta"
                     dname = "merlin.fa" />
-                <history id="dad64ae4d71c7372"
+                <history id="0b7812b25f4cfb76"
                     user_email="planemo@galaxyproject.org"
                     user_id="1"
-                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-2"/>
+                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-2"/>
                 <metadata
                         dbkey="?"
                         data_lines="2881"
                         sequences="1"
                     />
                 <tool
-                    tool_id="upload1"
-                    tool_version="1.1.7"
+                    tool_id="__DATA_FETCH__"
+                    tool_version="0.1.0"
                     />
             </metadata>
             </genome>
@@ -174,22 +174,22 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/3/2/6/dataset_3264bccf-57cd-4c47-ad23-d1c3c781da07.dat" ext="bigwig" label="data.bw">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/8/5/9/dataset_85947fa0-916f-4366-8386-4681c41b6405.dat" ext="bigwig" label="data.bw">
                         <metadata>
-                        <dataset id="bbbd1a67b59f937f" hid="6"
+                        <dataset id="7a9728aeed7a3efa" hid="6"
                             size="81.6 KB"
                             edam_format="format_3006"
                             file_ext="bigwig" />
-                        <history id="dad64ae4d71c7372"
+                        <history id="0b7812b25f4cfb76"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-2"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-2"/>
                         <metadata
                                 dbkey="?"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
--- a/test-data/out/04_synteny_remote/config.json	Thu Oct 02 10:20:29 2025 +0000
+++ b/test-data/out/04_synteny_remote/config.json	Fri Oct 24 07:50:40 2025 +0000
@@ -97,11 +97,11 @@
             "tracks": [
               {
                 "type": "SyntenyTrack",
-                "configuration": "0530135e064b54c99df62def400c3292_0_0",
+                "configuration": "80ba0000256d270f3eed70e2de2e9458_0_0",
                 "displays": [
                   {
                     "type": "LinearSyntenyDisplay",
-                    "configuration": "0530135e064b54c99df62def400c3292_0_0_LinearSyntenyDisplay"
+                    "configuration": "80ba0000256d270f3eed70e2de2e9458_0_0_LinearSyntenyDisplay"
                   }
                 ]
               }
@@ -116,7 +116,7 @@
   "tracks": [
     {
       "type": "SyntenyTrack",
-      "trackId": "0530135e064b54c99df62def400c3292_0_0",
+      "trackId": "80ba0000256d270f3eed70e2de2e9458_0_0",
       "name": "peach-grape-map.paf",
       "adapter": {
         "assemblyNames": [
@@ -125,11 +125,11 @@
         ],
         "type": "PairwiseIndexedPAFAdapter",
         "pifGzLocation": {
-          "uri": "data/0530135e064b54c99df62def400c3292_0_0.pif.gz"
+          "uri": "data/80ba0000256d270f3eed70e2de2e9458_0_0.pif.gz"
         },
         "index": {
           "location": {
-            "uri": "data/0530135e064b54c99df62def400c3292_0_0.pif.gz.tbi"
+            "uri": "data/80ba0000256d270f3eed70e2de2e9458_0_0.pif.gz.tbi"
           }
         }
       },
@@ -143,24 +143,24 @@
       "displays": [
         {
           "type": "LinearSyntenyDisplay",
-          "displayId": "0530135e064b54c99df62def400c3292_0_0_LinearSyntenyDisplay"
+          "displayId": "80ba0000256d270f3eed70e2de2e9458_0_0_LinearSyntenyDisplay"
         }
       ],
       "metadata": {
-        "dataset_id": "49124efef65eb81f",
+        "dataset_id": "5e7c5784e865b42d",
         "dataset_hid": "1",
         "dataset_size": "238.1 KB",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_2330\">paf</a>",
         "dataset_file_ext": "paf",
-        "history_id": "36cc4ad69bb5f2a1",
+        "history_id": "bd91a97d652fafe1",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/36cc4ad69bb5f2a1\">Tool Test History for jbrowse2/3.6.5+galaxy0-3</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/bd91a97d652fafe1\">Tool Test History for jbrowse2/3.6.5+galaxy1-3</a>",
         "metadata_dbkey": "?",
         "metadata_data_lines": "1911",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/49124efef65eb81f/show_params\">upload1</a>"
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/5e7c5784e865b42d/show_params\">__DATA_FETCH__</a>"
       }
     }
   ],
--- a/test-data/out/04_synteny_remote/galaxy.xml	Thu Oct 02 10:20:29 2025 +0000
+++ b/test-data/out/04_synteny_remote/galaxy.xml	Fri Oct 24 07:50:40 2025 +0000
@@ -17,27 +17,27 @@
             </genome>
         <defaultLocation></defaultLocation>
     <tracks>
-        <track cat="Default" format="synteny" visibility="default_off">
+        <track cat="Default" format="synteny" visibility="default_on">
 
 
                     <files>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/a/1/f/dataset_a1f11daf-86d1-489f-a779-7e18e6f10a9f.dat" ext="paf" label="peach-grape-map.paf">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/8/a/a/dataset_8aac4d06-9a9b-4d73-b231-2864581b0dfa.dat" ext="paf" label="peach-grape-map.paf">
                         <metadata>
-                        <dataset id="49124efef65eb81f" hid="1"
+                        <dataset id="5e7c5784e865b42d" hid="1"
                             size="238.1 KB"
                             edam_format="format_2330"
                             file_ext="paf" />
-                        <history id="36cc4ad69bb5f2a1"
+                        <history id="bd91a97d652fafe1"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-3"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-3"/>
                         <metadata
                                 dbkey="?"
                                 data_lines="1911"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
--- a/test-data/out/05_synteny_full_remote/galaxy.xml	Thu Oct 02 10:20:29 2025 +0000
+++ b/test-data/out/05_synteny_full_remote/galaxy.xml	Fri Oct 24 07:50:40 2025 +0000
@@ -17,7 +17,7 @@
             </genome>
         <defaultLocation></defaultLocation>
     <tracks>
-        <track cat="Default" format="synteny" visibility="default_off">
+        <track cat="Default" format="synteny" visibility="default_on">
 
 
                     <files>
--- a/test-data/out/06_various_options/config.json	Thu Oct 02 10:20:29 2025 +0000
+++ b/test-data/out/06_various_options/config.json	Fri Oct 24 07:50:40 2025 +0000
@@ -72,7 +72,7 @@
           "assembly": "merlin.fa",
           "loc": "Merlin:1000-2000",
           "tracks": [
-            "1d4288426ee65828142bd0ec1611ca5a_0_0"
+            "9164da821dd9f40efa61a737d8dbd031_0_0"
           ]
         }
       }
@@ -81,17 +81,17 @@
   "tracks": [
     {
       "type": "FeatureTrack",
-      "trackId": "1d4288426ee65828142bd0ec1611ca5a_0_0",
+      "trackId": "9164da821dd9f40efa61a737d8dbd031_0_0",
       "name": "merlin.gff",
       "adapter": {
         "type": "Gff3TabixAdapter",
         "gffGzLocation": {
-          "uri": "data/1d4288426ee65828142bd0ec1611ca5a_0_0.gff.gz",
+          "uri": "data/9164da821dd9f40efa61a737d8dbd031_0_0.gff.gz",
           "locationType": "UriLocation"
         },
         "index": {
           "location": {
-            "uri": "data/1d4288426ee65828142bd0ec1611ca5a_0_0.gff.gz.tbi",
+            "uri": "data/9164da821dd9f40efa61a737d8dbd031_0_0.gff.gz.tbi",
             "locationType": "UriLocation"
           },
           "indexType": "TBI"
@@ -106,7 +106,7 @@
       "displays": [
         {
           "type": "LinearBasicDisplay",
-          "displayId": "1d4288426ee65828142bd0ec1611ca5a_0_0_LinearBasicDisplay",
+          "displayId": "9164da821dd9f40efa61a737d8dbd031_0_0_LinearBasicDisplay",
           "renderer": {
             "type": "SvgFeatureRenderer",
             "showLabels": true,
@@ -133,17 +133,17 @@
     },
     {
       "type": "FeatureTrack",
-      "trackId": "3ab3c20156596dd17db795bdda1f7c1a_1_0",
+      "trackId": "b26da96d1d07207823e585f65ca15149_1_0",
       "name": "1.gff",
       "adapter": {
         "type": "Gff3TabixAdapter",
         "gffGzLocation": {
-          "uri": "data/3ab3c20156596dd17db795bdda1f7c1a_1_0.gff.gz",
+          "uri": "data/b26da96d1d07207823e585f65ca15149_1_0.gff.gz",
           "locationType": "UriLocation"
         },
         "index": {
           "location": {
-            "uri": "data/3ab3c20156596dd17db795bdda1f7c1a_1_0.gff.gz.tbi",
+            "uri": "data/b26da96d1d07207823e585f65ca15149_1_0.gff.gz.tbi",
             "locationType": "UriLocation"
           },
           "indexType": "TBI"
@@ -158,7 +158,7 @@
       "displays": [
         {
           "type": "LinearArcDisplay",
-          "displayId": "3ab3c20156596dd17db795bdda1f7c1a_1_0_LinearArcDisplay",
+          "displayId": "b26da96d1d07207823e585f65ca15149_1_0_LinearArcDisplay",
           "renderer": {
             "type": "ArcRenderer",
             "label": "jexl:get(feature,'score')",
@@ -170,25 +170,25 @@
         "depth": 1
       },
       "metadata": {
-        "dataset_id": "f4d493e76c714bd7",
+        "dataset_id": "8d08779b916d2c74",
         "dataset_hid": "6",
         "dataset_size": "2.3 KB",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_1975\">gff3</a>",
         "dataset_file_ext": "gff3",
-        "history_id": "052ea72eccff1e52",
+        "history_id": "c8d274edba5d366b",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/052ea72eccff1e52\">Tool Test History for jbrowse2/3.6.5+galaxy0-5</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/c8d274edba5d366b\">Tool Test History for jbrowse2/3.6.5+galaxy1-5</a>",
         "metadata_dbkey": "?",
         "metadata_data_lines": "27",
         "metadata_comment_lines": "19",
         "metadata_columns": "9",
         "metadata_column_names": "[]",
-        "metadata_delimiter": "__tc__",
+        "metadata_delimiter": "\t",
         "metadata_attributes": "6",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/f4d493e76c714bd7/show_params\">upload1</a>"
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/8d08779b916d2c74/show_params\">__DATA_FETCH__</a>"
       }
     }
   ],
@@ -214,4 +214,4 @@
       ]
     }
   ]
-}
+}
\ No newline at end of file
--- a/test-data/out/06_various_options/galaxy.xml	Thu Oct 02 10:20:29 2025 +0000
+++ b/test-data/out/06_various_options/galaxy.xml	Fri Oct 24 07:50:40 2025 +0000
@@ -12,29 +12,29 @@
         <galaxyUrl>http://localhost:8080</galaxyUrl>
     </metadata>
     <assembly>
-            <genome path="/tmp/tmpgvo11tmf/files/c/2/a/dataset_c2a24553-0ee6-41cb-9183-50cd34872b77.dat" label="merlin.fa">
+            <genome path="/tmp/tmpiyg6gzbz/files/5/2/9/dataset_5296eab5-9843-40c5-9db9-4aa93249c833.dat" label="merlin.fa">
             <metadata>
-                <dataset id="c400d50a71327edf" hid="1"
+                <dataset id="09545c40d817e546" hid="1"
                     size="171.6 KB"
                     edam_format="format_1929"
                     file_ext="fasta"
                     dname = "merlin.fa" />
-                <history id="052ea72eccff1e52"
+                <history id="c8d274edba5d366b"
                     user_email="planemo@galaxyproject.org"
                     user_id="1"
-                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-5"/>
+                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-5"/>
                 <metadata
                         dbkey="?"
                         data_lines="2881"
                         sequences="1"
                     />
                 <tool
-                    tool_id="upload1"
-                    tool_version="1.1.7"
+                    tool_id="__DATA_FETCH__"
+                    tool_version="0.1.0"
                     />
             </metadata>
-                <ref_name_aliases path="/tmp/tmpgvo11tmf/files/b/5/c/dataset_b5c38813-a540-4237-ab54-9ae57f46d215.dat" />
-                <cytobands path="/tmp/tmpgvo11tmf/files/a/3/f/dataset_a3f516d2-9465-4fdb-9dbb-0f678ff96599.dat" />
+                <ref_name_aliases path="/tmp/tmpiyg6gzbz/files/1/1/5/dataset_1151e202-f9f3-4110-b64f-333acec46e55.dat" />
+                <cytobands path="/tmp/tmpiyg6gzbz/files/d/3/5/dataset_d3500267-21d7-4211-b238-9f11ef1a0e95.dat" />
             </genome>
         <defaultLocation>Merlin:1000..2000</defaultLocation>
     <tracks>
@@ -42,9 +42,9 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/7/c/8/dataset_7c87c268-43bb-4c4f-83e0-ea613fa25543.dat" ext="gff3" label="merlin.gff">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/2/3/b/dataset_23b6b090-77a2-4dca-afb1-45c1f639ca3f.dat" ext="gff3" label="merlin.gff">
                         <metadata>
-                            <bonus src="/tmp/tmpgvo11tmf/files/c/2/6/dataset_c267020e-a497-4cf4-b448-7c66892d627b.dat" />
+                            <bonus src="/tmp/tmpiyg6gzbz/files/8/a/a/dataset_8aa7709d-337e-4620-b838-7c4ea7cabf2f.dat" />
                         </metadata>
                     </trackFile>
                     </files>
@@ -79,28 +79,28 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmpgvo11tmf/files/8/7/b/dataset_87bd0e2d-5796-4db5-8d0f-5654c2b26710.dat" ext="gff3" label="1.gff">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/a/9/e/dataset_a9e599f6-9e07-4ca5-9574-a46f79d83567.dat" ext="gff3" label="1.gff">
                         <metadata>
-                        <dataset id="f4d493e76c714bd7" hid="6"
+                        <dataset id="8d08779b916d2c74" hid="6"
                             size="2.3 KB"
                             edam_format="format_1975"
                             file_ext="gff3" />
-                        <history id="052ea72eccff1e52"
+                        <history id="c8d274edba5d366b"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-5"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-5"/>
                         <metadata
                                 dbkey="?"
                                 data_lines="27"
                                 comment_lines="19"
                                 columns="9"
-                                column_names="[]"
+                                column_names="__ob____cb__"
                                 delimiter="__tc__"
                                 attributes="6"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
--- a/test-data/out/07_synteny_mixed/config.json	Thu Oct 02 10:20:29 2025 +0000
+++ b/test-data/out/07_synteny_mixed/config.json	Fri Oct 24 07:50:40 2025 +0000
@@ -102,8 +102,7 @@
               "assembly": "merlun.fa",
               "loc": "Merlun",
               "tracks": [
-                "17f324230d6997928e1eca50228bd09d_0_0",
-                "17f324230d6997928e1eca50228bd09d_1_0"
+                "f27027d9cba656ee7279114b4764a1a9_1_0"
               ]
             }
           },
@@ -113,8 +112,7 @@
               "assembly": "merlon.fa",
               "loc": "Merlon",
               "tracks": [
-                "33429c271bc47d6279b48d1eaaf4d1e8_0_0",
-                "33429c271bc47d6279b48d1eaaf4d1e8_1_0"
+                "9ab20cffedd38e60ca92f0454b9745db_1_0"
               ]
             }
           },
@@ -124,28 +122,63 @@
               "assembly": "merlin.fa",
               "loc": "Merlin",
               "tracks": [
-                "9353a848a5e1df8b38605dbc140d95dd_0_0"
+                "40c5d3cdfaa1318fd0d68918cd144f36_0_0"
               ]
             }
           }
         ],
-        "levels": []
+        "levels": [
+          {
+            "type": "LinearSyntenyViewHelper",
+            "tracks": [
+              {
+                "type": "SyntenyTrack",
+                "configuration": "f27027d9cba656ee7279114b4764a1a9_0_0",
+                "displays": [
+                  {
+                    "type": "LinearSyntenyDisplay",
+                    "configuration": "f27027d9cba656ee7279114b4764a1a9_0_0_LinearSyntenyDisplay"
+                  }
+                ]
+              }
+            ],
+            "height": 100,
+            "level": 0
+          },
+          {
+            "type": "LinearSyntenyViewHelper",
+            "tracks": [
+              {
+                "type": "SyntenyTrack",
+                "configuration": "9ab20cffedd38e60ca92f0454b9745db_0_0",
+                "displays": [
+                  {
+                    "type": "LinearSyntenyDisplay",
+                    "configuration": "9ab20cffedd38e60ca92f0454b9745db_0_0_LinearSyntenyDisplay"
+                  }
+                ]
+              }
+            ],
+            "height": 100,
+            "level": 1
+          }
+        ]
       }
     ]
   },
   "tracks": [
     {
       "type": "SyntenyTrack",
-      "trackId": "17f324230d6997928e1eca50228bd09d_0_0",
+      "trackId": "f27027d9cba656ee7279114b4764a1a9_1_0",
       "name": "merlun_on_merlon.paf",
       "adapter": {
         "type": "PairwiseIndexedPAFAdapter",
         "pifGzLocation": {
-          "uri": "data/17f324230d6997928e1eca50228bd09d_0_0.pif.gz"
+          "uri": "data/f27027d9cba656ee7279114b4764a1a9_1_0.pif.gz"
         },
         "index": {
           "location": {
-            "uri": "data/17f324230d6997928e1eca50228bd09d_0_0.pif.gz.tbi"
+            "uri": "data/f27027d9cba656ee7279114b4764a1a9_1_0.pif.gz.tbi"
           }
         }
       },
@@ -158,62 +191,7 @@
       "displays": [
         {
           "type": "LinearBasicDisplay",
-          "displayId": "17f324230d6997928e1eca50228bd09d_0_0_LinearBasicDisplay",
-          "renderer": {
-            "type": "SvgFeatureRenderer",
-            "showLabels": true,
-            "showDescriptions": true,
-            "labels": {
-              "name": "jexl:get(feature,'name') || get(feature,'id')",
-              "description": "jexl:get(feature,'note') || get(feature,'description')"
-            },
-            "displayMode": "normal",
-            "maxHeight": 1200
-          }
-        }
-      ],
-      "metadata": {
-        "dataset_id": "2ca7380062475cc2",
-        "dataset_hid": "2",
-        "dataset_size": "227 bytes",
-        "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_2330\">paf</a>",
-        "dataset_file_ext": "paf",
-        "history_id": "fa950b0ef319061e",
-        "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
-        "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/fa950b0ef319061e\">Tool Test History for jbrowse2/3.6.5+galaxy0-6</a>",
-        "metadata_dbkey": "?",
-        "metadata_data_lines": "2",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/2ca7380062475cc2/show_params\">upload1</a>"
-      }
-    },
-    {
-      "type": "SyntenyTrack",
-      "trackId": "17f324230d6997928e1eca50228bd09d_1_0",
-      "name": "merlun_on_merlon.paf",
-      "adapter": {
-        "type": "PairwiseIndexedPAFAdapter",
-        "pifGzLocation": {
-          "uri": "data/17f324230d6997928e1eca50228bd09d_1_0.pif.gz"
-        },
-        "index": {
-          "location": {
-            "uri": "data/17f324230d6997928e1eca50228bd09d_1_0.pif.gz.tbi"
-          }
-        }
-      },
-      "category": [
-        "Default"
-      ],
-      "assemblyNames": [
-        "merlun.fa"
-      ],
-      "displays": [
-        {
-          "type": "LinearBasicDisplay",
-          "displayId": "17f324230d6997928e1eca50228bd09d_1_0_LinearBasicDisplay",
+          "displayId": "f27027d9cba656ee7279114b4764a1a9_1_0_LinearBasicDisplay",
           "renderer": {
             "type": "SvgFeatureRenderer",
             "showLabels": true,
@@ -228,34 +206,34 @@
         }
       ],
       "metadata": {
-        "dataset_id": "2ca7380062475cc2",
+        "dataset_id": "0193a46a40878ddb",
         "dataset_hid": "2",
         "dataset_size": "227 bytes",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_2330\">paf</a>",
         "dataset_file_ext": "paf",
-        "history_id": "fa950b0ef319061e",
+        "history_id": "2f8b42de958784ae",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/fa950b0ef319061e\">Tool Test History for jbrowse2/3.6.5+galaxy0-6</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/2f8b42de958784ae\">Tool Test History for jbrowse2/3.6.5+galaxy1-6</a>",
         "metadata_dbkey": "?",
         "metadata_data_lines": "2",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/2ca7380062475cc2/show_params\">upload1</a>"
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/0193a46a40878ddb/show_params\">__DATA_FETCH__</a>"
       }
     },
     {
       "type": "SyntenyTrack",
-      "trackId": "33429c271bc47d6279b48d1eaaf4d1e8_0_0",
+      "trackId": "9ab20cffedd38e60ca92f0454b9745db_1_0",
       "name": "merlon_on_merlin.paf",
       "adapter": {
         "type": "PairwiseIndexedPAFAdapter",
         "pifGzLocation": {
-          "uri": "data/33429c271bc47d6279b48d1eaaf4d1e8_0_0.pif.gz"
+          "uri": "data/9ab20cffedd38e60ca92f0454b9745db_1_0.pif.gz"
         },
         "index": {
           "location": {
-            "uri": "data/33429c271bc47d6279b48d1eaaf4d1e8_0_0.pif.gz.tbi"
+            "uri": "data/9ab20cffedd38e60ca92f0454b9745db_1_0.pif.gz.tbi"
           }
         }
       },
@@ -268,7 +246,7 @@
       "displays": [
         {
           "type": "LinearBasicDisplay",
-          "displayId": "33429c271bc47d6279b48d1eaaf4d1e8_0_0_LinearBasicDisplay",
+          "displayId": "9ab20cffedd38e60ca92f0454b9745db_1_0_LinearBasicDisplay",
           "renderer": {
             "type": "SvgFeatureRenderer",
             "showLabels": true,
@@ -283,85 +261,30 @@
         }
       ],
       "metadata": {
-        "dataset_id": "6f8f1ec4766df755",
+        "dataset_id": "4b6ef6ca3df7dc79",
         "dataset_hid": "4",
         "dataset_size": "127 bytes",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_2330\">paf</a>",
         "dataset_file_ext": "paf",
-        "history_id": "fa950b0ef319061e",
+        "history_id": "2f8b42de958784ae",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/fa950b0ef319061e\">Tool Test History for jbrowse2/3.6.5+galaxy0-6</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/2f8b42de958784ae\">Tool Test History for jbrowse2/3.6.5+galaxy1-6</a>",
         "metadata_dbkey": "?",
         "metadata_data_lines": "1",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/6f8f1ec4766df755/show_params\">upload1</a>"
-      }
-    },
-    {
-      "type": "SyntenyTrack",
-      "trackId": "33429c271bc47d6279b48d1eaaf4d1e8_1_0",
-      "name": "merlon_on_merlin.paf",
-      "adapter": {
-        "type": "PairwiseIndexedPAFAdapter",
-        "pifGzLocation": {
-          "uri": "data/33429c271bc47d6279b48d1eaaf4d1e8_1_0.pif.gz"
-        },
-        "index": {
-          "location": {
-            "uri": "data/33429c271bc47d6279b48d1eaaf4d1e8_1_0.pif.gz.tbi"
-          }
-        }
-      },
-      "category": [
-        "Default"
-      ],
-      "assemblyNames": [
-        "merlon.fa"
-      ],
-      "displays": [
-        {
-          "type": "LinearBasicDisplay",
-          "displayId": "33429c271bc47d6279b48d1eaaf4d1e8_1_0_LinearBasicDisplay",
-          "renderer": {
-            "type": "SvgFeatureRenderer",
-            "showLabels": true,
-            "showDescriptions": true,
-            "labels": {
-              "name": "jexl:get(feature,'name') || get(feature,'id')",
-              "description": "jexl:get(feature,'note') || get(feature,'description')"
-            },
-            "displayMode": "normal",
-            "maxHeight": 1200
-          }
-        }
-      ],
-      "metadata": {
-        "dataset_id": "6f8f1ec4766df755",
-        "dataset_hid": "4",
-        "dataset_size": "127 bytes",
-        "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_2330\">paf</a>",
-        "dataset_file_ext": "paf",
-        "history_id": "fa950b0ef319061e",
-        "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
-        "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/fa950b0ef319061e\">Tool Test History for jbrowse2/3.6.5+galaxy0-6</a>",
-        "metadata_dbkey": "?",
-        "metadata_data_lines": "1",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/6f8f1ec4766df755/show_params\">upload1</a>"
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/4b6ef6ca3df7dc79/show_params\">__DATA_FETCH__</a>"
       }
     },
     {
       "type": "QuantitativeTrack",
-      "trackId": "9353a848a5e1df8b38605dbc140d95dd_0_0",
+      "trackId": "40c5d3cdfaa1318fd0d68918cd144f36_0_0",
       "name": "data.bw",
       "adapter": {
         "type": "BigWigAdapter",
         "bigWigLocation": {
-          "uri": "data/9353a848a5e1df8b38605dbc140d95dd_0_0.bw",
+          "uri": "data/40c5d3cdfaa1318fd0d68918cd144f36_0_0.bw",
           "locationType": "UriLocation"
         }
       },
@@ -374,24 +297,122 @@
       "displays": [
         {
           "type": "LinearWiggleDisplay",
-          "displayId": "9353a848a5e1df8b38605dbc140d95dd_0_0_LinearWiggleDisplay",
+          "displayId": "40c5d3cdfaa1318fd0d68918cd144f36_0_0_LinearWiggleDisplay",
           "defaultRendering": "xyplot"
         }
       ],
       "metadata": {
-        "dataset_id": "9956239aff51cae9",
+        "dataset_id": "956e46a817a35762",
         "dataset_hid": "6",
         "dataset_size": "81.6 KB",
         "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_3006\">bigwig</a>",
         "dataset_file_ext": "bigwig",
-        "history_id": "fa950b0ef319061e",
+        "history_id": "2f8b42de958784ae",
+        "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
+        "history_user_id": "1",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/2f8b42de958784ae\">Tool Test History for jbrowse2/3.6.5+galaxy1-6</a>",
+        "metadata_dbkey": "?",
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/956e46a817a35762/show_params\">__DATA_FETCH__</a>"
+      }
+    },
+    {
+      "type": "SyntenyTrack",
+      "trackId": "f27027d9cba656ee7279114b4764a1a9_0_0",
+      "name": "merlun_on_merlon.paf",
+      "adapter": {
+        "assemblyNames": [
+          "merlun.fa",
+          "merlon.fa"
+        ],
+        "type": "PairwiseIndexedPAFAdapter",
+        "pifGzLocation": {
+          "uri": "data/f27027d9cba656ee7279114b4764a1a9_0_0.pif.gz"
+        },
+        "index": {
+          "location": {
+            "uri": "data/f27027d9cba656ee7279114b4764a1a9_0_0.pif.gz.tbi"
+          }
+        }
+      },
+      "category": [
+        "Default"
+      ],
+      "assemblyNames": [
+        "merlun.fa",
+        "merlon.fa"
+      ],
+      "displays": [
+        {
+          "type": "LinearSyntenyDisplay",
+          "displayId": "f27027d9cba656ee7279114b4764a1a9_0_0_LinearSyntenyDisplay"
+        }
+      ],
+      "metadata": {
+        "dataset_id": "0193a46a40878ddb",
+        "dataset_hid": "2",
+        "dataset_size": "227 bytes",
+        "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_2330\">paf</a>",
+        "dataset_file_ext": "paf",
+        "history_id": "2f8b42de958784ae",
         "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
         "history_user_id": "1",
-        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/fa950b0ef319061e\">Tool Test History for jbrowse2/3.6.5+galaxy0-6</a>",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/2f8b42de958784ae\">Tool Test History for jbrowse2/3.6.5+galaxy1-6</a>",
         "metadata_dbkey": "?",
-        "tool_tool_id": "upload1",
-        "tool_tool_version": "1.1.7",
-        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/9956239aff51cae9/show_params\">upload1</a>"
+        "metadata_data_lines": "2",
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/0193a46a40878ddb/show_params\">__DATA_FETCH__</a>"
+      }
+    },
+    {
+      "type": "SyntenyTrack",
+      "trackId": "9ab20cffedd38e60ca92f0454b9745db_0_0",
+      "name": "merlon_on_merlin.paf",
+      "adapter": {
+        "assemblyNames": [
+          "merlon.fa",
+          "merlin.fa"
+        ],
+        "type": "PairwiseIndexedPAFAdapter",
+        "pifGzLocation": {
+          "uri": "data/9ab20cffedd38e60ca92f0454b9745db_0_0.pif.gz"
+        },
+        "index": {
+          "location": {
+            "uri": "data/9ab20cffedd38e60ca92f0454b9745db_0_0.pif.gz.tbi"
+          }
+        }
+      },
+      "category": [
+        "Default"
+      ],
+      "assemblyNames": [
+        "merlon.fa",
+        "merlin.fa"
+      ],
+      "displays": [
+        {
+          "type": "LinearSyntenyDisplay",
+          "displayId": "9ab20cffedd38e60ca92f0454b9745db_0_0_LinearSyntenyDisplay"
+        }
+      ],
+      "metadata": {
+        "dataset_id": "4b6ef6ca3df7dc79",
+        "dataset_hid": "4",
+        "dataset_size": "127 bytes",
+        "dataset_edam_format": "<a target=\"_blank\" href=\"http://edamontology.org/format_2330\">paf</a>",
+        "dataset_file_ext": "paf",
+        "history_id": "2f8b42de958784ae",
+        "history_user_email": "<a href=\"mailto:planemo@galaxyproject.org\">planemo@galaxyproject.org</a>",
+        "history_user_id": "1",
+        "history_display_name": "<a target=\"_blank\" href=\"http://localhost:8080/history/view/2f8b42de958784ae\">Tool Test History for jbrowse2/3.6.5+galaxy1-6</a>",
+        "metadata_dbkey": "?",
+        "metadata_data_lines": "1",
+        "tool_tool_id": "__DATA_FETCH__",
+        "tool_tool_version": "0.1.0",
+        "tool_tool": "<a target=\"_blank\" href=\"http://localhost:8080/datasets/4b6ef6ca3df7dc79/show_params\">__DATA_FETCH__</a>"
       }
     }
   ],
--- a/test-data/out/07_synteny_mixed/galaxy.xml	Thu Oct 02 10:20:29 2025 +0000
+++ b/test-data/out/07_synteny_mixed/galaxy.xml	Fri Oct 24 07:50:40 2025 +0000
@@ -12,25 +12,25 @@
         <galaxyUrl>http://localhost:8080</galaxyUrl>
     </metadata>
     <assembly>
-            <genome path="/tmp/tmp6b1mtu54/files/6/0/2/dataset_602d83e7-6ec8-4476-a27b-800b4c8d3570.dat" label="merlun.fa">
+            <genome path="/tmp/tmpiyg6gzbz/files/c/c/d/dataset_ccdaa782-b710-408d-b2f0-485e98d73d0c.dat" label="merlun.fa">
             <metadata>
-                <dataset id="ef8367bbbd7a8a28" hid="1"
+                <dataset id="db035faa70b52d68" hid="1"
                     size="158.8 KB"
                     edam_format="format_1929"
                     file_ext="fasta"
                     dname = "merlun.fa" />
-                <history id="fa950b0ef319061e"
+                <history id="2f8b42de958784ae"
                     user_email="planemo@galaxyproject.org"
                     user_id="1"
-                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-6"/>
+                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-6"/>
                 <metadata
                         dbkey="?"
                         data_lines="2666"
                         sequences="1"
                     />
                 <tool
-                    tool_id="upload1"
-                    tool_version="1.1.7"
+                    tool_id="__DATA_FETCH__"
+                    tool_version="0.1.0"
                     />
             </metadata>
             </genome>
@@ -40,23 +40,23 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmp6b1mtu54/files/d/7/0/dataset_d7026439-5ae9-4bc5-8f58-bfe069f89440.dat" ext="paf" label="merlun_on_merlon.paf">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/9/c/c/dataset_9cc8d8bd-cfa4-46bf-ae31-cf6eab61a297.dat" ext="paf" label="merlun_on_merlon.paf">
                         <metadata>
-                        <dataset id="2ca7380062475cc2" hid="2"
+                        <dataset id="0193a46a40878ddb" hid="2"
                             size="227 bytes"
                             edam_format="format_2330"
                             file_ext="paf" />
-                        <history id="fa950b0ef319061e"
+                        <history id="2f8b42de958784ae"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-6"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-6"/>
                         <metadata
                                 dbkey="?"
                                 data_lines="2"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
@@ -64,7 +64,7 @@
 
             <options>
                 <style>
-                        <display>LinearBasicDisplay</display>
+                        <display>LinearSyntenyDisplay</display>
 
 
 
@@ -80,23 +80,23 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmp6b1mtu54/files/d/7/0/dataset_d7026439-5ae9-4bc5-8f58-bfe069f89440.dat" ext="paf" label="merlun_on_merlon.paf">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/9/c/c/dataset_9cc8d8bd-cfa4-46bf-ae31-cf6eab61a297.dat" ext="paf" label="merlun_on_merlon.paf">
                         <metadata>
-                        <dataset id="2ca7380062475cc2" hid="2"
+                        <dataset id="0193a46a40878ddb" hid="2"
                             size="227 bytes"
                             edam_format="format_2330"
                             file_ext="paf" />
-                        <history id="fa950b0ef319061e"
+                        <history id="2f8b42de958784ae"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-6"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-6"/>
                         <metadata
                                 dbkey="?"
                                 data_lines="2"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
@@ -119,25 +119,25 @@
     </tracks>
     </assembly>
     <assembly>
-            <genome path="/tmp/tmp6b1mtu54/files/4/1/2/dataset_412b6a75-3c70-4e00-a139-accf25cb2ea2.dat" label="merlon.fa">
+            <genome path="/tmp/tmpiyg6gzbz/files/a/2/3/dataset_a23e3ae0-cf0b-427c-a8fb-c9a7a93ba5e3.dat" label="merlon.fa">
             <metadata>
-                <dataset id="3c4f82138bb2487a" hid="3"
+                <dataset id="4fedddb5f0b604f3" hid="3"
                     size="155.3 KB"
                     edam_format="format_1929"
                     file_ext="fasta"
                     dname = "merlon.fa" />
-                <history id="fa950b0ef319061e"
+                <history id="2f8b42de958784ae"
                     user_email="planemo@galaxyproject.org"
                     user_id="1"
-                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-6"/>
+                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-6"/>
                 <metadata
                         dbkey="?"
                         data_lines="2608"
                         sequences="1"
                     />
                 <tool
-                    tool_id="upload1"
-                    tool_version="1.1.7"
+                    tool_id="__DATA_FETCH__"
+                    tool_version="0.1.0"
                     />
             </metadata>
             </genome>
@@ -147,23 +147,23 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmp6b1mtu54/files/a/2/8/dataset_a28858a6-9df4-43ad-802c-77a9917bff5d.dat" ext="paf" label="merlon_on_merlin.paf">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/2/1/d/dataset_21dce734-5668-47ae-bdee-4b924bcea3c3.dat" ext="paf" label="merlon_on_merlin.paf">
                         <metadata>
-                        <dataset id="6f8f1ec4766df755" hid="4"
+                        <dataset id="4b6ef6ca3df7dc79" hid="4"
                             size="127 bytes"
                             edam_format="format_2330"
                             file_ext="paf" />
-                        <history id="fa950b0ef319061e"
+                        <history id="2f8b42de958784ae"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-6"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-6"/>
                         <metadata
                                 dbkey="?"
                                 data_lines="1"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
@@ -171,7 +171,7 @@
 
             <options>
                 <style>
-                        <display>LinearBasicDisplay</display>
+                        <display>LinearSyntenyDisplay</display>
 
 
 
@@ -187,23 +187,23 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmp6b1mtu54/files/a/2/8/dataset_a28858a6-9df4-43ad-802c-77a9917bff5d.dat" ext="paf" label="merlon_on_merlin.paf">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/2/1/d/dataset_21dce734-5668-47ae-bdee-4b924bcea3c3.dat" ext="paf" label="merlon_on_merlin.paf">
                         <metadata>
-                        <dataset id="6f8f1ec4766df755" hid="4"
+                        <dataset id="4b6ef6ca3df7dc79" hid="4"
                             size="127 bytes"
                             edam_format="format_2330"
                             file_ext="paf" />
-                        <history id="fa950b0ef319061e"
+                        <history id="2f8b42de958784ae"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-6"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-6"/>
                         <metadata
                                 dbkey="?"
                                 data_lines="1"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>
@@ -226,25 +226,25 @@
     </tracks>
     </assembly>
     <assembly>
-            <genome path="/tmp/tmp6b1mtu54/files/4/8/c/dataset_48c793d9-04d2-4ff5-aab3-ebc8672a4f74.dat" label="merlin.fa">
+            <genome path="/tmp/tmpiyg6gzbz/files/3/2/c/dataset_32c64057-113d-4f64-b4cc-f4123cbefec6.dat" label="merlin.fa">
             <metadata>
-                <dataset id="ae1bab3408d09c53" hid="5"
+                <dataset id="eb1e31c16c0fe718" hid="5"
                     size="171.6 KB"
                     edam_format="format_1929"
                     file_ext="fasta"
                     dname = "merlin.fa" />
-                <history id="fa950b0ef319061e"
+                <history id="2f8b42de958784ae"
                     user_email="planemo@galaxyproject.org"
                     user_id="1"
-                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-6"/>
+                    display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-6"/>
                 <metadata
                         dbkey="?"
                         data_lines="2881"
                         sequences="1"
                     />
                 <tool
-                    tool_id="upload1"
-                    tool_version="1.1.7"
+                    tool_id="__DATA_FETCH__"
+                    tool_version="0.1.0"
                     />
             </metadata>
             </genome>
@@ -254,22 +254,22 @@
 
 
                     <files>
-                    <trackFile path="/tmp/tmp6b1mtu54/files/b/2/b/dataset_b2b742ee-81c2-43c9-9d8b-577115245111.dat" ext="bigwig" label="data.bw">
+                    <trackFile path="/tmp/tmpiyg6gzbz/files/8/6/a/dataset_86a329ba-72ee-4f3c-9e13-2bf70c513a57.dat" ext="bigwig" label="data.bw">
                         <metadata>
-                        <dataset id="9956239aff51cae9" hid="6"
+                        <dataset id="956e46a817a35762" hid="6"
                             size="81.6 KB"
                             edam_format="format_3006"
                             file_ext="bigwig" />
-                        <history id="fa950b0ef319061e"
+                        <history id="2f8b42de958784ae"
                             user_email="planemo@galaxyproject.org"
                             user_id="1"
-                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy0-6"/>
+                            display_name="Tool Test History for jbrowse2/3.6.5+galaxy1-6"/>
                         <metadata
                                 dbkey="?"
                             />
                         <tool
-                            tool_id="upload1"
-                            tool_version="1.1.7"
+                            tool_id="__DATA_FETCH__"
+                            tool_version="0.1.0"
                             />
                         </metadata>
                     </trackFile>