Repository 'circos'
hg clone https://toolshed.g2.bx.psu.edu/repos/iuc/circos

Changeset 2:014a21767ac4 (2019-09-17)
Previous changeset 1:ae9994cf526f (2018-10-04) Next changeset 3:fd59d783248a (2019-12-02)
Commit message:
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/circos commit 076837a2e9c2b6ececcea4aa286ea7a412387a96"
modified:
README.rst
fasta-to-karyotype.py
macros.xml
macros_conffiles.xml
added:
alignments-to-links.py
alignments-to-links.xml
binlinks.xml
bundlelinks.xml
circos.xml
colours/cg.conf
gc_skew.py
gc_skew.xml
genome-lengths-to-karyotype.py
macros_tests.xml
process-cytogenetic-bands.py
resample.xml
scatter-from-wiggle.py
scatter-from-wiggle.xml
tableviewer.xml
test-data/0/out.png
test-data/0/out.svg
test-data/1/out.png
test-data/1/out.svg
test-data/1/sine.tab
test-data/1/tiles.bed
test-data/alignments/1.maf
test-data/alignments/1.tab
test-data/binlinks/1.out
test-data/binlinks/1.tab
test-data/bundlelinks/1.out
test-data/bundlelinks/1.tab
test-data/gc_skew/1.bw
test-data/gc_skew/1.fa
test-data/resample/1.out
test-data/resample/1.tab
test-data/scatter/1.bw
test-data/scatter/1.out
test-data/tableviewer/1.png
test-data/tableviewer/1.tab
test-data/text/1.bed
test-data/text/1.out
test-data/text/2.gff3
test-data/text/2.out
test-data/tiles/1.bed
test-data/tiles/1.out
test-data/tiles/2.gff3
test-data/tiles/2.out
text-from-bed.py
text-from-gff3.py
text-from-interval.xml
tiles-from-bed.py
tiles-from-gff3.py
tiles-from-interval.xml
removed:
circgraph.xml
test-data/1/0-0.wig
test-data/1/1.gff3
test-data/1/2.wig
test-data/1/output.png
test-data/1/output.svg
unified-histogram.py
unified-tiles.py
wiggle.py
b
diff -r ae9994cf526f -r 014a21767ac4 README.rst
--- a/README.rst Thu Oct 04 06:05:31 2018 -0400
+++ b/README.rst Tue Sep 17 16:54:57 2019 -0400
[
@@ -23,10 +23,7 @@
 
          -  [x] Complex colouring rules
 
-   -  [ ] Heatmaps
-
-      -  [ ] Bugs here.
-
+   -  [x] Heatmaps
    -  [x] Tiles
    -  [x] Scatter Plots
    -  [x] Line Plots
@@ -34,10 +31,6 @@
 -  [x] Links
 -  [x] Axes
 -  [x] Backgrounds
--  [ ] Highlights
-
-   -  [ ] Wedge
-
+-  [x] Highlights
 -  [x] Test cases
--  [ ] Grids?
--  [ ] Fine grained Z-depth control
+-  [x] Fine grained Z-depth control
b
diff -r ae9994cf526f -r 014a21767ac4 alignments-to-links.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/alignments-to-links.py Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,30 @@
+import itertools
+import sys
+
+from Bio import AlignIO
+
+
+format_mapping = {
+    "xmfa": "mauve",
+    "maf": "maf",
+    "nex": "nexus",
+    # 'phylip': 'phylip-relaxed',
+    "stockholm": "stockholm",
+}
+
+for aln in AlignIO.parse(sys.argv[1], format_mapping.get(sys.argv[2], "maf")):
+
+    for (a, b) in itertools.combinations(aln, 2):
+        a_s = a.annotations["start"]
+        b_s = b.annotations["start"]
+
+        if "size" in a.annotations:
+            a_l = a.annotations["size"]
+            b_l = b.annotations["size"]
+            a_e = a_l + a_s
+            b_e = b_l + b_s
+        else:
+            a_e = a.annotations["end"]
+            b_e = b.annotations["end"]
+
+        sys.stdout.write("%s\t%s\t%s\t%s\t%s\t%s\n" % (a.id, a_s, a_e, b.id, b_s, b_e))
b
diff -r ae9994cf526f -r 014a21767ac4 alignments-to-links.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/alignments-to-links.xml Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<tool id="circos_aln_to_links" name="Circos: Alignments to links" version="@WRAPPER_VERSION@">
+    <description>reformats alignment files to prepare for Circos</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements">
+    </expand>
+    <command detect_errors="exit_code"><![CDATA[
+python '$__tool_directory__/alignments-to-links.py' '$input' '$input.ext' > '$output'
+    ]]></command>
+    <inputs>
+        <param name="input" type="data" format="maf,xmfa,stockholm" label="Alignment file (maf, xmfa, stockholm)" />
+    </inputs>
+    <outputs>
+        <data name="output" format="tabular" />
+    </outputs>
+    <tests>
+        <test>
+            <param name="input" value="alignments/1.maf" ftype="maf" />
+            <output name="output" file="alignments/1.tab" ftype="tabular" />
+        </test>
+    </tests>
+    <help><![CDATA[
+Converts several standard alignment formats into a format appropriate for Circos plots.
+    ]]></help>
+    <expand macro="citations" />
+</tool>
b
diff -r ae9994cf526f -r 014a21767ac4 binlinks.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/binlinks.xml Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<tool id="circos_binlinks" name="Circos: Link Density Track" version="@WRAPPER_VERSION@">
+    <description>reduce links to a density plot</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements" />
+    <command detect_errors="exit_code"><![CDATA[
+binlinks
+    -bin_size $bin_size
+    #if str($link_end) != '':
+        -link_end '$link_end'
+    #end if
+
+    #if str($output_style) != '':
+        -output_style $output_style
+    #end if
+
+    $num
+    $log
+    $normalize
+
+    < '$linksfile' | sed 's/ /\t/g' > '$outfile'
+
+    ]]></command>
+    <inputs>
+        <param name="bin_size" type="integer" label="Bin Size" min="0" value="1000000"/>
+        <param name="linksfile" type="data" format="tabular" label="Links file" help="This should be a 6 column (or 7 with additional k=v pairs) tabular file of link data."/>
+
+        <param name="link_end" type="select" label="Link End Behaviour" help="Controls which end(s) of the link are processed for each bin. The start of the link is considered to be the end defined by the first link line, and the link end is defined by the second link line. For example, if -link_end=start then a bin will contain the sum (or number if -num is used) of links that start at that bin. If -link_end==end then links that end at that bin will be used. Finally, -link_end=both will make the bin value reflect the total outgoing and incoming links. (from the Circos Manual)">
+            <option value="" selected="True">Default</option>
+            <option value="0">Start</option>
+            <option value="1">End</option>
+            <option value="2">Both</option>
+        </param>
+
+        <param name="output_style" type="select" label="Output Style" help="Controls which end(s) of the link are processed for each bin. The start of the link is considered to be the end defined by the first link line, and the link end is defined by the second link line. For example, if -link_end=start then a bin will contain the sum (or number if -num is used) of links that start at that bin. If -link_end==end then links that end at that bin will be used. Finally, -link_end=both will make the bin value reflect the total outgoing and incoming links. (from the Circos Manual)">
+            <option value="" selected="True">Default</option>
+            <option value="0">Link density</option>
+            <option value="1">Link density for largest contribution</option>
+            <option value="2">Link density for each target chromosome</option>
+            <option value="3">Link density for each target chromosome (stacked histogram)</option>
+        </param>
+
+        <param name="num" type="boolean" truevalue="-num" falsevalue="" label="Use number of links rather than sum of ends" help="If the end of a link spans bins, each bin will contain a +1 contribution from the link. In other words, the sum of bin values may be larger than the number of links. (from the Circos Manual)"/>
+        <param name="log" type="boolean" truevalue="-log" falsevalue="" label="Calculate log10 of the values."/>
+        <param name="normalize" type="boolean" truevalue="-normalize" falsevalue="" label="Normalize" help="This only works when you select 'stacked histograms' in the 'Output Style' section."/>
+        <!--<param name="color_by_chr" type="boolean" truevalue="yes" falsevalue="no" label="" "/>-->
+    </inputs>
+    <outputs>
+        <data name="outfile" format="tabular" />
+    </outputs>
+    <tests>
+        <test>
+            <param name="linksfile" value="binlinks/1.tab" ftype="tabular" />
+            <param name="bin_size" value="1000000" />
+            <output name="outfile" file="binlinks/1.out" ftype="tabular" />
+        </test>
+    </tests>
+    <help><![CDATA[
+From the `official documentation <http://circos.ca/documentation/tutorials/utilities/density_tracks/>`__
+
+    The purpose of this script is to generate data for histogram and highlight tracks that stores the number, size and consensus position of links. All chromosomes in the input link file are divided into bins (controlled by -bin_size), and link statistics are calculated on a bin-by-bin basis.
+    ]]></help>
+    <expand macro="citations" />
+</tool>
b
diff -r ae9994cf526f -r 014a21767ac4 bundlelinks.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bundlelinks.xml Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<tool id="circos_bundlelinks" name="Circos: Bundle Links" version="@WRAPPER_VERSION@">
+    <description>reduce numbers of links in datasets before plotting</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements" />
+    <command detect_errors="exit_code"><![CDATA[
+bundlelinks
+    #if $max_gap:
+        -max_gap $max_gap
+    #end if
+
+    -min_bundle_membership $min_bundle_membership
+
+    #if $min_bundle_extent
+    -min_bundle_extent $min_bundle_extent
+    #end if
+
+    #if $min_bundle_size
+    -min_bundle_size $min_bundle_size
+    #end if
+
+    #if $min_bundle_identity
+    -min_bundle_identity $min_bundle_identity
+    #end if
+
+    < '$linksfile' | sed 's/ /\t/g' > '$outfile'
+
+    ]]></command>
+    <inputs>
+        <param name="linksfile" type="data" format="tabular" label="Links file" help="This should be a 6 column (or 7 with additional k=v pairs) tabular file of link data."/>
+        <param name="max_gap" type="integer" min="1" optional="true" label="Max Gap" help="Adjacent links are merged into bundles if their start/end coordinates are sufficiently close. Given two links L1 and L2, they are merged into a bundle if: chr( L1 ) == chr( L2 ) AND distance( start(L1), start(L2) ) &lt;= max_gap AND distance( end(L1), end(L2) ) &lt;= max_gap. If a link does not have any acceptable adjacent neighbouring links, it forms a single-link bundle."/>
+        <param name="min_bundle_membership" type="integer" value="0" min="0" label="Minimum Bundle Membership" help="The minimum number of links required in a bundle for the bundle to be accepted"/>
+
+        <param name="min_bundle_extent"   type="integer" optional="true" min="0" label="Minimum Bundle Extent"   help="Extent cutoff for a bundle. The extent of a bundle is the end-start value for its start and end. The minimum is taken, so the cutoff test is `min( end1-start1, end2-start2 ) &gt;? cutoff`"/>
+        <param name="min_bundle_size"     type="integer" optional="true" min="0" label="Minimum Bundle Size"     help="Size cutoff for a bundle. The size of a bundle is the total size of merged link coordinates for the bundle. There is a separate size for the bundle start (composed of merged link ends that form the bundle start) and bundle end. The minimum is taken, so the cutoff test is `min( size(merged link for start), size(merged link for end) ) &gt;? cutoff`"/>
+        <param name="min_bundle_identity" type="float" optional="true"  min="0" max="1" label="Minimum Bundle Identity" help="This parameter filters bundles based on the bundle identity, which is defined as `identity = bundle_size / bundle_extent`. Identity of both ends of the bundle are evaluated independently and the minimum is taken `min( identity(start), identity(end) ) &gt;? cutoff`"/>
+    </inputs>
+    <outputs>
+        <data name="outfile" format="tabular" />
+    </outputs>
+    <tests>
+        <test>
+            <param name="linksfile" value="bundlelinks/1.tab" ftype="tabular" />
+            <param name="max_gap" value="1000000" />
+            <param name="min_bundle_membership" value="0" />
+            <output name="outfile" file="bundlelinks/1.out" ftype="tabular" />
+        </test>
+    </tests>
+    <help><![CDATA[
+From the `official documentation <http://circos.ca/documentation/tutorials/utilities/bundling_links/lesson>`__
+
+    The purpose of the bundlelinks tool is to reduce the number of links in a dataset by merging (or bundling) adjacent links together. By merging links, you can distill a visually complex representation into one which effectively summarizes the link structure of your data. A bundle is encoded as a new link with a single start and end position, which are formed by the boundaries of the merged links. Bundles are best shown using the ribbon feature.
+
+
+
+
+    ]]></help>
+    <expand macro="citations" />
+</tool>
b
diff -r ae9994cf526f -r 014a21767ac4 circgraph.xml
--- a/circgraph.xml Thu Oct 04 06:05:31 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
b'@@ -1,409 +0,0 @@\n-<?xml version="1.0"?>\n-<tool id="circgraph" name="Circos Builder" version="@WRAPPER_VERSION@">\n-    <description>creates circos plots from standard bioinformatics datatypes.</description>\n-    <macros>\n-        <import>macros.xml</import>\n-        <import>macros_conffiles.xml</import>\n-    </macros>\n-    <expand macro="requirements"/>\n-    <version_command>circos --version</version_command>\n-    <command detect_errors="aggressive"><![CDATA[\n-## Directory structure\n-mkdir -p circos/conf/ circos/data/ &&\n-\n-#if $reference_genome.reference_genome_source == \'history\':\n-    ln -s \'$reference_genome.genome_fasta\' genomeref.fa &&\n-#end if\n-\n-#if $reference_genome.reference_genome_source != \'karyotype\':\n-    ## Process the karyotype.txt file\n-    python \'$__tool_directory__/fasta-to-karyotype.py\'\n-\n-        #if str($reference_genome.reference_genome_source) == \'cached\':\n-            \'${reference_genome.fasta_indexes.fields.path}\'\n-        #else if str($reference_genome.reference_genome_source) == \'history\':\n-            genomeref.fa\n-        #end if\n-\n-        #if $reference_genome.bands:\n-            \'${reference_genome.bands}\'\n-        #end if\n-    > circos/conf/karyotype.txt &&\n-#else\n-    cp $reference_genome.input_karyotype circos/conf/karyotype.txt &&\n-#end if\n-\n-mv \'$circos_conf\' circos/conf/circos.conf &&\n-mv \'$ticks_conf\' circos/conf/ticks.conf &&\n-mv \'$ideogram_conf\' circos/conf/ideogram.conf &&\n-mv \'$data_conf\'  circos/conf/2d.conf &&\n-mv \'$links_conf\'  circos/conf/links.conf &&\n-mv \'$test_case_conf\' circos/conf/galaxy_test_case.xml &&\n-\n-## 2D Data Plots\n-#for $hi, $data in enumerate($sec_tdd.data):\n-    #if str($data.plot_format.plot_format_select) == \'tile\':\n-        python \'$__tool_directory__/unified-tiles.py\'\n-            \'${data.plot_format.data_source}\' \'${data.plot_format.data_source.ext}\'\n-            > circos/data/data-${hi}.txt &&\n-    #else:\n-        python $__tool_directory__/unified-histogram.py\n-            $data.plot_format.plot_format_select\n-            #if str($data.plot_format.plot_format_select) in (\'histogram\', \'heatmap\'):\n-                #for $fi, $file in enumerate($data.plot_format.data_source):\n-                    \'${file}\' \'${file.ext}\'\n-                #end for\n-            #else:\n-                \'${data.plot_format.data_source}\' \'${data.plot_format.data_source.ext}\'\n-            #end if\n-        > circos/data/data-${hi}.txt &&\n-    #end if\n-#end for\n-\n-## Link Tracks\n-#for $hi, $data in enumerate($sec_links.data):\n-    cp \'${data.data_source}\' circos/data/links-${hi}.txt &&\n-#end for\n-\n-tar cvfz circos.tar.gz circos &&\n-\n-circos -conf circos/conf/circos.conf\n-    ]]></command>\n-    <configfiles>\n-        <expand macro="configfile_circos_conf" />\n-        <expand macro="configfile_ticks_conf" />\n-        <expand macro="configfile_ideogram_conf" />\n-        <expand macro="configfile_data_conf" />\n-        <expand macro="configfile_links_conf" />\n-        <expand macro="test_case" />\n-    </configfiles>\n-    <inputs>\n-        <conditional name="reference_genome">\n-            <param name="reference_genome_source" type="select" label="Reference Genome">\n-                <option value="history" selected="True">From History</option>\n-                <option value="cached">Locally Cached</option>\n-                <option value="karyotype">Karyotype</option>\n-            </param>\n-            <when value="cached">\n-                <param name="fasta_indexes" type="select" label="Source FASTA Sequence">\n-                    <options from_data_table="all_fasta"/>\n-                </param>\n-                <!-- TODO: multiple band files? -->\n-                <param name="bands" type="data" format="bed6,bed12" optional="true" label="Cytogenetic Bands"\n-                    help="If defined, will display cytogenetic bands as part of the karyotype configuration"/>\n-            </when>\n-            <when value="history">\n-                <param name="genome_fasta" type="data" format="fas'..b't_specific|layers" value="15" />\n-            <param name="sec_tdd|data_1|plot_format|format_specific|thickness" value="15.0" />\n-            <param name="sec_tdd|data_1|plot_format|format_specific|padding" value="8.0" />\n-            <param name="sec_tdd|data_1|plot_format|format_specific|overflow|overflow_behavior" value="grow" />\n-            <param name="sec_tdd|data_1|plot_format|format_specific|overflow|layer_overflow_color" value="#ffc000" />\n-\n-            <param name="sec_tdd|data_2|r0" value="0.6" />\n-            <param name="sec_tdd|data_2|r1" value="0.69" />\n-            <param name="sec_tdd|data_2|orientation" value="out" />\n-            <param name="sec_tdd|data_2|plot_format|plot_format_select" value="scatter" />\n-            <param name="sec_tdd|data_2|plot_format|data_source" value="1/2.wig" />\n-            <param name="sec_tdd|data_2|plot_format|format_specific|glyph" value="triangle" />\n-            <param name="sec_tdd|data_2|plot_format|format_specific|glyph_size" value="8" />\n-            <param name="sec_tdd|data_2|plot_format|format_specific|data_min" value="0.0" />\n-            <param name="sec_tdd|data_2|plot_format|format_specific|data_max" value="1.0" />\n-            <param name="sec_tdd|data_2|plot_format|format_specific|color" value="#555555" />\n-            <param name="sec_tdd|data_2|plot_format|format_specific|stroke_color" value="#000000" />\n-            <param name="sec_tdd|data_2|plot_format|format_specific|stroke_thickness" value="0" />\n-            <!-- Links -->\n-            <param name="sec_links|data_0|radius" value="0.59" />\n-            <param name="sec_links|data_0|data_source" value="1/links.txt" />\n-            <param name="sec_links|data_0|linktype|ribbon" value="yes" />\n-            <param name="sec_links|data_0|color" value="#9966ff" />\n-            <param name="sec_links|data_0|bezier_radius" value="0.3" />\n-            <param name="sec_links|data_0|sec_link_rule|rules_0|conditions_0|application|application_select" value="pos1" />\n-            <param name="sec_links|data_0|sec_link_rule|rules_0|conditions_0|application|comparison|compare" value="lt" />\n-            <param name="sec_links|data_0|sec_link_rule|rules_0|conditions_0|application|comparison|compval" value="25000" />\n-            <param name="sec_links|data_0|sec_link_rule|rules_0|actions_0|action|action_select" value="color" />\n-            <param name="sec_links|data_0|sec_link_rule|rules_0|actions_0|action|action_value" value="#ffcc00" />\n-\n-            <param name="sec_links|data_1|radius" value="0.45" />\n-            <param name="sec_links|data_1|data_source" value="1/links2.txt" />\n-            <param name="sec_links|data_1|linktype|ribbon" value="yes" />\n-            <param name="sec_links|data_1|color" value="#42aa42" />\n-            <param name="sec_links|data_1|bezier_radius" value="0" />\n-\n-            <!-- Outputs -->\n-            <output name="output_png" file="1/output.png" compare="sim_size" delta="15000" ftype="png" />\n-            <output name="output_svg" file="1/output.svg" compare="sim_size" ftype="svg" />\n-        </test>\n-    </tests>\n-    <help><![CDATA[\n-Circos\n-======\n-\n-Circos is a software package for visualizing data and information. It visualizes data in a circular layout \xe2\x80\x94 this makes Circos ideal for exploring relationships between objects or positions. There are other reasons why a circular layout is advantageous, not the least being the fact that it is attractive.\n-\n-Circos is ideal for creating publication-quality infographics and illustrations with a high data-to-ink ratio, richly layered data and pleasant symmetries. You have fine control each element in the figure to tailor its focus points and detail to your audience.\n-\n-.. image:: $PATH_TO_IMAGES/circos-sample-panel.png\n-   :alt: several example circos plots\n-\n-For more information see the Circos documentation_.\n-\n-.. _documentation: http://circos.ca/documentation/\n-\n-\n-    ]]></help>\n-    <expand macro="citations" />\n-</tool>\n'
b
diff -r ae9994cf526f -r 014a21767ac4 circos.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/circos.xml Tue Sep 17 16:54:57 2019 -0400
[
b'@@ -0,0 +1,530 @@\n+<?xml version="1.0"?>\n+<tool id="circos" name="Circos" version="@WRAPPER_VERSION@">\n+    <description>visualizes data in a circular layout</description>\n+    <macros>\n+        <import>macros.xml</import>\n+        <import>macros_conffiles.xml</import>\n+        <import>macros_tests.xml</import>\n+    </macros>\n+    <expand macro="requirements"/>\n+    <version_command>circos --version</version_command>\n+    <command detect_errors="exit_code"><![CDATA[\n+## Directory structure\n+mkdir -p circos/conf/ circos/data/ &&\n+\n+#if $reference_genome.ref.ref_source == \'history\':\n+    ln -s \'$reference_genome.ref.genome_fasta\' genomeref.fa &&\n+#end if\n+\n+#if $reference_genome.ref.ref_source in (\'lengths\', \'cached\'):\n+    python \'$__tool_directory__/genome-lengths-to-karyotype.py\'\n+        #if $reference_genome.ref.ref_source == \'lengths\':\n+            ${reference_genome.ref.input_lengths}\'\n+        #else\n+            #if $ideogram.limit_chromosomes:\n+                ## If they are limiting the chromosomes, ensure they have access to the full list\n+                \'${reference_genome.ref.fasta_indexes.fields.len_path}\'\n+            #else\n+                ## Otherwise only the reduced list, as the full list will often overwhelm circos\n+                <(head -n 50 \'${reference_genome.ref.fasta_indexes.fields.len_path}\')\n+            #end if\n+        #end if\n+        \'${ideogram.color}\'\n+        > circos/conf/karyotype.txt &&\n+#else if $reference_genome.ref.ref_source == \'karyotype\':\n+    cp $reference_genome.ref.input_karyotype circos/conf/karyotype.txt &&\n+#else if str($reference_genome.ref.ref_source) == \'history\':\n+    ## Process the karyotype.txt file\n+    python\n+        \'$__tool_directory__/fasta-to-karyotype.py\'\n+        genomeref.fa\n+        \'${ideogram.color}\'\n+\n+    > circos/conf/karyotype.txt &&\n+#end if\n+\n+touch circos/conf/karyotype-colors.conf &&\n+#if $ideogram.bands.bands:\n+    #if $ideogram.bands.convert_bands:\n+        python \'$__tool_directory__/process-cytogenetic-bands.py\'\n+            \'${ideogram.bands.bands}\'\n+            >> circos/conf/karyotype.txt\n+            2> circos/conf/karyotype-colors.conf &&\n+    #else\n+        cat \'${ideogram.bands.bands}\'\n+            >> circos/conf/karyotype.txt &&\n+    #end if\n+#end if\n+\n+#if $plot_options.colour_profile:\n+    #if str($plot_options.colour_profile) == \'cg\':\n+        cat \'$__tool_directory__/colours/cg.conf\' >> circos/conf/karyotype-colors.conf &&\n+    #end if\n+#end if\n+\n+mv \'$circos_conf\' circos/conf/circos.conf &&\n+mv \'$ticks_conf\' circos/conf/ticks.conf &&\n+mv \'$ideogram_conf\' circos/conf/ideogram.conf &&\n+mv \'$data_conf\'  circos/conf/data.conf &&\n+mv \'$highlight_conf\'  circos/conf/highlight.conf &&\n+mv \'$links_conf\'  circos/conf/links.conf &&\n+mv \'$test_case_conf\' circos/conf/galaxy_test_case.json &&\n+\n+## Highlights\n+#for $hi, $data in enumerate($sec_highlight.data):\n+cp \'${data.data_source}\' circos/data/highlight-${hi}.txt &&\n+#end for\n+\n+## 2D Data Plots\n+#for $hi, $data in enumerate($sec_tdd.data):\n+    cp \'${data.plot_format.data_source}\' circos/data/data-${hi}.txt &&\n+#end for\n+\n+## Link Tracks\n+#for $hi, $data in enumerate($sec_links.data):\n+    cp \'${data.data_source}\' circos/data/links-${hi}.txt &&\n+#end for\n+\n+#if $outputs.tar == "yes"\n+    tar cvfz circos.tar.gz circos >/dev/null\n+#else\n+    echo \'\'\n+#end if\n+\n+#if $outputs.svg == "yes" or $outputs.png == "yes":\n+    && circos -conf circos/conf/circos.conf -noparanoid\n+#end if\n+    ]]></command>\n+    <configfiles>\n+        <expand macro="configfile_circos_conf" />\n+        <expand macro="configfile_ticks_conf" />\n+        <expand macro="configfile_ideogram_conf" />\n+        <expand macro="configfile_data_conf" />\n+        <expand macro="configfile_links_conf" />\n+        <expand macro="configfile_highlight_conf" />\n+        <expand macro="test_case" />\n+    </configfiles>\n+    <inputs>\n+        <section name="reference_genome" title="Karyotype" expanded="true">\n+            <conditional name="r'..b'alue="%.2f">Float (two decimals)</option>\n+                            <sanitizer>\n+                                <valid>\n+                                    <add value="%" />\n+                                </valid>\n+                            </sanitizer>\n+                        </param>\n+                        <param name="format_ext" type="boolean" truevalue="yes" falsevalue="no" checked="true" label="Show unit in tick labels" help="If your chromosome units is set to kilobases and you have enabled this option and enabled tick labels, they will include the size value, e.g. \'500 kb\' "/>\n+                    </when>\n+                    <when value="no">\n+                    </when>\n+                </conditional>\n+            </repeat>\n+\n+        </section>\n+\n+        <section name="sec_highlight" title="Highlights">\n+            <repeat name="data" title="Highlight" help="Highlights can help highlight a specific region by placing a large coloured block under some interesting or important features that the audience\'s eyes should be drawn towards">\n+                <param name="r1" type="float" value="0.89" min="0" max="1" label="Outside Radius" help="Value must be between 1 (outer edge of plot) and 0 (center of the plot)"/>\n+                <param name="r0" type="float" value="0.8" min="0" max="1" label="Inside Radius" help="Value must be between 1 (outer edge of plot) and 0 (center of the plot)"/>\n+                <param name="data_source" type="data" format="tabular,interval" label="Highlight Data Source" help="Columns must be (chrom, start, end)"/>\n+                <expand macro="circos_color_alpha" label="Fill Color" name="fill_color" value="#000000"/>\n+                <expand macro="rules" />\n+            </repeat>\n+        </section>\n+\n+        <section name="outputs" title="Outputs">\n+            <param name="png" type="boolean" truevalue="yes" falsevalue="no" label="PNG" checked="true"/>\n+            <param name="svg" type="boolean" truevalue="yes" falsevalue="no" label="SVG" checked="false" help="Oftentimes this will not be viewable directly in Galaxy, you may need to download this file first."/>\n+            <param name="tar" type="boolean" truevalue="yes" falsevalue="no" label="Configuration Archive" checked="false" help="This contains all the files needed to make this plot. With the data contained within here, and a copy of Circos installed locally, you can rebuild the plot and make any manual changes that are not possible in Galaxy (e.g. colours not in the colour picker)"/>\n+        </section>\n+    </inputs>\n+    <outputs>\n+        <data name="output_png" format="png" from_work_dir="circos.png" label="Circos Plot">\n+            <filter>outputs[\'png\']</filter>\n+        </data>\n+        <data name="output_svg" format="svg" from_work_dir="circos.svg" label="Circos Plot">\n+            <filter>outputs[\'svg\']</filter>\n+        </data>\n+        <data name="output_tar" format="tar.gz" from_work_dir="circos.tar.gz" label="Circos Conf Files">\n+            <filter>outputs[\'tar\']</filter>\n+        </data>\n+    </outputs>\n+    <expand macro="test_cases" />\n+    <help><![CDATA[\n+Circos\n+======\n+\n+Circos is a software package for visualizing data and information. It visualizes data in a circular layout \xe2\x80\x94 this makes Circos ideal for exploring relationships between objects or positions. There are other reasons why a circular layout is advantageous, not the least being the fact that it is attractive.\n+\n+Circos is ideal for creating publication-quality infographics and illustrations with a high data-to-ink ratio, richly layered data and pleasant symmetries. You have fine control each element in the figure to tailor its focus points and detail to your audience.\n+\n+.. image:: $PATH_TO_IMAGES/circos-sample-panel.png\n+   :alt: several example circos plots\n+\n+For more information see the Circos documentation_.\n+\n+.. _documentation: http://circos.ca/documentation/\n+\n+\n+    ]]></help>\n+    <expand macro="citations" />\n+</tool>\n'
b
diff -r ae9994cf526f -r 014a21767ac4 colours/cg.conf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/colours/cg.conf Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,166 @@
+# RGB color definition. Colors are refered to within configuration files
+# by their name. In order to use a color, you must define it here. 
+# 
+# e.g. if you really must use 'bisque', then add
+#
+# bisque = 255,228,196
+#
+# Many useful colors are already defined. In general, given a HUE, these
+# colors are defined
+#
+# vlHUE (very light HUE, e.g. vlred)
+# lHUE  (light HUE, e.g. red)
+# HUE   (e.g. red)
+# dHUE  (dark HUE, e.g. dred)
+#
+# In addition to hues, two other color groups are defined. 
+#
+# - cytogenetic band colors (e.g. gposNNN, acen, stalk, etc.) which
+#   correspond to colors on ideogram bands
+# - UCSC chromosome color palette (e.g. chrNN, chrUn, chrNA)
+
+optblue   = 55,133,221
+optgreen  = 55,221,125
+optyellow = 221,215,55
+optorange = 221,164,55
+optred    = 221,55,55
+optviolet = 145,55,221
+optpurple = 219,55,221
+
+white     = 255,255,255
+vvvvlgrey = 250,250,250
+vvvlgrey  = 240,240,240
+vvlgrey   = 230,230,230
+vlgrey    = 220,220,220
+lgrey     = 210,210,210
+grey      = 200,200,200
+dgrey     = 170,170,170
+vdgrey    = 140,140,140
+vvdgrey   = 100,100,100
+vvvdgrey  = 70,70,70
+vvvvdgrey = 40,40,40
+black     = 0,0,0
+
+vlred   = 255,193,200
+lred    = 255,122,137
+red     = 247,42,66
+dred    = 205,51,69
+
+vlgreen = 204,255,218
+lgreen  = 128,255,164
+green   = 51,204,94
+dgreen  = 38,153,71
+
+vlblue  = 128,176,255
+lblue   = 64,137,255
+blue    = 54,116,217
+dblue   = 38,82,153
+
+vlpurple= 242,128,255
+lpurple = 236,64,255
+purple  = 189,51,204
+dpurple = 118,32,128
+
+vlyellow = 255,253,202
+lyellow  = 255,252,150
+yellow   = 255,255,0
+dyellow  = 191,186,48
+
+lime     = 186,255,0
+
+vlorange = 255,228,193
+lorange  = 255,187,110
+orange   = 255,136,0
+dorange  = 221,143,55
+
+pink     = 255,105,180
+
+# CGI colors
+# bluegray
+cgi1        = 58,111,143
+# orange
+cgi2     = 240,142,79
+# mediumgray
+cgi3        = 92,112,124
+# green
+cgi4        = 71,170,66
+# mustard
+cgi5        = 193,202,92
+# dullred
+cgi6        = 217,83,30
+# lightgray
+cgi7        = 174,185,191
+# darkturquoiseblue
+cgi8        = 0,138,176
+# purpleblue
+cgi9        = 87,96,172
+
+# functional colors
+frameshift  = 217,83,30
+disrupt     = 217,83,30
+nonsense    = 217,83,30
+misstart    = 217,83,30
+nonstop     = 87,96,172
+missense    = 87,96,172
+insert      = 87,96,172
+delete      = 87,96,172
+
+# karyotype colors
+
+gpos100 = 0,0,0
+gpos    = 0,0,0
+gpos75  = 130,130,130
+gpos66  = 160,160,160
+gpos50  = 200,200,200
+gpos33  = 210,210,210
+gpos25  = 200,200,200
+gvar    = 220,220,220
+gneg    = 255,255,255
+acen    = 217,47,39
+stalk   = 100,127,164
+
+# others
+
+select = 135,177,255
+
+# new york times cmyk-safe
+
+# roygbiv - normal
+nyt_blue   = 104,152,178
+nyt_green  = 137,129,96
+nyt_yellow = 241,221,117
+nyt_orange = 230,146,57
+nyt_red    = 217,47,39
+
+# chromosome color map (UCSC) 
+
+chr1 = 153,102,0
+chr2 = 102,102,0
+chr3 = 153,153,30
+chr4 = 204,0,0
+chr5 = 255,0,0
+chr6 = 255,0,204
+chr7 = 255,204,204
+chr8 = 255,153,0
+chr9 = 255,204,0
+chr10 = 255,255,0
+chr11 = 204,255,0
+chr12 = 0,255,0
+chr13 = 53,128,0
+chr14 = 0,0,204
+chr15 = 102,153,255
+chr16 = 153,204,255
+chr17 = 0,255,255
+chr18 = 204,255,255
+chr19 = 153,0,204
+chr20 = 204,51,255
+chr21 = 204,153,255
+chr22 = 102,102,102
+chr23 = 153,153,153
+chrX  = 153,153,153
+chr24 = 204,204,204
+chrY = 204,204,204
+chrM = 204,204,153
+chr0 = 204,204,153
+chrUn = 121,204,61
+chrNA = 255,255,255
b
diff -r ae9994cf526f -r 014a21767ac4 fasta-to-karyotype.py
--- a/fasta-to-karyotype.py Thu Oct 04 06:05:31 2018 -0400
+++ b/fasta-to-karyotype.py Tue Sep 17 16:54:57 2019 -0400
[
@@ -3,46 +3,14 @@
 
 from Bio import SeqIO
 
-
-for idx, seq in enumerate(SeqIO.parse(sys.argv[1], 'fasta')):
-    sys.stdout.write("chr - {seq_id} {idx} 0 {length} set3-12-qual-{color}\n".format(
-        seq_id=seq.id, idx=idx, length=len(seq), color=((idx + 1) % 12)
-    ))
-
-if len(sys.argv) > 2:
-    # band hs1 p36.32 p36.32 2200000 5100000 gpos25
-    # band hs1 p36.31 p36.31 5100000 6900000 gneg
-    # band hs1 p36.23 p36.23 6900000 8800000 gpos25
-    COLS = ('chrom', 'chromStart', 'chromEnd', 'name', 'score', 'strand',
-            'thickStart', 'thickEnd', 'itemRgb')
-    with open(sys.argv[2], 'r') as handle:
-        for line in handle:
-            lineData = dict(zip(COLS, line.split()))
-            sys.stdout.write("band {chrom} {name} {name} {chromStart} {chromEnd} {color}\n".format(
-                # Can access name because requiring >bed3
-                name=lineData['name'],
-                chrom=lineData['chrom'],
-                chromStart=lineData['chromStart'],
-                chromEnd=lineData['chromEnd'],
-                # ????
-                color=lineData.get('itemRgb', 'gpos50'),
-            ))
-    # band
-    # ID
-    # parentChr
-    # parentChr
-    # START
-    # END COLOR
-
-# chrom - The name of the chromosome (e.g. chr3, chrY, chr2_random) or scaffold (e.g. scaffold10671).
-# chromStart - The starting position of the feature in the chromosome or scaffold. The first base in a chromosome is numbered 0.
-# chromEnd - The ending position of the feature in the chromosome or scaffold. The chromEnd base is not included in the display of the feature. For example, the first 100 bases of a chromosome are defined as chromStart=0, chromEnd=100, and span the bases numbered 0-99.
-# name - Defines the name of the BED line. This label is displayed to the left of the BED line in the Genome Browser window when the track is open to full display mode or directly to the left of the item in pack mode.
-# score - A score between 0 and 1000. If the track line useScore attribute is set to 1 for this annotation data set, the score value will determine the level of gray in which this feature is displayed (higher numbers = darker gray). This table shows the Genome Browser's translation of BED score values into shades of gray:
-# strand - Defines the strand - either '+' or '-'.
-# thickStart - The starting position at which the feature is drawn thickly (for example, the start codon in gene displays). When there is no thick part, thickStart and thickEnd are usually set to the chromStart position.
-# thickEnd - The ending position at which the feature is drawn thickly (for example, the stop codon in gene displays).
-# itemRgb - An RGB value of the form R,G,B (e.g. 255,0,0). If the track line itemRgb attribute is set to "On", this RBG value will determine the display color of the data contained in this BED line. NOTE: It is recommended that a simple color scheme (eight colors or less) be used with this attribute to avoid overwhelming the color resources of the Genome Browser and your Internet browser.
-# blockCount - The number of blocks (exons) in the BED line.
-# blockSizes - A comma-separated list of the block sizes. The number of items in this list should correspond to blockCount.
-# blockStarts - A comma-separated list of block starts. All of the blockStart positions should be calculated relative to chromStart. The number of items in this list should correspond to blockCount.
+# Process fasta data, extracting only headers
+for idx, seq in enumerate(SeqIO.parse(sys.argv[1], "fasta")):
+    sys.stdout.write(
+        "chr - {seq_id} {seq_id} 0 {length} {theme}-{color}\n".format(
+            seq_id=seq.id,
+            idx=idx,
+            length=len(seq),
+            color=((idx + 1) % 12),
+            theme=sys.argv[2],
+        )
+    )
b
diff -r ae9994cf526f -r 014a21767ac4 gc_skew.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gc_skew.py Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,22 @@
+import sys
+
+import pyBigWig
+from Bio import SeqIO
+from Bio import SeqUtils
+
+
+span = int(sys.argv[2])
+bw = pyBigWig.open(sys.argv[3], "w")
+
+# Prepare header separately because ugh
+data = []
+for rec in SeqIO.parse(sys.argv[1], "fasta"):
+    data.append((rec.id, len(rec)))
+bw.addHeader(data)
+
+for rec in SeqIO.parse(sys.argv[1], "fasta"):
+    gc = SeqUtils.GC_skew(rec.seq, span)
+
+    bw.addEntries(rec.id, 0, values=list(gc), span=span, step=span)
+
+bw.close()
b
diff -r ae9994cf526f -r 014a21767ac4 gc_skew.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gc_skew.xml Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<tool id="circos_gc_skew" name="GC Skew" version="@WRAPPER_VERSION@">
+    <description>calculates skew over genomic sequences</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements">
+    </expand>
+    <command detect_errors="exit_code"><![CDATA[
+ln -s -f
+#if $reference_genome.reference_genome_source == "history"
+    '$reference_genome.history_item'
+#else
+    '$reference_genome.builtin.fields.path'
+#end if
+reference.fa &&
+
+python '$__tool_directory__/gc_skew.py' reference.fa '$window' '$output'
+    ]]></command>
+    <inputs>
+      <conditional name="reference_genome">
+        <param label="Source for reference genome" name="reference_genome_source" type="select">
+          <option selected="True" value="history">Use a genome from history</option>
+          <option value="builtin">Use a built-in genome"</option>
+        </param>
+        <when value="history">
+          <param format="fasta" type="data" name="history_item" label="Select a reference genome"/>
+        </when>
+        <when value="builtin">
+          <param label="Select a reference genome" name="builtin" type="select">
+            <options from_data_table="all_fasta">
+              <filter column="2" type="sort_by" />
+              <validator message="No genomes are available for the selected input dataset" type="no_options" />
+            </options>
+          </param>
+        </when>
+      </conditional>
+      <param argument="window" type="integer" min="1" value="100000" label="Window size" />
+    </inputs>
+    <outputs>
+      <data name="output" format="bigwig" />
+    </outputs>
+    <tests>
+        <test>
+            <conditional name="reference_genome">
+                <param name="reference_genome_source" value="history" />
+                <param name="history_item" value="gc_skew/1.fa" ftype="fasta"/>
+            </conditional>
+            <param name="window" value="2" />
+            <output name="output" file="gc_skew/1.bw" ftype="bigwig" />
+        </test>
+    </tests>
+    <help><![CDATA[
+Calculate GC skew (G-C)/(G+C) for multiple windows along the sequence.
+
+Returns a list of ratios (floats), controlled by the length of the sequence and the size of the window.
+
+Returns 0 for windows without any G/C by handling zero division errors.
+
+Does NOT look at any ambiguous nucleotides.
+    ]]></help>
+    <expand macro="citations" />
+</tool>
b
diff -r ae9994cf526f -r 014a21767ac4 genome-lengths-to-karyotype.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/genome-lengths-to-karyotype.py Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+import csv
+import sys
+
+
+idx = 0
+with open(sys.argv[1], "r") as csvfile:
+    spamreader = csv.reader(csvfile, delimiter="\t", quotechar='"')
+    for row in spamreader:
+        if len(row) < 2:
+            continue
+
+        seq_id = row[0]
+        length = row[1]
+
+        sys.stdout.write(
+            "chr - {seq_id} {seq_id} 0 {length} {theme}-{color}\n".format(
+                seq_id=seq_id,
+                idx=idx,
+                length=length,
+                color=((idx + 1) % 12),
+                theme=sys.argv[2],
+            )
+        )
+        idx += 1
b
diff -r ae9994cf526f -r 014a21767ac4 macros.xml
--- a/macros.xml Thu Oct 04 06:05:31 2018 -0400
+++ b/macros.xml Tue Sep 17 16:54:57 2019 -0400
[
b'@@ -1,21 +1,69 @@\n <?xml version="1.0"?>\n <macros>\n-  <token name="@WRAPPER_VERSION@">0.9-RC2</token>\n+  <token name="@CIRCOS_VERSION@">0.69.8</token>\n+\n+  <token name="@WRAPPER_VERSION@">@CIRCOS_VERSION@+galaxy1</token>\n+\n   <xml name="requirements">\n       <requirements>\n-        <requirement type="package" version="0.69.5">circos</requirement>\n+        <requirement type="package" version="@CIRCOS_VERSION@">circos</requirement>\n         <requirement type="package" version="2.7">python</requirement>\n         <requirement type="package" version="0.6.4">bcbiogff</requirement>\n         <requirement type="package" version="1.70">biopython</requirement>\n+        <requirement type="package" version="0.3.13">pybigwig</requirement>\n+        <requirement type="package" version="0.23">circos-tools</requirement>\n+        <yield />\n       </requirements>\n   </xml>\n \n+  <token name="@UTILS@">\n+#def circosColor($value)\n+    #set $value = str($value)\n+    #set $r = int($value[1:3], 16)\n+    #set $g = int($value[3:5], 16)\n+    #set $b = int($value[5:], 16)\n+$r, $g, $b\n+#end def\n+#def circosColorAlpha($value, $alpha)\n+    #set $value = str($value)\n+    #set $r = int($value[1:3], 16)\n+    #set $g = int($value[3:5], 16)\n+    #set $b = int($value[5:], 16)\n+    #set $a = float($alpha)\n+$r, $g, $b, $a\n+#end def\n+#def chromosomesToOrder($value)\n+    #set $q = \',\'.join([x if \':\' not in x else x[x:x.index(\':\')] for x in str($value).split(\';\')])\n+    $q\n+#end def\n+  </token>\n+\n   <xml name="citations">\n     <citations>\n         <citation type="doi">10.1101/gr.092759.109</citation>\n     </citations>\n   </xml>\n \n+  <xml name="stroke_opts">\n+    <expand macro="circos_color_alpha" name="stroke_color" value="#000000" label="Stroke Color"/>\n+    <param name="stroke_thickness" type="integer" value="1" label="Stroke Thickness"/>\n+  </xml>\n+\n+  <xml name="minmax">\n+    <conditional name="minmax">\n+        <param name="minmax_select" type="select" label="Minimum / maximum options">\n+            <option value="yes">Supply min/max values</option>\n+            <option value="no" selected="true">Plot all values</option>\n+        </param>\n+        <when value="yes">\n+            <param name="min_value" type="float" value="1.0" label="Minimum value" />\n+            <param name="max_value" type="float" value="5.0" label="Maximum value" />\n+        </when>\n+        <when value="no">\n+        </when>\n+    </conditional>\n+  </xml>\n+\n   <xml name="circos_color"\n       token_label="Color"\n       token_name="color"\n@@ -31,26 +79,20 @@\n     </param>\n   </xml>\n \n-  <xml name="auto_color"\n+  <xml name="circos_color_alpha"\n+      token_label="Color"\n       token_name="color"\n-      token_label="Color">\n-    <conditional name="@NAME@" label="@LABEL@">\n-      <param name="@NAME@_select" type="select" label="@LABEL@">\n-        <option value="automatic" selected="true">Automatic Selection</option>\n-        <option value="manual">Manual Specification</option>\n-      </param>\n-      <when value="automatic">\n-      </when>\n-      <when value="manual">\n-        <param name="@NAME@" label="@LABEL@" type="color" value="#000000">\n-          <sanitizer>\n-            <valid initial="string.letters,string.digits">\n-              <add value="#" />\n-            </valid>\n-          </sanitizer>\n-        </param>\n-      </when>\n-    </conditional>\n+      token_value="#000000"\n+      token_help=""\n+      >\n+    <param label="@LABEL@" type="color" name="@NAME@" value="@VALUE@" help="@HELP@">\n+      <sanitizer>\n+        <valid initial="string.letters,string.digits">\n+          <add value="#" />\n+        </valid>\n+      </sanitizer>\n+    </param>\n+    <param name="@NAME@_alpha" type="float" label="Transparency" value="1" min="0" max="1" help="1 = fully opaque, 0 = fully transparent"/>\n   </xml>\n \n   <xml name="brewer_scale"\n@@ -89,7 +131,7 @@\n \n       <option value="accent-8-qual">Qualitative: Accent</option>\n       <option value="dark2-8-qual">Qualitative: Dark2</option>\n-      <option value="pair'..b'              <sanitizer>\n+                              <valid initial="string.letters">\n+                                <add value="&gt;" />\n+                                <add value="&lt;" />\n+                                <add value="!" />\n+                                <add value="=" />\n+                                <add value="%" />\n+                              </valid>\n+                            </sanitizer>\n                         </param>\n \n                         <param name="varvalue" type="text" label="Qualifier value to compare against"/>\n@@ -165,7 +241,7 @@\n                         <option value="show">Change Visibility</option>\n                         <option value="fill_color">Change Fill Color for all points</option>\n                         <option value="fill_color_value">Change Fill Color based on Value</option>\n-                        <option value="color">Change Stroke Color</option>\n+                        <option value="stroke_color">Change Stroke Color</option>\n                         <option value="color_value">Change Stroke Color based on Value</option>\n                     </param>\n                     <when value="show">\n@@ -174,7 +250,7 @@\n                     <when value="fill_color">\n                         <expand macro="circos_color" name="action_value" label="Fill Color"/>\n                     </when>\n-                    <when value="color">\n+                    <when value="stroke_color">\n                         <expand macro="circos_color" name="action_value" label="Stroke Color"/>\n                     </when>\n                     <when value="fill_color_value">\n@@ -203,7 +279,8 @@\n             <repeat name="conditions" title="Conditions to Apply" help="Multiple conditions will be combined using AND">\n                 <conditional name="application">\n                     <param name="application_select" type="select" label="Condition">\n-                        <option value="always">True / Always Applied</option>\n+                        <option value="always" selected="true">True / Always Applied</option>\n+                        <option value="random">Randomly</option>\n                         <option value="interchr">Interchromosomal</option>\n                         <option value="intrachr">Intrachromosomal</option>\n                         <option value="chr">Chromosome</option>\n@@ -256,6 +333,9 @@\n                     <when value="interchr"/>\n                     <when value="intrachr"/>\n                     <when value="always"/>\n+                    <when value="random">\n+                        <param name="value" type="float" label="Percentage" value="0.5" min="0" max="1" help="Randomly apply with this probability"/>\n+                    </when>\n                 </conditional>\n             </repeat>\n             <repeat name="actions" title="Actions to Apply">\n@@ -276,7 +356,7 @@\n                                 <option value="dynamic">Dynamic: Change is sometimes applied</option>\n                             </param>\n                             <when value="static">\n-                                <expand macro="circos_color" label="Link Color" name="action_value"/>\n+                                <expand macro="circos_color_alpha" label="Link Color" name="action_value"/>\n                             </when>\n                             <when value="dynamic">\n                                 <expand macro="brewer_scale" label="Fill Color" name="action_value"/>\n@@ -339,7 +419,7 @@\n         </param>\n         <!-- TODO select chromosome from metadata/file column instead of text fields -->\n         <when value="on">\n-            <param name="compval" value="chr1" type="text" label="Chromosome"/>\n+            <param name="compval" value="chr1" type="text" label="Chromosome" help="Comma separated values are supported in this field"/>\n         </when>\n         <when value="from">\n             <param name="compval" value="chr1" type="text" label="Chromosome"/>\n'
b
diff -r ae9994cf526f -r 014a21767ac4 macros_conffiles.xml
--- a/macros_conffiles.xml Thu Oct 04 06:05:31 2018 -0400
+++ b/macros_conffiles.xml Tue Sep 17 16:54:57 2019 -0400
[
b'@@ -2,55 +2,123 @@\n <macros>\n   <xml name="configfile_circos_conf">\n     <configfile name="circos_conf"><![CDATA[\n+@UTILS@\n+\n <<include colors_fonts_patterns.conf>>\n <<include housekeeping.conf>>\n+\n+<colors>\n+<<include karyotype-colors.conf>>\n+\n+#for $hi, $data in enumerate($sec_tdd.data):\n+    #set plot_type = str($data.plot_format.plot_format_select)\n+    #if str($plot_type) == \'tile\':\n+        color-tile-$hi = $circosColor($data.plot_format.format_specific.fill_color)\n+    #end if\n+#end for\n+</colors>\n+\n karyotype = karyotype.txt\n+#if str($ideogram.units) == \'bases\':\n+chromosomes_units = 1\n+#else if str($ideogram.units) == \'kb\':\n+chromosomes_units = 1000\n+#else if str($ideogram.units) == \'mb\':\n+chromosomes_units = 1000000\n+#else:\n+chromosomes_units = 1000000000\n+#end if\n+\n+#if $ideogram.limit_chromosomes:\n+chromosomes = $ideogram.limit_chromosomes\n+chromosomes_order = $chromosomesToOrder($ideogram.limit_chromosomes)\n+chromosomes_display_default = no\n+#end if\n+\n+#if $ideogram.chromosomes_reverse:\n+chromosomes_reverse = $ideogram.chromosomes_reverse\n+#end if\n \n <image>\n-  <<include etc/image.conf>>\n+  # Transcluded from etc/image.generic.conf\n+  dir                = .\n+  file               = circos.png\n+#if $outputs.png:\n+  png                = yes\n+#end if\n+#if $outputs.svg:\n+  svg                = yes\n+#end if\n+  # by default angle = 0 is at 3 o\'clock position\n+  angle_offset       = -90\n+  auto_alpha_colors  = yes\n+  auto_alpha_steps   = 5\n+#if str($plot_options.background.background_select) == \'transparent\':\n+  background         = transparent\n+#else\n+  background         = $circosColor($plot_options.background.background_color)\n+#end if\n+  radius*            = ${plot_options.radius}p\n </image>\n \n <<include ticks.conf>>\n <<include ideogram.conf>>\n-<plots>\n-    <<include 2d.conf>>\n-</plots>\n-<links>\n-    <<include links.conf>>\n-</links>\n+<<include data.conf>>\n+<<include highlight.conf>>\n+<<include links.conf>>\n \n     ]]></configfile>\n   </xml>\n   <xml name="configfile_ticks_conf">\n     <configfile name="ticks_conf"><![CDATA[\n+@UTILS@\n+\n show_ticks          = ${ticks.show_ticks}\n show_tick_labels    = yes\n \n-#def circosColor($value)\n-    #set $value = str($value)\n-    #set $r = int($value[1:3], 16)\n-    #set $g = int($value[3:5], 16)\n-    #set $b = int($value[5:], 16)\n-    $r, $g, $b\n-#end def\n-\n \n <ticks>\n     radius           = ${ticks.radius}r\n-    color            = $circosColor($ticks.color)\n+    color            = black\n+    skip_first_label = ${ticks.skip_first_label}\n+    skip_last_label  = ${ticks.skip_last_label}\n     thickness        = 2p\n-    multiplier       = ${ticks.multiplier}\n+\n+    # Multiplier controls how \'u\' behaves when used in numbers.\n+    #if str($ideogram.units) == \'bases\':\n+    multiplier       = 1\n+    #else if str($ideogram.units) == \'kb\':\n+    multiplier       = 1e-3\n+    #else if str($ideogram.units) == \'mb\':\n+    multiplier       = 1e-6\n+    #else if str($ideogram.units) == \'gb\':\n+    multiplier       = 1e-9\n+    #end if\n \n     #for $tick_group in $ticks.tick_group:\n     <tick>\n         spacing        = ${tick_group.spacing}\n         size           = ${tick_group.size}p\n-        show_label     = ${tick_group.show_tick_labels}\n-        label_size     = ${tick_group.label_size}p\n-        label_offset   = ${tick_group.label_offset}p\n-        format         = ${tick_group.format} kb\n-        ## TODO: figure out automated tick labels\n-        ##if ${ticks.multiplier} * ${tick_group.spacing}\n+        show_label     = ${tick_group.ticks.show_tick_labels}\n+        color          = $circosColor($tick_group.color)\n+\n+      #if str($tick_group.ticks.show_tick_labels) == \'yes\':\n+        label_size     = ${tick_group.ticks.label_size}p\n+        label_offset   = ${tick_group.ticks.label_offset}p\n+      #if $tick_group.ticks.format_ext:\n+       #if str($ideogram.units) == \'bases\':\n+        format         = ${tick_group.ticks.format}\n+       #else if str($ideogram.units) == \'kb\':\n+        format         = $'..b' in enumerate($data_group.plot_format.data_source)])\n-        <param name="sec_tdd|data_${idx}|plot_format|data_source" value="${my_files}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|fill_color" value="${data_group.plot_format.format_specific.fill_color}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|scale_log_base" value="${data_group.plot_format.format_specific.scale_log_base}" />\n-    #else if str($data_group.plot_format.plot_format_select) == \'line\':\n-        <param name="sec_tdd|data_${idx}|plot_format|data_source" value="my-test-case/${idx}.${data.plot_format.data_source.ext}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|color" value="${data_group.plot_format.format_specific.color}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|stroke" value="${data_group.plot_format.format_specific.stroke}" />\n-    #else if str($data_group.plot_format.plot_format_select) == \'scatter\':\n-        <param name="sec_tdd|data_${idx}|plot_format|data_source" value="my-test-case/${idx}.${data.plot_format.data_source.ext}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|glyph" value="${data_group.plot_format.format_specific.glyph}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|glyph_size" value="${data_group.plot_format.format_specific.glyph_size}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|data_min" value="${data_group.plot_format.format_specific.data_min}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|data_max" value="${data_group.plot_format.format_specific.data_max}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|color" value="${data_group.plot_format.format_specific.color}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|stroke_color" value="${data_group.plot_format.format_specific.stroke_color}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|stroke_thickness" value="${data_group.plot_format.format_specific.stroke_thickness}" />\n-    #else if str($data_group.plot_format.plot_format_select) == \'tile\':\n-        <param name="sec_tdd|data_${idx}|plot_format|data_source" value="my-test-case/${idx}.${data.plot_format.data_source.ext}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|fill_color" value="${data_group.plot_format.format_specific.fill_color}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|color" value="${data_group.plot_format.format_specific.color}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|stroke_thickness" value="${data_group.plot_format.format_specific.stroke_thickness}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|layers" value="${data_group.plot_format.format_specific.layers}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|thickness" value="${data_group.plot_format.format_specific.thickness}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|padding" value="${data_group.plot_format.format_specific.padding}" />\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|overflow|overflow_behavior" value="${data_group.plot_format.format_specific.overflow.overflow_behavior}" />\n-        #if str($data_group.plot_format.format_specific.overflow.overflow_behavior) != \'hide\':\n-        <param name="sec_tdd|data_${idx}|plot_format|format_specific|overflow|layer_overflow_color" value="${data_group.plot_format.format_specific.overflow.layer_overflow_color}" />\n-        #end if\n-    #end if\n-    ## Next line intentionally blank\n-\n-    #end for\n-\n-    <!-- Outputs -->\n-    <output name="output_png" file="my-test-case/output.png" />\n-    <output name="output_svg" file="my-test-case/output.svg" />\n-</test>\n-    ]]></configfile>\n+    <inputs name="test_case_conf" />\n   </xml>\n </macros>\n'
b
diff -r ae9994cf526f -r 014a21767ac4 macros_tests.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/macros_tests.xml Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,91 @@
+<?xml version="1.0"?>
+<macros>
+    <xml name="test_cases">
+        <tests>
+            <test>
+                <section name="reference_genome">
+                    <conditional name="ref">
+                        <param name="ref_source" value="history" />
+                        <param name="genome_fasta" value="1/input.fa" />
+                    </conditional>
+                </section>
+
+                <section name="outputs">
+                    <param name="png" value="yes" />
+                    <param name="svg" value="yes" />
+                </section>
+
+                <output name="output_png" file="0/out.png" compare="sim_size" delta="15000" ftype="png"/>
+                <output name="output_svg" file="0/out.svg" compare="sim_size" delta="15000" ftype="svg"/>
+            </test>
+            <test>
+                <section name="reference_genome">
+                    <conditional name="ref">
+                        <param name="ref_source" value="history" />
+                        <param name="genome_fasta" value="1/input.fa" />
+                    </conditional>
+                </section>
+
+                <section name="outputs">
+                    <param name="svg" value="yes" />
+                </section>
+
+                <section name="ticks">
+                    <param name="show_ticks" value="yes" />
+
+                    <repeat name="tick_group">
+                        <param name="spacing" value="5000" />
+                    </repeat>
+                    <repeat name="tick_group">
+                        <param name="spacing" value="20000" />
+                        <conditional name="ticks">
+                            <param name="show_tick_labels" value="yes" />
+                            <param name="format" value="%.1f" />
+                        </conditional>
+                    </repeat>
+                </section>
+
+                <section name="sec_tdd">
+                    <repeat name="data">
+                        <param name="r0" value="0.8" />
+                        <param name="r1" value="0.9" />
+                        <conditional name="plot_format">
+                            <param name="plot_format_select" value="histogram" />
+                            <param name="data_source" value="1/sine.tab" />
+                        </conditional>
+                    </repeat>
+                    <repeat name="data">
+                        <param name="r0" value="0.7" />
+                        <param name="r1" value="0.8" />
+                        <conditional name="plot_format">
+                            <param name="plot_format_select" value="scatter" />
+                            <param name="data_source" value="1/sine.tab" />
+                        </conditional>
+                    </repeat>
+                    <repeat name="data">
+                        <param name="r0" value="0.6" />
+                        <param name="r1" value="0.7" />
+                        <conditional name="plot_format">
+                            <param name="plot_format_select" value="tile" />
+                            <param name="data_source" value="1/tiles.bed" />
+                        </conditional>
+                    </repeat>
+                </section>
+
+                <section name="sec_links">
+                    <repeat name="data">
+                        <param name="radius" value="0.59" />
+                        <param name="data_source" value="1/links.txt"/>
+                        <conditional name="linktype">
+                            <param name="ribbon" value="yes" />
+                        </conditional>
+                    </repeat>
+                </section>
+
+                <!-- Outputs -->
+                <output name="output_png" file="1/out.png" compare="sim_size" delta="15000" ftype="png"/>
+                <output name="output_svg" file="1/out.svg" compare="sim_size" delta="15000" ftype="svg"/>
+            </test>
+        </tests>
+    </xml>
+</macros>
b
diff -r ae9994cf526f -r 014a21767ac4 process-cytogenetic-bands.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/process-cytogenetic-bands.py Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,80 @@
+#!/usr/bin/env python
+import sys
+
+# band hs1 p36.32 p36.32 2200000 5100000 gpos25
+# band hs1 p36.31 p36.31 5100000 6900000 gneg
+# band hs1 p36.23 p36.23 6900000 8800000 gpos25
+COLS = (
+    "chrom",
+    "chromStart",
+    "chromEnd",
+    "name",
+    "score",
+    "strand",
+    "thickStart",
+    "thickEnd",
+    "itemRgb",
+)
+
+colormap = {}
+# Process optional cytogenetic bands
+#     band
+#     ID
+#     parentChr
+#     parentChr
+#     START
+#     END COLOR
+with open(sys.argv[1], "r") as handle:
+    for line in handle:
+        if line.startswith("#"):
+            continue
+
+        lineData = dict(zip(COLS, line.split()))
+        color = lineData.get("itemRgb", "gpos50")
+
+        if color not in colormap:
+            # Color MUST be an RGB triplet
+            if color.count(",") != 2:
+                continue
+            tmp = color.replace(",", "")
+            # Try interpreting it, without `,`s as an integer. If it fails this
+            # test there are non-numerical values and they might try and send
+            # us an `eval()` or a colour name. We do not currently support
+            # colour names just in case.
+            try:
+                int(tmp)
+            except ValueError:
+                # Does not look like an int
+                continue
+
+            colormap[color] = "gx-karyotype-%s" % len(colormap.keys())
+
+            sys.stderr.write(
+                "{colorName} = {color}\n".format(colorName=colormap[color], color=color)
+            )
+
+        sys.stdout.write(
+            "band {chrom} {name} {name} {chromStart} {chromEnd} {color}\n".format(
+                # Can access name because requiring >bed3
+                name=lineData["name"],
+                chrom=lineData["chrom"],
+                chromStart=lineData["chromStart"],
+                chromEnd=lineData["chromEnd"],
+                # 255,0,0 is a valid colour specifier
+                color=colormap[color],
+            )
+        )
+
+
+# chrom - The name of the chromosome (e.g. chr3, chrY, chr2_random) or scaffold (e.g. scaffold10671).
+# chromStart - The starting position of the feature in the chromosome or scaffold. The first base in a chromosome is numbered 0.
+# chromEnd - The ending position of the feature in the chromosome or scaffold. The chromEnd base is not included in the display of the feature. For example, the first 100 bases of a chromosome are defined as chromStart=0, chromEnd=100, and span the bases numbered 0-99.
+# name - Defines the name of the BED line. This label is displayed to the left of the BED line in the Genome Browser window when the track is open to full display mode or directly to the left of the item in pack mode.
+# score - A score between 0 and 1000. If the track line useScore attribute is set to 1 for this annotation data set, the score value will determine the level of gray in which this feature is displayed (higher numbers = darker gray). This table shows the Genome Browser's translation of BED score values into shades of gray:
+# strand - Defines the strand - either '+' or '-'.
+# thickStart - The starting position at which the feature is drawn thickly (for example, the start codon in gene displays). When there is no thick part, thickStart and thickEnd are usually set to the chromStart position.
+# thickEnd - The ending position at which the feature is drawn thickly (for example, the stop codon in gene displays).
+# itemRgb - An RGB value of the form R,G,B (e.g. 255,0,0). If the track line itemRgb attribute is set to "On", this RBG value will determine the display color of the data contained in this BED line. NOTE: It is recommended that a simple color scheme (eight colors or less) be used with this attribute to avoid overwhelming the color resources of the Genome Browser and your Internet browser.
+# blockCount - The number of blocks (exons) in the BED line.
+# blockSizes - A comma-separated list of the block sizes. The number of items in this list should correspond to blockCount.
+# blockStarts - A comma-separated list of block starts. All of the blockStart positions should be calculated relative to chromStart. The number of items in this list should correspond to blockCount.
b
diff -r ae9994cf526f -r 014a21767ac4 resample.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/resample.xml Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<tool id="circos_resample" name="Circos: Resample 1/2D data" version="@WRAPPER_VERSION@">
+    <description>reduce numbers of points in a dataset before plotting</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements" />
+    <command detect_errors="exit_code"><![CDATA[
+resample
+    -bin '$bins'
+    $method
+    < '$input' | sed 's/ /\t/g' > '$output'
+    ]]></command>
+    <inputs>
+        <param name="input" type="data" format="tabular" label="1D/2D Data track"/>
+        <param name="bins" type="integer" value="1000000" min="1" label="Bin size" />
+
+        <param name="method" type="select" label="Summarization method">
+            <option value="-avg">[2D] Average</option>
+            <option value="-min">[2D] Minimum value in bin</option>
+            <option value="-max">[2D] Maximum value in bin</option>
+            <option value="-sum">[2D] Sum of values in bin</option>
+            <option value="-count">[1D] Count bins</option>
+        </param>
+    </inputs>
+    <outputs>
+        <data name="output" format="tabular" />
+    </outputs>
+    <tests>
+        <test>
+            <param name="input" value="resample/1.tab" ftype="tabular" />
+            <param name="bins" value="10000000" />
+            <output name="output" file="resample/1.out" ftype="tabular" />
+        </test>
+    </tests>
+    <help><![CDATA[
+From the script's documentation:
+
+    The data resolution in a figure is limited by the output print, or screen,
+    resolution and our own visual acuity.
+
+    To read more about how these limits affect figure design, see
+    `this page <http://mkweb.bcgsc.ca/images/resolution/visual-acuity-sequence-visualization.pdf>`__
+
+    This script is designed to convert very high-resolution data tracks to
+    low-resolution equivalents which are easier to interpret and faster to
+    draw.
+
+    ]]></help>
+    <expand macro="citations" />
+</tool>
b
diff -r ae9994cf526f -r 014a21767ac4 scatter-from-wiggle.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/scatter-from-wiggle.py Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+import logging
+import sys
+
+import pyBigWig
+
+logging.basicConfig(level=logging.INFO)
+log = logging.getLogger()
+
+if __name__ == "__main__":
+    bw = pyBigWig.open(sys.argv[1])
+    for chrom in sorted(bw.chroms().keys()):
+        for (start, end, value) in bw.intervals(chrom):
+            sys.stdout.write("%s\t%s\t%s\t%s\n" % (chrom, start, end, value))
b
diff -r ae9994cf526f -r 014a21767ac4 scatter-from-wiggle.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/scatter-from-wiggle.xml Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<tool id="circos_wiggle_to_scatter" name="Circos: bigWig to Scatter" version="@WRAPPER_VERSION@">
+    <description>reformats bigWig files to prepare for Circos 2d scatter/line/histogram plots</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements">
+    </expand>
+    <command detect_errors="exit_code"><![CDATA[
+python '$__tool_directory__/scatter-from-wiggle.py' '$input' > '$output'
+    ]]></command>
+    <inputs>
+        <param name="input" type="data" format="bigwig" label="Data file" />
+    </inputs>
+    <outputs>
+        <data name="output" format="tabular" />
+    </outputs>
+    <tests>
+        <test>
+            <param name="input" value="scatter/1.bw" ftype="bigwig" />
+            <output name="output" file="scatter/1.out" ftype="tabular" />
+        </test>
+    </tests>
+    <help><![CDATA[
+Converts standard bigWig files into a format appropriate for Circos scatter/line/histogram plot tracks.
+
+If you need to process bedgraph, please convert those to bigwig first.
+    ]]></help>
+    <expand macro="citations" />
+</tool>
b
diff -r ae9994cf526f -r 014a21767ac4 tableviewer.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tableviewer.xml Tue Sep 17 16:54:57 2019 -0400
[
b'@@ -0,0 +1,641 @@\n+<?xml version="1.0"?>\n+<tool id="circos_tableviewer" name="Circos: Table viewer" version="@WRAPPER_VERSION@">\n+    <description>easily creates circos plots from tabular data</description>\n+    <macros>\n+        <import>macros.xml</import>\n+    </macros>\n+    <expand macro="requirements" />\n+    <command detect_errors="exit_code"><![CDATA[\n+mkdir -p circos/data/ &&\n+mkdir -p circos/etc/ &&\n+cp \'$circos_conf\' circos/etc/circos.conf &&\n+\n+parse-table -file \'$table\' -conf \'$parse_table_conf\' > tmp &&\n+\n+make-conf -dir circos/data < tmp &&\n+\n+tar cvfz circos.tar.gz circos &&\n+cd circos &&\n+circos -conf etc/circos.conf &&\n+mv circos.png ../ &&\n+mv circos.svg ../\n+    ]]></command>\n+    <configfiles>\n+        <configfile name="parse_table_conf"><![CDATA[\n+################################################################\n+#\n+# This is a fairly complicated configuration file. Take your time in\n+# experimenting and adjust one thing at a time :)\n+#\n+################################################################\n+\n+max_col_num = 200\n+max_row_num = 200\n+\n+# skip this many rows before reading in header and data\n+skip_rows        = 0\n+\n+# is there a header line that identifies the columns?\n+header           = yes\n+\n+# is there a row that specifies the order of columns in the image?\n+# - if so, this must be the first line of the header\n+# - if the line exists (col_order_row=yes), employ the use_col_order_row to toggle whether it is used\n+col_order_row     = no\n+use_col_order_row = no\n+\n+# is there a row that specifies the size of columns in the image?\n+# - if so, this must be the next line of the header\n+# - if the line exists (col_size_row=yes), employ the use_col_size_row to toggle whether it is used\n+col_size_row     = no\n+use_col_size_row = no\n+\n+# is there a row that specifies the color of each column segment in the image?\n+# - if so, this must be the next line of the header\n+# - if the line exists (col_color_row=yes), employ the use_col_color_row to toggle whether it is used\n+col_color_row     = no\n+use_col_color_row = no\n+\n+# is there a column that specifies the order of rows in the image?\n+# - if so, this must be the first column\n+# - if the line exists (row_order_col=yes), employ the use_row_order_col to toggle whether it is used\n+row_order_col     = no\n+use_row_order_col = no\n+\n+row_size_col     = no\n+use_row_size_col = no\n+\n+# is there a column that specifies the color of each row segment in the image?\n+# - if so, this must be the second column\n+# - if the line exists (row_color_col=yes), employ the use_row_color_col to toggle whether it is used\n+row_color_col     = no\n+use_row_color_col = no\n+\n+# if you do not have a column/row that explicitly defines order\n+# of segments in the image, you can set this here. Use one (or more) of\n+# these values to specify how segments should be ordered.\n+# - row_major (row segments first, then column)\n+# - col_major (col segments first, then row)\n+# - ascii     (asciibetic order)\n+# - row_size  (total of rows for the segment - useful if the segment has both row and column contributions)\n+# - col_size  (total of colums for the segment - useful if the segment has both row and column contributions)\n+# - row_to_col_ratio (ratio of total of rows to columns for the segment)\n+# - col_to_row_ratio (ratio of total of rows to columns for the segment)\n+# - size_asc  (size, in ascending order)\n+# - size_desc (size, in descending order)\n+\n+#segment_order = row_to_col_ratio,size_desc # col_major,size_desc\n+segment_order  = size_desc\n+#segment_order = ascii\n+#segment_order = file:etc/order-by-table-remapped.txt\n+#segment_order  = size_desc,row_to_col_ratio\n+segment_color_order = ascii\n+\n+# values for segments can be normalized if the use_segment_normalization is set to yes\n+use_segment_normalization = no\n+\n+# the normalization function can be one of the following, and is applied to\n+# all values that correspond to the segment\'s label\n+# total - sum of cell values for the segment label (row a'..b'p\n+    r0   = 1r+320p\n+    </highlight>\n+\n+    <highlight>\n+    show = yes\n+    file = data/all.txt\n+    r1   = 1r+280p\n+    r0   = 1r+260p\n+    </highlight>\n+\n+    <highlight>\n+    file = data/cap.col.txt\n+    r1   = 0.999r-10p\n+    r0   = 0.999r-30p\n+    </highlight>\n+\n+    <highlight>\n+    file = data/cap.row.txt\n+    r1   = 0.999r\n+    r0   = 0.999r-20p\n+    </highlight>\n+</highlights>\n+\n+<links>\n+    <link>\n+        ribbon           = yes\n+        flat             = yes\n+        file             = data/cells.txt\n+        bezier_radius    = 0.0r\n+        radius           = 0.999r-30p\n+        thickness        = 1\n+        color            = grey\n+        stroke_color     = dgrey\n+        stroke_thickness = 1\n+\n+        <rules>\n+            <rule>\n+                condition  = 1\n+                radius1    = 0.999r-20p\n+            </rule>\n+        </rules>\n+    </link>\n+</links>\n+\n+<<include etc/colors_fonts_patterns.conf>>\n+<<include etc/housekeeping.conf>>\n+        ]]></configfile>\n+    </configfiles>\n+    <inputs>\n+        <param name="table" type="data" format="tabular" label="Input table"/>\n+        <section name="outputs" title="Outputs" expanded="true">\n+            <param name="png" type="boolean" truevalue="yes" falsevalue="no" label="Output PNG" checked="true"/>\n+            <param name="svg" type="boolean" truevalue="yes" falsevalue="no" label="Output SVG" checked="false"/>\n+            <param name="tar" type="boolean" truevalue="yes" falsevalue="no" label="Output Configuration Archive" checked="false"/>\n+        </section>\n+\n+        <section name="labels" title="Ticks &amp; Labels" expanded="false">\n+            <section name="segment" title="Segment Labels" expanded="true">\n+                <param name="show" type="boolean" truevalue="yes" falsevalue="no" label="Show label" checked="true" />\n+                <param name="parallel" type="boolean" truevalue="yes" falsevalue="no" label="Show parallel to rack" />\n+                <param type="integer" value="50" label="Font Size" name="size" />\n+                <expand macro="font_select" normal="false" bold="true" />\n+                <expand macro="circos_color" label="Color" name="color" value="#000000" />\n+            </section>\n+            <section name="ticks" title="Tick Labels" expanded="true">\n+                <param name="show" type="boolean" truevalue="yes" falsevalue="no" label="Show label" checked="true" />\n+                <param name="parallel" type="boolean" truevalue="yes" falsevalue="no" label="Show parallel to rack" />\n+                <param type="integer" value="24" label="Font Size" name="size" />\n+                <expand macro="font_select" normal="true"/>\n+                <expand macro="circos_color" label="Color" name="color" value="#000000" />\n+            </section>\n+        </section>\n+    </inputs>\n+    <outputs>\n+        <data name="output_png" format="png" from_work_dir="circos.png" label="Circos TableViewer Plot">\n+            <filter>outputs[\'png\']</filter>\n+        </data>\n+        <data name="output_svg" format="svg" from_work_dir="circos.svg" label="Circos TableViewer Plot">\n+            <filter>outputs[\'svg\']</filter>\n+        </data>\n+        <data name="output_tar" format="tar.gz" from_work_dir="circos.tar.gz" label="Circos TableViewer Conf Files">\n+            <filter>outputs[\'tar\']</filter>\n+        </data>\n+    </outputs>\n+    <tests>\n+        <test>\n+            <param name="table" value="tableviewer/1.tab" ftype="tabular" />\n+            <output name="output_png" file="tableviewer/1.png" ftype="png" compare="sim_size" delta="90000" />\n+        </test>\n+    </tests>\n+    <help><![CDATA[\n+The `official documentation <http://mkweb.bcgsc.ca/tableviewer/docs/>`__ has a lot of useful information.\n+\n+You should provide a table that looks like:\n+\n+::\n+\n+    labels\tA\tB\tC\n+    A\t10\t15\t20\n+    D\t15\t20\t25\n+    E\t20\t30\t50\n+\n+The header column and row are strictly required.\n+    ]]></help>\n+    <expand macro="citations" />\n+</tool>\n'
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/0/out.png
b
Binary file test-data/0/out.png has changed
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/0/out.svg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/0/out.svg Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="3000px" height="3000px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="bg">
+<rect x="0" y="0" width="3000px" height="3000px" style="fill:rgb(255,255,255);"/>
+</g>
+<g id="ideograms">
+<path d="M1500.000,160.000 A1340.000,1340.000 40.000 1,1 599.868,507.346 L593.151,499.938 A1350.000,1350.000 0.000 1,0 1500.000,150.000 Z" style="stroke-linecap:round;fill:rgb(166,206,227);" />
+<text x="2033.0" y="2881.2" font-size="31.2px" font-family="CMUBright-Roman" style="text-anchor:middle;fill:rgb(0,0,0);" transform="rotate(-21.1,2033.0,2881.2)" >ctgA</text>
+<path d="M631.175,479.832 A1340.000,1340.000 40.000 0,1 1458.326,160.648 L1458.015,150.653 A1350.000,1350.000 0.000 0,0 624.691,472.219 Z" style="stroke-linecap:round;fill:rgb(31,120,180);" />
+<text x="977.8" y="146.8" font-size="31.2px" font-family="CMUBright-Roman" style="text-anchor:middle;fill:rgb(0,0,0);" transform="rotate(-21.1,977.8,146.8)" >ctgB</text>
+</g>
+<defs>
+<pattern id="hline" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:5" /></pattern>
+<pattern id="checker" width="10" height="10" patternTransform="rotate(45 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:2" /><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:2" /></pattern>
+<pattern id="vline-sparse" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:2" /></pattern>
+<pattern id="hline-sparse" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:2" /></pattern>
+<pattern id="checker" width="10" height="10" patternTransform="rotate(45 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:5" /><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:4" /></pattern>
+<pattern id="vline" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:5" /></pattern>
+</defs>
+</svg>
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/1/0-0.wig
--- a/test-data/1/0-0.wig Thu Oct 04 06:05:31 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,503 +0,0 @@\n-track type=wiggle_0 name="example" description="discontinuous sine wave"\n-fixedStep chrom=ctgA start=1 step=100 span=20\n-0\n--0.506365641109759\n--0.873297297213995\n--0.999755839901149\n--0.850919359639177\n--0.467771805322476\n-0.0441824483318732\n-0.543970523363376\n-0.893969648197021\n-0.99780327442197\n-0.826879540532003\n-0.428264391396659\n--0.0882786064717262\n--0.580513008156313\n--0.91289603861164\n--0.993901956906654\n--0.801224790676895\n--0.387920558984219\n-0.132202352755937\n-0.615921726468774\n-0.930039504416137\n-0.988059506793465\n-0.774005214886395\n-0.34681910129778\n--0.175867902248536\n--0.650127523574896\n--0.945366563696042\n--0.980287334634812\n--0.745273974144339\n--0.305040291224202\n-0.219189974282818\n-0.683063594104854\n-0.958847282055722\n-0.970600619811948\n-0.71508718178021\n-0.262665724548229\n--0.262083959018097\n--0.714665612518583\n--0.970455331081526\n--0.959018280889002\n--0.683503793877429\n--0.219778160592474\n-0.304466082686301\n-0.744871858736274\n-0.980168039762288\n-0.945562938664219\n-0.650585494129627\n-0.176461360584952\n--0.346253571205695\n--0.773623338680308\n--0.987966438766777\n--0.930260871990585\n--0.61639657336978\n--0.132799924069858\n-0.38736481184216\n-0.800863899493182\n-0.993835297491596\n-0.913141966452114\n-0.581003804007494\n-0.0888791236810795\n--0.427719512602322\n--0.826540339206424\n--0.997763153807204\n--0.894239655996039\n--0.544476309619657\n--0.044784738601126\n-0.467238859047214\n-0.850602510646281\n-0.999742336443933\n-0.873590857634893\n-0.50688542994917\n-0.000602887030758908\n--0.505845668220208\n--0.873003419373278\n--0.999768979974307\n--0.851235899346026\n--0.468304581575409\n-0.043580142003502\n-0.543464539388603\n-0.893699315464349\n-0.997843032362382\n-0.827218441309355\n-0.428809114528536\n--0.0876780571755001\n--0.580022001304441\n--0.912649778958282\n--0.993968255065378\n--0.801585390637186\n--0.388476165127704\n-0.131604733390055\n-0.615446655696971\n-0.929817798797622\n-0.988152215687393\n-0.774386809762636\n-0.347384505330554\n--0.17527437998892\n--0.64966931671649\n--0.945169845112828\n--0.980406273199548\n--0.745675818665582\n--0.305614388888252\n-0.218601708303567\n-0.682623146057239\n-0.958675934707531\n-0.97074555575544\n-0.715508491127093\n-0.263247394606515\n--0.261502098227572\n--0.714243783495441\n--0.970309689616982\n--0.959188931145217\n--0.683943745214962\n--0.220366267018746\n-0.303891763483259\n-0.744469472587545\n-0.980048388625338\n-0.945758969945982\n-0.651043228214223\n-0.177054754782462\n--0.345687915259853\n--0.773241181283175\n--0.987873011641156\n--0.930481901440504\n--0.616871196227395\n--0.133397447114619\n-0.386808923903526\n-0.800502717217221\n-0.993768276844436\n-0.913387562390317\n-0.581494388679593\n-0.0894796085852885\n--0.427174478343574\n--0.82620083745591\n--0.997722670532666\n--0.89450933876326\n--0.544981897973607\n--0.0453870125923442\n-0.466705742943332\n-0.850285352482504\n-0.999728469607566\n-0.873884100529272\n-0.507405034549512\n-0.00120577384238478\n--0.505325511469513\n--0.87270922421956\n--0.999781756658628\n--0.851552129651776\n--0.468837187612361\n-0.0429778198349343\n-0.542958357879249\n-0.893428657896279\n-0.997882427613987\n-0.827557041415301\n-0.429353681799962\n--0.0870774760106846\n--0.579530783630345\n--0.912403187581549\n--0.994034191943674\n--0.801945699242987\n--0.389031630070668\n-0.131007066189432\n-0.614971361227045\n-0.929595755215624\n-0.988244565414863\n-0.774768123170331\n-0.347949783098507\n--0.174680794021833\n--0.649210873720956\n--0.94497278298608\n--0.980524855413266\n--0.746077392153944\n--0.306188375469783\n-0.21801336286854\n-0.682182449894674\n-0.958504238906709\n-0.970890138859323\n-0.715929540406099\n-0.263828968981531\n--0.260920142388146\n--0.713821694864108\n--0.970163695471254\n--0.959359232762341\n--0.684383447957544\n--0.220954293347872\n-0.303317333823826\n-0.744066815844409\n-0.979928381267452\n-0.94595465747008\n-0.651500725662311\n-0.177648084625384\n--0.345122133665854\n--0.772858742833902\n--0.987779225450561\n--0.930702592685557\n--0.617345594869105\n--0.133994921673036\n-0.386252895370368\n-0.800141243980293\n-0.993700894989533'..b'20793\n-0.430442347969774\n--0.0858762189484769\n--0.578547716529735\n--0.911909010016595\n--0.994164981763242\n--0.802665441867374\n--0.390142135547497\n-0.129811589152921\n-0.614020101883935\n-0.929150654484127\n-0.988428187236296\n-0.775529905025798\n-0.349079959018146\n--0.173493431828281\n--0.648293279985113\n--0.944577628388612\n--0.980760950615372\n--0.746879725448277\n--0.307336014550815\n-0.216836434486577\n-0.68130031386551\n-0.958159802196927\n-0.971178246338178\n-0.716770858148409\n-0.264991829836246\n--0.259755946408727\n--0.712976739390632\n--0.969870649348633\n--0.959698789831842\n--0.685262107018665\n--0.222130104859792\n-0.302168143970983\n-0.743260691160433\n-0.979687298063475\n-0.946345000960895\n-0.652415009983898\n-0.17883455038485\n--0.34399019435602\n--0.772093023335059\n--0.987590576010932\n--0.931142960240324\n--0.618293718815172\n--0.13518972446219\n-0.385140417328934\n-0.79941742514918\n-0.993565047754595\n-0.914122357899222\n-0.582964873838637\n-0.091280867284509\n--0.425538444762198\n--0.825180530889296\n--0.997599044898223\n--0.895316435894515\n--0.546497473784151\n--0.0471937347087195\n-0.465105377598017\n-0.849332024119238\n-0.999684688874618\n-0.874761922988011\n-0.508962741027838\n-0.00301443077113541\n--0.503763939941528\n--0.871824735950293\n--0.999817906332802\n--0.852498963013576\n--0.470433982491772\n-0.0411707604773582\n-0.541438629983896\n-0.892614737164045\n-0.997998437093437\n-0.828571036474523\n-0.430986446472459\n--0.0852755434877088\n--0.57805586746054\n--0.911661424007995\n--0.994229834656976\n--0.803024875624353\n--0.390697175677724\n-0.129213779751557\n-0.613544137356508\n-0.92892759749641\n-0.988519459263516\n-0.775910373196683\n-0.349644856759043\n--0.17289965603339\n--0.647834129578325\n--0.944379536061519\n--0.980878463517946\n--0.747280484962623\n--0.30790966663318\n-0.216247851967423\n-0.680858874319544\n-0.957987061413159\n-0.971321770608431\n-0.717191126305919\n-0.265573115893276\n--0.259173706691886\n--0.712553872855609\n--0.969723597478254\n--0.959868045160799\n--0.685701063017834\n--0.22271788961521\n-0.301593384195272\n-0.742857223512596\n-0.979566222305013\n-0.946539656785734\n-0.652871796525078\n-0.179427685870145\n--0.343424037051613\n--0.771709742563807\n--0.987495712830468\n--0.931362636389977\n--0.618767443774911\n--0.13578705225865\n-0.384583968225014\n-0.799055079818084\n-0.993496582423937\n-0.91436662533687\n-0.583454612012034\n-0.0918812207856598\n--0.424992790627422\n--0.824839828674128\n--0.997557111133059\n--0.895584817555511\n--0.547002268691819\n--0.0477959413987577\n-0.464571584118009\n-0.849013630425847\n-0.999669368573369\n-0.87505389471161\n-0.509481606783953\n-0.0036173145149015\n--0.503243049637554\n--0.871529272615042\n--0.999829229416663\n--0.85281395456664\n--0.470965905729547\n-0.0405683771373384\n-0.540931660176769\n-0.892342781239334\n-0.998036381447947\n-0.828908432665215\n-0.431530388323292\n--0.0846748370315997\n--0.577563808283757\n--0.911413506635259\n--0.994294326175203\n--0.803384017503629\n--0.391252073800153\n-0.128615923384498\n-0.613067949822471\n-0.928704202868774\n-0.988610371990796\n-0.776290559345248\n-0.350209627413543\n--0.172305817394175\n--0.647374743701449\n--0.944181100478148\n--0.980995619897873\n--0.747680972860835\n--0.308483206798754\n-0.215659190848055\n-0.680417187299892\n-0.957813972427147\n-0.971464941829636\n-0.717611133783957\n-0.266154305421701\n--0.258591372772452\n--0.71213074732663\n--0.969576193139719\n--0.960036951603826\n--0.686139769783315\n--0.223305593418733\n-0.301018514798568\n-0.742453485856362\n-0.979444790500868\n-0.946733968569148\n-0.653328345765115\n-0.180020756138357\n--0.342857754921908\n--0.77132618129705\n--0.987400490722168\n--0.931581974014641\n--0.619240943829511\n--0.13638433070021\n-0.38402737933528\n-0.798692444052197\n-0.993427755984289\n-0.914610560427116\n-0.583944138115545\n-0.0924815408904855\n--0.424446982019324\n--0.824498826652114\n--0.997514814783015\n--0.895852873695781\n--0.547506864779039\n--0.048398130716271\n-0.464037621778865\n-0.848694928139091\n-0.99965368491949\n-0.875345548376914\n-0.51000028735736\n-0.00422019694387214\n--0.502721976418416\n--0.871233492502601\n-\n'
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/1/1.gff3
--- a/test-data/1/1.gff3 Thu Oct 04 06:05:31 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,268 +0,0 @@\n-##gff-version 3\n-# Note: See http://song.sourceforge.net\n-ctgA\texample\tcontig\t1\t50001\t.\t.\t.\tName=ctgA\n-ctgA\texample\tremark\t1659\t1984\t1110\t+\t.\tName=f07;Note=This is an example\n-ctgA\texample\tremark\t3014\t6130\t999\t+\t.\tName=f06;Note=This is another example\n-ctgA\texample\tremark\t4715\t5968\t444\t-\t.\tName=f05;Note=Ok! Ok! I get the message.\n-ctgA\texample\tremark\t13280\t16394\t203\t+\t.\tName=f08\n-ctgA\texample\tremark\t15329\t15533\t1000\t+\t.\tName=f10\n-ctgA\texample\tremark\t19157\t22915\t100\t-\t.\tName=f13\n-ctgA\texample\tremark\t22132\t24633\t320\t+\t.\tName=f15\n-ctgA\texample\tremark\t23072\t23185\t850\t+\t.\tName=f14\n-ctgA\texample\tremark\t24562\t28338\t208\t+\t.\tName=f02\n-ctgA\texample\tremark\t36034\t38167\t100\t+\t.\tName=f09\n-ctgA\texample\tremark\t36649\t40440\t300\t-\t.\tName=f03\n-ctgA\texample\tremark\t37242\t38653\t10\t+\t.\tName=f04\n-ctgA\texample\tremark\t44705\t47713\t400\t-\t.\tName=f01\n-ctgA\texample\tremark\t46990\t48410\t100\t-\t.\tName=f11\n-ctgA\texample\tremark\t49758\t50000\t3040\t-\t.\tName=f12\n-\n-ctgA\texample\tSNP\t1000\t1000\t0.987\t.\t.\tID=FakeSNP1;Name=FakeSNP;Note=This is a fake SNP that should appear at 1000 with length 1\t\n-\n-ctgA\texample\tremark\t1000\t2000\t.\t.\t.\tName=Remark:hga;Alias=hga\n-ctgA\texample\tprotein_coding_primary_transcript\t1100\t2000\t.\t+\t.\tName=Gene:hga;Alias=hga\n-ctgA\texample\tpolypeptide\t1200\t1900\t.\t+\t.\tName=Protein:HGA;Alias=hga\n-ctgA\texample\tprotein_coding_primary_transcript\t1600\t3000\t.\t-\t.\tName=Gene:hgb;Alias=hgb\n-ctgA\texample\tpolypeptide\t1800\t2900\t.\t-\t.\tName=Protein:HGB;Alias=hgb\n-\n-ctgA\texample\tpolypeptide_domain\t11911\t15561\t.\t+\t502\tName=m11;Note=kinase\n-ctgA\texample\tpolypeptide_domain\t13801\t14007\t.\t-\t415\tName=m05;Note=helix loop helix\n-ctgA\texample\tpolypeptide_domain\t14731\t17239\t.\t-\t746\tName=m14;Note=kinase\n-ctgA\texample\tpolypeptide_domain\t15396\t16159\t.\t+\t40 \tName=m03;Note=zinc finger\n-ctgA\texample\tpolypeptide_domain\t17023\t17675\t.\t+\t830\tName=m08;Note=7-transmembrane\n-ctgA\texample\tpolypeptide_domain\t17667\t17690\t.\t+\t943\tName=m13;Note=DEAD box\n-ctgA\texample\tpolypeptide_domain\t18048\t18552\t.\t-\t658\tName=m07;Note=7-transmembrane\n-ctgA\texample\tpolypeptide_domain\t21748\t25612\t.\t+\t467\tName=m12;Note=kinase\n-ctgA\texample\tpolypeptide_domain\t28332\t30033\t.\t-\t711\tName=m02;Note=HOX\n-ctgA\texample\tpolypeptide_domain\t28342\t28447\t.\t-\t533\tName=m10;Note=DEAD box\n-ctgA\texample\tpolypeptide_domain\t30578\t31748\t.\t+\t646\tName=m06;Note=SUSHI repeat\n-ctgA\texample\tpolypeptide_domain\t33325\t35791\t.\t+\t479\tName=m04;Note=Ig-like\n-ctgA\texample\tpolypeptide_domain\t37497\t40559\t.\t-\t711\tName=m15;Note=7-transmembrane\n-ctgA\texample\tpolypeptide_domain\t46012\t48851\t.\t+\t533\tName=m09;Note=kinase\n-ctgA\texample\tpolypeptide_domain\t48253\t48366\t.\t+\t646\tName=m01;Note=WD40\n-\n-ctgA\texample\tmatch\t32329\t32359\t.\t+\t825\tName=seg01\n-ctgA\texample\tmatch\t26122\t26126\t.\t+\t185\tName=seg02\n-ctgA\texample\tmatch\t26497\t26869\t.\t+\t502\tName=seg02\n-ctgA\texample\tmatch\t27201\t27325\t.\t+\t442\tName=seg02\n-ctgA\texample\tmatch\t27372\t27433\t.\t+\t970\tName=seg02\n-ctgA\texample\tmatch\t27565\t27565\t.\t+\t519\tName=seg02\n-ctgA\texample\tmatch\t27813\t28091\t.\t+\t592\tName=seg02\n-ctgA\texample\tmatch\t28093\t28201\t.\t+\t475\tName=seg02\n-ctgA\texample\tmatch\t28329\t28377\t.\t+\t17 \tName=seg02\n-ctgA\texample\tmatch\t28829\t29194\t.\t+\t276\tName=seg02\n-ctgA\texample\tmatch\t29517\t29702\t.\t+\t492\tName=seg02\n-ctgA\texample\tmatch\t29713\t30061\t.\t+\t465\tName=seg02\n-ctgA\texample\tmatch\t30329\t30774\t.\t+\t525\tName=seg02\n-ctgA\texample\tmatch\t30808\t31306\t.\t+\t619\tName=seg02\n-ctgA\texample\tmatch\t31516\t31729\t.\t+\t248\tName=seg02\n-ctgA\texample\tmatch\t31753\t32154\t.\t+\t613\tName=seg02\n-ctgA\texample\tmatch\t32595\t32696\t.\t+\t701\tName=seg02\n-ctgA\texample\tmatch\t32892\t32901\t.\t+\t724\tName=seg02\n-ctgA\texample\tmatch\t33127\t33388\t.\t+\t977\tName=seg02\n-ctgA\texample\tmatch\t33439\t33443\t.\t+\t502\tName=seg02\n-ctgA\texample\tmatch\t33759\t34209\t.\t+\t415\tName=seg02\n-ctgA\texample\tmatch\t34401\t34466\t.\t+\t746\tName=seg02\n-ctgA\texample\tmatch\t6885\t7241\t.\t-\t40 \tName=seg03\n-ctgA\texample\tmatch\t7410\t7737\t.\t-\t830\tName=seg03\n-ctgA\texample\tmatch\t8055\t8080\t.\t-\t943\tName=seg03\n-ctgA\texample\tmatch\t8306\t8999\t.\t-\t658\tName=seg03\n-ctgA\texample\tmatch\t5233\t5302\t.\t-\t467\tName=seg04\n-ctgA\tex'..b'tgA\tbare_predicted\tCDS\t10000\t11500\t.\t+\t0\tName=Apple1;Note=CDS with no parent\n-\n-# multi-exon gene - several linked CDSs\n-ctgA\tpredicted\tmRNA\t13000\t17200\t.\t+\t0\tID=cds-Apple2;Name=Apple2;Note=mRNA with CDSs but no UTRs\n-ctgA\tpredicted\tCDS\t13500\t13800\t.\t+\t0\tParent=cds-Apple2\n-ctgA\tpredicted\tCDS\t15000\t15500\t.\t+\t1\tParent=cds-Apple2\n-ctgA\tpredicted\tCDS\t16500\t17000\t.\t+\t2\tParent=cds-Apple2\n-\n-ctgA\texonerate\tmRNA\t17400\t23000\t.\t+\t.\tID=rna-Apple3;Name=Apple3;Note=mRNA with both CDSs and UTRs\n-ctgA\texonerate\tUTR\t17400\t17999\t.\t+\t.\tParent=rna-Apple3\n-ctgA\texonerate\tCDS\t18000\t18800\t.\t+\t0\tParent=rna-Apple3\n-ctgA\texonerate\tCDS\t19000\t19500\t.\t+\t1\tParent=rna-Apple3\n-ctgA\texonerate\tCDS\t21000\t21200\t.\t+\t2\tParent=rna-Apple3\n-ctgA\texonerate\tUTR\t21201\t23000\t.\t+\t.\tParent=rna-Apple3\n-\n-ctgA\texample\tgene\t1050\t9000\t.\t+\t.\tID=EDEN;Name=EDEN;Note=protein kinase\n-ctgA\texample\tmRNA\t1050\t9000\t.\t+\t.\tID=EDEN.1;Parent=EDEN;Name=EDEN.1;Note=Eden splice form 1;Index=1\n-ctgA\texample\tfive_prime_UTR\t1050\t1200\t.\t+\t.\tParent=EDEN.1\n-ctgA\texample\tCDS\t1201\t1500\t.\t+\t0\tParent=EDEN.1\n-ctgA\texample\tCDS\t3000\t3902\t.\t+\t0\tParent=EDEN.1\n-ctgA\texample\tCDS\t5000\t5500\t.\t+\t0\tParent=EDEN.1\n-ctgA\texample\tCDS\t7000\t7608\t.\t+\t0\tParent=EDEN.1\n-ctgA\texample\tthree_prime_UTR\t7609\t9000\t.\t+\t.\tParent=EDEN.1\n-\n-ctgA\texample\tmRNA\t1050\t9000\t.\t+\t.\tID=EDEN.2;Parent=EDEN;Name=EDEN.2;Note=Eden splice form 2;Index=1\n-ctgA\texample\tfive_prime_UTR\t1050\t1200\t.\t+\t.\tParent=EDEN.2\n-ctgA\texample\tCDS\t1201\t1500\t.\t+\t0\tParent=EDEN.2\n-ctgA\texample\tCDS\t5000\t5500\t.\t+\t0\tParent=EDEN.2\n-ctgA\texample\tCDS\t7000\t7608\t.\t+\t0\tParent=EDEN.2\n-ctgA\texample\tthree_prime_UTR\t7609\t9000\t.\t+\t.\tParent=EDEN.2\n-\n-ctgA\texample\tmRNA\t1300\t9000\t.\t+\t.\tID=EDEN.3;Parent=EDEN;Name=EDEN.3;Note=Eden splice form 3;Index=1\n-ctgA\texample\tfive_prime_UTR\t1300\t1500\t.\t+\t.\tParent=EDEN.3\n-ctgA\texample\tfive_prime_UTR\t3000\t3300\t.\t+\t.\tParent=EDEN.3\n-ctgA\texample\tCDS\t3301\t3902\t.\t+\t0\tParent=EDEN.3\n-ctgA\texample\tCDS\t5000\t5500\t.\t+\t1\tParent=EDEN.3\n-ctgA\texample\tCDS\t7000\t7600\t.\t+\t1\tParent=EDEN.3\n-ctgA\texample\tthree_prime_UTR\t7601\t9000\t.\t+\t.\tParent=EDEN.3\n-\n-ctgA\texample\tBAC\t1000\t20000\t.\t.\t.\tID=b101.2;Name=b101.2;Note=Fingerprinted BAC with end reads\n-ctgA\texample\tclone_start\t1000\t1500\t.\t+\t.\tParent=b101.2\n-ctgA\texample\tclone_end\t19500\t20000\t.\t-\t.\tParent=b101.2\n-\n-ctgA\test\tEST_match\t1050\t3202\t.\t+\t.\tID=Match1;Name=agt830.5;Target=agt830.5 1 654\n-ctgA\test\tmatch_part\t1050\t1500\t.\t+\t.\tParent=Match1;Name=agt830.5;Target=agt830.5 1 451\n-ctgA\test\tmatch_part\t3000\t3202\t.\t+\t.\tParent=Match1;Name=agt830.5;Target=agt830.5 452 654\n-\n-ctgA\test\tEST_match\t5410\t7503\t.\t-\t.\tID=Match2;Name=agt830.3;Target=agt830.3 1 595\n-ctgA\test\tmatch_part\t5410\t5500\t.\t-\t.\tParent=Match2;Name=agt830.3;Target=agt830.3 505 595\n-ctgA\test\tmatch_part\t7000\t7503\t.\t-\t.\tParent=Match2;Name=agt830.3;Target=agt830.3 1 504\n-\n-ctgA\test\tEST_match\t1050\t7300\t.\t+\t.\tID=Match3;Name=agt221.5;Target=agt221.5 1 1253\n-ctgA\test\tmatch_part\t1050\t1500\t.\t+\t.\tParent=Match3;Name=agt221.5;Target=agt221.5 1 451\n-ctgA\test\tmatch_part\t5000\t5500\t.\t+\t.\tParent=Match3;Name=agt221.5;Target=agt221.5 452 952\n-ctgA\test\tmatch_part\t7000\t7300\t.\t+\t.\tParent=Match3;Name=agt221.5;Target=agt221.5 953 1253\n-\n-ctgA\test\tEST_match\t7500\t8000\t.\t-\t.\tID=Match4;Name=agt221.3;Target=agt221.3 1 501\n-\n-ctgA\test\tEST_match\t1150\t7200\t.\t+\t.\tID=Match5;Name=agt767.5;Target=agt767.5 1 1153\n-ctgA\test\tmatch_part\t1150\t1500\t.\t+\t.\tParent=Match5;Name=agt767.5;Target=agt767.5 1 351\n-ctgA\test\tmatch_part\t5000\t5500\t.\t+\t.\tParent=Match5;Name=agt767.5;Target=agt767.5 352 852\n-ctgA\test\tmatch_part\t7000\t7200\t.\t+\t.\tParent=Match5;Name=agt767.5;Target=agt767.5 853 1153\n-\n-ctgA\test\tEST_match\t8000\t9000\t.\t-\t.\tID=Match6;Name=agt767.3;Target=agt767.3 1 1001\n-\n-\n-\n-ctgB\texample\tcontig\t1\t6079\t.\t.\t.\tName=ctgB\n-ctgB\texample\tremark\t1659\t1984\t.\t+\t.\tName=f07;Note=This is an example\n-ctgB\texample\tremark\t3014\t6130\t.\t+\t.\tName=f06;Note=This is another example\n-ctgB\texample\tremark\t4715\t5968\t.\t-\t.\tName=f05;Note=\xe3\x81\x82\xe3\x81\x82\xe3\x80\x81\xe3\x81\x93\xe3\x81\xae\xe6\xa9\x9f\xe8\x83\xbd\xe3\x81\xaf\xe3\x80\x81\xe4\xb8\x96\xe7\x95\x8c\xe4\xb8\xad\xe3\x82\x92\xe6\x97\x85\xe3\x81\x97\xe3\x81\xa6\xe3\x81\x84\xe3\x81\xbe\xe3\x81\x99\xef\xbc\x81\n-##FASTA\n->foobar\n-ACTGATGATCGCTAGATGCTCGACTAGC\n'
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/1/2.wig
--- a/test-data/1/2.wig Thu Oct 04 06:05:31 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,503 +0,0 @@\n-track type=wiggle_0 name="example" description="discontinuous sine wave"\n-fixedStep chrom=ctgA start=1 step=100 span=20\n-0\n--0.506365641109759\n--0.873297297213995\n--0.999755839901149\n--0.850919359639177\n--0.467771805322476\n-0.0441824483318732\n-0.543970523363376\n-0.893969648197021\n-0.99780327442197\n-0.826879540532003\n-0.428264391396659\n--0.0882786064717262\n--0.580513008156313\n--0.91289603861164\n--0.993901956906654\n--0.801224790676895\n--0.387920558984219\n-0.132202352755937\n-0.615921726468774\n-0.930039504416137\n-0.988059506793465\n-0.774005214886395\n-0.34681910129778\n--0.175867902248536\n--0.650127523574896\n--0.945366563696042\n--0.980287334634812\n--0.745273974144339\n--0.305040291224202\n-0.219189974282818\n-0.683063594104854\n-0.958847282055722\n-0.970600619811948\n-0.71508718178021\n-0.262665724548229\n--0.262083959018097\n--0.714665612518583\n--0.970455331081526\n--0.959018280889002\n--0.683503793877429\n--0.219778160592474\n-0.304466082686301\n-0.744871858736274\n-0.980168039762288\n-0.945562938664219\n-0.650585494129627\n-0.176461360584952\n--0.346253571205695\n--0.773623338680308\n--0.987966438766777\n--0.930260871990585\n--0.61639657336978\n--0.132799924069858\n-0.38736481184216\n-0.800863899493182\n-0.993835297491596\n-0.913141966452114\n-0.581003804007494\n-0.0888791236810795\n--0.427719512602322\n--0.826540339206424\n--0.997763153807204\n--0.894239655996039\n--0.544476309619657\n--0.044784738601126\n-0.467238859047214\n-0.850602510646281\n-0.999742336443933\n-0.873590857634893\n-0.50688542994917\n-0.000602887030758908\n--0.505845668220208\n--0.873003419373278\n--0.999768979974307\n--0.851235899346026\n--0.468304581575409\n-0.043580142003502\n-0.543464539388603\n-0.893699315464349\n-0.997843032362382\n-0.827218441309355\n-0.428809114528536\n--0.0876780571755001\n--0.580022001304441\n--0.912649778958282\n--0.993968255065378\n--0.801585390637186\n--0.388476165127704\n-0.131604733390055\n-0.615446655696971\n-0.929817798797622\n-0.988152215687393\n-0.774386809762636\n-0.347384505330554\n--0.17527437998892\n--0.64966931671649\n--0.945169845112828\n--0.980406273199548\n--0.745675818665582\n--0.305614388888252\n-0.218601708303567\n-0.682623146057239\n-0.958675934707531\n-0.97074555575544\n-0.715508491127093\n-0.263247394606515\n--0.261502098227572\n--0.714243783495441\n--0.970309689616982\n--0.959188931145217\n--0.683943745214962\n--0.220366267018746\n-0.303891763483259\n-0.744469472587545\n-0.980048388625338\n-0.945758969945982\n-0.651043228214223\n-0.177054754782462\n--0.345687915259853\n--0.773241181283175\n--0.987873011641156\n--0.930481901440504\n--0.616871196227395\n--0.133397447114619\n-0.386808923903526\n-0.800502717217221\n-0.993768276844436\n-0.913387562390317\n-0.581494388679593\n-0.0894796085852885\n--0.427174478343574\n--0.82620083745591\n--0.997722670532666\n--0.89450933876326\n--0.544981897973607\n--0.0453870125923442\n-0.466705742943332\n-0.850285352482504\n-0.999728469607566\n-0.873884100529272\n-0.507405034549512\n-0.00120577384238478\n--0.505325511469513\n--0.87270922421956\n--0.999781756658628\n--0.851552129651776\n--0.468837187612361\n-0.0429778198349343\n-0.542958357879249\n-0.893428657896279\n-0.997882427613987\n-0.827557041415301\n-0.429353681799962\n--0.0870774760106846\n--0.579530783630345\n--0.912403187581549\n--0.994034191943674\n--0.801945699242987\n--0.389031630070668\n-0.131007066189432\n-0.614971361227045\n-0.929595755215624\n-0.988244565414863\n-0.774768123170331\n-0.347949783098507\n--0.174680794021833\n--0.649210873720956\n--0.94497278298608\n--0.980524855413266\n--0.746077392153944\n--0.306188375469783\n-0.21801336286854\n-0.682182449894674\n-0.958504238906709\n-0.970890138859323\n-0.715929540406099\n-0.263828968981531\n--0.260920142388146\n--0.713821694864108\n--0.970163695471254\n--0.959359232762341\n--0.684383447957544\n--0.220954293347872\n-0.303317333823826\n-0.744066815844409\n-0.979928381267452\n-0.94595465747008\n-0.651500725662311\n-0.177648084625384\n--0.345122133665854\n--0.772858742833902\n--0.987779225450561\n--0.930702592685557\n--0.617345594869105\n--0.133994921673036\n-0.386252895370368\n-0.800141243980293\n-0.993700894989533'..b'20793\n-0.430442347969774\n--0.0858762189484769\n--0.578547716529735\n--0.911909010016595\n--0.994164981763242\n--0.802665441867374\n--0.390142135547497\n-0.129811589152921\n-0.614020101883935\n-0.929150654484127\n-0.988428187236296\n-0.775529905025798\n-0.349079959018146\n--0.173493431828281\n--0.648293279985113\n--0.944577628388612\n--0.980760950615372\n--0.746879725448277\n--0.307336014550815\n-0.216836434486577\n-0.68130031386551\n-0.958159802196927\n-0.971178246338178\n-0.716770858148409\n-0.264991829836246\n--0.259755946408727\n--0.712976739390632\n--0.969870649348633\n--0.959698789831842\n--0.685262107018665\n--0.222130104859792\n-0.302168143970983\n-0.743260691160433\n-0.979687298063475\n-0.946345000960895\n-0.652415009983898\n-0.17883455038485\n--0.34399019435602\n--0.772093023335059\n--0.987590576010932\n--0.931142960240324\n--0.618293718815172\n--0.13518972446219\n-0.385140417328934\n-0.79941742514918\n-0.993565047754595\n-0.914122357899222\n-0.582964873838637\n-0.091280867284509\n--0.425538444762198\n--0.825180530889296\n--0.997599044898223\n--0.895316435894515\n--0.546497473784151\n--0.0471937347087195\n-0.465105377598017\n-0.849332024119238\n-0.999684688874618\n-0.874761922988011\n-0.508962741027838\n-0.00301443077113541\n--0.503763939941528\n--0.871824735950293\n--0.999817906332802\n--0.852498963013576\n--0.470433982491772\n-0.0411707604773582\n-0.541438629983896\n-0.892614737164045\n-0.997998437093437\n-0.828571036474523\n-0.430986446472459\n--0.0852755434877088\n--0.57805586746054\n--0.911661424007995\n--0.994229834656976\n--0.803024875624353\n--0.390697175677724\n-0.129213779751557\n-0.613544137356508\n-0.92892759749641\n-0.988519459263516\n-0.775910373196683\n-0.349644856759043\n--0.17289965603339\n--0.647834129578325\n--0.944379536061519\n--0.980878463517946\n--0.747280484962623\n--0.30790966663318\n-0.216247851967423\n-0.680858874319544\n-0.957987061413159\n-0.971321770608431\n-0.717191126305919\n-0.265573115893276\n--0.259173706691886\n--0.712553872855609\n--0.969723597478254\n--0.959868045160799\n--0.685701063017834\n--0.22271788961521\n-0.301593384195272\n-0.742857223512596\n-0.979566222305013\n-0.946539656785734\n-0.652871796525078\n-0.179427685870145\n--0.343424037051613\n--0.771709742563807\n--0.987495712830468\n--0.931362636389977\n--0.618767443774911\n--0.13578705225865\n-0.384583968225014\n-0.799055079818084\n-0.993496582423937\n-0.91436662533687\n-0.583454612012034\n-0.0918812207856598\n--0.424992790627422\n--0.824839828674128\n--0.997557111133059\n--0.895584817555511\n--0.547002268691819\n--0.0477959413987577\n-0.464571584118009\n-0.849013630425847\n-0.999669368573369\n-0.87505389471161\n-0.509481606783953\n-0.0036173145149015\n--0.503243049637554\n--0.871529272615042\n--0.999829229416663\n--0.85281395456664\n--0.470965905729547\n-0.0405683771373384\n-0.540931660176769\n-0.892342781239334\n-0.998036381447947\n-0.828908432665215\n-0.431530388323292\n--0.0846748370315997\n--0.577563808283757\n--0.911413506635259\n--0.994294326175203\n--0.803384017503629\n--0.391252073800153\n-0.128615923384498\n-0.613067949822471\n-0.928704202868774\n-0.988610371990796\n-0.776290559345248\n-0.350209627413543\n--0.172305817394175\n--0.647374743701449\n--0.944181100478148\n--0.980995619897873\n--0.747680972860835\n--0.308483206798754\n-0.215659190848055\n-0.680417187299892\n-0.957813972427147\n-0.971464941829636\n-0.717611133783957\n-0.266154305421701\n--0.258591372772452\n--0.71213074732663\n--0.969576193139719\n--0.960036951603826\n--0.686139769783315\n--0.223305593418733\n-0.301018514798568\n-0.742453485856362\n-0.979444790500868\n-0.946733968569148\n-0.653328345765115\n-0.180020756138357\n--0.342857754921908\n--0.77132618129705\n--0.987400490722168\n--0.931581974014641\n--0.619240943829511\n--0.13638433070021\n-0.38402737933528\n-0.798692444052197\n-0.993427755984289\n-0.914610560427116\n-0.583944138115545\n-0.0924815408904855\n--0.424446982019324\n--0.824498826652114\n--0.997514814783015\n--0.895852873695781\n--0.547506864779039\n--0.048398130716271\n-0.464037621778865\n-0.848694928139091\n-0.99965368491949\n-0.875345548376914\n-0.51000028735736\n-0.00422019694387214\n--0.502721976418416\n--0.871233492502601\n-\n'
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/1/out.png
b
Binary file test-data/1/out.png has changed
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/1/out.svg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/1/out.svg Tue Sep 17 16:54:57 2019 -0400
b
b'@@ -0,0 +1,2604 @@\n+<?xml version="1.0" encoding="utf-8" standalone="no"?>\n+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n+<svg width="3000px" height="3000px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n+<g id="bg">\n+<rect x="0" y="0" width="3000px" height="3000px" style="fill:rgb(255,255,255);"/>\n+</g>\n+<g id="ideograms">\n+<path d="M1500.000,160.000 A1340.000,1340.000 40.000 1,1 599.868,507.346 L593.151,499.938 A1350.000,1350.000 0.000 1,0 1500.000,150.000 Z" style="stroke-linecap:round;fill:rgb(166,206,227);" />\n+<text x="2033.0" y="2881.2" font-size="31.2px" font-family="CMUBright-Roman" style="text-anchor:middle;fill:rgb(0,0,0);" transform="rotate(-21.1,2033.0,2881.2)" >ctgA</text>\n+<line x1=\'1500.0\' y1=\'150.0\' x2=\'1500.0\' y2=\'140.0\' style="stroke-width:2.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:none;" />\n+<text x="1510.0" y="130.0" font-size="26.0px" font-family="CMUBright-Roman" style="text-anchor:start;fill:rgb(0,0,0);" transform="rotate(270.0,1510.0,130.0)" >0.0 Mb</text>\n+<line x1=\'2211.0\' y1=\'352.4\' x2=\'2216.2\' y2=\'343.9\' style="stroke-width:2.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:none;" />\n+<line x1=\'2708.8\' y1=\'898.9\' x2=\'2717.7\' y2=\'894.4\' style="stroke-width:2.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:none;" />\n+<line x1=\'2844.1\' y1=\'1625.6\' x2=\'2854.1\' y2=\'1626.5\' style="stroke-width:2.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:none;" />\n+<line x1=\'2576.5\' y1=\'2314.6\' x2=\'2584.5\' y2=\'2320.7\' style="stroke-width:2.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:none;" />\n+<text x="2586.4" y="2334.7" font-size="26.0px" font-family="CMUBright-Roman" style="text-anchor:start;fill:rgb(0,0,0);" transform="rotate(37.1,2586.4,2334.7)" >0.0 Mb</text>\n+<line x1=\'1986.1\' y1=\'2759.5\' x2=\'1989.7\' y2=\'2768.8\' style="stroke-width:2.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:none;" />\n+<line x1=\'1249.9\' y1=\'2826.6\' x2=\'1248.1\' y2=\'2836.5\' style="stroke-width:2.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:none;" />\n+<line x1=\'588.7\' y1=\'2496.0\' x2=\'582.0\' y2=\'2503.4\' style="stroke-width:2.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:none;" />\n+<line x1=\'200.8\' y1=\'1866.8\' x2=\'191.2\' y2=\'1869.5\' style="stroke-width:2.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:none;" />\n+<text x="184.3" y="1881.9" font-size="26.0px" font-family="CMUBright-Roman" style="text-anchor:end;fill:rgb(0,0,0);" transform="rotate(-15.8,184.3,1881.9)" >0.0 Mb</text>\n+<line x1=\'202.4\' y1=\'1127.6\' x2=\'192.8\' y2=\'1124.8\' style="stroke-width:2.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:none;" />\n+<line x1=\'593.0\' y1=\'500.0\' x2=\'586.3\' y2=\'492.6\' style="stroke-width:2.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:none;" />\n+<path d="M631.175,479.832 A1340.000,1340.000 40.000 0,1 1458.326,160.648 L1458.015,150.653 A1350.000,1350.000 0.000 0,0 624.691,472.219 Z" style="stroke-linecap:round;fill:rgb(31,120,180);" />\n+<text x="977.8" y="146.8" font-size="31.2px" font-family="CMUBright-Roman" style="text-anchor:middle;fill:rgb(0,0,0);" transform="rotate(-21.1,977.8,146.8)" >ctgB</text>\n+<line x1=\'624.7\' y1=\'472.2\' x2=\'618.2\' y2=\'464.6\' style="stroke-width:2.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:none;" />\n+<text x="604.1" y="463.5" font-size="26.0px" font-family="CMUBright-Roman" style="text-anchor:end;fill:rgb(0,0,0);" transform="rotate(49.6,604.1,463.5)" >0.0 Mb</text>\n+<line x1=\'1297.2\' y1=\'165.3\' x2=\'1295.7\' y2=\'155.4\' style="stroke-width:2.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:none;" />\n+</g>\n+<g id="track_0">\n+<path d="M 1500.000,709.400 A 790.600,790.600 0.00 0,1 1543.8,710.6 L 1543.8,710.6 1542.5,735.8 1541.3,760.8 1540.3,785.5 1539.4,809.6 1538.7,833.0 1538.3,855.6 1538.0,877.2 1537.9,897.6 1538.0,916.8 1538.4,934.7 1539.0,951.1 1539.8,965.9 1540.9,979.1 1542.2,990.5 1543.7,1000.2 1545.4,1008.1 1547.4,1014.2 1549.6,1018.3 1552.1,1020.5 1554.7,1020.8 1557.6,1019.2 1560.7,1015.6 1563.9,1010.2 1567.4,1002.9 1571.0,993'..b'0);" />\n+<path d="M608.595,1409.369 A896.000,896.000 40.000 0,1 613.740,1368.246 L598.903,1366.041 A911.000,911.000 0.000 0,0 593.672,1407.852 Z" style="stroke-width:1.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:rgb(0,0,0);" />\n+<path d="M662.718,1353.509 A850.000,850.000 40.000 0,1 663.898,1346.919 L649.143,1344.218 A865.000,865.000 0.000 0,0 647.943,1350.924 Z" style="stroke-width:1.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:rgb(0,0,0);" />\n+<path d="M653.419,1286.857 A873.000,873.000 40.000 0,1 769.975,1021.260 L757.432,1013.034 A888.000,888.000 0.000 0,0 638.873,1283.195 Z" style="stroke-width:1.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:rgb(0,0,0);" />\n+<path d="M711.167,1251.664 A827.000,827.000 40.000 0,1 718.596,1229.192 L704.423,1224.280 A842.000,842.000 0.000 0,0 696.859,1247.160 Z" style="stroke-width:1.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:rgb(0,0,0);" />\n+<path d="M693.554,1059.312 A919.000,919.000 40.000 0,1 772.732,938.180 L760.861,929.010 A934.000,934.000 0.000 0,0 680.391,1052.119 Z" style="stroke-width:1.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:rgb(0,0,0);" />\n+<path d="M758.686,996.741 A896.000,896.000 40.000 0,1 765.564,986.755 L753.269,978.163 A911.000,911.000 0.000 0,0 746.275,988.316 Z" style="stroke-width:1.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:rgb(0,0,0);" />\n+<path d="M813.630,998.605 A850.000,850.000 40.000 0,1 829.822,977.160 L817.996,967.933 A865.000,865.000 0.000 0,0 801.518,989.757 Z" style="stroke-width:1.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:rgb(0,0,0);" />\n+<path d="M928.094,902.628 A827.000,827.000 40.000 0,1 944.403,887.431 L934.325,876.320 A842.000,842.000 0.000 0,0 917.721,891.793 Z" style="stroke-width:1.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:rgb(0,0,0);" />\n+<path d="M978.705,887.899 A804.000,804.000 40.000 0,1 1474.996,696.389 L1474.529,681.396 A819.000,819.000 0.000 0,0 968.979,876.479 Z" style="stroke-width:1.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:rgb(0,0,0);" />\n+<path d="M1087.984,782.942 A827.000,827.000 40.000 0,1 1114.179,768.515 L1107.181,755.247 A842.000,842.000 0.000 0,0 1080.511,769.936 Z" style="stroke-width:1.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:rgb(0,0,0);" />\n+<path d="M1191.662,707.897 A850.000,850.000 40.000 0,1 1473.565,650.411 L1473.099,635.418 A865.000,865.000 0.000 0,0 1186.221,693.918 Z" style="stroke-width:1.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:rgb(0,0,0);" />\n+<path d="M1341.539,641.502 A873.000,873.000 40.000 0,1 1462.108,627.823 L1461.457,612.837 A888.000,888.000 0.000 0,0 1338.816,626.751 Z" style="stroke-width:1.0;stroke:rgb(0,0,0);stroke-linecap:round;fill:rgb(0,0,0);" />\n+</g>\n+<defs>\n+<pattern id="hline-sparse" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:2" /></pattern>\n+<pattern id="vline-sparse" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:2" /></pattern>\n+<pattern id="hline" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:5" /></pattern>\n+<pattern id="checker" width="10" height="10" patternTransform="rotate(45 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:5" /><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:4" /></pattern>\n+<pattern id="checker" width="10" height="10" patternTransform="rotate(45 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:2" /><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:2" /></pattern>\n+<pattern id="vline" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:5" /></pattern>\n+</defs>\n+</svg>\n'
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/1/output.png
b
Binary file test-data/1/output.png has changed
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/1/output.svg
--- a/test-data/1/output.svg Thu Oct 04 06:05:31 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,2784 +0,0 @@\n-<?xml version="1.0" encoding="utf-8" standalone="no"?>\n-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n-<svg width="3000px" height="3000px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n-<g id="bg">\n-<rect x="0" y="0" width="3000px" height="3000px" style="fill:rgb(255,255,255);"/>\n-</g>\n-<g id="ideograms">\n-<path d="M1500.000,160.000 A1340.000,1340.000 40.000 1,1 599.868,507.346 L593.151,499.938 A1350.000,1350.000 0.000 1,0 1500.000,150.000 Z" style="stroke-linecap:round;fill:rgb(141,211,199);" />\n-<text x="2011.0" y="2857.5" font-size="31.2px" font-family="CMUBright-Roman" style="text-anchor:start;fill:rgb(0,0,0);" transform="rotate(68.9,2011.0,2857.5)" >0</text>\n-<line x1=\'1500.0\' y1=\'150.0\' x2=\'1500.0\' y2=\'130.0\' style="stroke-width:2.0;stroke:rgb(23,54,93);stroke-linecap:round;fill:none;" />\n-<text x="1509.5" y="120.0" font-size="26.0px" font-family="CMUBright-Roman" style="text-anchor:start;fill:rgb(23,54,93);" transform="rotate(270.0,1509.5,120.0)" >0 kb</text>\n-<line x1=\'2211.0\' y1=\'352.4\' x2=\'2221.5\' y2=\'335.4\' style="stroke-width:2.0;stroke:rgb(23,54,93);stroke-linecap:round;fill:none;" />\n-<text x="2234.8" y="331.9" font-size="26.0px" font-family="CMUBright-Roman" style="text-anchor:start;fill:rgb(23,54,93);" transform="rotate(301.8,2234.8,331.9)" >5 kb</text>\n-<line x1=\'2708.8\' y1=\'898.9\' x2=\'2726.7\' y2=\'890.0\' style="stroke-width:2.0;stroke:rgb(23,54,93);stroke-linecap:round;fill:none;" />\n-<text x="2739.8" y="894.0" font-size="26.0px" font-family="CMUBright-Roman" style="text-anchor:start;fill:rgb(23,54,93);" transform="rotate(333.6,2739.8,894.0)" >10 kb</text>\n-<line x1=\'2844.1\' y1=\'1625.6\' x2=\'2864.1\' y2=\'1627.4\' style="stroke-width:2.0;stroke:rgb(23,54,93);stroke-linecap:round;fill:none;" />\n-<text x="2873.1" y="1637.8" font-size="26.0px" font-family="CMUBright-Roman" style="text-anchor:start;fill:rgb(23,54,93);" transform="rotate(5.3,2873.1,1637.8)" >15 kb</text>\n-<line x1=\'2576.5\' y1=\'2314.6\' x2=\'2592.4\' y2=\'2326.7\' style="stroke-width:2.0;stroke:rgb(23,54,93);stroke-linecap:round;fill:none;" />\n-<text x="2594.7" y="2340.3" font-size="26.0px" font-family="CMUBright-Roman" style="text-anchor:start;fill:rgb(23,54,93);" transform="rotate(37.1,2594.7,2340.3)" >20 kb</text>\n-<line x1=\'1986.1\' y1=\'2759.5\' x2=\'1993.3\' y2=\'2778.1\' style="stroke-width:2.0;stroke:rgb(23,54,93);stroke-linecap:round;fill:none;" />\n-<text x="1988.0" y="2790.8" font-size="26.0px" font-family="CMUBright-Roman" style="text-anchor:start;fill:rgb(23,54,93);" transform="rotate(68.9,1988.0,2790.8)" >25 kb</text>\n-<line x1=\'1249.9\' y1=\'2826.6\' x2=\'1246.2\' y2=\'2846.3\' style="stroke-width:2.0;stroke:rgb(23,54,93);stroke-linecap:round;fill:none;" />\n-<text x="1253.7" y="2857.8" font-size="26.0px" font-family="CMUBright-Roman" style="text-anchor:end;fill:rgb(23,54,93);" transform="rotate(-79.3,1253.7,2857.8)" >30 kb</text>\n-<line x1=\'588.7\' y1=\'2496.0\' x2=\'575.2\' y2=\'2510.8\' style="stroke-width:2.0;stroke:rgb(23,54,93);stroke-linecap:round;fill:none;" />\n-<text x="575.5" y="2524.6" font-size="26.0px" font-family="CMUBright-Roman" style="text-anchor:end;fill:rgb(23,54,93);" transform="rotate(-47.5,575.5,2524.6)" >35 kb</text>\n-<line x1=\'200.8\' y1=\'1866.8\' x2=\'181.5\' y2=\'1872.2\' style="stroke-width:2.0;stroke:rgb(23,54,93);stroke-linecap:round;fill:none;" />\n-<text x="174.5" y="1884.1" font-size="26.0px" font-family="CMUBright-Roman" style="text-anchor:end;fill:rgb(23,54,93);" transform="rotate(-15.8,174.5,1884.1)" >40 kb</text>\n-<line x1=\'202.4\' y1=\'1127.6\' x2=\'183.2\' y2=\'1122.1\' style="stroke-width:2.0;stroke:rgb(23,54,93);stroke-linecap:round;fill:none;" />\n-<text x="171.0" y="1128.5" font-size="26.0px" font-family="CMUBright-Roman" style="text-anchor:end;fill:rgb(23,54,93);" transform="rotate(16.0,171.0,1128.5)" >45 kb</text>\n-<line x1=\'593.0\' y1=\'500.0\' x2=\'579.6\' y2=\'485.2\' style="stroke-width:2.0;stroke:rgb(23,54,93);stroke-lin'..b':rgb(85,85,85);" />\n-<polygon points="766,1158 774,1157 770,1165" style="fill:rgb(85,85,85);" />\n-<polygon points="755,1143 763,1142 759,1149" style="fill:rgb(85,85,85);" />\n-<polygon points="734,1122 742,1122 738,1129" style="fill:rgb(85,85,85);" />\n-<polygon points="710,1099 718,1099 714,1106" style="fill:rgb(85,85,85);" />\n-<polygon points="691,1078 699,1078 695,1085" style="fill:rgb(85,85,85);" />\n-<polygon points="683,1063 691,1062 687,1069" style="fill:rgb(85,85,85);" />\n-<polygon points="689,1055 697,1054 694,1061" style="fill:rgb(85,85,85);" />\n-<polygon points="710,1054 718,1054 714,1061" style="fill:rgb(85,85,85);" />\n-<polygon points="740,1060 748,1060 744,1067" style="fill:rgb(85,85,85);" />\n-<polygon points="772,1068 780,1068 776,1075" style="fill:rgb(85,85,85);" />\n-<polygon points="799,1073 807,1073 802,1080" style="fill:rgb(85,85,85);" />\n-<polygon points="814,1072 822,1072 818,1079" style="fill:rgb(85,85,85);" />\n-<polygon points="816,1063 824,1063 820,1070" style="fill:rgb(85,85,85);" />\n-<polygon points="805,1045 813,1045 809,1052" style="fill:rgb(85,85,85);" />\n-<polygon points="786,1021 794,1021 790,1028" style="fill:rgb(85,85,85);" />\n-<polygon points="766,995 774,996 769,1002" style="fill:rgb(85,85,85);" />\n-<polygon points="751,973 759,973 754,980" style="fill:rgb(85,85,85);" />\n-<polygon points="747,958 755,958 751,965" style="fill:rgb(85,85,85);" />\n-<polygon points="757,952 765,953 760,959" style="fill:rgb(85,85,85);" />\n-<polygon points="779,956 787,957 782,963" style="fill:rgb(85,85,85);" />\n-<polygon points="809,966 817,967 812,973" style="fill:rgb(85,85,85);" />\n-<polygon points="839,978 847,979 842,985" style="fill:rgb(85,85,85);" />\n-<polygon points="864,986 872,987 867,993" style="fill:rgb(85,85,85);" />\n-<polygon points="878,985 886,987 880,993" style="fill:rgb(85,85,85);" />\n-<polygon points="879,974 887,976 881,982" style="fill:rgb(85,85,85);" />\n-<polygon points="869,954 877,955 871,961" style="fill:rgb(85,85,85);" />\n-<polygon points="852,927 860,929 855,935" style="fill:rgb(85,85,85);" />\n-<polygon points="836,899 844,901 838,907" style="fill:rgb(85,85,85);" />\n-<polygon points="825,876 833,878 828,884" style="fill:rgb(85,85,85);" />\n-<polygon points="826,862 834,864 828,870" style="fill:rgb(85,85,85);" />\n-<polygon points="838,860 846,862 840,868" style="fill:rgb(85,85,85);" />\n-<polygon points="861,868 869,870 863,876" style="fill:rgb(85,85,85);" />\n-<polygon points="890,883 897,885 892,891" style="fill:rgb(85,85,85);" />\n-<polygon points="918,898 925,900 920,906" style="fill:rgb(85,85,85);" />\n-<polygon points="940,908 947,910 942,916" style="fill:rgb(85,85,85);" />\n-</g>\n-<defs>\n-<pattern id="hline" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:5" /></pattern>\n-<pattern id="checker" width="10" height="10" patternTransform="rotate(45 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:5" /><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:4" /></pattern>\n-<pattern id="hline-sparse" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:2" /></pattern>\n-<pattern id="checker" width="10" height="10" patternTransform="rotate(45 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:2" /><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:2" /></pattern>\n-<pattern id="vline-sparse" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:2" /></pattern>\n-<pattern id="vline" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:5" /></pattern>\n-</defs>\n-</svg>\n'
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/1/sine.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/1/sine.tab Tue Sep 17 16:54:57 2019 -0400
b
b'@@ -0,0 +1,496 @@\n+ctgA\t300\t400\t-0.506365641109759\n+ctgA\t400\t500\t-0.873297297213995\n+ctgA\t500\t600\t-0.999755839901149\n+ctgA\t600\t700\t-0.850919359639177\n+ctgA\t700\t800\t-0.467771805322476\n+ctgA\t800\t900\t0.0441824483318732\n+ctgA\t900\t1000\t0.543970523363376\n+ctgA\t1000\t1100\t0.893969648197021\n+ctgA\t1100\t1200\t0.99780327442197\n+ctgA\t1200\t1300\t0.826879540532003\n+ctgA\t1300\t1400\t0.428264391396659\n+ctgA\t1400\t1500\t-0.0882786064717262\n+ctgA\t1500\t1600\t-0.580513008156313\n+ctgA\t1600\t1700\t-0.91289603861164\n+ctgA\t1700\t1800\t-0.993901956906654\n+ctgA\t1800\t1900\t-0.801224790676895\n+ctgA\t1900\t2000\t-0.387920558984219\n+ctgA\t2000\t2100\t0.132202352755937\n+ctgA\t2100\t2200\t0.615921726468774\n+ctgA\t2200\t2300\t0.930039504416137\n+ctgA\t2300\t2400\t0.988059506793465\n+ctgA\t2400\t2500\t0.774005214886395\n+ctgA\t2500\t2600\t0.34681910129778\n+ctgA\t2600\t2700\t-0.175867902248536\n+ctgA\t2700\t2800\t-0.650127523574896\n+ctgA\t2800\t2900\t-0.945366563696042\n+ctgA\t2900\t3000\t-0.980287334634812\n+ctgA\t3000\t3100\t-0.745273974144339\n+ctgA\t3100\t3200\t-0.305040291224202\n+ctgA\t3200\t3300\t0.219189974282818\n+ctgA\t3300\t3400\t0.683063594104854\n+ctgA\t3400\t3500\t0.958847282055722\n+ctgA\t3500\t3600\t0.970600619811948\n+ctgA\t3600\t3700\t0.71508718178021\n+ctgA\t3700\t3800\t0.262665724548229\n+ctgA\t3800\t3900\t-0.262083959018097\n+ctgA\t3900\t4000\t-0.714665612518583\n+ctgA\t4000\t4100\t-0.970455331081526\n+ctgA\t4100\t4200\t-0.959018280889002\n+ctgA\t4200\t4300\t-0.683503793877429\n+ctgA\t4300\t4400\t-0.219778160592474\n+ctgA\t4400\t4500\t0.304466082686301\n+ctgA\t4500\t4600\t0.744871858736274\n+ctgA\t4600\t4700\t0.980168039762288\n+ctgA\t4700\t4800\t0.945562938664219\n+ctgA\t4800\t4900\t0.650585494129627\n+ctgA\t4900\t5000\t0.176461360584952\n+ctgA\t5000\t5100\t-0.346253571205695\n+ctgA\t5100\t5200\t-0.773623338680308\n+ctgA\t5200\t5300\t-0.987966438766777\n+ctgA\t5300\t5400\t-0.930260871990585\n+ctgA\t5400\t5500\t-0.61639657336978\n+ctgA\t5500\t5600\t-0.132799924069858\n+ctgA\t5600\t5700\t0.38736481184216\n+ctgA\t5700\t5800\t0.800863899493182\n+ctgA\t5800\t5900\t0.993835297491596\n+ctgA\t5900\t6000\t0.913141966452114\n+ctgA\t6000\t6100\t0.581003804007494\n+ctgA\t6100\t6200\t0.0888791236810795\n+ctgA\t6200\t6300\t-0.427719512602322\n+ctgA\t6300\t6400\t-0.826540339206424\n+ctgA\t6400\t6500\t-0.997763153807204\n+ctgA\t6500\t6600\t-0.894239655996039\n+ctgA\t6600\t6700\t-0.544476309619657\n+ctgA\t6700\t6800\t-0.044784738601126\n+ctgA\t6800\t6900\t0.467238859047214\n+ctgA\t6900\t7000\t0.850602510646281\n+ctgA\t7000\t7100\t0.999742336443933\n+ctgA\t7100\t7200\t0.873590857634893\n+ctgA\t7200\t7300\t0.50688542994917\n+ctgA\t7300\t7400\t0.000602887030758908\n+ctgA\t7400\t7500\t-0.505845668220208\n+ctgA\t7500\t7600\t-0.873003419373278\n+ctgA\t7600\t7700\t-0.999768979974307\n+ctgA\t7700\t7800\t-0.851235899346026\n+ctgA\t7800\t7900\t-0.468304581575409\n+ctgA\t7900\t8000\t0.043580142003502\n+ctgA\t8000\t8100\t0.543464539388603\n+ctgA\t8100\t8200\t0.893699315464349\n+ctgA\t8200\t8300\t0.997843032362382\n+ctgA\t8300\t8400\t0.827218441309355\n+ctgA\t8400\t8500\t0.428809114528536\n+ctgA\t8500\t8600\t-0.0876780571755001\n+ctgA\t8600\t8700\t-0.580022001304441\n+ctgA\t8700\t8800\t-0.912649778958282\n+ctgA\t8800\t8900\t-0.993968255065378\n+ctgA\t8900\t9000\t-0.801585390637186\n+ctgA\t9000\t9100\t-0.388476165127704\n+ctgA\t9100\t9200\t0.131604733390055\n+ctgA\t9200\t9300\t0.615446655696971\n+ctgA\t9300\t9400\t0.929817798797622\n+ctgA\t9400\t9500\t0.988152215687393\n+ctgA\t9500\t9600\t0.774386809762636\n+ctgA\t9600\t9700\t0.347384505330554\n+ctgA\t9700\t9800\t-0.17527437998892\n+ctgA\t9800\t9900\t-0.64966931671649\n+ctgA\t9900\t10000\t-0.945169845112828\n+ctgA\t10000\t10100\t-0.980406273199548\n+ctgA\t10100\t10200\t-0.745675818665582\n+ctgA\t10200\t10300\t-0.305614388888252\n+ctgA\t10300\t10400\t0.218601708303567\n+ctgA\t10400\t10500\t0.682623146057239\n+ctgA\t10500\t10600\t0.958675934707531\n+ctgA\t10600\t10700\t0.97074555575544\n+ctgA\t10700\t10800\t0.715508491127093\n+ctgA\t10800\t10900\t0.263247394606515\n+ctgA\t10900\t11000\t-0.261502098227572\n+ctgA\t11000\t11100\t-0.714243783495441\n+ctgA\t11100\t11200\t-0.970309689616982\n+ctgA\t11200\t11300\t-0.959188931145217\n+ctgA\t11300\t11400\t-0.683943745214962\n+ctgA\t11400\t11500\t-0.220366267018746\n+ctgA\t11500\t11600\t0.303891763483259\n+ctgA\t11600\t11700\t0.744469472587545\n+ctgA\t11700\t11800\t0.98004838'..b'00\t39000\t0.957987061413159\n+ctgA\t39000\t39100\t0.971321770608431\n+ctgA\t39100\t39200\t0.717191126305919\n+ctgA\t39200\t39300\t0.265573115893276\n+ctgA\t39300\t39400\t-0.259173706691886\n+ctgA\t39400\t39500\t-0.712553872855609\n+ctgA\t39500\t39600\t-0.969723597478254\n+ctgA\t39600\t39700\t-0.959868045160799\n+ctgA\t39700\t39800\t-0.685701063017834\n+ctgA\t39800\t39900\t-0.22271788961521\n+ctgA\t39900\t40000\t0.301593384195272\n+ctgA\t40000\t40100\t0.742857223512596\n+ctgA\t40100\t40200\t0.979566222305013\n+ctgA\t40200\t40300\t0.946539656785734\n+ctgA\t40300\t40400\t0.652871796525078\n+ctgA\t40400\t40500\t0.179427685870145\n+ctgA\t40500\t40600\t-0.343424037051613\n+ctgA\t40600\t40700\t-0.771709742563807\n+ctgA\t40700\t40800\t-0.987495712830468\n+ctgA\t40800\t40900\t-0.931362636389977\n+ctgA\t40900\t41000\t-0.618767443774911\n+ctgA\t41000\t41100\t-0.13578705225865\n+ctgA\t41100\t41200\t0.384583968225014\n+ctgA\t41200\t41300\t0.799055079818084\n+ctgA\t41300\t41400\t0.993496582423937\n+ctgA\t41400\t41500\t0.91436662533687\n+ctgA\t41500\t41600\t0.583454612012034\n+ctgA\t41600\t41700\t0.0918812207856598\n+ctgA\t41700\t41800\t-0.424992790627422\n+ctgA\t41800\t41900\t-0.824839828674128\n+ctgA\t41900\t42000\t-0.997557111133059\n+ctgA\t42000\t42100\t-0.895584817555511\n+ctgA\t42100\t42200\t-0.547002268691819\n+ctgA\t42200\t42300\t-0.0477959413987577\n+ctgA\t42300\t42400\t0.464571584118009\n+ctgA\t42400\t42500\t0.849013630425847\n+ctgA\t42500\t42600\t0.999669368573369\n+ctgA\t42600\t42700\t0.87505389471161\n+ctgA\t42700\t42800\t0.509481606783953\n+ctgA\t42800\t42900\t0.0036173145149015\n+ctgA\t42900\t43000\t-0.503243049637554\n+ctgA\t43000\t43100\t-0.871529272615042\n+ctgA\t43100\t43200\t-0.999829229416663\n+ctgA\t43200\t43300\t-0.85281395456664\n+ctgA\t43300\t43400\t-0.470965905729547\n+ctgA\t43400\t43500\t0.0405683771373384\n+ctgA\t43500\t43600\t0.540931660176769\n+ctgA\t43600\t43700\t0.892342781239334\n+ctgA\t43700\t43800\t0.998036381447947\n+ctgA\t43800\t43900\t0.828908432665215\n+ctgA\t43900\t44000\t0.431530388323292\n+ctgA\t44000\t44100\t-0.0846748370315997\n+ctgA\t44100\t44200\t-0.577563808283757\n+ctgA\t44200\t44300\t-0.911413506635259\n+ctgA\t44300\t44400\t-0.994294326175203\n+ctgA\t44400\t44500\t-0.803384017503629\n+ctgA\t44500\t44600\t-0.391252073800153\n+ctgA\t44600\t44700\t0.128615923384498\n+ctgA\t44700\t44800\t0.613067949822471\n+ctgA\t44800\t44900\t0.928704202868774\n+ctgA\t44900\t45000\t0.988610371990796\n+ctgA\t45000\t45100\t0.776290559345248\n+ctgA\t45100\t45200\t0.350209627413543\n+ctgA\t45200\t45300\t-0.172305817394175\n+ctgA\t45300\t45400\t-0.647374743701449\n+ctgA\t45400\t45500\t-0.944181100478148\n+ctgA\t45500\t45600\t-0.980995619897873\n+ctgA\t45600\t45700\t-0.747680972860835\n+ctgA\t45700\t45800\t-0.308483206798754\n+ctgA\t45800\t45900\t0.215659190848055\n+ctgA\t45900\t46000\t0.680417187299892\n+ctgA\t46000\t46100\t0.957813972427147\n+ctgA\t46100\t46200\t0.971464941829636\n+ctgA\t46200\t46300\t0.717611133783957\n+ctgA\t46300\t46400\t0.266154305421701\n+ctgA\t46400\t46500\t-0.258591372772452\n+ctgA\t46500\t46600\t-0.71213074732663\n+ctgA\t46600\t46700\t-0.969576193139719\n+ctgA\t46700\t46800\t-0.960036951603826\n+ctgA\t46800\t46900\t-0.686139769783315\n+ctgA\t46900\t47000\t-0.223305593418733\n+ctgA\t47000\t47100\t0.301018514798568\n+ctgA\t47100\t47200\t0.742453485856362\n+ctgA\t47200\t47300\t0.979444790500868\n+ctgA\t47300\t47400\t0.946733968569148\n+ctgA\t47400\t47500\t0.653328345765115\n+ctgA\t47500\t47600\t0.180020756138357\n+ctgA\t47600\t47700\t-0.342857754921908\n+ctgA\t47700\t47800\t-0.77132618129705\n+ctgA\t47800\t47900\t-0.987400490722168\n+ctgA\t47900\t48000\t-0.931581974014641\n+ctgA\t48000\t48100\t-0.619240943829511\n+ctgA\t48100\t48200\t-0.13638433070021\n+ctgA\t48200\t48300\t0.38402737933528\n+ctgA\t48300\t48400\t0.798692444052197\n+ctgA\t48400\t48500\t0.993427755984289\n+ctgA\t48500\t48600\t0.914610560427116\n+ctgA\t48600\t48700\t0.583944138115545\n+ctgA\t48700\t48800\t0.0924815408904855\n+ctgA\t48800\t48900\t-0.424446982019324\n+ctgA\t48900\t49000\t-0.824498826652114\n+ctgA\t49000\t49100\t-0.997514814783015\n+ctgA\t49100\t49200\t-0.895852873695781\n+ctgA\t49200\t49300\t-0.547506864779039\n+ctgA\t49300\t49400\t-0.048398130716271\n+ctgA\t49400\t49500\t0.464037621778865\n+ctgA\t49500\t49600\t0.848694928139091\n+ctgA\t49600\t49700\t0.99965368491949\n+ctgA\t49700\t49800\t0.875345548376914\n+ctgA\t49800\t49900\t0.51000028735736\n'
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/1/tiles.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/1/tiles.bed Tue Sep 17 16:54:57 2019 -0400
b
b'@@ -0,0 +1,201 @@\n+ctgA\t0\t50001\tstrand=0,name=ctgA,value=0\n+ctgA\t999\t2000\tstrand=0,name=Remark:hga,value=0\n+ctgA\t999\t1000\tstrand=0,name=FakeSNP,value=0.987\n+ctgA\t999\t20000\tstrand=0,name=b101.2,value=0\n+ctgA\t1049\t9000\tstrand=1,name=EDEN,value=0\n+ctgA\t1049\t3202\tstrand=1,name=agt830.5,value=0\n+ctgA\t1049\t7300\tstrand=1,name=agt221.5,value=0\n+ctgA\t1099\t2000\tstrand=1,name=Gene:hga,value=0\n+ctgA\t1149\t7200\tstrand=1,name=agt767.5,value=0\n+ctgA\t1199\t1900\tstrand=1,name=Protein:HGA,value=0\n+ctgA\t1599\t3000\tstrand=-1,name=Gene:hgb,value=0\n+ctgA\t1658\t1984\tstrand=1,name=f07,value=1110\n+ctgA\t1799\t2900\tstrand=-1,name=Protein:HGB,value=0\n+ctgA\t3013\t6130\tstrand=1,name=f06,value=999\n+ctgA\t4714\t5968\tstrand=-1,name=f05,value=444\n+ctgA\t5232\t5302\tstrand=-1,name=seg04,value=0\n+ctgA\t5409\t7503\tstrand=-1,name=agt830.3,value=0\n+ctgA\t5799\t6101\tstrand=-1,name=seg04,value=0\n+ctgA\t6441\t6854\tstrand=-1,name=seg04,value=0\n+ctgA\t6884\t7241\tstrand=-1,name=seg03,value=0\n+ctgA\t7105\t7211\tstrand=-1,name=seg04,value=0\n+ctgA\t7409\t7737\tstrand=-1,name=seg03,value=0\n+ctgA\t7499\t8000\tstrand=-1,name=agt221.3,value=0\n+ctgA\t7694\t8177\tstrand=-1,name=seg04,value=0\n+ctgA\t7999\t9000\tstrand=-1,name=agt767.3,value=0\n+ctgA\t8054\t8080\tstrand=-1,name=seg03,value=0\n+ctgA\t8305\t8999\tstrand=-1,name=seg03,value=0\n+ctgA\t8544\t8783\tstrand=-1,name=seg04,value=0\n+ctgA\t8868\t8935\tstrand=-1,name=seg04,value=0\n+ctgA\t9403\t9825\tstrand=-1,name=seg04,value=0\n+ctgA\t9999\t11500\tstrand=1,name=Apple1,value=0\n+ctgA\t11910\t15561\tstrand=1,name=m11,value=0\n+ctgA\t12530\t12895\tstrand=1,name=seg12,value=0\n+ctgA\t12999\t17200\tstrand=1,name=Apple2,value=0\n+ctgA\t13121\t13449\tstrand=1,name=seg12,value=0\n+ctgA\t13279\t16394\tstrand=1,name=f08,value=203\n+ctgA\t13451\t13745\tstrand=1,name=seg12,value=0\n+ctgA\t13800\t14007\tstrand=-1,name=m05,value=0\n+ctgA\t13907\t13965\tstrand=1,name=seg12,value=0\n+ctgA\t13997\t14488\tstrand=1,name=seg12,value=0\n+ctgA\t14563\t14899\tstrand=1,name=seg12,value=0\n+ctgA\t14730\t17239\tstrand=-1,name=m14,value=0\n+ctgA\t15184\t15276\tstrand=1,name=seg12,value=0\n+ctgA\t15328\t15533\tstrand=1,name=f10,value=1000\n+ctgA\t15395\t16159\tstrand=1,name=m03,value=0\n+ctgA\t15638\t15736\tstrand=1,name=seg12,value=0\n+ctgA\t15744\t15870\tstrand=1,name=seg12,value=0\n+ctgA\t17022\t17675\tstrand=1,name=m08,value=0\n+ctgA\t17399\t23000\tstrand=1,name=Apple3,value=0\n+ctgA\t17666\t17690\tstrand=1,name=m13,value=0\n+ctgA\t18047\t18552\tstrand=-1,name=m07,value=0\n+ctgA\t18508\t18985\tstrand=1,name=seg08,value=0\n+ctgA\t18988\t19388\tstrand=1,name=seg08,value=0\n+ctgA\t19156\t22915\tstrand=-1,name=f13,value=100\n+ctgA\t19248\t19559\tstrand=1,name=seg06,value=0\n+ctgA\t19495\t19962\tstrand=1,name=seg08,value=0\n+ctgA\t19974\t20260\tstrand=1,name=seg06,value=0\n+ctgA\t20092\t20580\tstrand=1,name=seg08,value=0\n+ctgA\t20378\t20491\tstrand=1,name=seg06,value=0\n+ctgA\t20532\t21005\tstrand=1,name=seg06,value=0\n+ctgA\t20969\t21052\tstrand=1,name=seg08,value=0\n+ctgA\t21121\t21331\tstrand=1,name=seg06,value=0\n+ctgA\t21269\t21277\tstrand=1,name=seg08,value=0\n+ctgA\t21681\t22176\tstrand=1,name=seg06,value=0\n+ctgA\t21684\t22168\tstrand=1,name=seg08,value=0\n+ctgA\t21747\t25612\tstrand=1,name=m12,value=0\n+ctgA\t22131\t24633\tstrand=1,name=f15,value=320\n+ctgA\t22373\t22570\tstrand=1,name=seg06,value=0\n+ctgA\t22563\t22869\tstrand=1,name=seg08,value=0\n+ctgA\t22957\t23298\tstrand=1,name=seg08,value=0\n+ctgA\t23024\t23427\tstrand=1,name=seg06,value=0\n+ctgA\t23071\t23185\tstrand=1,name=f14,value=850\n+ctgA\t23411\t23469\tstrand=1,name=seg08,value=0\n+ctgA\t23931\t23932\tstrand=1,name=seg08,value=0\n+ctgA\t24227\t24510\tstrand=1,name=seg11,value=0\n+ctgA\t24327\t24787\tstrand=1,name=seg08,value=0\n+ctgA\t24561\t28338\tstrand=1,name=f02,value=208\n+ctgA\t24867\t25012\tstrand=1,name=seg11,value=0\n+ctgA\t25211\t25426\tstrand=1,name=seg11,value=0\n+ctgA\t25227\t25367\tstrand=1,name=seg08,value=0\n+ctgA\t25793\t25874\tstrand=1,name=seg11,value=0\n+ctgA\t26074\t26519\tstrand=1,name=seg11,value=0\n+ctgA\t26121\t26126\tstrand=1,name=seg02,value=0\n+ctgA\t26496\t26869\tstrand=1,name=seg02,value=0\n+ctgA\t26502\t26799\tstrand=-1,name=seg05,value=0\n+ctgA\t26929\t26940\tstrand=1,name=seg11,value=0\n+ctgA\t26974\t27063\tstrand=1,name='..b'g05,value=0\n+ctgA\t30240\t30246\tstrand=1,name=seg11,value=0\n+ctgA\t30328\t30774\tstrand=1,name=seg02,value=0\n+ctgA\t30464\t30798\tstrand=-1,name=seg05,value=0\n+ctgA\t30574\t30738\tstrand=1,name=seg11,value=0\n+ctgA\t30577\t31748\tstrand=1,name=m06,value=0\n+ctgA\t30807\t31306\tstrand=1,name=seg02,value=0\n+ctgA\t30809\t31307\tstrand=1,name=seg10,value=0\n+ctgA\t31231\t31236\tstrand=-1,name=seg05,value=0\n+ctgA\t31420\t31817\tstrand=-1,name=seg05,value=0\n+ctgA\t31515\t31729\tstrand=1,name=seg02,value=0\n+ctgA\t31752\t32154\tstrand=1,name=seg02,value=0\n+ctgA\t31760\t31984\tstrand=1,name=seg10,value=0\n+ctgA\t32009\t32057\tstrand=-1,name=seg05,value=0\n+ctgA\t32207\t32680\tstrand=-1,name=seg05,value=0\n+ctgA\t32328\t32359\tstrand=1,name=seg01,value=0\n+ctgA\t32373\t32937\tstrand=1,name=seg10,value=0\n+ctgA\t32594\t32696\tstrand=1,name=seg02,value=0\n+ctgA\t32891\t32901\tstrand=1,name=seg02,value=0\n+ctgA\t33052\t33325\tstrand=-1,name=seg05,value=0\n+ctgA\t33126\t33388\tstrand=1,name=seg02,value=0\n+ctgA\t33324\t35791\tstrand=1,name=m04,value=0\n+ctgA\t33437\t33868\tstrand=-1,name=seg05,value=0\n+ctgA\t33438\t33443\tstrand=1,name=seg02,value=0\n+ctgA\t33758\t34209\tstrand=1,name=seg02,value=0\n+ctgA\t34243\t34313\tstrand=-1,name=seg05,value=0\n+ctgA\t34400\t34466\tstrand=1,name=seg02,value=0\n+ctgA\t34604\t34983\tstrand=-1,name=seg05,value=0\n+ctgA\t35332\t35507\tstrand=-1,name=seg05,value=0\n+ctgA\t35641\t35904\tstrand=-1,name=seg05,value=0\n+ctgA\t36033\t38167\tstrand=1,name=f09,value=100\n+ctgA\t36615\t37057\tstrand=-1,name=seg09,value=0\n+ctgA\t36648\t40440\tstrand=-1,name=f03,value=300\n+ctgA\t37207\t37227\tstrand=-1,name=seg09,value=0\n+ctgA\t37241\t38653\tstrand=1,name=f04,value=10\n+ctgA\t37496\t40559\tstrand=-1,name=m15,value=0\n+ctgA\t39264\t39361\tstrand=-1,name=seg15,value=0\n+ctgA\t39752\t40034\tstrand=-1,name=seg15,value=0\n+ctgA\t40514\t40954\tstrand=-1,name=seg15,value=0\n+ctgA\t41136\t41318\tstrand=-1,name=seg14,value=0\n+ctgA\t41251\t41365\tstrand=-1,name=seg15,value=0\n+ctgA\t41491\t41504\tstrand=-1,name=seg15,value=0\n+ctgA\t41753\t41948\tstrand=-1,name=seg14,value=0\n+ctgA\t41940\t42377\tstrand=-1,name=seg15,value=0\n+ctgA\t42056\t42474\tstrand=-1,name=seg14,value=0\n+ctgA\t42747\t42954\tstrand=-1,name=seg15,value=0\n+ctgA\t42889\t43270\tstrand=-1,name=seg14,value=0\n+ctgA\t43394\t43811\tstrand=-1,name=seg14,value=0\n+ctgA\t43400\t43897\tstrand=-1,name=seg15,value=0\n+ctgA\t44042\t44113\tstrand=-1,name=seg15,value=0\n+ctgA\t44064\t44556\tstrand=-1,name=seg14,value=0\n+ctgA\t44190\t44514\tstrand=-1,name=seg07,value=0\n+ctgA\t44398\t44888\tstrand=-1,name=seg15,value=0\n+ctgA\t44551\t45043\tstrand=-1,name=seg07,value=0\n+ctgA\t44704\t47713\tstrand=-1,name=f01,value=400\n+ctgA\t44762\t45030\tstrand=-1,name=seg14,value=0\n+ctgA\t45230\t45488\tstrand=-1,name=seg14,value=0\n+ctgA\t45280\t45375\tstrand=-1,name=seg15,value=0\n+ctgA\t45372\t45600\tstrand=-1,name=seg07,value=0\n+ctgA\t45710\t46041\tstrand=-1,name=seg15,value=0\n+ctgA\t45789\t46022\tstrand=-1,name=seg14,value=0\n+ctgA\t45896\t46315\tstrand=-1,name=seg07,value=0\n+ctgA\t46011\t48851\tstrand=1,name=m09,value=0\n+ctgA\t46091\t46318\tstrand=-1,name=seg14,value=0\n+ctgA\t46424\t46564\tstrand=-1,name=seg15,value=0\n+ctgA\t46490\t46890\tstrand=-1,name=seg07,value=0\n+ctgA\t46737\t47087\tstrand=-1,name=seg15,value=0\n+ctgA\t46815\t46992\tstrand=-1,name=seg14,value=0\n+ctgA\t46989\t48410\tstrand=-1,name=f11,value=100\n+ctgA\t47125\t47297\tstrand=-1,name=seg07,value=0\n+ctgA\t47328\t47595\tstrand=-1,name=seg15,value=0\n+ctgA\t47448\t47829\tstrand=-1,name=seg14,value=0\n+ctgA\t47734\t47983\tstrand=-1,name=seg07,value=0\n+ctgA\t47857\t47979\tstrand=-1,name=seg15,value=0\n+ctgA\t48168\t48453\tstrand=-1,name=seg15,value=0\n+ctgA\t48252\t48366\tstrand=1,name=m01,value=0\n+ctgA\t48446\t48709\tstrand=-1,name=seg07,value=0\n+ctgA\t48930\t49186\tstrand=-1,name=seg07,value=0\n+ctgA\t49405\t49476\tstrand=1,name=seg13,value=0\n+ctgA\t49471\t49699\tstrand=-1,name=seg07,value=0\n+ctgA\t49757\t50000\tstrand=-1,name=f12,value=3040\n+ctgA\t49761\t50000\tstrand=1,name=seg13,value=0\n+ctgA\t49956\t50000\tstrand=-1,name=seg07,value=0\n+ctgB\t0\t6079\tstrand=0,name=ctgB,value=0\n+ctgB\t1658\t1984\tstrand=1,name=f07,value=0\n+ctgB\t3013\t6130\tstrand=1,name=f06,value=0\n+ctgB\t4714\t5968\tstrand=-1,name=f05,value=0\n'
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/alignments/1.maf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/alignments/1.maf Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,18 @@
+##maf version=1 scoring=lastz.v1.04.00
+# lastz.v1.04.00 --strand=both --ambiguous=iupac --chain --traceback=160M --format=maf --action:target=multiple
+#
+# hsp_threshold      = 3000
+# gapped_threshold   = 3000
+# x_drop             = 910
+# y_drop             = 9400
+# gap_open_penalty   = 400
+# gap_extend_penalty = 30
+#        A    C    G    T
+#   A   91 -114  -31 -123
+#   C -114  100 -125  -31
+#   G  -31 -125  100 -114
+#   T -123  -31 -114   91
+a score=8421
+s CP020543.1 76314 796 + 4617024 ATGTTGCTTATGGCATTGATAAAAACTTTCTTTTTGGTTGTGGTGTTTCAATCACGTCAGTTTTGTTACATAACAACGACGTGAGTTTTGTTTTCCACGTTTTTATTGATGATATCCCTGAAGCCGATATCCAGCGTTTAGCCCAATTGGCGAAAAGCTATCGTACCTGTATCCAGATCCATCTGGTAAATTGTGAACGGCTTAAGGCATTACCGACGACCAAAAATTGGTCTATTGCCATGTATTTCCGTTTTGTAATTGCAGATTACTTTATTGA-------TCAACAAGATAAGATCCTTTACCTGGATGCTGATATCGCCTGTCAGGGAAACTTAAAGCCGCTGATAACAATGGATCTTGCCAATAACGTTGCTGCTGTTGTTACTGAACGCGATGCTAACTGGTGGTCGTTACGGGGTCAAAGTCTGCAGTGTAATGAACTTGAAAAGGGTTACTTTAATTCAGGTGTCCTGTTAATTAAT-----ACACTAGCGTGGGCGCAG----GAGTCCGTTTCTGCTAAAGCGATGTCGATGCTTGCTGATAAAACCATCGTTTCCCATTTAACCTATATGGATCAAGATATTCTTAATCTTATCCTGTTAGGGAAAGTTAAATTCATTGATGCTAAATACAATACGCAG---TTTAGTTTAAATTATGAATTAAAAAAATCATTTGTTTGTC------------------------CAATTAATGATGAAACCGTATTAATTCATTATGTCGGCCCGACAAAACCCTGGCATTACTGGGCCAGTTATCCAAGTGCGCAACCATTTATCAAAGCCAAAGAAGCATCGCCCTGGAAAAA
+s CP020543.2 77326 805 + 4617024 ATGTTTCCTACGGTATCGATAAGAATTTTTTGTATGGTGCTGGCGTTTCAATTTCTTCCGTTTTGATTAATAATTCAGATATTAATTTTGTCTTTCATGTTTTCACTGATTATGTGGATGATGATTATTTAAAGTCATTTAATGAAACAGCAAAACAATTTAATACCTCAATTATTGTATATTTAATTGACCCCAAATACTTTGCTGATCTGCCGACGTCACAGTTTTGGTCGTACGCGACATACTTCAGGGTATTGTCTTTTGAATATCTGAGTGAAAGTATTTCCACA-------CTGCTGTATCTGGATGCCGATGTTGTTTGTAAAGGAAGCCTGAAACCTCTCACAGAAATTATATTTAAAGATGAGTTTGCTGCGGTCATTCCTGA---CAATGATAGTACTCAGGCGGCATGTGCAAAACGCCTCAACATTCCCGAAATGAATGGACGTTATTTCAATGCAGGCGTTATCTATGTCAATCTTAAAAAATGGCATGAA-GCAAATTTGACACCGTATTTACTCAAACTTTTACGA--------GGGGAAACTAAATATGGCTCTCTTAAATATTTAGATCAGGATGCGTTGAATATCGC------------ATTTAA---TATGAATAATATCTACCTTGCGAAGGGTTTTGATACTATTTATACCCTGAAAAACGAACTTTATGATCGTAGTCATCGAAAGTATCAGCAAACCATTACCGATAAAACAGTGTTGATTCACTATACAGGGATAACTAAACCATGGCATAGCTGGGCTGGATATCCGTCTGCATCATACTTTAATATCGCGCGTGAACAATCTCCCTGGAAGAA
+s CP020543.3 77326 805 + 4617024 ATGTTTCCTACGGTATCGATAAGAATTTTTTGTATGGTGCTGGCGTTTCAATTTCTTCCGTTTTGATTAATAATTCAGATATTAATTTTGTCTTTCATGTTTTCACTGATTATGTGGATGATGATTATTTAAAGTCATTTAATGAAACAGCAAAACAATTTAATACCTCAATTATTGTATATTTAATTGACCCCAAATACTTTGCTGATCTGCCGACGTCACAGTTTTGGTCGTACGCGACATACTTCAGGGTATTGTCTTTTGAATATCTGAGTGAAAGTATTTCCACA-------CTGCTGTATCTGGATGCCGATGTTGTTTGTAAAGGAAGCCTGAAACCTCTCACAGAAATTATATTTAAAGATGAGTTTGCTGCGGTCATTCCTGA---CAATGATAGTACTCAGGCGGCATGTGCAAAACGCCTCAACATTCCCGAAATGAATGGACGTTATTTCAATGCAGGCGTTATCTATGTCAATCTTAAAAAATGGCATGAA-GCAAATTTGACACCGTATTTACTCAAACTTTTACGA--------GGGGAAACTAAATATGGCTCTCTTAAATATTTAGATCAGGATGCGTTGAATATCGC------------ATTTAA---TATGAATAATATCTACCTTGCGAAGGGTTTTGATACTATTTATACCCTGAAAAACGAACTTTATGATCGTAGTCATCGAAAGTATCAGCAAACCATTACCGATAAAACAGTGTTGATTCACTATACAGGGATAACTAAACCATGGCATAGCTGGGCTGGATATCCGTCTGCATCATACTTTAATATCGCGCGTGAACAATCTCCCTGGAAGAA
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/alignments/1.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/alignments/1.tab Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,3 @@
+CP020543.1 76314 77110 CP020543.2 77326 78131
+CP020543.1 76314 77110 CP020543.3 77326 78131
+CP020543.2 77326 78131 CP020543.3 77326 78131
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/binlinks/1.out
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/binlinks/1.out Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,36 @@
+chr22 14000000 14999999 326.0000
+chr22 15000000 15999999 2532.0000
+chr22 16000000 16999999 4175.0000
+chr22 17000000 17999999 3303.0000
+chr22 18000000 18999999 2432.0000
+chr22 19000000 19999999 2323.0000
+chr22 20000000 20999999 3353.0000
+chr22 21000000 21999999 4355.0000
+chr22 22000000 22999999 3372.0000
+chr22 23000000 23999999 3445.0000
+chr22 24000000 24999999 2953.0000
+chr22 25000000 25999999 4186.0000
+chr22 26000000 26999999 2234.0000
+chr22 27000000 27999999 1921.0000
+chr22 28000000 28999999 2273.0000
+chr22 29000000 29999999 3312.0000
+chr22 30000000 30999999 3516.0000
+chr22 31000000 31999999 3814.0000
+chr22 32000000 32999999 2528.0000
+chr22 33000000 33999999 4752.0000
+chr22 34000000 34999999 3032.0000
+chr22 35000000 35999999 3696.0000
+chr22 36000000 36999999 3168.0000
+chr22 37000000 37999999 3435.0000
+chr22 38000000 38999999 2384.0000
+chr22 39000000 39999999 3101.0000
+chr22 40000000 40999999 2732.0000
+chr22 41000000 41999999 2534.0000
+chr22 42000000 42999999 3479.0000
+chr22 43000000 43999999 4606.0000
+chr22 44000000 44999999 2126.0000
+chr22 45000000 45999999 4586.0000
+chr22 46000000 46999999 3711.0000
+chr22 47000000 47999999 5564.0000
+chr22 48000000 48999999 4823.0000
+chr22 49000000 49999999 1994.0000
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/binlinks/1.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/binlinks/1.tab Tue Sep 17 16:54:57 2019 -0400
b
b'@@ -0,0 +1,54401 @@\n+chr22\t14430407\t14430408\tchr22\t14430407\t14430408\n+chr22\t14431496\t14431497\tchr22\t14431496\t14431497\n+chr22\t14433658\t14433659\tchr22\t14433658\t14433659\n+chr22\t14433790\t14433791\tchr22\t14433790\t14433791\n+chr22\t14435069\t14435070\tchr22\t14435069\t14435070\n+chr22\t14435941\t14435942\tchr22\t14435941\t14435942\n+chr22\t14438069\t14438070\tchr22\t14438069\t14438070\n+chr22\t14438851\t14438852\tchr22\t14438851\t14438852\n+chr22\t14438882\t14438883\tchr22\t14438882\t14438883\n+chr22\t14450516\t14450517\tchr22\t14450516\t14450517\n+chr22\t14456438\t14456439\tchr22\t14456438\t14456439\n+chr22\t14464928\t14464929\tchr22\t14464928\t14464929\n+chr22\t14478313\t14478314\tchr22\t14478313\t14478314\n+chr22\t14491378\t14491379\tchr22\t14491378\t14491379\n+chr22\t14493891\t14493892\tchr22\t14493891\t14493892\n+chr22\t14501056\t14501057\tchr22\t14501056\t14501057\n+chr22\t14510557\t14510558\tchr22\t14510557\t14510558\n+chr22\t14513493\t14513499\tchr22\t14513493\t14513499\n+chr22\t14513502\t14513515\tchr22\t14513502\t14513515\n+chr22\t14513704\t14513705\tchr22\t14513704\t14513705\n+chr22\t14515015\t14515016\tchr22\t14515015\t14515016\n+chr22\t14518568\t14518569\tchr22\t14518568\t14518569\n+chr22\t14520369\t14520370\tchr22\t14520369\t14520370\n+chr22\t14520990\t14520991\tchr22\t14520990\t14520991\n+chr22\t14530197\t14530198\tchr22\t14530197\t14530198\n+chr22\t14535258\t14535259\tchr22\t14535258\t14535259\n+chr22\t14535303\t14535304\tchr22\t14535303\t14535304\n+chr22\t14535810\t14535811\tchr22\t14535810\t14535811\n+chr22\t14537570\t14537571\tchr22\t14537570\t14537571\n+chr22\t14539157\t14539158\tchr22\t14539157\t14539158\n+chr22\t14540012\t14540013\tchr22\t14540012\t14540013\n+chr22\t14547901\t14547902\tchr22\t14547901\t14547902\n+chr22\t14552593\t14552593\tchr22\t14552593\t14552593\n+chr22\t14563843\t14563844\tchr22\t14563843\t14563844\n+chr22\t14567498\t14567499\tchr22\t14567498\t14567499\n+chr22\t14592249\t14592250\tchr22\t14592249\t14592250\n+chr22\t14594774\t14594775\tchr22\t14594774\t14594775\n+chr22\t14601088\t14601089\tchr22\t14601088\t14601089\n+chr22\t14601893\t14601894\tchr22\t14601893\t14601894\n+chr22\t14624793\t14624794\tchr22\t14624793\t14624794\n+chr22\t14627726\t14627727\tchr22\t14627726\t14627727\n+chr22\t14628429\t14628430\tchr22\t14628429\t14628430\n+chr22\t14630858\t14630859\tchr22\t14630858\t14630859\n+chr22\t14632412\t14632413\tchr22\t14632412\t14632413\n+chr22\t14632531\t14632532\tchr22\t14632531\t14632532\n+chr22\t14634046\t14634047\tchr22\t14634046\t14634047\n+chr22\t14635187\t14635188\tchr22\t14635187\t14635188\n+chr22\t14635516\t14635517\tchr22\t14635516\t14635517\n+chr22\t14640306\t14640307\tchr22\t14640306\t14640307\n+chr22\t14641411\t14641412\tchr22\t14641411\t14641412\n+chr22\t14645052\t14645053\tchr22\t14645052\t14645053\n+chr22\t14650487\t14650488\tchr22\t14650487\t14650488\n+chr22\t14650678\t14650679\tchr22\t14650678\t14650679\n+chr22\t14653529\t14653530\tchr22\t14653529\t14653530\n+chr22\t14659839\t14659840\tchr22\t14659839\t14659840\n+chr22\t14661207\t14661208\tchr22\t14661207\t14661208\n+chr22\t14665945\t14665946\tchr22\t14665945\t14665946\n+chr22\t14666512\t14666513\tchr22\t14666512\t14666513\n+chr22\t14667788\t14667789\tchr22\t14667788\t14667789\n+chr22\t14675107\t14675108\tchr22\t14675107\t14675108\n+chr22\t14676131\t14676132\tchr22\t14676131\t14676132\n+chr22\t14677414\t14677415\tchr22\t14677414\t14677415\n+chr22\t14680257\t14680258\tchr22\t14680257\t14680258\n+chr22\t14683815\t14683816\tchr22\t14683815\t14683816\n+chr22\t14684374\t14684375\tchr22\t14684374\t14684375\n+chr22\t14685465\t14685466\tchr22\t14685465\t14685466\n+chr22\t14687252\t14687253\tchr22\t14687252\t14687253\n+chr22\t14690722\t14690723\tchr22\t14690722\t14690723\n+chr22\t14691226\t14691227\tchr22\t14691226\t14691227\n+chr22\t14692333\t14692334\tchr22\t14692333\t14692334\n+chr22\t14693116\t14693117\tchr22\t14693116\t14693117\n+chr22\t14694552\t14694553\tchr22\t14694552\t14694553\n+chr22\t14694785\t14694786\tchr22\t14694785\t14694786\n+chr22\t14695944\t14695945\tchr22\t14695944\t14695945\n+chr22\t14706354\t14706355\tchr22\t14706354\t14706355\n+chr22\t14713954\t14713955\tchr22\t14713954\t14713955\n+chr22\t14727541\t14727542\tchr22\t14727541\t14727542\n+chr22\t14730348\t14730349\tchr22\t14730348\t14730349\n+chr22\t14731603\t14731604\tchr22\t14731603\t14731604\n+chr22\t14745288\t14745289\tchr22\t14745288\t14745289\n+chr22\t14749510\t14749511\tchr22\t14749510\t14749511\n+chr22\t147'..b'86483\tchr22\t49486482\t49486483\n+chr22\t49486500\t49486501\tchr22\t49486500\t49486501\n+chr22\t49487181\t49487182\tchr22\t49487181\t49487182\n+chr22\t49487263\t49487264\tchr22\t49487263\t49487264\n+chr22\t49488275\t49488276\tchr22\t49488275\t49488276\n+chr22\t49488476\t49488477\tchr22\t49488476\t49488477\n+chr22\t49491033\t49491034\tchr22\t49491033\t49491034\n+chr22\t49491596\t49491597\tchr22\t49491596\t49491597\n+chr22\t49492310\t49492322\tchr22\t49492310\t49492322\n+chr22\t49492567\t49492568\tchr22\t49492567\t49492568\n+chr22\t49493600\t49493603\tchr22\t49493600\t49493603\n+chr22\t49493605\t49493607\tchr22\t49493605\t49493607\n+chr22\t49493611\t49493612\tchr22\t49493611\t49493612\n+chr22\t49493880\t49493881\tchr22\t49493880\t49493881\n+chr22\t49496185\t49496186\tchr22\t49496185\t49496186\n+chr22\t49497032\t49497033\tchr22\t49497032\t49497033\n+chr22\t49497636\t49497637\tchr22\t49497636\t49497637\n+chr22\t49498215\t49498216\tchr22\t49498215\t49498216\n+chr22\t49498496\t49498497\tchr22\t49498496\t49498497\n+chr22\t49498589\t49498590\tchr22\t49498589\t49498590\n+chr22\t49499419\t49499420\tchr22\t49499419\t49499420\n+chr22\t49503798\t49503799\tchr22\t49503798\t49503799\n+chr22\t49504348\t49504349\tchr22\t49504348\t49504349\n+chr22\t49504882\t49504883\tchr22\t49504882\t49504883\n+chr22\t49505364\t49505365\tchr22\t49505364\t49505365\n+chr22\t49509715\t49509716\tchr22\t49509715\t49509716\n+chr22\t49509904\t49509905\tchr22\t49509904\t49509905\n+chr22\t49510003\t49510004\tchr22\t49510003\t49510004\n+chr22\t49510877\t49510877\tchr22\t49510877\t49510877\n+chr22\t49510974\t49510975\tchr22\t49510974\t49510975\n+chr22\t49510980\t49510981\tchr22\t49510980\t49510981\n+chr22\t49520329\t49520329\tchr22\t49520329\t49520329\n+chr22\t49520407\t49520408\tchr22\t49520407\t49520408\n+chr22\t49521196\t49521197\tchr22\t49521196\t49521197\n+chr22\t49521410\t49521410\tchr22\t49521410\t49521410\n+chr22\t49521527\t49521528\tchr22\t49521527\t49521528\n+chr22\t49527366\t49527367\tchr22\t49527366\t49527367\n+chr22\t49527799\t49527800\tchr22\t49527799\t49527800\n+chr22\t49527837\t49527841\tchr22\t49527837\t49527841\n+chr22\t49528245\t49528246\tchr22\t49528245\t49528246\n+chr22\t49528367\t49528368\tchr22\t49528367\t49528368\n+chr22\t49528372\t49528373\tchr22\t49528372\t49528373\n+chr22\t49528384\t49528385\tchr22\t49528384\t49528385\n+chr22\t49528428\t49528429\tchr22\t49528428\t49528429\n+chr22\t49528433\t49528434\tchr22\t49528433\t49528434\n+chr22\t49528485\t49528486\tchr22\t49528485\t49528486\n+chr22\t49528489\t49528490\tchr22\t49528489\t49528490\n+chr22\t49528550\t49528551\tchr22\t49528550\t49528551\n+chr22\t49528624\t49528625\tchr22\t49528624\t49528625\n+chr22\t49528784\t49528785\tchr22\t49528784\t49528785\n+chr22\t49529350\t49529351\tchr22\t49529350\t49529351\n+chr22\t49532713\t49532714\tchr22\t49532713\t49532714\n+chr22\t49533008\t49533009\tchr22\t49533008\t49533009\n+chr22\t49533093\t49533094\tchr22\t49533093\t49533094\n+chr22\t49535946\t49535947\tchr22\t49535946\t49535947\n+chr22\t49535974\t49535974\tchr22\t49535974\t49535974\n+chr22\t49544617\t49544618\tchr22\t49544617\t49544618\n+chr22\t49546009\t49546010\tchr22\t49546009\t49546010\n+chr22\t49546146\t49546147\tchr22\t49546146\t49546147\n+chr22\t49550222\t49550223\tchr22\t49550222\t49550223\n+chr22\t49550227\t49550228\tchr22\t49550227\t49550228\n+chr22\t49550368\t49550369\tchr22\t49550368\t49550369\n+chr22\t49551436\t49551437\tchr22\t49551436\t49551437\n+chr22\t49556000\t49556001\tchr22\t49556000\t49556001\n+chr22\t49556453\t49556454\tchr22\t49556453\t49556454\n+chr22\t49557133\t49557134\tchr22\t49557133\t49557134\n+chr22\t49559740\t49559741\tchr22\t49559740\t49559741\n+chr22\t49563544\t49563545\tchr22\t49563544\t49563545\n+chr22\t49563999\t49564000\tchr22\t49563999\t49564000\n+chr22\t49564647\t49564648\tchr22\t49564647\t49564648\n+chr22\t49566506\t49566507\tchr22\t49566506\t49566507\n+chr22\t49566637\t49566638\tchr22\t49566637\t49566638\n+chr22\t49567306\t49567307\tchr22\t49567306\t49567307\n+chr22\t49568039\t49568040\tchr22\t49568039\t49568040\n+chr22\t49568917\t49568918\tchr22\t49568917\t49568918\n+chr22\t49570096\t49570097\tchr22\t49570096\t49570097\n+chr22\t49573895\t49573896\tchr22\t49573895\t49573896\n+chr22\t49577368\t49577369\tchr22\t49577368\t49577369\n+chr22\t49587755\t49587756\tchr22\t49587755\t49587756\n+chr22\t49589481\t49589482\tchr22\t49589481\t49589482\n+chr22\t49590162\t49590163\tchr22\t49590162\t49590163\n+chr22\t49590286\t49590286\tchr22\t49590286\t49590286\n'
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/bundlelinks/1.out
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/bundlelinks/1.out Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,7 @@
+CP020543.1 0 4617024 CP020543.1 0 4617024 nlinks=229,bsize1=4617025,bsize2=4617025,bidentity1=1.000000,bidentity2=1.000000,depth1=0,depth2=0,
+CP024090.1 0 4592839 CP020543.1 48 4617024 nlinks=129,bsize1=4301468,bsize2=4302256,bidentity1=0.936560,bidentity2=0.931834,depth1=0,depth2=1,
+CP024090.1 6045 2710183 CP020543.1 1445092 4596442 nlinks=13,bsize1=311624,bsize2=311603,bidentity1=0.115240,bidentity2=0.098879,depth1=1,depth2=6,
+Ecoli_C 0 4576245 CP020543.1 48 4617024 nlinks=143,bsize1=4205464,bsize2=4205425,bidentity1=0.918977,bidentity2=0.910861,depth1=0,depth2=2,
+Ecoli_C 6045 3171038 CP020543.1 1445092 4610931 nlinks=13,bsize1=311710,bsize2=311708,bidentity1=0.098487,bidentity2=0.098460,depth1=1,depth2=4,
+LT906474.1 0 4625920 CP020543.1 48 4617024 nlinks=145,bsize1=4256857,bsize2=4256314,bidentity1=0.920218,bidentity2=0.921883,depth1=0,depth2=3,
+LT906474.1 6045 3171006 CP020543.1 1445092 4610931 nlinks=13,bsize1=311711,bsize2=311708,bidentity1=0.098488,bidentity2=0.098460,depth1=1,depth2=5,
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/bundlelinks/1.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/bundlelinks/1.tab Tue Sep 17 16:54:57 2019 -0400
b
b'@@ -0,0 +1,685 @@\n+CP020543.1\t0\t4617024\tCP020543.1\t0\t4617024\n+CP020543.1\t76314\t77110\tCP020543.1\t77326\t78131\n+CP020543.1\t77321\t78128\tCP020543.1\t79047\t79860\n+CP020543.1\t102706\t104726\tCP020543.1\t102997\t105017\n+CP020543.1\t108247\t108417\tCP020543.1\t159316\t159496\n+CP020543.1\t145882\t148086\tCP020543.1\t159945\t162164\n+CP020543.1\t159323\t159501\tCP020543.1\t193381\t193551\n+CP020543.1\t191457\t192615\tCP020543.1\t193573\t194731\n+CP020543.1\t193409\t193537\tCP020543.1\t365302\t365428\n+CP020543.1\t214100\t217958\tCP020543.1\t390639\t394509\n+CP020543.1\t218856\t219293\tCP020543.1\t394870\t395305\n+CP020543.1\t219682\t219936\tCP020543.1\t398530\t398783\n+CP020543.1\t264983\t266574\tCP020543.1\t780617\t782206\n+CP020543.1\t266634\t266740\tCP020543.1\t841910\t841999\n+CP020543.1\t300586\t300717\tCP020543.1\t841894\t842006\n+CP020543.1\t360510\t360595\tCP020543.1\t841968\t842079\n+CP020543.1\t400886\t402174\tCP020543.1\t845916\t847177\n+CP020543.1\t402816\t402923\tCP020543.1\t1077813\t1077900\n+CP020543.1\t402816\t402919\tCP020543.1\t854647\t854749\n+CP020543.1\t488235\t493644\tCP020543.1\t1181978\t1187387\n+CP020543.1\t493746\t494090\tCP020543.1\t1187244\t1187420\n+CP020543.1\t499174\t502269\tCP020543.1\t1323985\t1327074\n+CP020543.1\t892915\t894797\tCP020543.1\t1329143\t1331076\n+CP020543.1\t911268\t911422\tCP020543.1\t1369208\t1369362\n+CP020543.1\t927888\t929109\tCP020543.1\t1574236\t1575457\n+CP020543.1\t1064147\t1064770\tCP020543.1\t1575883\t1576506\n+CP020543.1\t1077792\t1077897\tCP020543.1\t1581881\t1581993\n+CP020543.1\t1081054\t1081912\tCP020543.1\t1656157\t1657006\n+CP020543.1\t1085135\t1085253\tCP020543.1\t1781992\t1782123\n+CP020543.1\t1101087\t1102310\tCP020543.1\t1799894\t1801117\n+CP020543.1\t1138439\t1138543\tCP020543.1\t1803164\t1803269\n+CP020543.1\t1147791\t1149021\tCP020543.1\t1838473\t1839703\n+CP020543.1\t1155816\t1157048\tCP020543.1\t1853591\t1854823\n+CP020543.1\t1574236\t1575457\tCP020543.1\t1853602\t1854823\n+CP020543.1\t1678158\t1678207\tCP020543.1\t1866006\t1866055\n+CP020543.1\t1828688\t1831483\tCP020543.1\t1894957\t1897752\n+CP020543.1\t1838462\t1839723\tCP020543.1\t2004102\t2005360\n+CP020543.1\t1842549\t1843329\tCP020543.1\t2155235\t2156008\n+CP020543.1\t1853596\t1854824\tCP020543.1\t2269335\t2270563\n+CP020543.1\t1853602\t1854855\tCP020543.1\t2332410\t2333659\n+CP020543.1\t1894957\t1897752\tCP020543.1\t2333886\t2336681\n+CP020543.1\t2004123\t2005344\tCP020543.1\t2339892\t2341113\n+CP020543.1\t2096363\t2096542\tCP020543.1\t2380305\t2380476\n+CP020543.1\t2293708\t2294975\tCP020543.1\t2388016\t2389278\n+CP020543.1\t2296128\t2296305\tCP020543.1\t2497777\t2497953\n+CP020543.1\t2371965\t2375375\tCP020543.1\t2548202\t2551654\n+CP020543.1\t2388057\t2389287\tCP020543.1\t2602702\t2603932\n+CP020543.1\t2615923\t2616676\tCP020543.1\t2616218\t2616854\n+CP020543.1\t2633394\t2634480\tCP020543.1\t2632860\t2633945\n+CP020543.1\t2705136\t2705280\tCP020543.1\t2704349\t2704492\n+CP020543.1\t2712730\t2712905\tCP020543.1\t2710837\t2711012\n+CP020543.1\t2774831\t2774938\tCP020543.1\t2753662\t2753769\n+CP020543.1\t2783453\t2783626\tCP020543.1\t2783588\t2783761\n+CP020543.1\t2790658\t2791100\tCP020543.1\t2790839\t2791281\n+CP020543.1\t2807069\t2807196\tCP020543.1\t2819763\t2819891\n+CP020543.1\t2923960\t2924461\tCP020543.1\t2924479\t2924981\n+CP020543.1\t2951790\t2952305\tCP020543.1\t2951829\t2952388\n+CP020543.1\t2984407\t2985207\tCP020543.1\t2986828\t2987620\n+CP020543.1\t2990556\t2990700\tCP020543.1\t2989738\t2989882\n+CP020543.1\t3027435\t3028245\tCP020543.1\t3001332\t3002142\n+CP020543.1\t3055045\t3055198\tCP020543.1\t3029719\t3029870\n+CP020543.1\t3058929\t3059049\tCP020543.1\t3041441\t3041561\n+CP020543.1\t3071765\t3071902\tCP020543.1\t3055059\t3055199\n+CP020543.1\t3081481\t3081548\tCP020543.1\t3071781\t3071851\n+CP020543.1\t3081481\t3081583\tCP020543.1\t3081573\t3081676\n+CP020543.1\t3105649\t3106368\tCP020543.1\t3105857\t3106657\n+CP020543.1\t3109980\t3110604\tCP020543.1\t3110085\t3110640\n+CP020543.1\t3124266\t3124459\tCP020543.1\t3124358\t3124548\n+CP020543.1\t3150133\t3150513\tCP020543.1\t3150513\t3150893\n+CP020543.1\t3151990\t3153062\tCP020543.1\t3153858\t3154933\n+CP020543.1\t3153871\t3157612\tCP020543.1\t3347863\t3351637\n+CP020543.1\t3161535\t3161773\tCP020543.1\t3365501\t3365739\n+CP020543.1\t3171832\t3171934\tCP020543.1\t3366180\t3366271\n+CP020543.1\t3179259\t3179298\tCP020543.1\t3366281\t3366320\n+CP020543.1\t3'..b'3531861\n+CP020543.1\t3892097\t3892197\tCP020543.1\t3539127\t3539218\n+CP020543.1\t3904453\t3905824\tCP020543.1\t3574735\t3576106\n+CP020543.1\t3929668\t3929711\tCP020543.1\t3577285\t3577328\n+CP020543.1\t3934062\t3934167\tCP020543.1\t3606837\t3606936\n+CP020543.1\t3984136\t3984213\tCP020543.1\t3634839\t3634938\n+CP020543.1\t3989894\t3990033\tCP020543.1\t3705617\t3705756\n+CP020543.1\t4010065\t4010120\tCP020543.1\t3735605\t3735657\n+CP020543.1\t4024208\t4024311\tCP020543.1\t3762274\t3762391\n+CP020543.1\t4024303\t4024390\tCP020543.1\t3786236\t3786323\n+CP020543.1\t4048089\t4048213\tCP020543.1\t3790667\t3790796\n+CP020543.1\t4067101\t4067244\tCP020543.1\t3793939\t3794063\n+CP020543.1\t4099743\t4099779\tCP020543.1\t3807257\t3807293\n+CP020543.1\t4106548\t4106595\tCP020543.1\t3839567\t3839618\n+CP020543.1\t4142566\t4142678\tCP020543.1\t3850656\t3850768\n+CP020543.1\t4176487\t4177003\tCP020543.1\t3869916\t3870432\n+CP020543.1\t4191986\t4192088\tCP020543.1\t3929861\t3929963\n+CP020543.1\t4213708\t4213822\tCP020543.1\t3950675\t3950780\n+CP020543.1\t4213826\t4213934\tCP020543.1\t3953832\t3953936\n+CP020543.1\t4242868\t4242998\tCP020543.1\t3968313\t3968444\n+CP020543.1\t4260480\t4260553\tCP020543.1\t4014173\t4014246\n+CP020543.1\t4264658\t4264745\tCP020543.1\t4031379\t4031479\n+CP020543.1\t4274375\t4274458\tCP020543.1\t4091842\t4091924\n+CP020543.1\t4290709\t4290945\tCP020543.1\t4091889\t4092111\n+CP020543.1\t4295768\t4295944\tCP020543.1\t4122934\t4123278\n+CP020543.1\t4295801\t4301129\tCP020543.1\t4123380\t4128789\n+CP020543.1\t4330839\t4332083\tCP020543.1\t4169815\t4171052\n+CP020543.1\t4355826\t4355871\tCP020543.1\t4316311\t4316356\n+CP020543.1\t4371321\t4371453\tCP020543.1\t4350276\t4350418\n+CP020543.1\t4381163\t4381288\tCP020543.1\t4429343\t4429471\n+CP020543.1\t4400492\t4400692\tCP020543.1\t4457509\t4457699\n+CP020543.1\t4403529\t4404167\tCP020543.1\t4484633\t4485281\n+CP020543.1\t4430706\t4430841\tCP020543.1\t4495653\t4495787\n+CP020543.1\t4457078\t4457209\tCP020543.1\t4508607\t4508740\n+CP020543.1\t4558412\t4560073\tCP020543.1\t4586722\t4588399\n+CP020543.1\t4592343\t4592419\tCP020543.1\t4610823\t4610933\n+CP024090.1\t6045\t6149\tCP020543.1\t1445092\t1445196\n+CP024090.1\t20534\t21653\tCP020543.1\t1886884\t1887922\n+CP024090.1\t23116\t24886\tCP020543.1\t2182007\t2183771\n+CP024090.1\t27557\t27609\tCP020543.1\t2850032\t2850089\n+CP024090.1\t57574\t58732\tCP020543.1\t3601208\t3602390\n+CP024090.1\t98960\t100564\tCP020543.1\t3812362\t3813990\n+CP024090.1\t106097\t250558\tCP020543.1\t4210885\t4355343\n+CP024090.1\t251795\t407346\tCP020543.1\t4355322\t4510873\n+CP024090.1\t804583\t806211\tCP020543.1\t4516412\t4518016\n+CP024090.1\t896912\t898217\tCP020543.1\t4578110\t4579395\n+CP024090.1\t1768091\t1768148\tCP020543.1\t4589367\t4589419\n+CP024090.1\t2430067\t2431831\tCP020543.1\t4592090\t4593860\n+CP024090.1\t2709145\t2710183\tCP020543.1\t4595323\t4596442\n+CP024090.1\t3151492\t3151596\tCP020543.1\t4610827\t4610931\n+LT906474.1\t6045\t6149\tCP020543.1\t1445092\t1445196\n+LT906474.1\t20534\t21653\tCP020543.1\t1886884\t1887922\n+LT906474.1\t23116\t24886\tCP020543.1\t2182007\t2183771\n+LT906474.1\t27557\t27609\tCP020543.1\t2850032\t2850089\n+LT906474.1\t57574\t58732\tCP020543.1\t3601208\t3602390\n+LT906474.1\t98960\t100564\tCP020543.1\t3812362\t3813990\n+LT906474.1\t106097\t406092\tCP020543.1\t4210885\t4510873\n+LT906474.1\t803328\t804956\tCP020543.1\t4516412\t4518016\n+LT906474.1\t895657\t896962\tCP020543.1\t4578110\t4579395\n+LT906474.1\t1767230\t1767287\tCP020543.1\t4589367\t4589419\n+LT906474.1\t2432325\t2434089\tCP020543.1\t4592090\t4593860\n+LT906474.1\t2728175\t2729213\tCP020543.1\t4595323\t4596442\n+LT906474.1\t3170902\t3171006\tCP020543.1\t4610827\t4610931\n+Ecoli_C\t6045\t6149\tCP020543.1\t1445092\t1445196\n+Ecoli_C\t20534\t21653\tCP020543.1\t1886884\t1887922\n+Ecoli_C\t23116\t24886\tCP020543.1\t2182007\t2183771\n+Ecoli_C\t27557\t27609\tCP020543.1\t2850032\t2850089\n+Ecoli_C\t57574\t58732\tCP020543.1\t3601208\t3602390\n+Ecoli_C\t98960\t100564\tCP020543.1\t3812362\t3813990\n+Ecoli_C\t106097\t406091\tCP020543.1\t4210885\t4510873\n+Ecoli_C\t803328\t804956\tCP020543.1\t4516412\t4518016\n+Ecoli_C\t895657\t896962\tCP020543.1\t4578110\t4579395\n+Ecoli_C\t1767229\t1767286\tCP020543.1\t4589367\t4589419\n+Ecoli_C\t2432324\t2434088\tCP020543.1\t4592090\t4593860\n+Ecoli_C\t2728174\t2729212\tCP020543.1\t4595323\t4596442\n+Ecoli_C\t3170934\t3171038\tCP020543.1\t4610827\t4610931\n'
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/gc_skew/1.bw
b
Binary file test-data/gc_skew/1.bw has changed
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/gc_skew/1.fa
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/gc_skew/1.fa Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,6 @@
+>a
+actgtacgtacgtatgatggagagaggggagatattctctac
+>b
+attctctctcctgtacgtacgtatgaggactgtacgtacgtatgagagaggggagatattctctac
+>c
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/resample/1.out
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/resample/1.out Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,4 @@
+chr22 10000000 19999999 2515.16666666667
+chr22 20000000 29999999 3140.4
+chr22 30000000 39999999 3342.6
+chr22 40000000 49999999 3615.5
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/resample/1.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/resample/1.tab Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,36 @@
+chr22 14000000 14999999 326.0000
+chr22 15000000 15999999 2532.0000
+chr22 16000000 16999999 4175.0000
+chr22 17000000 17999999 3303.0000
+chr22 18000000 18999999 2432.0000
+chr22 19000000 19999999 2323.0000
+chr22 20000000 20999999 3353.0000
+chr22 21000000 21999999 4355.0000
+chr22 22000000 22999999 3372.0000
+chr22 23000000 23999999 3445.0000
+chr22 24000000 24999999 2953.0000
+chr22 25000000 25999999 4186.0000
+chr22 26000000 26999999 2234.0000
+chr22 27000000 27999999 1921.0000
+chr22 28000000 28999999 2273.0000
+chr22 29000000 29999999 3312.0000
+chr22 30000000 30999999 3516.0000
+chr22 31000000 31999999 3814.0000
+chr22 32000000 32999999 2528.0000
+chr22 33000000 33999999 4752.0000
+chr22 34000000 34999999 3032.0000
+chr22 35000000 35999999 3696.0000
+chr22 36000000 36999999 3168.0000
+chr22 37000000 37999999 3435.0000
+chr22 38000000 38999999 2384.0000
+chr22 39000000 39999999 3101.0000
+chr22 40000000 40999999 2732.0000
+chr22 41000000 41999999 2534.0000
+chr22 42000000 42999999 3479.0000
+chr22 43000000 43999999 4606.0000
+chr22 44000000 44999999 2126.0000
+chr22 45000000 45999999 4586.0000
+chr22 46000000 46999999 3711.0000
+chr22 47000000 47999999 5564.0000
+chr22 48000000 48999999 4823.0000
+chr22 49000000 49999999 1994.0000
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/scatter/1.bw
b
Binary file test-data/scatter/1.bw has changed
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/scatter/1.out
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/scatter/1.out Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,87 @@
+a 0 2 -1.0
+a 2 4 1.0
+a 4 6 0.0
+a 6 8 0.0
+a 8 10 0.0
+a 10 12 0.0
+a 12 14 0.0
+a 14 16 1.0
+a 16 18 0.0
+a 18 20 1.0
+a 20 22 1.0
+a 22 24 1.0
+a 24 26 1.0
+a 26 28 1.0
+a 28 30 1.0
+a 30 32 1.0
+a 32 34 0.0
+a 34 36 0.0
+a 36 38 -1.0
+a 38 40 -1.0
+a 40 42 -1.0
+b 0 2 0.0
+b 2 4 -1.0
+b 4 6 -1.0
+b 6 8 -1.0
+b 8 10 -1.0
+b 10 12 -1.0
+b 12 14 1.0
+b 14 16 -1.0
+b 16 18 1.0
+b 18 20 -1.0
+b 20 22 1.0
+b 22 24 0.0
+b 24 26 1.0
+b 26 28 1.0
+b 28 30 -1.0
+b 30 32 1.0
+b 32 34 0.0
+b 34 36 0.0
+b 36 38 0.0
+b 38 40 0.0
+b 40 42 0.0
+b 42 44 1.0
+b 44 46 1.0
+b 46 48 1.0
+b 48 50 1.0
+b 50 52 1.0
+b 52 54 1.0
+b 54 56 1.0
+b 56 58 0.0
+b 58 60 0.0
+b 60 62 -1.0
+b 62 64 -1.0
+b 64 66 -1.0
+c 0 2 0.0
+c 2 4 0.0
+c 4 6 0.0
+c 6 8 0.0
+c 8 10 0.0
+c 10 12 0.0
+c 12 14 0.0
+c 14 16 0.0
+c 16 18 0.0
+c 18 20 0.0
+c 20 22 0.0
+c 22 24 0.0
+c 24 26 0.0
+c 26 28 0.0
+c 28 30 0.0
+c 30 32 0.0
+c 32 34 0.0
+c 34 36 0.0
+c 36 38 0.0
+c 38 40 0.0
+c 40 42 0.0
+c 42 44 0.0
+c 44 46 0.0
+c 46 48 0.0
+c 48 50 0.0
+c 50 52 0.0
+c 52 54 0.0
+c 54 56 0.0
+c 56 58 0.0
+c 58 60 0.0
+c 60 62 0.0
+c 62 64 0.0
+c 64 66 0.0
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/tableviewer/1.png
b
Binary file test-data/tableviewer/1.png has changed
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/tableviewer/1.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/tableviewer/1.tab Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,4 @@
+labels A B C
+A 10 15 20
+D 15 20 25
+E 20 30 50
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/text/1.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/text/1.bed Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,100 @@
+CP020543.1 49 1452 dnaA 0 +
+CP020543.1 1457 2557 . 0 +
+CP020543.1 2557 3630 . 0 +
+CP020543.1 3659 6073 . 0 +
+CP020543.1 6304 6711 . 0 +
+CP020543.1 6826 7638 . 0 +
+CP020543.1 7684 8340 . 0 -
+CP020543.1 8618 9307 . 0 +
+CP020543.1 9304 10182 . 0 +
+CP020543.1 10166 10783 . 0 +
+CP020543.1 10780 11928 . 0 +
+CP020543.1 12048 13340 . 0 +
+CP020543.1 13337 14401 . 0 -
+CP020543.1 14469 15716 . 0 +
+CP020543.1 15718 16050 . 0 -
+CP020543.1 16356 16769 . 0 +
+CP020543.1 16881 17309 . 0 +
+CP020543.1 17505 19166 . 0 +
+CP020543.1 19163 19879 . 0 -
+CP020543.1 20175 21791 . 0 +
+CP020543.1 21791 23113 . 0 +
+CP020543.1 23110 23184 . 0 -
+CP020543.1 23154 23612 . 0 -
+CP020543.1 23559 23704 . 0 +
+CP020543.1 23682 24890 . 0 +
+CP020543.1 25061 25408 . 0 +
+CP020543.1 25398 25760 . 0 +
+CP020543.1 25757 26254 . 0 +
+CP020543.1 26262 27446 . 0 -
+CP020543.1 27486 27668 . 0 -
+CP020543.1 27726 27815 . 0 -
+CP020543.1 27812 27925 . 0 -
+CP020543.1 27948 28106 . 0 -
+CP020543.1 28103 28393 . 0 -
+CP020543.1 28380 28478 . 0 +
+CP020543.1 28584 30272 . 0 +
+CP020543.1 30276 30566 . 0 +
+CP020543.1 30641 31231 . 0 +
+CP020543.1 31231 32733 . 0 +
+CP020543.1 32743 34062 . 0 +
+CP020543.1 34200 35591 . 0 +
+CP020543.1 35636 37402 . 0 -
+CP020543.1 37577 38911 . 0 +
+CP020543.1 38964 39416 . 0 +
+CP020543.1 39437 39628 . 0 -
+CP020543.1 39627 40817 nepI 0 +
+CP020543.1 40858 41151 . 0 -
+CP020543.1 41188 41376 . 0 +
+CP020543.1 41373 42191 . 0 +
+CP020543.1 42195 43118 . 0 -
+CP020543.1 43229 44413 . 0 -
+CP020543.1 44795 44941 . 0 -
+CP020543.1 45437 46819 . 0 +
+CP020543.1 46829 49147 . 0 +
+CP020543.1 49200 50909 . 0 -
+CP020543.1 51030 52421 . 0 -
+CP020543.1 52701 53906 . 0 +
+CP020543.1 54072 56153 . 0 -
+CP020543.1 56159 56848 . 0 -
+CP020543.1 56855 58963 . 0 -
+CP020543.1 58982 59257 . 0 -
+CP020543.1 59312 59935 . 0 -
+CP020543.1 60193 61875 . 0 +
+CP020543.1 61872 62489 . 0 -
+CP020543.1 62781 63605 . 0 -
+CP020543.1 63826 64689 . 0 -
+CP020543.1 64702 64884 . 0 -
+CP020543.1 64816 65532 . 0 +
+CP020543.1 65598 66239 . 0 +
+CP020543.1 66276 66872 . 0 -
+CP020543.1 66979 67434 . 0 -
+CP020543.1 67415 68635 . 0 -
+CP020543.1 68807 69475 . 0 +
+CP020543.1 69692 69928 . 0 +
+CP020543.1 69949 70116 . 0 +
+CP020543.1 70214 71023 . 0 +
+CP020543.1 71062 71541 . 0 -
+CP020543.1 71549 72826 . 0 -
+CP020543.1 73239 74297 . 0 +
+CP020543.1 74294 75418 . 0 +
+CP020543.1 75411 76208 . 0 +
+CP020543.1 76224 77240 . 0 +
+CP020543.1 77257 78252 . 0 +
+CP020543.1 78262 78954 . 0 +
+CP020543.1 78980 80005 . 0 +
+CP020543.1 80090 81073 . 0 +
+CP020543.1 81119 82372 . 0 +
+CP020543.1 82442 83413 . 0 -
+CP020543.1 83417 84463 . 0 -
+CP020543.1 84473 85405 . 0 -
+CP020543.1 85619 86815 . 0 +
+CP020543.1 86825 87850 . 0 +
+CP020543.1 88089 89123 . 0 +
+CP020543.1 89110 90069 . 0 -
+CP020543.1 90073 91356 . 0 -
+CP020543.1 91366 92910 . 0 -
+CP020543.1 92934 93131 . 0 -
+CP020543.1 93155 93586 . 0 +
+CP020543.1 93728 93979 . 0 +
+CP020543.1 94042 94509 . 0 +
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/text/1.out
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/text/1.out Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,100 @@
+CP020543.1 49 1452 dnaA strand=1,value=0
+CP020543.1 1457 2557 . strand=1,value=0
+CP020543.1 2557 3630 . strand=1,value=0
+CP020543.1 3659 6073 . strand=1,value=0
+CP020543.1 6304 6711 . strand=1,value=0
+CP020543.1 6826 7638 . strand=1,value=0
+CP020543.1 7684 8340 . strand=-1,value=0
+CP020543.1 8618 9307 . strand=1,value=0
+CP020543.1 9304 10182 . strand=1,value=0
+CP020543.1 10166 10783 . strand=1,value=0
+CP020543.1 10780 11928 . strand=1,value=0
+CP020543.1 12048 13340 . strand=1,value=0
+CP020543.1 13337 14401 . strand=-1,value=0
+CP020543.1 14469 15716 . strand=1,value=0
+CP020543.1 15718 16050 . strand=-1,value=0
+CP020543.1 16356 16769 . strand=1,value=0
+CP020543.1 16881 17309 . strand=1,value=0
+CP020543.1 17505 19166 . strand=1,value=0
+CP020543.1 19163 19879 . strand=-1,value=0
+CP020543.1 20175 21791 . strand=1,value=0
+CP020543.1 21791 23113 . strand=1,value=0
+CP020543.1 23110 23184 . strand=-1,value=0
+CP020543.1 23154 23612 . strand=-1,value=0
+CP020543.1 23559 23704 . strand=1,value=0
+CP020543.1 23682 24890 . strand=1,value=0
+CP020543.1 25061 25408 . strand=1,value=0
+CP020543.1 25398 25760 . strand=1,value=0
+CP020543.1 25757 26254 . strand=1,value=0
+CP020543.1 26262 27446 . strand=-1,value=0
+CP020543.1 27486 27668 . strand=-1,value=0
+CP020543.1 27726 27815 . strand=-1,value=0
+CP020543.1 27812 27925 . strand=-1,value=0
+CP020543.1 27948 28106 . strand=-1,value=0
+CP020543.1 28103 28393 . strand=-1,value=0
+CP020543.1 28380 28478 . strand=1,value=0
+CP020543.1 28584 30272 . strand=1,value=0
+CP020543.1 30276 30566 . strand=1,value=0
+CP020543.1 30641 31231 . strand=1,value=0
+CP020543.1 31231 32733 . strand=1,value=0
+CP020543.1 32743 34062 . strand=1,value=0
+CP020543.1 34200 35591 . strand=1,value=0
+CP020543.1 35636 37402 . strand=-1,value=0
+CP020543.1 37577 38911 . strand=1,value=0
+CP020543.1 38964 39416 . strand=1,value=0
+CP020543.1 39437 39628 . strand=-1,value=0
+CP020543.1 39627 40817 nepI strand=1,value=0
+CP020543.1 40858 41151 . strand=-1,value=0
+CP020543.1 41188 41376 . strand=1,value=0
+CP020543.1 41373 42191 . strand=1,value=0
+CP020543.1 42195 43118 . strand=-1,value=0
+CP020543.1 43229 44413 . strand=-1,value=0
+CP020543.1 44795 44941 . strand=-1,value=0
+CP020543.1 45437 46819 . strand=1,value=0
+CP020543.1 46829 49147 . strand=1,value=0
+CP020543.1 49200 50909 . strand=-1,value=0
+CP020543.1 51030 52421 . strand=-1,value=0
+CP020543.1 52701 53906 . strand=1,value=0
+CP020543.1 54072 56153 . strand=-1,value=0
+CP020543.1 56159 56848 . strand=-1,value=0
+CP020543.1 56855 58963 . strand=-1,value=0
+CP020543.1 58982 59257 . strand=-1,value=0
+CP020543.1 59312 59935 . strand=-1,value=0
+CP020543.1 60193 61875 . strand=1,value=0
+CP020543.1 61872 62489 . strand=-1,value=0
+CP020543.1 62781 63605 . strand=-1,value=0
+CP020543.1 63826 64689 . strand=-1,value=0
+CP020543.1 64702 64884 . strand=-1,value=0
+CP020543.1 64816 65532 . strand=1,value=0
+CP020543.1 65598 66239 . strand=1,value=0
+CP020543.1 66276 66872 . strand=-1,value=0
+CP020543.1 66979 67434 . strand=-1,value=0
+CP020543.1 67415 68635 . strand=-1,value=0
+CP020543.1 68807 69475 . strand=1,value=0
+CP020543.1 69692 69928 . strand=1,value=0
+CP020543.1 69949 70116 . strand=1,value=0
+CP020543.1 70214 71023 . strand=1,value=0
+CP020543.1 71062 71541 . strand=-1,value=0
+CP020543.1 71549 72826 . strand=-1,value=0
+CP020543.1 73239 74297 . strand=1,value=0
+CP020543.1 74294 75418 . strand=1,value=0
+CP020543.1 75411 76208 . strand=1,value=0
+CP020543.1 76224 77240 . strand=1,value=0
+CP020543.1 77257 78252 . strand=1,value=0
+CP020543.1 78262 78954 . strand=1,value=0
+CP020543.1 78980 80005 . strand=1,value=0
+CP020543.1 80090 81073 . strand=1,value=0
+CP020543.1 81119 82372 . strand=1,value=0
+CP020543.1 82442 83413 . strand=-1,value=0
+CP020543.1 83417 84463 . strand=-1,value=0
+CP020543.1 84473 85405 . strand=-1,value=0
+CP020543.1 85619 86815 . strand=1,value=0
+CP020543.1 86825 87850 . strand=1,value=0
+CP020543.1 88089 89123 . strand=1,value=0
+CP020543.1 89110 90069 . strand=-1,value=0
+CP020543.1 90073 91356 . strand=-1,value=0
+CP020543.1 91366 92910 . strand=-1,value=0
+CP020543.1 92934 93131 . strand=-1,value=0
+CP020543.1 93155 93586 . strand=1,value=0
+CP020543.1 93728 93979 . strand=1,value=0
+CP020543.1 94042 94509 . strand=1,value=0
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/text/2.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/text/2.gff3 Tue Sep 17 16:54:57 2019 -0400
b
b'@@ -0,0 +1,100 @@\n+##gff-version 3\n+#!gff-spec-version 1.21\n+#!processor NCBI annotwriter\n+#!genome-build ASM584v2\n+#!genome-build-accession NCBI_Assembly:GCF_000005845.2\n+##sequence-region NC_000913.3 1 4641652\n+##species https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=511145\n+NC_000913.3\tRefSeq\tregion\t1\t4641652\t.\t+\t.\tID=NC_000913.3:1..4641652;Dbxref=taxon:511145;Is_circular=true;Name=ANONYMOUS;gbkey=Src;genome=chromosome;mol_type=genomic DNA;strain=K-12;substrain=MG1655\n+NC_000913.3\tRefSeq\tgene\t190\t255\t.\t+\t.\tID=gene-b0001;Dbxref=ASAP:ABE-0000006,ECOCYC:EG11277,EcoGene:EG11277,GeneID:944742;Name=thrL;gbkey=Gene;gene=thrL;gene_biotype=protein_coding;gene_synonym=ECK0001;locus_tag=b0001\n+NC_000913.3\tRefSeq\tCDS\t190\t255\t.\t+\t0\tID=cds-NP_414542.1;Parent=gene-b0001;Dbxref=UniProtKB/Swiss-Prot:P0AD86,Genbank:NP_414542.1,ASAP:ABE-0000006,ECOCYC:EG11277,EcoGene:EG11277,GeneID:944742;Name=NP_414542.1;gbkey=CDS;gene=thrL;locus_tag=b0001;orig_transcript_id=gnl|b0001|mrna.b0001;product=thr operon leader peptide;protein_id=NP_414542.1;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t337\t2799\t.\t+\t.\tID=gene-b0002;Dbxref=ASAP:ABE-0000008,ECOCYC:EG10998,EcoGene:EG10998,GeneID:945803;Name=thrA;gbkey=Gene;gene=thrA;gene_biotype=protein_coding;gene_synonym=ECK0002,Hs,thrA1,thrA2,thrD;locus_tag=b0002\n+NC_000913.3\tRefSeq\tCDS\t337\t2799\t.\t+\t0\tID=cds-NP_414543.1;Parent=gene-b0002;Dbxref=UniProtKB/Swiss-Prot:P00561,Genbank:NP_414543.1,ASAP:ABE-0000008,ECOCYC:EG10998,EcoGene:EG10998,GeneID:945803;Name=NP_414543.1;gbkey=CDS;gene=thrA;locus_tag=b0002;orig_transcript_id=gnl|b0002|mrna.b0002;product=fused aspartate kinase/homoserine dehydrogenase 1;protein_id=NP_414543.1;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t2801\t3733\t.\t+\t.\tID=gene-b0003;Dbxref=ASAP:ABE-0000010,ECOCYC:EG10999,EcoGene:EG10999,GeneID:947498;Name=thrB;gbkey=Gene;gene=thrB;gene_biotype=protein_coding;gene_synonym=ECK0003;locus_tag=b0003\n+NC_000913.3\tRefSeq\tCDS\t2801\t3733\t.\t+\t0\tID=cds-NP_414544.1;Parent=gene-b0003;Dbxref=UniProtKB/Swiss-Prot:P00547,Genbank:NP_414544.1,ASAP:ABE-0000010,ECOCYC:EG10999,EcoGene:EG10999,GeneID:947498;Name=NP_414544.1;gbkey=CDS;gene=thrB;locus_tag=b0003;orig_transcript_id=gnl|b0003|mrna.b0003;product=homoserine kinase;protein_id=NP_414544.1;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t3734\t5020\t.\t+\t.\tID=gene-b0004;Dbxref=ASAP:ABE-0000012,ECOCYC:EG11000,EcoGene:EG11000,GeneID:945198;Name=thrC;gbkey=Gene;gene=thrC;gene_biotype=protein_coding;gene_synonym=ECK0004;locus_tag=b0004\n+NC_000913.3\tRefSeq\tCDS\t3734\t5020\t.\t+\t0\tID=cds-NP_414545.1;Parent=gene-b0004;Dbxref=UniProtKB/Swiss-Prot:P00934,Genbank:NP_414545.1,ASAP:ABE-0000012,ECOCYC:EG11000,EcoGene:EG11000,GeneID:945198;Name=NP_414545.1;gbkey=CDS;gene=thrC;locus_tag=b0004;orig_transcript_id=gnl|b0004|mrna.b0004;product=threonine synthase;protein_id=NP_414545.1;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t5234\t5530\t.\t+\t.\tID=gene-b0005;Dbxref=ASAP:ABE-0000015,ECOCYC:G6081,EcoGene:EG14384,GeneID:944747;Name=yaaX;gbkey=Gene;gene=yaaX;gene_biotype=protein_coding;gene_synonym=ECK0005;locus_tag=b0005\n+NC_000913.3\tRefSeq\tCDS\t5234\t5530\t.\t+\t0\tID=cds-NP_414546.1;Parent=gene-b0005;Dbxref=UniProtKB/Swiss-Prot:P75616,Genbank:NP_414546.1,ASAP:ABE-0000015,ECOCYC:G6081,EcoGene:EG14384,GeneID:944747;Name=NP_414546.1;gbkey=CDS;gene=yaaX;locus_tag=b0005;orig_transcript_id=gnl|b0005|mrna.b0005;product=DUF2502 domain-containing protein YaaX;protein_id=NP_414546.1;transl_table=11\n+NC_000913.3\tRefSeq\trepeat_region\t5566\t5601\t.\t+\t.\tID=id-12;Note=REP1a;gbkey=repeat_region;rpt_type=other\n+NC_000913.3\tRefSeq\trepeat_region\t5637\t5670\t.\t-\t.\tID=id-13;Note=REP1b;gbkey=repeat_region;rpt_type=other\n+NC_000913.3\tRefSeq\tgene\t5683\t6459\t.\t-\t.\tID=gene-b0006;Dbxref=ASAP:ABE-0000018,ECOCYC:EG10011,EcoGene:EG10011,GeneID:944749;Name=yaaA;gbkey=Gene;gene=yaaA;gene_biotype=protein_coding;gene_synonym=ECK0006;locus_tag=b0006\n+NC_000913.3\tRefSeq\tCDS\t5683\t6459\t.\t-\t0\tID=cds-NP_414547.1;Parent=gene-b0006;Dbxref=UniProtKB/Swiss-Prot:P0A8I3,Genbank:NP_414547.1,ASAP:ABE-0000018'..b'034|mrna.b0034;product=DNA-binding transcriptional activator CaiF;protein_id=NP_414576.4;transl_table=11\n+NC_000913.3\tRefSeq\trepeat_region\t34728\t34763\t.\t+\t.\tID=id-78;Note=REP3;gbkey=repeat_region;rpt_type=other\n+NC_000913.3\tRefSeq\tgene\t34781\t35371\t.\t-\t.\tID=gene-b0035;Dbxref=ASAP:ABE-0000128,ECOCYC:EG12608,EcoGene:EG12608,GeneID:948999;Name=caiE;gbkey=Gene;gene=caiE;gene_biotype=protein_coding;gene_synonym=ECK0036;locus_tag=b0035\n+NC_000913.3\tRefSeq\tCDS\t34781\t35371\t.\t-\t0\tID=cds-NP_414577.2;Parent=gene-b0035;Dbxref=UniProtKB/Swiss-Prot:P39206,Genbank:NP_414577.2,ASAP:ABE-0000128,ECOCYC:EG12608,EcoGene:EG12608,GeneID:948999;Name=NP_414577.2;gbkey=CDS;gene=caiE;locus_tag=b0035;orig_transcript_id=gnl|b0035|mrna.b0035;product=putative transferase CaiE;protein_id=NP_414577.2;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t35377\t36162\t.\t-\t.\tID=gene-b0036;Dbxref=ASAP:ABE-0000130,ECOCYC:EG11557,EcoGene:EG11557,GeneID:948995;Name=caiD;gbkey=Gene;gene=caiD;gene_biotype=protein_coding;gene_synonym=ECK0037,yaaL;locus_tag=b0036\n+NC_000913.3\tRefSeq\tCDS\t35377\t36162\t.\t-\t0\tID=cds-NP_414578.2;Parent=gene-b0036;Dbxref=UniProtKB/Swiss-Prot:P31551,Genbank:NP_414578.2,ASAP:ABE-0000130,ECOCYC:EG11557,EcoGene:EG11557,GeneID:948995;Name=NP_414578.2;gbkey=CDS;gene=caiD;locus_tag=b0036;orig_transcript_id=gnl|b0036|mrna.b0036;product=crotonobetainyl-CoA hydratase;protein_id=NP_414578.2;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t36271\t37824\t.\t-\t.\tID=gene-b0037;Dbxref=ASAP:ABE-0000133,ECOCYC:EG11558,EcoGene:EG11558,GeneID:944886;Name=caiC;gbkey=Gene;gene=caiC;gene_biotype=protein_coding;gene_synonym=ECK0038,yaaM;locus_tag=b0037\n+NC_000913.3\tRefSeq\tCDS\t36271\t37824\t.\t-\t0\tID=cds-NP_414579.4;Parent=gene-b0037;Dbxref=UniProtKB/Swiss-Prot:P31552,Genbank:NP_414579.4,ASAP:ABE-0000133,ECOCYC:EG11558,EcoGene:EG11558,GeneID:944886;Name=NP_414579.4;gbkey=CDS;gene=caiC;locus_tag=b0037;orig_transcript_id=gnl|b0037|mrna.b0037;product=carnitine-CoA ligase;protein_id=NP_414579.4;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t37898\t39115\t.\t-\t.\tID=gene-b0038;Dbxref=ASAP:ABE-0000136,ECOCYC:EG11559,EcoGene:EG11559,GeneID:948997;Name=caiB;gbkey=Gene;gene=caiB;gene_biotype=protein_coding;gene_synonym=ECK0039,yaaN;locus_tag=b0038\n+NC_000913.3\tRefSeq\tCDS\t37898\t39115\t.\t-\t0\tID=cds-NP_414580.1;Parent=gene-b0038;Dbxref=UniProtKB/Swiss-Prot:P31572,Genbank:NP_414580.1,ASAP:ABE-0000136,ECOCYC:EG11559,EcoGene:EG11559,GeneID:948997;Name=NP_414580.1;gbkey=CDS;gene=caiB;locus_tag=b0038;orig_transcript_id=gnl|b0038|mrna.b0038;product=gamma-butyrobetainyl-CoA:carnitine CoA transferase;protein_id=NP_414580.1;transl_table=11\n+NC_000913.3\tRefSeq\trepeat_region\t39152\t39185\t.\t+\t.\tID=id-87;Note=REP4a;gbkey=repeat_region;rpt_type=other\n+NC_000913.3\tRefSeq\trepeat_region\t39198\t39233\t.\t-\t.\tID=id-88;Note=REP4b;gbkey=repeat_region;rpt_type=other\n+NC_000913.3\tRefSeq\tgene\t39244\t40386\t.\t-\t.\tID=gene-b0039;Dbxref=ASAP:ABE-0000139,ECOCYC:EG11560,EcoGene:EG11560,GeneID:949064;Name=caiA;gbkey=Gene;gene=caiA;gene_biotype=protein_coding;gene_synonym=ECK0040,yaaO;locus_tag=b0039\n+NC_000913.3\tRefSeq\tCDS\t39244\t40386\t.\t-\t0\tID=cds-NP_414581.1;Parent=gene-b0039;Dbxref=UniProtKB/Swiss-Prot:P60584,Genbank:NP_414581.1,ASAP:ABE-0000139,ECOCYC:EG11560,EcoGene:EG11560,GeneID:949064;Name=NP_414581.1;gbkey=CDS;gene=caiA;locus_tag=b0039;orig_transcript_id=gnl|b0039|mrna.b0039;product=crotonobetainyl-CoA reductase;protein_id=NP_414581.1;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t40417\t41931\t.\t-\t.\tID=gene-b0040;Dbxref=ASAP:ABE-0000141,ECOCYC:EG11561,EcoGene:EG11561,GeneID:944765;Name=caiT;gbkey=Gene;gene=caiT;gene_biotype=protein_coding;gene_synonym=ECK0041,yaaP;locus_tag=b0040\n+NC_000913.3\tRefSeq\tCDS\t40417\t41931\t.\t-\t0\tID=cds-NP_414582.1;Parent=gene-b0040;Dbxref=UniProtKB/Swiss-Prot:P31553,Genbank:NP_414582.1,ASAP:ABE-0000141,ECOCYC:EG11561,EcoGene:EG11561,GeneID:944765;Name=NP_414582.1;gbkey=CDS;gene=caiT;locus_tag=b0040;orig_transcript_id=gnl|b0040|mrna.b0040;product=L-carnitine:gamma-butyrobetaine antiporter;protein_id=NP_414582.1;transl_table=11\n'
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/text/2.out
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/text/2.out Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,42 @@
+NC_000913.3 0 4641652 ANONYMOUS strand=1,value=0
+NC_000913.3 189 255 thrL strand=1,value=0
+NC_000913.3 336 2799 thrA strand=1,value=0
+NC_000913.3 2800 3733 thrB strand=1,value=0
+NC_000913.3 3733 5020 thrC strand=1,value=0
+NC_000913.3 5233 5530 yaaX strand=1,value=0
+NC_000913.3 5682 6459 yaaA strand=-1,value=0
+NC_000913.3 6528 7959 yaaJ strand=-1,value=0
+NC_000913.3 8237 9191 talB strand=1,value=0
+NC_000913.3 9305 9893 mog strand=1,value=0
+NC_000913.3 9927 10494 satP strand=-1,value=0
+NC_000913.3 10642 11356 yaaW strand=-1,value=0
+NC_000913.3 10829 11315 mbiA strand=1,value=0
+NC_000913.3 11381 11786 yaaI strand=-1,value=0
+NC_000913.3 12162 14079 dnaK strand=1,value=0
+NC_000913.3 14167 15298 dnaJ strand=1,value=0
+NC_000913.3 15444 16557 insL-1 strand=1,value=0
+NC_000913.3 16750 16960 mokC strand=-1,value=0
+NC_000913.3 16750 16903 hokC strand=-1,value=0
+NC_000913.3 16951 17006 sokC strand=1,value=0
+NC_000913.3 17488 18655 nhaA strand=1,value=0
+NC_000913.3 18714 19620 nhaR strand=1,value=0
+NC_000913.3 19810 20314 insB-1 strand=-1,value=0
+NC_000913.3 20232 20508 insA-1 strand=-1,value=0
+NC_000913.3 20814 21078 rpsT strand=-1,value=0
+NC_000913.3 21180 21399 yaaY strand=1,value=0
+NC_000913.3 21406 22348 ribF strand=1,value=0
+NC_000913.3 22390 25207 ileS strand=1,value=0
+NC_000913.3 25206 25701 lspA strand=1,value=0
+NC_000913.3 25825 26275 fkpB strand=1,value=0
+NC_000913.3 26276 27227 ispH strand=1,value=0
+NC_000913.3 27292 28207 rihC strand=1,value=0
+NC_000913.3 28373 29195 dapB strand=1,value=0
+NC_000913.3 29650 30799 carA strand=1,value=0
+NC_000913.3 30816 34038 carB strand=1,value=0
+NC_000913.3 34299 34695 caiF strand=1,value=0
+NC_000913.3 34780 35371 caiE strand=-1,value=0
+NC_000913.3 35376 36162 caiD strand=-1,value=0
+NC_000913.3 36270 37824 caiC strand=-1,value=0
+NC_000913.3 37897 39115 caiB strand=-1,value=0
+NC_000913.3 39243 40386 caiA strand=-1,value=0
+NC_000913.3 40416 41931 caiT strand=-1,value=0
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/tiles/1.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/tiles/1.bed Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,100 @@
+CP020543.1 49 1452 dnaA 0 +
+CP020543.1 1457 2557 . 0 +
+CP020543.1 2557 3630 . 0 +
+CP020543.1 3659 6073 . 0 +
+CP020543.1 6304 6711 . 0 +
+CP020543.1 6826 7638 . 0 +
+CP020543.1 7684 8340 . 0 -
+CP020543.1 8618 9307 . 0 +
+CP020543.1 9304 10182 . 0 +
+CP020543.1 10166 10783 . 0 +
+CP020543.1 10780 11928 . 0 +
+CP020543.1 12048 13340 . 0 +
+CP020543.1 13337 14401 . 0 -
+CP020543.1 14469 15716 . 0 +
+CP020543.1 15718 16050 . 0 -
+CP020543.1 16356 16769 . 0 +
+CP020543.1 16881 17309 . 0 +
+CP020543.1 17505 19166 . 0 +
+CP020543.1 19163 19879 . 0 -
+CP020543.1 20175 21791 . 0 +
+CP020543.1 21791 23113 . 0 +
+CP020543.1 23110 23184 . 0 -
+CP020543.1 23154 23612 . 0 -
+CP020543.1 23559 23704 . 0 +
+CP020543.1 23682 24890 . 0 +
+CP020543.1 25061 25408 . 0 +
+CP020543.1 25398 25760 . 0 +
+CP020543.1 25757 26254 . 0 +
+CP020543.1 26262 27446 . 0 -
+CP020543.1 27486 27668 . 0 -
+CP020543.1 27726 27815 . 0 -
+CP020543.1 27812 27925 . 0 -
+CP020543.1 27948 28106 . 0 -
+CP020543.1 28103 28393 . 0 -
+CP020543.1 28380 28478 . 0 +
+CP020543.1 28584 30272 . 0 +
+CP020543.1 30276 30566 . 0 +
+CP020543.1 30641 31231 . 0 +
+CP020543.1 31231 32733 . 0 +
+CP020543.1 32743 34062 . 0 +
+CP020543.1 34200 35591 . 0 +
+CP020543.1 35636 37402 . 0 -
+CP020543.1 37577 38911 . 0 +
+CP020543.1 38964 39416 . 0 +
+CP020543.1 39437 39628 . 0 -
+CP020543.1 39627 40817 nepI 0 +
+CP020543.1 40858 41151 . 0 -
+CP020543.1 41188 41376 . 0 +
+CP020543.1 41373 42191 . 0 +
+CP020543.1 42195 43118 . 0 -
+CP020543.1 43229 44413 . 0 -
+CP020543.1 44795 44941 . 0 -
+CP020543.1 45437 46819 . 0 +
+CP020543.1 46829 49147 . 0 +
+CP020543.1 49200 50909 . 0 -
+CP020543.1 51030 52421 . 0 -
+CP020543.1 52701 53906 . 0 +
+CP020543.1 54072 56153 . 0 -
+CP020543.1 56159 56848 . 0 -
+CP020543.1 56855 58963 . 0 -
+CP020543.1 58982 59257 . 0 -
+CP020543.1 59312 59935 . 0 -
+CP020543.1 60193 61875 . 0 +
+CP020543.1 61872 62489 . 0 -
+CP020543.1 62781 63605 . 0 -
+CP020543.1 63826 64689 . 0 -
+CP020543.1 64702 64884 . 0 -
+CP020543.1 64816 65532 . 0 +
+CP020543.1 65598 66239 . 0 +
+CP020543.1 66276 66872 . 0 -
+CP020543.1 66979 67434 . 0 -
+CP020543.1 67415 68635 . 0 -
+CP020543.1 68807 69475 . 0 +
+CP020543.1 69692 69928 . 0 +
+CP020543.1 69949 70116 . 0 +
+CP020543.1 70214 71023 . 0 +
+CP020543.1 71062 71541 . 0 -
+CP020543.1 71549 72826 . 0 -
+CP020543.1 73239 74297 . 0 +
+CP020543.1 74294 75418 . 0 +
+CP020543.1 75411 76208 . 0 +
+CP020543.1 76224 77240 . 0 +
+CP020543.1 77257 78252 . 0 +
+CP020543.1 78262 78954 . 0 +
+CP020543.1 78980 80005 . 0 +
+CP020543.1 80090 81073 . 0 +
+CP020543.1 81119 82372 . 0 +
+CP020543.1 82442 83413 . 0 -
+CP020543.1 83417 84463 . 0 -
+CP020543.1 84473 85405 . 0 -
+CP020543.1 85619 86815 . 0 +
+CP020543.1 86825 87850 . 0 +
+CP020543.1 88089 89123 . 0 +
+CP020543.1 89110 90069 . 0 -
+CP020543.1 90073 91356 . 0 -
+CP020543.1 91366 92910 . 0 -
+CP020543.1 92934 93131 . 0 -
+CP020543.1 93155 93586 . 0 +
+CP020543.1 93728 93979 . 0 +
+CP020543.1 94042 94509 . 0 +
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/tiles/1.out
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/tiles/1.out Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,100 @@
+CP020543.1 49 1452 name=dnaA,strand=1,value=0
+CP020543.1 1457 2557 name=.,strand=1,value=0
+CP020543.1 2557 3630 name=.,strand=1,value=0
+CP020543.1 3659 6073 name=.,strand=1,value=0
+CP020543.1 6304 6711 name=.,strand=1,value=0
+CP020543.1 6826 7638 name=.,strand=1,value=0
+CP020543.1 7684 8340 name=.,strand=-1,value=0
+CP020543.1 8618 9307 name=.,strand=1,value=0
+CP020543.1 9304 10182 name=.,strand=1,value=0
+CP020543.1 10166 10783 name=.,strand=1,value=0
+CP020543.1 10780 11928 name=.,strand=1,value=0
+CP020543.1 12048 13340 name=.,strand=1,value=0
+CP020543.1 13337 14401 name=.,strand=-1,value=0
+CP020543.1 14469 15716 name=.,strand=1,value=0
+CP020543.1 15718 16050 name=.,strand=-1,value=0
+CP020543.1 16356 16769 name=.,strand=1,value=0
+CP020543.1 16881 17309 name=.,strand=1,value=0
+CP020543.1 17505 19166 name=.,strand=1,value=0
+CP020543.1 19163 19879 name=.,strand=-1,value=0
+CP020543.1 20175 21791 name=.,strand=1,value=0
+CP020543.1 21791 23113 name=.,strand=1,value=0
+CP020543.1 23110 23184 name=.,strand=-1,value=0
+CP020543.1 23154 23612 name=.,strand=-1,value=0
+CP020543.1 23559 23704 name=.,strand=1,value=0
+CP020543.1 23682 24890 name=.,strand=1,value=0
+CP020543.1 25061 25408 name=.,strand=1,value=0
+CP020543.1 25398 25760 name=.,strand=1,value=0
+CP020543.1 25757 26254 name=.,strand=1,value=0
+CP020543.1 26262 27446 name=.,strand=-1,value=0
+CP020543.1 27486 27668 name=.,strand=-1,value=0
+CP020543.1 27726 27815 name=.,strand=-1,value=0
+CP020543.1 27812 27925 name=.,strand=-1,value=0
+CP020543.1 27948 28106 name=.,strand=-1,value=0
+CP020543.1 28103 28393 name=.,strand=-1,value=0
+CP020543.1 28380 28478 name=.,strand=1,value=0
+CP020543.1 28584 30272 name=.,strand=1,value=0
+CP020543.1 30276 30566 name=.,strand=1,value=0
+CP020543.1 30641 31231 name=.,strand=1,value=0
+CP020543.1 31231 32733 name=.,strand=1,value=0
+CP020543.1 32743 34062 name=.,strand=1,value=0
+CP020543.1 34200 35591 name=.,strand=1,value=0
+CP020543.1 35636 37402 name=.,strand=-1,value=0
+CP020543.1 37577 38911 name=.,strand=1,value=0
+CP020543.1 38964 39416 name=.,strand=1,value=0
+CP020543.1 39437 39628 name=.,strand=-1,value=0
+CP020543.1 39627 40817 name=nepI,strand=1,value=0
+CP020543.1 40858 41151 name=.,strand=-1,value=0
+CP020543.1 41188 41376 name=.,strand=1,value=0
+CP020543.1 41373 42191 name=.,strand=1,value=0
+CP020543.1 42195 43118 name=.,strand=-1,value=0
+CP020543.1 43229 44413 name=.,strand=-1,value=0
+CP020543.1 44795 44941 name=.,strand=-1,value=0
+CP020543.1 45437 46819 name=.,strand=1,value=0
+CP020543.1 46829 49147 name=.,strand=1,value=0
+CP020543.1 49200 50909 name=.,strand=-1,value=0
+CP020543.1 51030 52421 name=.,strand=-1,value=0
+CP020543.1 52701 53906 name=.,strand=1,value=0
+CP020543.1 54072 56153 name=.,strand=-1,value=0
+CP020543.1 56159 56848 name=.,strand=-1,value=0
+CP020543.1 56855 58963 name=.,strand=-1,value=0
+CP020543.1 58982 59257 name=.,strand=-1,value=0
+CP020543.1 59312 59935 name=.,strand=-1,value=0
+CP020543.1 60193 61875 name=.,strand=1,value=0
+CP020543.1 61872 62489 name=.,strand=-1,value=0
+CP020543.1 62781 63605 name=.,strand=-1,value=0
+CP020543.1 63826 64689 name=.,strand=-1,value=0
+CP020543.1 64702 64884 name=.,strand=-1,value=0
+CP020543.1 64816 65532 name=.,strand=1,value=0
+CP020543.1 65598 66239 name=.,strand=1,value=0
+CP020543.1 66276 66872 name=.,strand=-1,value=0
+CP020543.1 66979 67434 name=.,strand=-1,value=0
+CP020543.1 67415 68635 name=.,strand=-1,value=0
+CP020543.1 68807 69475 name=.,strand=1,value=0
+CP020543.1 69692 69928 name=.,strand=1,value=0
+CP020543.1 69949 70116 name=.,strand=1,value=0
+CP020543.1 70214 71023 name=.,strand=1,value=0
+CP020543.1 71062 71541 name=.,strand=-1,value=0
+CP020543.1 71549 72826 name=.,strand=-1,value=0
+CP020543.1 73239 74297 name=.,strand=1,value=0
+CP020543.1 74294 75418 name=.,strand=1,value=0
+CP020543.1 75411 76208 name=.,strand=1,value=0
+CP020543.1 76224 77240 name=.,strand=1,value=0
+CP020543.1 77257 78252 name=.,strand=1,value=0
+CP020543.1 78262 78954 name=.,strand=1,value=0
+CP020543.1 78980 80005 name=.,strand=1,value=0
+CP020543.1 80090 81073 name=.,strand=1,value=0
+CP020543.1 81119 82372 name=.,strand=1,value=0
+CP020543.1 82442 83413 name=.,strand=-1,value=0
+CP020543.1 83417 84463 name=.,strand=-1,value=0
+CP020543.1 84473 85405 name=.,strand=-1,value=0
+CP020543.1 85619 86815 name=.,strand=1,value=0
+CP020543.1 86825 87850 name=.,strand=1,value=0
+CP020543.1 88089 89123 name=.,strand=1,value=0
+CP020543.1 89110 90069 name=.,strand=-1,value=0
+CP020543.1 90073 91356 name=.,strand=-1,value=0
+CP020543.1 91366 92910 name=.,strand=-1,value=0
+CP020543.1 92934 93131 name=.,strand=-1,value=0
+CP020543.1 93155 93586 name=.,strand=1,value=0
+CP020543.1 93728 93979 name=.,strand=1,value=0
+CP020543.1 94042 94509 name=.,strand=1,value=0
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/tiles/2.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/tiles/2.gff3 Tue Sep 17 16:54:57 2019 -0400
b
b'@@ -0,0 +1,100 @@\n+##gff-version 3\n+#!gff-spec-version 1.21\n+#!processor NCBI annotwriter\n+#!genome-build ASM584v2\n+#!genome-build-accession NCBI_Assembly:GCF_000005845.2\n+##sequence-region NC_000913.3 1 4641652\n+##species https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=511145\n+NC_000913.3\tRefSeq\tregion\t1\t4641652\t.\t+\t.\tID=NC_000913.3:1..4641652;Dbxref=taxon:511145;Is_circular=true;Name=ANONYMOUS;gbkey=Src;genome=chromosome;mol_type=genomic DNA;strain=K-12;substrain=MG1655\n+NC_000913.3\tRefSeq\tgene\t190\t255\t.\t+\t.\tID=gene-b0001;Dbxref=ASAP:ABE-0000006,ECOCYC:EG11277,EcoGene:EG11277,GeneID:944742;Name=thrL;gbkey=Gene;gene=thrL;gene_biotype=protein_coding;gene_synonym=ECK0001;locus_tag=b0001\n+NC_000913.3\tRefSeq\tCDS\t190\t255\t.\t+\t0\tID=cds-NP_414542.1;Parent=gene-b0001;Dbxref=UniProtKB/Swiss-Prot:P0AD86,Genbank:NP_414542.1,ASAP:ABE-0000006,ECOCYC:EG11277,EcoGene:EG11277,GeneID:944742;Name=NP_414542.1;gbkey=CDS;gene=thrL;locus_tag=b0001;orig_transcript_id=gnl|b0001|mrna.b0001;product=thr operon leader peptide;protein_id=NP_414542.1;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t337\t2799\t.\t+\t.\tID=gene-b0002;Dbxref=ASAP:ABE-0000008,ECOCYC:EG10998,EcoGene:EG10998,GeneID:945803;Name=thrA;gbkey=Gene;gene=thrA;gene_biotype=protein_coding;gene_synonym=ECK0002,Hs,thrA1,thrA2,thrD;locus_tag=b0002\n+NC_000913.3\tRefSeq\tCDS\t337\t2799\t.\t+\t0\tID=cds-NP_414543.1;Parent=gene-b0002;Dbxref=UniProtKB/Swiss-Prot:P00561,Genbank:NP_414543.1,ASAP:ABE-0000008,ECOCYC:EG10998,EcoGene:EG10998,GeneID:945803;Name=NP_414543.1;gbkey=CDS;gene=thrA;locus_tag=b0002;orig_transcript_id=gnl|b0002|mrna.b0002;product=fused aspartate kinase/homoserine dehydrogenase 1;protein_id=NP_414543.1;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t2801\t3733\t.\t+\t.\tID=gene-b0003;Dbxref=ASAP:ABE-0000010,ECOCYC:EG10999,EcoGene:EG10999,GeneID:947498;Name=thrB;gbkey=Gene;gene=thrB;gene_biotype=protein_coding;gene_synonym=ECK0003;locus_tag=b0003\n+NC_000913.3\tRefSeq\tCDS\t2801\t3733\t.\t+\t0\tID=cds-NP_414544.1;Parent=gene-b0003;Dbxref=UniProtKB/Swiss-Prot:P00547,Genbank:NP_414544.1,ASAP:ABE-0000010,ECOCYC:EG10999,EcoGene:EG10999,GeneID:947498;Name=NP_414544.1;gbkey=CDS;gene=thrB;locus_tag=b0003;orig_transcript_id=gnl|b0003|mrna.b0003;product=homoserine kinase;protein_id=NP_414544.1;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t3734\t5020\t.\t+\t.\tID=gene-b0004;Dbxref=ASAP:ABE-0000012,ECOCYC:EG11000,EcoGene:EG11000,GeneID:945198;Name=thrC;gbkey=Gene;gene=thrC;gene_biotype=protein_coding;gene_synonym=ECK0004;locus_tag=b0004\n+NC_000913.3\tRefSeq\tCDS\t3734\t5020\t.\t+\t0\tID=cds-NP_414545.1;Parent=gene-b0004;Dbxref=UniProtKB/Swiss-Prot:P00934,Genbank:NP_414545.1,ASAP:ABE-0000012,ECOCYC:EG11000,EcoGene:EG11000,GeneID:945198;Name=NP_414545.1;gbkey=CDS;gene=thrC;locus_tag=b0004;orig_transcript_id=gnl|b0004|mrna.b0004;product=threonine synthase;protein_id=NP_414545.1;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t5234\t5530\t.\t+\t.\tID=gene-b0005;Dbxref=ASAP:ABE-0000015,ECOCYC:G6081,EcoGene:EG14384,GeneID:944747;Name=yaaX;gbkey=Gene;gene=yaaX;gene_biotype=protein_coding;gene_synonym=ECK0005;locus_tag=b0005\n+NC_000913.3\tRefSeq\tCDS\t5234\t5530\t.\t+\t0\tID=cds-NP_414546.1;Parent=gene-b0005;Dbxref=UniProtKB/Swiss-Prot:P75616,Genbank:NP_414546.1,ASAP:ABE-0000015,ECOCYC:G6081,EcoGene:EG14384,GeneID:944747;Name=NP_414546.1;gbkey=CDS;gene=yaaX;locus_tag=b0005;orig_transcript_id=gnl|b0005|mrna.b0005;product=DUF2502 domain-containing protein YaaX;protein_id=NP_414546.1;transl_table=11\n+NC_000913.3\tRefSeq\trepeat_region\t5566\t5601\t.\t+\t.\tID=id-12;Note=REP1a;gbkey=repeat_region;rpt_type=other\n+NC_000913.3\tRefSeq\trepeat_region\t5637\t5670\t.\t-\t.\tID=id-13;Note=REP1b;gbkey=repeat_region;rpt_type=other\n+NC_000913.3\tRefSeq\tgene\t5683\t6459\t.\t-\t.\tID=gene-b0006;Dbxref=ASAP:ABE-0000018,ECOCYC:EG10011,EcoGene:EG10011,GeneID:944749;Name=yaaA;gbkey=Gene;gene=yaaA;gene_biotype=protein_coding;gene_synonym=ECK0006;locus_tag=b0006\n+NC_000913.3\tRefSeq\tCDS\t5683\t6459\t.\t-\t0\tID=cds-NP_414547.1;Parent=gene-b0006;Dbxref=UniProtKB/Swiss-Prot:P0A8I3,Genbank:NP_414547.1,ASAP:ABE-0000018'..b'034|mrna.b0034;product=DNA-binding transcriptional activator CaiF;protein_id=NP_414576.4;transl_table=11\n+NC_000913.3\tRefSeq\trepeat_region\t34728\t34763\t.\t+\t.\tID=id-78;Note=REP3;gbkey=repeat_region;rpt_type=other\n+NC_000913.3\tRefSeq\tgene\t34781\t35371\t.\t-\t.\tID=gene-b0035;Dbxref=ASAP:ABE-0000128,ECOCYC:EG12608,EcoGene:EG12608,GeneID:948999;Name=caiE;gbkey=Gene;gene=caiE;gene_biotype=protein_coding;gene_synonym=ECK0036;locus_tag=b0035\n+NC_000913.3\tRefSeq\tCDS\t34781\t35371\t.\t-\t0\tID=cds-NP_414577.2;Parent=gene-b0035;Dbxref=UniProtKB/Swiss-Prot:P39206,Genbank:NP_414577.2,ASAP:ABE-0000128,ECOCYC:EG12608,EcoGene:EG12608,GeneID:948999;Name=NP_414577.2;gbkey=CDS;gene=caiE;locus_tag=b0035;orig_transcript_id=gnl|b0035|mrna.b0035;product=putative transferase CaiE;protein_id=NP_414577.2;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t35377\t36162\t.\t-\t.\tID=gene-b0036;Dbxref=ASAP:ABE-0000130,ECOCYC:EG11557,EcoGene:EG11557,GeneID:948995;Name=caiD;gbkey=Gene;gene=caiD;gene_biotype=protein_coding;gene_synonym=ECK0037,yaaL;locus_tag=b0036\n+NC_000913.3\tRefSeq\tCDS\t35377\t36162\t.\t-\t0\tID=cds-NP_414578.2;Parent=gene-b0036;Dbxref=UniProtKB/Swiss-Prot:P31551,Genbank:NP_414578.2,ASAP:ABE-0000130,ECOCYC:EG11557,EcoGene:EG11557,GeneID:948995;Name=NP_414578.2;gbkey=CDS;gene=caiD;locus_tag=b0036;orig_transcript_id=gnl|b0036|mrna.b0036;product=crotonobetainyl-CoA hydratase;protein_id=NP_414578.2;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t36271\t37824\t.\t-\t.\tID=gene-b0037;Dbxref=ASAP:ABE-0000133,ECOCYC:EG11558,EcoGene:EG11558,GeneID:944886;Name=caiC;gbkey=Gene;gene=caiC;gene_biotype=protein_coding;gene_synonym=ECK0038,yaaM;locus_tag=b0037\n+NC_000913.3\tRefSeq\tCDS\t36271\t37824\t.\t-\t0\tID=cds-NP_414579.4;Parent=gene-b0037;Dbxref=UniProtKB/Swiss-Prot:P31552,Genbank:NP_414579.4,ASAP:ABE-0000133,ECOCYC:EG11558,EcoGene:EG11558,GeneID:944886;Name=NP_414579.4;gbkey=CDS;gene=caiC;locus_tag=b0037;orig_transcript_id=gnl|b0037|mrna.b0037;product=carnitine-CoA ligase;protein_id=NP_414579.4;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t37898\t39115\t.\t-\t.\tID=gene-b0038;Dbxref=ASAP:ABE-0000136,ECOCYC:EG11559,EcoGene:EG11559,GeneID:948997;Name=caiB;gbkey=Gene;gene=caiB;gene_biotype=protein_coding;gene_synonym=ECK0039,yaaN;locus_tag=b0038\n+NC_000913.3\tRefSeq\tCDS\t37898\t39115\t.\t-\t0\tID=cds-NP_414580.1;Parent=gene-b0038;Dbxref=UniProtKB/Swiss-Prot:P31572,Genbank:NP_414580.1,ASAP:ABE-0000136,ECOCYC:EG11559,EcoGene:EG11559,GeneID:948997;Name=NP_414580.1;gbkey=CDS;gene=caiB;locus_tag=b0038;orig_transcript_id=gnl|b0038|mrna.b0038;product=gamma-butyrobetainyl-CoA:carnitine CoA transferase;protein_id=NP_414580.1;transl_table=11\n+NC_000913.3\tRefSeq\trepeat_region\t39152\t39185\t.\t+\t.\tID=id-87;Note=REP4a;gbkey=repeat_region;rpt_type=other\n+NC_000913.3\tRefSeq\trepeat_region\t39198\t39233\t.\t-\t.\tID=id-88;Note=REP4b;gbkey=repeat_region;rpt_type=other\n+NC_000913.3\tRefSeq\tgene\t39244\t40386\t.\t-\t.\tID=gene-b0039;Dbxref=ASAP:ABE-0000139,ECOCYC:EG11560,EcoGene:EG11560,GeneID:949064;Name=caiA;gbkey=Gene;gene=caiA;gene_biotype=protein_coding;gene_synonym=ECK0040,yaaO;locus_tag=b0039\n+NC_000913.3\tRefSeq\tCDS\t39244\t40386\t.\t-\t0\tID=cds-NP_414581.1;Parent=gene-b0039;Dbxref=UniProtKB/Swiss-Prot:P60584,Genbank:NP_414581.1,ASAP:ABE-0000139,ECOCYC:EG11560,EcoGene:EG11560,GeneID:949064;Name=NP_414581.1;gbkey=CDS;gene=caiA;locus_tag=b0039;orig_transcript_id=gnl|b0039|mrna.b0039;product=crotonobetainyl-CoA reductase;protein_id=NP_414581.1;transl_table=11\n+NC_000913.3\tRefSeq\tgene\t40417\t41931\t.\t-\t.\tID=gene-b0040;Dbxref=ASAP:ABE-0000141,ECOCYC:EG11561,EcoGene:EG11561,GeneID:944765;Name=caiT;gbkey=Gene;gene=caiT;gene_biotype=protein_coding;gene_synonym=ECK0041,yaaP;locus_tag=b0040\n+NC_000913.3\tRefSeq\tCDS\t40417\t41931\t.\t-\t0\tID=cds-NP_414582.1;Parent=gene-b0040;Dbxref=UniProtKB/Swiss-Prot:P31553,Genbank:NP_414582.1,ASAP:ABE-0000141,ECOCYC:EG11561,EcoGene:EG11561,GeneID:944765;Name=NP_414582.1;gbkey=CDS;gene=caiT;locus_tag=b0040;orig_transcript_id=gnl|b0040|mrna.b0040;product=L-carnitine:gamma-butyrobetaine antiporter;protein_id=NP_414582.1;transl_table=11\n'
b
diff -r ae9994cf526f -r 014a21767ac4 test-data/tiles/2.out
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/tiles/2.out Tue Sep 17 16:54:57 2019 -0400
b
@@ -0,0 +1,51 @@
+NC_000913.3 0 4641652 name=ANONYMOUS,strand=1,value=0
+NC_000913.3 189 255 name=thrL,strand=1,value=0
+NC_000913.3 336 2799 name=thrA,strand=1,value=0
+NC_000913.3 2800 3733 name=thrB,strand=1,value=0
+NC_000913.3 3733 5020 name=thrC,strand=1,value=0
+NC_000913.3 5233 5530 name=yaaX,strand=1,value=0
+NC_000913.3 5565 5601 name=None,strand=1,value=0
+NC_000913.3 5636 5670 name=None,strand=-1,value=0
+NC_000913.3 5682 6459 name=yaaA,strand=-1,value=0
+NC_000913.3 6528 7959 name=yaaJ,strand=-1,value=0
+NC_000913.3 8237 9191 name=talB,strand=1,value=0
+NC_000913.3 9305 9893 name=mog,strand=1,value=0
+NC_000913.3 9927 10494 name=satP,strand=-1,value=0
+NC_000913.3 10642 11356 name=yaaW,strand=-1,value=0
+NC_000913.3 10829 11315 name=mbiA,strand=1,value=0
+NC_000913.3 11381 11786 name=yaaI,strand=-1,value=0
+NC_000913.3 12162 14079 name=dnaK,strand=1,value=0
+NC_000913.3 14167 15298 name=dnaJ,strand=1,value=0
+NC_000913.3 15386 16731 name=None,strand=1,value=0
+NC_000913.3 15444 16557 name=insL-1,strand=1,value=0
+NC_000913.3 16750 16960 name=mokC,strand=-1,value=0
+NC_000913.3 16750 16903 name=hokC,strand=-1,value=0
+NC_000913.3 16951 17006 name=sokC,strand=1,value=0
+NC_000913.3 17488 18655 name=nhaA,strand=1,value=0
+NC_000913.3 18714 19620 name=nhaR,strand=1,value=0
+NC_000913.3 19795 20563 name=None,strand=-1,value=0
+NC_000913.3 19810 20314 name=insB-1,strand=-1,value=0
+NC_000913.3 20232 20508 name=insA-1,strand=-1,value=0
+NC_000913.3 20814 21078 name=rpsT,strand=-1,value=0
+NC_000913.3 21180 21399 name=yaaY,strand=1,value=0
+NC_000913.3 21406 22348 name=ribF,strand=1,value=0
+NC_000913.3 22390 25207 name=ileS,strand=1,value=0
+NC_000913.3 25206 25701 name=lspA,strand=1,value=0
+NC_000913.3 25710 25746 name=None,strand=1,value=0
+NC_000913.3 25762 25796 name=None,strand=-1,value=0
+NC_000913.3 25825 26275 name=fkpB,strand=1,value=0
+NC_000913.3 26276 27227 name=ispH,strand=1,value=0
+NC_000913.3 27292 28207 name=rihC,strand=1,value=0
+NC_000913.3 28373 29195 name=dapB,strand=1,value=0
+NC_000913.3 29650 30799 name=carA,strand=1,value=0
+NC_000913.3 30816 34038 name=carB,strand=1,value=0
+NC_000913.3 34299 34695 name=caiF,strand=1,value=0
+NC_000913.3 34727 34763 name=None,strand=1,value=0
+NC_000913.3 34780 35371 name=caiE,strand=-1,value=0
+NC_000913.3 35376 36162 name=caiD,strand=-1,value=0
+NC_000913.3 36270 37824 name=caiC,strand=-1,value=0
+NC_000913.3 37897 39115 name=caiB,strand=-1,value=0
+NC_000913.3 39151 39185 name=None,strand=1,value=0
+NC_000913.3 39197 39233 name=None,strand=-1,value=0
+NC_000913.3 39243 40386 name=caiA,strand=-1,value=0
+NC_000913.3 40416 41931 name=caiT,strand=-1,value=0
b
diff -r ae9994cf526f -r 014a21767ac4 text-from-bed.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/text-from-bed.py Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+import logging
+import sys
+
+logging.basicConfig(level=logging.INFO)
+log = logging.getLogger()
+
+
+if __name__ == "__main__":
+    with open(sys.argv[1], "r") as handle:
+        for line in handle:
+            lineData = line.strip().split()
+            # BED3+ chrom chromStart chromEnd
+            # BED6+ name score strand
+            # BED9+ thickStart thickEnd itemRgb
+            kv = {}
+            if len(lineData) >= 6:
+                kv["strand"] = lineData[5].replace("+", "1").replace("-", "-1")
+                kv["value"] = lineData[4]
+            else:
+                sys.exit("Must be BED6+")
+
+            line = [
+                lineData[0],  # chrom
+                lineData[1],  # chromStart
+                lineData[2],  # chromEnd
+                lineData[3],
+                ",".join(["%s=%s" % x for x in sorted(kv.items())]),
+            ]
+
+            sys.stdout.write("\t".join(line))
+            sys.stdout.write("\n")
b
diff -r ae9994cf526f -r 014a21767ac4 text-from-gff3.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/text-from-gff3.py Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+import logging
+import sys
+
+from BCBio import GFF
+
+logging.basicConfig(level=logging.INFO)
+log = logging.getLogger()
+
+
+if __name__ == "__main__":
+    attr = sys.argv[2]
+
+    for record in GFF.parse(sys.argv[1]):
+        if len(record.features) == 0:
+            continue
+
+        for feature in sorted(record.features, key=lambda x: x.location.start):
+            # chrom chromStart chromEnd
+            # name score strand
+            # thickStart thickEnd itemRgb
+
+            kv = {
+                "strand": 0 if not feature.location.strand else feature.location.strand,
+                "value": feature.qualifiers.get("score", [0])[0],
+            }
+
+            if attr not in feature.qualifiers:
+                continue
+
+            name = feature.qualifiers[attr][0]
+
+            line = [
+                record.id,
+                str(int(feature.location.start)),
+                str(int(feature.location.end)),
+                name,
+                ",".join(["%s=%s" % x for x in sorted(kv.items())]),
+            ]
+
+            sys.stdout.write("\t".join(line))
+            sys.stdout.write("\n")
b
diff -r ae9994cf526f -r 014a21767ac4 text-from-interval.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/text-from-interval.xml Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<tool id="circos_interval_to_text" name="Circos: Interval to Circos Text Labels" version="@WRAPPER_VERSION@">
+    <description>reformats interval files to prepare for Circos text labels</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements">
+    </expand>
+    <command detect_errors="exit_code"><![CDATA[
+python
+#if $ref.ref_source == 'gff3':
+    '$__tool_directory__/text-from-gff3.py' '$input' '${ref.attr}'
+#else
+    '$__tool_directory__/text-from-bed.py' '$input'
+#end if
+> '$output'
+    ]]></command>
+    <inputs>
+        <conditional name="ref">
+            <param name="ref_source" type="select" label="Data Format">
+                <option value="bed" selected="true">BED6+</option>
+                <option value="gff3">GFF3</option>
+            </param>
+            <when value="bed">
+                <param name="input" type="data" format="bed" label="BED File (BED6+ only)" />
+            </when>
+            <when value="gff3">
+                <param name="input" type="data" format="gff3" label="GFF3 File" />
+                <param name="attr" type="text" label="GFF3 Attribute to pull value from" />
+            </when>
+        </conditional>
+    </inputs>
+    <outputs>
+        <data name="output" format="tabular" />
+    </outputs>
+    <tests>
+        <test>
+            <conditional name="ref">
+                <param name="ref_source" value="bed" />
+                <param name="input" value="text/1.bed" ftype="bed" />
+            </conditional>
+            <output name="output" file="text/1.out" ftype="tabular" />
+        </test>
+        <test>
+            <conditional name="ref">
+                <param name="ref_source" value="gff3" />
+                <param name="input" value="text/2.gff3" ftype="gff3" />
+                <param name="attr" value="Name" />
+            </conditional>
+            <output name="output" file="text/2.out" ftype="tabular" />
+        </test>
+    </tests>
+    <help><![CDATA[
+Converts standard BED6+ and GFF3 files into a format appropriate for Circos data tracks, especially text tracks.
+
+BED3 files cannot be used as they lack the name field.
+    ]]></help>
+    <expand macro="citations" />
+</tool>
b
diff -r ae9994cf526f -r 014a21767ac4 tiles-from-bed.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tiles-from-bed.py Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+import logging
+import sys
+
+logging.basicConfig(level=logging.INFO)
+log = logging.getLogger()
+
+
+if __name__ == "__main__":
+    with open(sys.argv[1], "r") as handle:
+        for line in handle:
+            lineData = line.strip().split()
+            # BED3+ chrom chromStart chromEnd
+            # BED6+ name score strand
+            # BED9+ thickStart thickEnd itemRgb
+            kv = {}
+            if len(lineData) >= 6:
+                kv["strand"] = lineData[5].replace("+", "1").replace("-", "-1")
+                kv["name"] = lineData[3]
+                kv["value"] = lineData[4]
+
+            line = [
+                lineData[0],  # chrom
+                lineData[1],  # chromStart
+                lineData[2],  # chromEnd
+                ",".join(["%s=%s" % x for x in sorted(kv.items())]),
+            ]
+
+            sys.stdout.write("\t".join(line))
+            sys.stdout.write("\n")
b
diff -r ae9994cf526f -r 014a21767ac4 tiles-from-gff3.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tiles-from-gff3.py Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+import logging
+import sys
+
+from BCBio import GFF
+
+logging.basicConfig(level=logging.INFO)
+log = logging.getLogger()
+
+
+if __name__ == "__main__":
+    attr = sys.argv[2]
+
+    for record in GFF.parse(sys.argv[1]):
+        if len(record.features) == 0:
+            continue
+
+        for feature in sorted(record.features, key=lambda x: x.location.start):
+            # chrom chromStart chromEnd
+            # name score strand
+            # thickStart thickEnd itemRgb
+
+            kv = {
+                "strand": 0 if not feature.location.strand else feature.location.strand,
+                "name": feature.qualifiers.get(attr, ["None"])[0] or feature.id,
+                "value": feature.qualifiers.get("score", [0])[0],
+            }
+
+            line = [
+                record.id,
+                str(int(feature.location.start)),
+                str(int(feature.location.end)),
+                ",".join(["%s=%s" % x for x in sorted(kv.items())]),
+            ]
+
+            sys.stdout.write("\t".join(line))
+            sys.stdout.write("\n")
b
diff -r ae9994cf526f -r 014a21767ac4 tiles-from-interval.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tiles-from-interval.xml Tue Sep 17 16:54:57 2019 -0400
[
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<tool id="circos_interval_to_tile" name="Circos: Interval to Tiles" version="@WRAPPER_VERSION@">
+    <description>reformats interval files to prepare for Circos tile plots</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements">
+    </expand>
+    <command detect_errors="exit_code"><![CDATA[
+python
+#if $ref.ref_source == 'gff3':
+    '$__tool_directory__/tiles-from-gff3.py' '$input' '${ref.attr}'
+#else
+    '$__tool_directory__/tiles-from-bed.py' '$input'
+#end if
+> '$output'
+    ]]></command>
+    <inputs>
+        <conditional name="ref">
+            <param name="ref_source" type="select" label="Data Format">
+                <option value="bed" selected="true">BED6+</option>
+                <option value="gff3">GFF3</option>
+            </param>
+            <when value="bed">
+                <param name="input" type="data" format="bed" label="BED File (BED6+ only)" />
+            </when>
+            <when value="gff3">
+                <param name="input" type="data" format="gff3" label="GFF3 File" />
+                <param name="attr" type="text" label="GFF3 Attribute to pull value from" />
+            </when>
+        </conditional>
+    </inputs>
+    <outputs>
+        <data name="output" format="tabular" />
+    </outputs>
+    <tests>
+        <test>
+            <conditional name="ref">
+                <param name="ref_source" value="bed" />
+                <param name="input" value="tiles/1.bed" ftype="bed" />
+            </conditional>
+            <output name="output" file="tiles/1.out" ftype="tabular" />
+        </test>
+        <test>
+            <conditional name="ref">
+                <param name="ref_source" value="gff3" />
+                <param name="input" value="tiles/2.gff3" ftype="gff3" />
+                <param name="attr" value="Name" />
+            </conditional>
+            <output name="output" file="tiles/2.out" ftype="tabular" />
+        </test>
+    </tests>
+    <help><![CDATA[
+Converts standard BED3+ and GFF3 files into a format appropriate for Circos data tracks, especially tile tracks.
+
+BED3 files do not need conversion, Circos can accept these files directly.
+    ]]></help>
+    <expand macro="citations" />
+</tool>
b
diff -r ae9994cf526f -r 014a21767ac4 unified-histogram.py
--- a/unified-histogram.py Thu Oct 04 06:05:31 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
@@ -1,155 +0,0 @@
-#!/usr/bin/env python
-import logging
-import sys
-
-import wiggle
-from BCBio import GFF
-
-logging.basicConfig(level=logging.INFO)
-log = logging.getLogger()
-
-
-MODE = sys.argv[1]
-
-# Pair up (file, extension) pairs from sys.argv
-files = zip(sys.argv[2:][0::2], sys.argv[2:][1::2])
-
-# Our output data structure. This could be much more efficient.
-data = {}
-
-
-def bed(idx, path):
-    # chrom - The name of the chromosome (e.g. chr3, chrY, chr2_random) or scaffold (e.g. scaffold10671).
-    # chromStart - The starting position of the feature in the chromosome or scaffold. The first base in a chromosome is numbered 0.
-    # chromEnd - The ending position of the feature in the chromosome or scaffold. The chromEnd base is not included in the display of the feature. For example, the first 100 bases of a chromosome are defined as chromStart=0, chromEnd=100, and span the bases numbered 0-99.
-    # name - Defines the name of the BED line. This label is displayed to the left of the BED line in the Genome Browser window when the track is open to full display mode or directly to the left of the item in pack mode.
-    # score - A score between 0 and 1000. If the track line useScore attribute is set to 1 for this annotation data set, the score value will determine the level of gray in which this feature is displayed (higher numbers = darker gray). This table shows the Genome Browser's translation of BED score values into shades of gray:
-    # strand - Defines the strand - either '+' or '-'.
-    # thickStart - The starting position at which the feature is drawn thickly (for example, the start codon in gene displays). When there is no thick part, thickStart and thickEnd are usually set to the chromStart position.
-    # thickEnd - The ending position at which the feature is drawn thickly (for example, the stop codon in gene displays).
-    # itemRgb - An RGB value of the form R,G,B (e.g. 255,0,0). If the track line itemRgb attribute is set to "On", this RBG value will determine the display color of the data contained in this BED line. NOTE: It is recommended that a simple color scheme (eight colors or less) be used with this attribute to avoid overwhelming the color resources of the Genome Browser and your Internet browser.
-
-    with open(path, 'r') as handle:
-        for line in handle:
-            lineData = line.strip().split()
-            chrom = lineData[0]
-            chromStart = lineData[1]
-            chromEnd = lineData[2]
-
-            if chrom not in data:
-                data[chrom] = {}
-
-            for i in range(chromStart, chromEnd):
-                if i not in data[chrom]:
-                    data[chrom][i] = {}
-
-                data[chrom][i][idx] = lineData[5]
-
-
-# Handlers
-def gff3(idx, path):
-    for record in GFF.parse(path):
-        if len(record.features) == 0:
-            continue
-
-        if record.id not in data:
-            data[record.id] = {}
-
-        for feature in record.features:
-            if 'score' in feature.qualifiers:
-                for i in range(feature.location.start, feature.location.end):
-                    if i not in data[record.id]:
-                        data[record.id][i] = {}
-
-                    data[record.id][i][idx] = feature.qualifiers['score'][0]
-
-
-def wig(idx, path):
-    walker = wiggle.Wiggle()
-    with open(path, 'r') as handle:
-        for region, position, value in walker.walk(handle):
-            if region not in data:
-                data[region] = {}
-
-            if position not in data[region]:
-                data[region][position] = {}
-
-            data[region][position][idx] = value
-
-
-if __name__ == '__main__':
-    mode_tiles_possible = True
-
-    for idx, (file_path, file_type) in enumerate(files):
-        log.info("Processing %s.%s", file_path, file_type)
-
-        if file_type in globals():
-            func = globals()[file_type]
-            func(idx, file_path)
-
-        if file_type == 'wig':
-            mode_tiles_possible = False
-
-    if MODE == 'tile' and not mode_tiles_possible:
-        raise Exception("You requested a 'tile' plot with wig data, which is impossible")
-
-    # Max number of files
-    max_idx = range(len(files))
-
-    serialized_values = None
-    region_start, region_end = (None, None)
-
-    for genome in data:
-        for position in sorted(data[genome]):
-            values = [
-                '' if x not in data[genome][position] else data[genome][position][x]
-                for x in max_idx
-            ]
-            if serialized_values is None:
-                serialized_values = values
-            if region_start is None:
-                region_start = position
-                region_end = position
-
-            if values == serialized_values:
-                region_end = position
-            else:
-                if MODE == 'histogram':
-                    # histogram
-                    # hs4 0 1999999 5.0000,3.0000,1.0000,19.0000
-                    sys.stdout.write(' '.join(
-                        (genome, str(region_start), str(region_end), ','.join(map(str, values)))
-                    ) + '\n')
-                elif MODE == 'heatmap':
-                    # heatmap
-                    # hs1 2000000 3999999 0.0000 id=hs4
-                    # hs1 4000000 5999999 2.0000 id=hs1
-                    # hs1 4000000 5999999 0.0000 id=hs2
-                    # hs1 4000000 5999999 0.0000 id=hs3
-                    # hs1 4000000 5999999 0.0000 id=hs4
-                    # hs1 6000000 7999999 4.0000 id=hs2
-                    for x in max_idx:
-                        if x in data[genome][position]:
-                            sys.stdout.write(' '.join(
-                                (genome, str(region_start), str(region_end), data[genome][position][x], 'id=hm%s' % x)
-                            ) + '\n')
-                        else:
-                            sys.stdout.write(' '.join(
-                                (genome, str(region_start), str(region_end), 0.0, 'id=hm%s' % x)
-                            ) + '\n')
-                elif MODE == 'line':
-                    # multiple=False
-                    sys.stdout.write(' '.join(
-                        (genome, str(region_start), str(region_end), data[genome][position][0])
-                    ) + '\n')
-                elif MODE == 'scatter':
-                    # multiple=False
-                    sys.stdout.write(' '.join(
-                        (genome, str(region_start), str(region_end), data[genome][position][0])
-                    ) + '\n')
-
-                # Update start of next array
-                region_start = position
-                region_end = position
-                # And update with new array
-                serialized_values = values
b
diff -r ae9994cf526f -r 014a21767ac4 unified-tiles.py
--- a/unified-tiles.py Thu Oct 04 06:05:31 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
@@ -1,74 +0,0 @@
-#!/usr/bin/env python
-import logging
-import sys
-
-from BCBio import GFF
-
-logging.basicConfig(level=logging.INFO)
-log = logging.getLogger()
-
-
-# Pair up (file, extension) pairs from sys.argv
-files = zip(sys.argv[1:][0::2], sys.argv[1:][1::2])
-
-
-# Handlers
-def bed(idx, path):
-    # chrom - The name of the chromosome (e.g. chr3, chrY, chr2_random) or scaffold (e.g. scaffold10671).
-    # chromStart - The starting position of the feature in the chromosome or scaffold. The first base in a chromosome is numbered 0.
-    # chromEnd - The ending position of the feature in the chromosome or scaffold. The chromEnd base is not included in the display of the feature. For example, the first 100 bases of a chromosome are defined as chromStart=0, chromEnd=100, and span the bases numbered 0-99.
-    # name - Defines the name of the BED line. This label is displayed to the left of the BED line in the Genome Browser window when the track is open to full display mode or directly to the left of the item in pack mode.
-    # score - A score between 0 and 1000. If the track line useScore attribute is set to 1 for this annotation data set, the score value will determine the level of gray in which this feature is displayed (higher numbers = darker gray). This table shows the Genome Browser's translation of BED score values into shades of gray:
-    # strand - Defines the strand - either '+' or '-'.
-    # thickStart - The starting position at which the feature is drawn thickly (for example, the start codon in gene displays). When there is no thick part, thickStart and thickEnd are usually set to the chromStart position.
-    # thickEnd - The ending position at which the feature is drawn thickly (for example, the stop codon in gene displays).
-    # itemRgb - An RGB value of the form R,G,B (e.g. 255,0,0). If the track line itemRgb attribute is set to "On", this RBG value will determine the display color of the data contained in this BED line. NOTE: It is recommended that a simple color scheme (eight colors or less) be used with this attribute to avoid overwhelming the color resources of the Genome Browser and your Internet browser.
-
-    with open(path, 'r') as handle:
-        for line in handle:
-            lineData = line.strip().split()
-            chrom = lineData[0]
-            chromStart = lineData[1]
-            chromEnd = lineData[2]
-
-            yield (chrom, chromStart, chromEnd, lineData[4], lineData[6], lineData[5], lineData[9])
-
-
-def gff3(idx, path):
-    for record in GFF.parse(path):
-        if len(record.features) == 0:
-            continue
-
-        for feature in sorted(record.features, key=lambda x: x.location.start):
-            yield (
-                record.id,
-                feature.location.start,
-                feature.location.end,
-                feature.id or feature.qualifiers.get('Name', [None])[0],
-                feature.location.strand,
-                feature.qualifiers.get('score', [0.0])[0],
-                feature.qualifiers.get('color', [None])[0]
-            )
-
-
-if __name__ == '__main__':
-    for idx, (file_path, file_type) in enumerate(files):
-        log.info("Processing %s.%s", file_path, file_type)
-
-        if file_type in globals():
-            func = globals()[file_type]
-            for item in func(idx, file_path):
-                # multiple=False
-                # hs1 10292899 10301003 id=Conrad_993
-                # hs1 10297766 10301003 id=Conrad_994
-                lineExtra = [
-                    'strand=%s' % item[4],
-                    'score=%s' % item[5],
-                    'value=%s' % item[5],
-                ]
-                if item[3] is not None:
-                    lineExtra.append('id=%s' % item[3])
-                if item[6] is not None:
-                    lineExtra.append('color=%s' % item[6])
-
-                sys.stdout.write(' '.join((str(item[0]), str(item[1]), str(item[2]), ','.join(lineExtra))) + '\n')
b
diff -r ae9994cf526f -r 014a21767ac4 wiggle.py
--- a/wiggle.py Thu Oct 04 06:05:31 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
@@ -1,55 +0,0 @@
-class Wiggle:
-
-    def fixedStepParser(self, line):
-        value = line.strip()
-        start_position = self.stepIdx * self.parserConfig['step'] + self.parserConfig['start']
-        stop_position = start_position + self.parserConfig['span'] - 1
-        self.stepIdx += 1
-
-        for position in range(start_position, stop_position):
-            yield (self.parserConfig['chrom'], position, value)
-
-    def variableStepParser(self, line):
-        (start, value) = line.strip().split()
-        start = int(start)
-        start_position = start
-        stop_position = start + self.parserConfig['span']
-
-        for position in range(start_position, stop_position):
-            yield (self.parserConfig['chrom'], position, value)
-
-    def walk(self, handle):
-
-        parser = None
-        for line in handle:
-            if line.startswith('track'):
-                continue
-            elif line.startswith('fixedStep'):
-                parser = self.fixedStepParser
-                lineData = line.split()
-                fields = {x.split('=')[0]: x.split('=')[1] for x in lineData[1:]}
-                self.parserConfig = fields
-
-                for numField in ('step', 'start', 'span'):
-                    if numField in self.parserConfig:
-                        self.parserConfig[numField] = int(self.parserConfig[numField])
-                self.stepIdx = 0
-            elif line.startswith('variableStep'):
-                parser = self.variableStepParser
-                lineData = line.split()
-                fields = {x.split('=')[0]: x.split('=')[1] for x in lineData[1:]}
-                # Default value
-                if 'span' not in fields:
-                    fields['span'] = 1
-                self.parserConfig = fields
-
-                for numField in ('span',):
-                    if numField in self.parserConfig:
-                        self.parserConfig[numField] = int(self.parserConfig[numField])
-
-                self.stepIdx = 0
-            elif len(line.strip()) == 0:
-                continue
-            else:
-                for data in parser(line):
-                    yield data