# HG changeset patch # User iuc # Date 1502286772 14400 # Node ID ef5f8bbf77309474cce8479f978938d34c10d746 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/circos commit a41493893bdcbe330434db9c5851719012b62fa8 diff -r 000000000000 -r ef5f8bbf7730 README.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README.rst Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,43 @@ +Galaxy Circos Tool +================== + +.. figure:: ./static/images/example.png + :alt: An image showing a circos plot made with the tool. + +Features +-------- + +- [x] Ideograms + + - [x] Can configure most aspects of these. More features on demand + +- [x] 2d Data sources + + - [x] Histograms + + - [x] Stacked histograms + - [x] gff3 scores + - [x] wig files + - [x] bed + - [x] Rules + + - [x] Complex colouring rules + + - [ ] Heatmaps + + - [ ] Bugs here. + + - [x] Tiles + - [x] Scatter Plots + - [x] Line Plots + +- [x] Links +- [x] Axes +- [x] Backgrounds +- [ ] Highlights + + - [ ] Wedge + +- [x] Test cases +- [ ] Grids? +- [ ] Fine grained Z-depth control diff -r 000000000000 -r ef5f8bbf7730 circgraph.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/circgraph.xml Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,409 @@ + + + creates circos plots from standard bioinformatics datatypes. + + macros.xml + macros_conffiles.xml + + + circos --version + circos/conf/karyotype.txt && +#else + cp $reference_genome.input_karyotype circos/conf/karyotype.txt && +#end if + +mv '$circos_conf' circos/conf/circos.conf && +mv '$ticks_conf' circos/conf/ticks.conf && +mv '$ideogram_conf' circos/conf/ideogram.conf && +mv '$data_conf' circos/conf/2d.conf && +mv '$links_conf' circos/conf/links.conf && +mv '$test_case_conf' circos/conf/galaxy_test_case.xml && + +## 2D Data Plots +#for $hi, $data in enumerate($sec_tdd.data): + #if str($data.plot_format.plot_format_select) == 'tile': + python '$__tool_directory__/unified-tiles.py' + '${data.plot_format.data_source}' '${data.plot_format.data_source.ext}' + > circos/data/data-${hi}.txt && + #else: + python $__tool_directory__/unified-histogram.py + $data.plot_format.plot_format_select + #if str($data.plot_format.plot_format_select) in ('histogram', 'heatmap'): + #for $fi, $file in enumerate($data.plot_format.data_source): + '${file}' '${file.ext}' + #end for + #else: + '${data.plot_format.data_source}' '${data.plot_format.data_source.ext}' + #end if + > circos/data/data-${hi}.txt && + #end if +#end for + +## Link Tracks +#for $hi, $data in enumerate($sec_links.data): + cp '${data.data_source}' circos/data/links-${hi}.txt && +#end for + +tar cvfz circos.tar.gz circos && + +circos -conf circos/conf/circos.conf + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + +
+
+ + +
+ + +
+
+ + +
+ + +
+
+ + +
+ + + + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff -r 000000000000 -r ef5f8bbf7730 fasta-to-karyotype.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fasta-to-karyotype.py Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,48 @@ +#!/usr/bin/env python +import sys + +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. diff -r 000000000000 -r ef5f8bbf7730 macros.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/macros.xml Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,362 @@ + + + 0.9-RC2 + + + libgd + circos + python + bcbiogff + biopython + + + + + + 10.1101/gr.092759.109 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+ + +
+ + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff -r 000000000000 -r ef5f8bbf7730 macros_conffiles.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/macros_conffiles.xml Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,424 @@ + + + + > +<> +karyotype = karyotype.txt + + + <> + + +<> +<> + + <> + + + <> + + + ]]> + + + + radius = ${ticks.radius}r + color = $circosColor($ticks.color) + thickness = 2p + multiplier = ${ticks.multiplier} + + #for $tick_group in $ticks.tick_group: + + spacing = ${tick_group.spacing} + size = ${tick_group.size}p + show_label = ${tick_group.show_tick_labels} + label_size = ${tick_group.label_size}p + label_offset = ${tick_group.label_offset}p + format = ${tick_group.format} kb + ## TODO: figure out automated tick labels + ##if ${ticks.multiplier} * ${tick_group.spacing} + + #end for + +]]> + + + + + + + ## spacing between ideograms + default = ${ideogram.spacing}r + + + # ideogram position, thickness and fill + radius = ${ideogram.radius}r + thickness = ${ideogram.thickness}p + fill = yes + + show_label = ${ideogram.ideogram_labels.show_label} + label_radius = dims(ideogram,radius) + 0.075r + label_size = 24 + label_parallel = ${ideogram.ideogram_labels.parallel} + + show_bands = yes + fill_bands = yes + band_transparency = 4 + + +]]> + + + + #set plot_type = str($data.plot_format.plot_format_select) + #def circosColor($value) + #set $value = str($value) + #set $r = int($value[1:3], 16) + #set $g = int($value[3:5], 16) + #set $b = int($value[5:], 16) + $r, $g, $b + #end def + + type = ${plot_type} + file = data/data-${hi}.txt + + r1 = ${data.r1}r + r0 = ${data.r0}r + orientation = ${data.orientation} + +#if str($plot_type) == 'histogram': + extend_bin = ${data.plot_format.format_specific.extend_bins} + fill_color = ${data.plot_format.format_specific.fill_color} +#else if str($plot_type) == 'heatmap': + color = $circosColor($data.plot_format.format_specific.fill_color) + scale_log_base = ${data.plot_format.format_specific.scale_log_base} +#else if str($plot_type) == 'line': + color = $circosColor($data.plot_format.format_specific.color) + thickness = ${data.plot_format.format_specific.thickness} +#else if str($plot_type) == 'scatter': + glyph = ${data.plot_format.format_specific.glyph} + glyph_size = ${data.plot_format.format_specific.glyph_size} + color = $circosColor($data.plot_format.format_specific.color) + stroke_color = $circosColor($data.plot_format.format_specific.stroke_color) + stroke_thickness = ${data.plot_format.format_specific.stroke_thickness} +#else if str($plot_type) == 'tile': + color = ${data.plot_format.format_specific.color} + stroke_color = $circosColor($data.plot_format.format_specific.color) + stroke_thickness = ${data.plot_format.format_specific.stroke_thickness} + layers = ${data.plot_format.format_specific.layers} + thickness = ${data.plot_format.format_specific.thickness} + padding = ${data.plot_format.format_specific.padding} + + layers_overflow = ${data.plot_format.format_specific.overflow.overflow_behavior} + #if str($data.plot_format.format_specific.overflow.overflow_behavior) != "hide": + layers_overflow_color = $circosColor($data.plot_format.format_specific.overflow.layer_overflow_color) + #end if +#end if + + + #for $rule in $data.sec_rule.rules: + + #for $condition in $rule.conditions + #if str($condition.application.application_select) == "1": + condition = 1 + #elif str($condition.application.application_select) == "on": + #set on_str = ' '.join([ "on(%s)" % $chr.strip() for $chr in $condition.application.on_genomes.split(',') ]) + condition = $on_str + #elif str($condition.application.application_select) == "pos": + #if float($condition.application.pos_gt) != 0: + condition = var(start) > $condition.application.pos_gt + #end if + + #if float($condition.application.pos_lt) != 0: + condition = var(start) < $condition.application.pos_lt + #end if + #elif str($condition.application.application_select) == "value": + #if float($condition.application.pos_gt) != 0: + condition = var(value) > $condition.application.pos_gt + #end if + + #if float($condition.application.pos_lt) != 0: + condition = var(value) < $condition.application.pos_lt + #end if + #elif str($condition.application.application_select) == "var": + condition = var(${condition.application.varname}) ${condition.application.cond_select} "${condition.application.varvalue}" + #end if + #end for + + #for $action in $rule.actions: + #if str($action.action.action_select) == "fill_color_value" or str($action.action.action_select) == "color_value" : + #set x_fill_color = $action.action.action_value + #set x_fill_color_count = int(str($x_fill_color).split('-')[1]) + #set x_min = $x_fill_color_count if $action.action.invert else 1 + #set x_max = 1 if $action.action.invert else $x_fill_color_count + #set color_action = "fill_color" if str($plot_type) == 'histogram' else "color" + + $color_action = eval(sprintf("${action.action.action_value}-%d", remap_int(var(value), ${action.action.min_value}, ${action.action.max_value}, ${x_min}, ${x_max}))) + #else + $action.action.action_select = ${action.action.action_value} + #end if + #end for + $rule.continue_flow + + #end for + + + + #for $axis in $data.sec_axes.axes: + + color = $circosColor($axis.color) + thickness = ${axis.thickness} + spacing = ${axis.spacing}r + y0 = ${axis.y0}r + y1 = ${axis.y1}r + + #end for + + + #for $bkg in $data.sec_bkgs.backgrounds: + + color = $circosColor($bkg.color) + y0 = ${bkg.y0}r + y1 = ${bkg.y1}r + + #end for + + +#end for + ]]> + + + + + #def circosColor($value) + #set $value = str($value) + #set $r = int($value[1:3], 16) + #set $g = int($value[3:5], 16) + #set $b = int($value[5:], 16) + $r, $g, $b + #end def + + file = data/links-${hi}.txt + + radius = ${data.radius}r + ribbon = ${data.linktype.ribbon} + #if $data.linktype.ribbon == 'yes' + ${data.linktype.twist} + #end if + color = $circosColor($data.color) + bezier_radius = ${data.bezier_radius}r + thickness = ${data.thickness} + crest = ${data.advanced.crest} + bezier_radius_purity = ${data.advanced.bezier_radius_purity} + + #if $data.advanced.perturbation.perturb == 'yes' + perturb = yes + perturb_crest = ${data.advanced.perturbation.perturb_crest_min},${data.advanced.perturbation.perturb_crest_max} + perturb_bezier_radius = ${data.advanced.perturbation.perturb_bezier_radius_min},${data.advanced.perturbation.perturb_bezier_radius_max} + perturb_bezier_radius_purity = ${data.advanced.perturbation.perturb_bezier_radius_purity_min},${data.advanced.perturbation.perturb_bezier_radius_purity_max} + #end if + + #if $data.advanced.zdepth + z = ${data.advanced.zdepth} + #end if + + + #for $rule in $data.sec_link_rule.rules: + + #for $condition in $rule.conditions + #set cond = $condition.application.application_select + #if $cond == 'interchr' or $cond == 'intrachr' or $cond == 'inv' or $cond == 'rev' + condition = var($cond) + #elif $cond == 'always' + condition = 1 + #else + #set op = $condition.application.comparison.compare + #set val = $condition.application.comparison.compval + #if $cond == 'chr' + #if $op == 'between' or $op == 'fromto' + #set val2 = $condition.application.comparison.compval2 + #set c=''.join([str($op),"(",str($val),",",str($val2),")"]) + #else + #set c=''.join([str($op),"(",str($val),")"]) + #end if + condition = $c + #else + #if $cond == 'dist' and $op == 'lt' + condition = abs(var(pos1) - var(pos2)) < $val + #elif $cond == 'dist' and $op == 'gt' + condition = abs(var(pos1) - var(pos2)) > $val + #elif $op == 'lt' + condition = var($cond) < $val + #elif $op == 'gt' + condition = var($cond) > $val + #end if + #end if + #end if + #end for + + #for $action in $rule.actions: + #set actiontype = $action.action.action_select + #if $actiontype == 'color': + #if $action.action.dynamic.dynamic_select == "static": + #set actionval = $circosColor($action.action.dynamic.action_value) + $actiontype = $actionval + #else + #set x_fill_color = $action.action.dynamic.action_value + #set x_fill_color_count = int(str($x_fill_color).split('-')[1]) + #set x_min = $x_fill_color_count if $action.action.dynamic.invert else 1 + #set x_max = 1 if $action.action.dynamic.invert else $x_fill_color_count + + $actiontype = eval(sprintf("${action.action.dynamic.action_value}-%d", remap_int(var(value), ${action.action.dynamic.min_value}, ${action.action.dynamic.max_value}, ${x_min}, ${x_max}))) + #end if + #elif $actiontype == 'z': + #if $action.action.dynamic.dynamic_select == "static": + #set actionval = $action.action.dynamic.action_value + $actiontype = $actionval + #else + #set x_min = 1000 if $action.action.dynamic.invert else 1 + #set x_max = 1 if $action.action.dynamic.invert else 1000 + $actiontype = eval(remap_int(var(value), ${action.action.dynamic.min_value}, ${action.action.dynamic.max_value}, ${x_min}, ${x_max})) + #end if + #else + #set actionval = $action.action.action_value + $actiontype = $actionval + #end if + #end for + + $rule.continue_flow + + + #end for + + +#end for + ]]> + + + + + + + + + + + + + + #if $reference_genome.reference_genome_source != 'karyotype': + #if $reference_genome.bands: + + #end if + #end if + + + + + + #for $idx, $tick_group in enumerate($ticks.tick_group): + + + + + + + #end for + + #for $idx, $data_group in enumerate($sec_tdd.data): + + + + + + #if str($data_group.plot_format.plot_format_select) == 'histogram': + #set my_files = ','.join([ "my-test-case/%s-%s.%s" % ($idx, $j, $file.ext) for ($j, $file) in enumerate($data_group.plot_format.data_source)]) + + + + #else if str($data_group.plot_format.plot_format_select) == 'heatmap': + #set my_files = ','.join([ "my-test-case/%s-%s.%s" % ($idx, $j, $file.ext) for ($j, $file) in enumerate($data_group.plot_format.data_source)]) + + + + #else if str($data_group.plot_format.plot_format_select) == 'line': + + + + #else if str($data_group.plot_format.plot_format_select) == 'scatter': + + + + + + + + + #else if str($data_group.plot_format.plot_format_select) == 'tile': + + + + + + + + + #if str($data_group.plot_format.format_specific.overflow.overflow_behavior) != 'hide': + + #end if + #end if + ## Next line intentionally blank + + #end for + + + + + + ]]> + + diff -r 000000000000 -r ef5f8bbf7730 static/images/circos-sample-panel.png Binary file static/images/circos-sample-panel.png has changed diff -r 000000000000 -r ef5f8bbf7730 static/images/example.png Binary file static/images/example.png has changed diff -r 000000000000 -r ef5f8bbf7730 test-data/1/0-0.wig --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/1/0-0.wig Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,503 @@ +track type=wiggle_0 name="example" description="discontinuous sine wave" +fixedStep chrom=ctgA start=1 step=100 span=20 +0 +-0.506365641109759 +-0.873297297213995 +-0.999755839901149 +-0.850919359639177 +-0.467771805322476 +0.0441824483318732 +0.543970523363376 +0.893969648197021 +0.99780327442197 +0.826879540532003 +0.428264391396659 +-0.0882786064717262 +-0.580513008156313 +-0.91289603861164 +-0.993901956906654 +-0.801224790676895 +-0.387920558984219 +0.132202352755937 +0.615921726468774 +0.930039504416137 +0.988059506793465 +0.774005214886395 +0.34681910129778 +-0.175867902248536 +-0.650127523574896 +-0.945366563696042 +-0.980287334634812 +-0.745273974144339 +-0.305040291224202 +0.219189974282818 +0.683063594104854 +0.958847282055722 +0.970600619811948 +0.71508718178021 +0.262665724548229 +-0.262083959018097 +-0.714665612518583 +-0.970455331081526 +-0.959018280889002 +-0.683503793877429 +-0.219778160592474 +0.304466082686301 +0.744871858736274 +0.980168039762288 +0.945562938664219 +0.650585494129627 +0.176461360584952 +-0.346253571205695 +-0.773623338680308 +-0.987966438766777 +-0.930260871990585 +-0.61639657336978 +-0.132799924069858 +0.38736481184216 +0.800863899493182 +0.993835297491596 +0.913141966452114 +0.581003804007494 +0.0888791236810795 +-0.427719512602322 +-0.826540339206424 +-0.997763153807204 +-0.894239655996039 +-0.544476309619657 +-0.044784738601126 +0.467238859047214 +0.850602510646281 +0.999742336443933 +0.873590857634893 +0.50688542994917 +0.000602887030758908 +-0.505845668220208 +-0.873003419373278 +-0.999768979974307 +-0.851235899346026 +-0.468304581575409 +0.043580142003502 +0.543464539388603 +0.893699315464349 +0.997843032362382 +0.827218441309355 +0.428809114528536 +-0.0876780571755001 +-0.580022001304441 +-0.912649778958282 +-0.993968255065378 +-0.801585390637186 +-0.388476165127704 +0.131604733390055 +0.615446655696971 +0.929817798797622 +0.988152215687393 +0.774386809762636 +0.347384505330554 +-0.17527437998892 +-0.64966931671649 +-0.945169845112828 +-0.980406273199548 +-0.745675818665582 +-0.305614388888252 +0.218601708303567 +0.682623146057239 +0.958675934707531 +0.97074555575544 +0.715508491127093 +0.263247394606515 +-0.261502098227572 +-0.714243783495441 +-0.970309689616982 +-0.959188931145217 +-0.683943745214962 +-0.220366267018746 +0.303891763483259 +0.744469472587545 +0.980048388625338 +0.945758969945982 +0.651043228214223 +0.177054754782462 +-0.345687915259853 +-0.773241181283175 +-0.987873011641156 +-0.930481901440504 +-0.616871196227395 +-0.133397447114619 +0.386808923903526 +0.800502717217221 +0.993768276844436 +0.913387562390317 +0.581494388679593 +0.0894796085852885 +-0.427174478343574 +-0.82620083745591 +-0.997722670532666 +-0.89450933876326 +-0.544981897973607 +-0.0453870125923442 +0.466705742943332 +0.850285352482504 +0.999728469607566 +0.873884100529272 +0.507405034549512 +0.00120577384238478 +-0.505325511469513 +-0.87270922421956 +-0.999781756658628 +-0.851552129651776 +-0.468837187612361 +0.0429778198349343 +0.542958357879249 +0.893428657896279 +0.997882427613987 +0.827557041415301 +0.429353681799962 +-0.0870774760106846 +-0.579530783630345 +-0.912403187581549 +-0.994034191943674 +-0.801945699242987 +-0.389031630070668 +0.131007066189432 +0.614971361227045 +0.929595755215624 +0.988244565414863 +0.774768123170331 +0.347949783098507 +-0.174680794021833 +-0.649210873720956 +-0.94497278298608 +-0.980524855413266 +-0.746077392153944 +-0.306188375469783 +0.21801336286854 +0.682182449894674 +0.958504238906709 +0.970890138859323 +0.715929540406099 +0.263828968981531 +-0.260920142388146 +-0.713821694864108 +-0.970163695471254 +-0.959359232762341 +-0.684383447957544 +-0.220954293347872 +0.303317333823826 +0.744066815844409 +0.979928381267452 +0.94595465747008 +0.651500725662311 +0.177648084625384 +-0.345122133665854 +-0.772858742833902 +-0.987779225450561 +-0.930702592685557 +-0.617345594869105 +-0.133994921673036 +0.386252895370368 +0.800141243980293 +0.993700894989533 +0.91363282633698 +0.581984761994295 +0.0900800609660932 +-0.42662928881852 +-0.825861035403859 +-0.99768182461307 +-0.894778696400663 +-0.545487288241457 +-0.0459892700866177 +0.466172457204606 +0.849967885263126 +0.999714239397087 +0.874177025790545 +0.507924454721923 +0.00180866021574464 +-0.504805171046737 +-0.872414711859773 +-0.999794169949471 +-0.851868050441484 +-0.469369623239746 +0.0423754820450979 +0.542451979019298 +0.893157675591189 +0.997921460162468 +0.827895340726768 +0.429898093013001 +-0.0864768631955748 +-0.579039355312569 +-0.91215626457107 +-0.994099767517573 +-0.802305716363335 +-0.389586953611214 +0.130409351371303 +0.614495843231754 +0.929373373750848 +0.98833655594231 +0.775149154970883 +0.348514934396177 +-0.174087144563029 +-0.648752194754925 +-0.944775377387424 +-0.980643081232865 +-0.746478694463463 +-0.306762250760167 +0.217424938191585 +0.681741505777341 +0.958332194715663 +0.971034369071043 +0.716350329464186 +0.264410447461892 +-0.260338091711345 +-0.713399346778001 +-0.970017348697407 +-0.959529185678474 +-0.684822901945355 +-0.221542239366122 +0.302742793916791 +0.743663888653221 +0.979808017732248 +0.946150001165385 +0.651957986307603 +0.178241349898059 +-0.344556226629346 +-0.772476023471494 +-0.98768508022908 +-0.930922945645528 +-0.617819769122481 +-0.134592347527942 +0.385696726444787 +0.799779479913782 +0.993633151951378 +0.913877758202957 +0.582474923773363 +0.0906804806052454 +-0.426083944225323 +-0.825520933173783 +-0.997640616063263 +-0.895047728810343 +-0.545992480239513 +-0.0465915108650422 +0.465639002024868 +0.849650109103536 +0.99969964581767 +0.874469633312244 +0.508443690277607 +0.00241154593170571 +-0.50428464714101 +-0.872119882400963 +-0.999806219842322 +-0.852183661600323 +-0.469901888264038 +0.0417731288529262 +0.541945402992805 +0.892886368647573 +0.997960129993637 +0.828233339120793 +0.430442347969774 +-0.0858762189484769 +-0.578547716529735 +-0.911909010016595 +-0.994164981763242 +-0.802665441867374 +-0.390142135547497 +0.129811589152921 +0.614020101883935 +0.929150654484127 +0.988428187236296 +0.775529905025798 +0.349079959018146 +-0.173493431828281 +-0.648293279985113 +-0.944577628388612 +-0.980760950615372 +-0.746879725448277 +-0.307336014550815 +0.216836434486577 +0.68130031386551 +0.958159802196927 +0.971178246338178 +0.716770858148409 +0.264991829836246 +-0.259755946408727 +-0.712976739390632 +-0.969870649348633 +-0.959698789831842 +-0.685262107018665 +-0.222130104859792 +0.302168143970983 +0.743260691160433 +0.979687298063475 +0.946345000960895 +0.652415009983898 +0.17883455038485 +-0.34399019435602 +-0.772093023335059 +-0.987590576010932 +-0.931142960240324 +-0.618293718815172 +-0.13518972446219 +0.385140417328934 +0.79941742514918 +0.993565047754595 +0.914122357899222 +0.582964873838637 +0.091280867284509 +-0.425538444762198 +-0.825180530889296 +-0.997599044898223 +-0.895316435894515 +-0.546497473784151 +-0.0471937347087195 +0.465105377598017 +0.849332024119238 +0.999684688874618 +0.874761922988011 +0.508962741027838 +0.00301443077113541 +-0.503763939941528 +-0.871824735950293 +-0.999817906332802 +-0.852498963013576 +-0.470433982491772 +0.0411707604773582 +0.541438629983896 +0.892614737164045 +0.997998437093437 +0.828571036474523 +0.430986446472459 +-0.0852755434877088 +-0.57805586746054 +-0.911661424007995 +-0.994229834656976 +-0.803024875624353 +-0.390697175677724 +0.129213779751557 +0.613544137356508 +0.92892759749641 +0.988519459263516 +0.775910373196683 +0.349644856759043 +-0.17289965603339 +-0.647834129578325 +-0.944379536061519 +-0.980878463517946 +-0.747280484962623 +-0.30790966663318 +0.216247851967423 +0.680858874319544 +0.957987061413159 +0.971321770608431 +0.717191126305919 +0.265573115893276 +-0.259173706691886 +-0.712553872855609 +-0.969723597478254 +-0.959868045160799 +-0.685701063017834 +-0.22271788961521 +0.301593384195272 +0.742857223512596 +0.979566222305013 +0.946539656785734 +0.652871796525078 +0.179427685870145 +-0.343424037051613 +-0.771709742563807 +-0.987495712830468 +-0.931362636389977 +-0.618767443774911 +-0.13578705225865 +0.384583968225014 +0.799055079818084 +0.993496582423937 +0.91436662533687 +0.583454612012034 +0.0918812207856598 +-0.424992790627422 +-0.824839828674128 +-0.997557111133059 +-0.895584817555511 +-0.547002268691819 +-0.0477959413987577 +0.464571584118009 +0.849013630425847 +0.999669368573369 +0.87505389471161 +0.509481606783953 +0.0036173145149015 +-0.503243049637554 +-0.871529272615042 +-0.999829229416663 +-0.85281395456664 +-0.470965905729547 +0.0405683771373384 +0.540931660176769 +0.892342781239334 +0.998036381447947 +0.828908432665215 +0.431530388323292 +-0.0846748370315997 +-0.577563808283757 +-0.911413506635259 +-0.994294326175203 +-0.803384017503629 +-0.391252073800153 +0.128615923384498 +0.613067949822471 +0.928704202868774 +0.988610371990796 +0.776290559345248 +0.350209627413543 +-0.172305817394175 +-0.647374743701449 +-0.944181100478148 +-0.980995619897873 +-0.747680972860835 +-0.308483206798754 +0.215659190848055 +0.680417187299892 +0.957813972427147 +0.971464941829636 +0.717611133783957 +0.266154305421701 +-0.258591372772452 +-0.71213074732663 +-0.969576193139719 +-0.960036951603826 +-0.686139769783315 +-0.223305593418733 +0.301018514798568 +0.742453485856362 +0.979444790500868 +0.946733968569148 +0.653328345765115 +0.180020756138357 +-0.342857754921908 +-0.77132618129705 +-0.987400490722168 +-0.931581974014641 +-0.619240943829511 +-0.13638433070021 +0.38402737933528 +0.798692444052197 +0.993427755984289 +0.914610560427116 +0.583944138115545 +0.0924815408904855 +-0.424446982019324 +-0.824498826652114 +-0.997514814783015 +-0.895852873695781 +-0.547506864779039 +-0.048398130716271 +0.464037621778865 +0.848694928139091 +0.99965368491949 +0.875345548376914 +0.51000028735736 +0.00422019694387214 +-0.502721976418416 +-0.871233492502601 + diff -r 000000000000 -r ef5f8bbf7730 test-data/1/1.gff3 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/1/1.gff3 Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,268 @@ +##gff-version 3 +# Note: See http://song.sourceforge.net +ctgA example contig 1 50001 . . . Name=ctgA +ctgA example remark 1659 1984 1110 + . Name=f07;Note=This is an example +ctgA example remark 3014 6130 999 + . Name=f06;Note=This is another example +ctgA example remark 4715 5968 444 - . Name=f05;Note=Ok! Ok! I get the message. +ctgA example remark 13280 16394 203 + . Name=f08 +ctgA example remark 15329 15533 1000 + . Name=f10 +ctgA example remark 19157 22915 100 - . Name=f13 +ctgA example remark 22132 24633 320 + . Name=f15 +ctgA example remark 23072 23185 850 + . Name=f14 +ctgA example remark 24562 28338 208 + . Name=f02 +ctgA example remark 36034 38167 100 + . Name=f09 +ctgA example remark 36649 40440 300 - . Name=f03 +ctgA example remark 37242 38653 10 + . Name=f04 +ctgA example remark 44705 47713 400 - . Name=f01 +ctgA example remark 46990 48410 100 - . Name=f11 +ctgA example remark 49758 50000 3040 - . Name=f12 + +ctgA example SNP 1000 1000 0.987 . . ID=FakeSNP1;Name=FakeSNP;Note=This is a fake SNP that should appear at 1000 with length 1 + +ctgA example remark 1000 2000 . . . Name=Remark:hga;Alias=hga +ctgA example protein_coding_primary_transcript 1100 2000 . + . Name=Gene:hga;Alias=hga +ctgA example polypeptide 1200 1900 . + . Name=Protein:HGA;Alias=hga +ctgA example protein_coding_primary_transcript 1600 3000 . - . Name=Gene:hgb;Alias=hgb +ctgA example polypeptide 1800 2900 . - . Name=Protein:HGB;Alias=hgb + +ctgA example polypeptide_domain 11911 15561 . + 502 Name=m11;Note=kinase +ctgA example polypeptide_domain 13801 14007 . - 415 Name=m05;Note=helix loop helix +ctgA example polypeptide_domain 14731 17239 . - 746 Name=m14;Note=kinase +ctgA example polypeptide_domain 15396 16159 . + 40 Name=m03;Note=zinc finger +ctgA example polypeptide_domain 17023 17675 . + 830 Name=m08;Note=7-transmembrane +ctgA example polypeptide_domain 17667 17690 . + 943 Name=m13;Note=DEAD box +ctgA example polypeptide_domain 18048 18552 . - 658 Name=m07;Note=7-transmembrane +ctgA example polypeptide_domain 21748 25612 . + 467 Name=m12;Note=kinase +ctgA example polypeptide_domain 28332 30033 . - 711 Name=m02;Note=HOX +ctgA example polypeptide_domain 28342 28447 . - 533 Name=m10;Note=DEAD box +ctgA example polypeptide_domain 30578 31748 . + 646 Name=m06;Note=SUSHI repeat +ctgA example polypeptide_domain 33325 35791 . + 479 Name=m04;Note=Ig-like +ctgA example polypeptide_domain 37497 40559 . - 711 Name=m15;Note=7-transmembrane +ctgA example polypeptide_domain 46012 48851 . + 533 Name=m09;Note=kinase +ctgA example polypeptide_domain 48253 48366 . + 646 Name=m01;Note=WD40 + +ctgA example match 32329 32359 . + 825 Name=seg01 +ctgA example match 26122 26126 . + 185 Name=seg02 +ctgA example match 26497 26869 . + 502 Name=seg02 +ctgA example match 27201 27325 . + 442 Name=seg02 +ctgA example match 27372 27433 . + 970 Name=seg02 +ctgA example match 27565 27565 . + 519 Name=seg02 +ctgA example match 27813 28091 . + 592 Name=seg02 +ctgA example match 28093 28201 . + 475 Name=seg02 +ctgA example match 28329 28377 . + 17 Name=seg02 +ctgA example match 28829 29194 . + 276 Name=seg02 +ctgA example match 29517 29702 . + 492 Name=seg02 +ctgA example match 29713 30061 . + 465 Name=seg02 +ctgA example match 30329 30774 . + 525 Name=seg02 +ctgA example match 30808 31306 . + 619 Name=seg02 +ctgA example match 31516 31729 . + 248 Name=seg02 +ctgA example match 31753 32154 . + 613 Name=seg02 +ctgA example match 32595 32696 . + 701 Name=seg02 +ctgA example match 32892 32901 . + 724 Name=seg02 +ctgA example match 33127 33388 . + 977 Name=seg02 +ctgA example match 33439 33443 . + 502 Name=seg02 +ctgA example match 33759 34209 . + 415 Name=seg02 +ctgA example match 34401 34466 . + 746 Name=seg02 +ctgA example match 6885 7241 . - 40 Name=seg03 +ctgA example match 7410 7737 . - 830 Name=seg03 +ctgA example match 8055 8080 . - 943 Name=seg03 +ctgA example match 8306 8999 . - 658 Name=seg03 +ctgA example match 5233 5302 . - 467 Name=seg04 +ctgA example match 5800 6101 . - 711 Name=seg04 +ctgA example match 6442 6854 . - 533 Name=seg04 +ctgA example match 7106 7211 . - 646 Name=seg04 +ctgA example match 7695 8177 . - 479 Name=seg04 +ctgA example match 8545 8783 . - 568 Name=seg04 +ctgA example match 8869 8935 . - 62 Name=seg04 +ctgA example match 9404 9825 . - 191 Name=seg04 +ctgA example match 26503 26799 . - 645 Name=seg05 +ctgA example match 27172 27185 . - 774 Name=seg05 +ctgA example match 27448 27860 . - 643 Name=seg05 +ctgA example match 27887 28076 . - 361 Name=seg05 +ctgA example match 28225 28316 . - 444 Name=seg05 +ctgA example match 28777 29058 . - 109 Name=seg05 +ctgA example match 29513 29647 . - 67 Name=seg05 +ctgA example match 30108 30216 . - 964 Name=seg05 +ctgA example match 30465 30798 . - 563 Name=seg05 +ctgA example match 31232 31236 . - 313 Name=seg05 +ctgA example match 31421 31817 . - 530 Name=seg05 +ctgA example match 32010 32057 . - 788 Name=seg05 +ctgA example match 32208 32680 . - 441 Name=seg05 +ctgA example match 33053 33325 . - 152 Name=seg05 +ctgA example match 33438 33868 . - 226 Name=seg05 +ctgA example match 34244 34313 . - 838 Name=seg05 +ctgA example match 34605 34983 . - 529 Name=seg05 +ctgA example match 35333 35507 . - 822 Name=seg05 +ctgA example match 35642 35904 . - 107 Name=seg05 +ctgA example match 19249 19559 . + 404 Name=seg06 +ctgA example match 19975 20260 . + 882 Name=seg06 +ctgA example match 20379 20491 . + 16 Name=seg06 +ctgA example match 20533 21005 . + 645 Name=seg06 +ctgA example match 21122 21331 . + 237 Name=seg06 +ctgA example match 21682 22176 . + 36 Name=seg06 +ctgA example match 22374 22570 . + 893 Name=seg06 +ctgA example match 23025 23427 . + 169 Name=seg06 +ctgA example match 44191 44514 . - 295 Name=seg07 +ctgA example match 44552 45043 . - 645 Name=seg07 +ctgA example match 45373 45600 . - 683 Name=seg07 +ctgA example match 45897 46315 . - 580 Name=seg07 +ctgA example match 46491 46890 . - 291 Name=seg07 +ctgA example match 47126 47297 . - 880 Name=seg07 +ctgA example match 47735 47983 . - 587 Name=seg07 +ctgA example match 48447 48709 . - 159 Name=seg07 +ctgA example match 48931 49186 . - 496 Name=seg07 +ctgA example match 49472 49699 . - 921 Name=seg07 +ctgA example match 49957 50000 . - 226 Name=seg07 +ctgA example match 18509 18985 . + 915 Name=seg08 +ctgA example match 18989 19388 . + 791 Name=seg08 +ctgA example match 19496 19962 . + 600 Name=seg08 +ctgA example match 20093 20580 . + 140 Name=seg08 +ctgA example match 20970 21052 . + 460 Name=seg08 +ctgA example match 21270 21277 . + 228 Name=seg08 +ctgA example match 21685 22168 . + 373 Name=seg08 +ctgA example match 22564 22869 . + 570 Name=seg08 +ctgA example match 22958 23298 . + 831 Name=seg08 +ctgA example match 23412 23469 . + 811 Name=seg08 +ctgA example match 23932 23932 . + 22 Name=seg08 +ctgA example match 24328 24787 . + 894 Name=seg08 +ctgA example match 25228 25367 . + 463 Name=seg08 +ctgA example match 36616 37057 . - 736 Name=seg09 +ctgA example match 37208 37227 . - 409 Name=seg09 +ctgA example match 29771 29942 . + 402 Name=seg10 +ctgA example match 30042 30340 . + 513 Name=seg10 +ctgA example match 30810 31307 . + 22 Name=seg10 +ctgA example match 31761 31984 . + 228 Name=seg10 +ctgA example match 32374 32937 . + 752 Name=seg10 +ctgA example match 24228 24510 . + 35 Name=seg11 +ctgA example match 24868 25012 . + 276 Name=seg11 +ctgA example match 25212 25426 . + 709 Name=seg11 +ctgA example match 25794 25874 . + 666 Name=seg11 +ctgA example match 26075 26519 . + 604 Name=seg11 +ctgA example match 26930 26940 . + 31 Name=seg11 +ctgA example match 26975 27063 . + 764 Name=seg11 +ctgA example match 27415 27799 . + 973 Name=seg11 +ctgA example match 27880 27943 . + 823 Name=seg11 +ctgA example match 28225 28346 . + 931 Name=seg11 +ctgA example match 28375 28570 . + 697 Name=seg11 +ctgA example match 28758 29041 . + 241 Name=seg11 +ctgA example match 29101 29302 . + 343 Name=seg11 +ctgA example match 29604 29702 . + 771 Name=seg11 +ctgA example match 29867 29885 . + 147 Name=seg11 +ctgA example match 30241 30246 . + 949 Name=seg11 +ctgA example match 30575 30738 . + 928 Name=seg11 +ctgA example match 12531 12895 . + 693 Name=seg12 +ctgA example match 13122 13449 . + 750 Name=seg12 +ctgA example match 13452 13745 . + 502 Name=seg12 +ctgA example match 13908 13965 . + 177 Name=seg12 +ctgA example match 13998 14488 . + 605 Name=seg12 +ctgA example match 14564 14899 . + 939 Name=seg12 +ctgA example match 15185 15276 . + 249 Name=seg12 +ctgA example match 15639 15736 . + 597 Name=seg12 +ctgA example match 15745 15870 . + 364 Name=seg12 +ctgA example match 49406 49476 . + 706 Name=seg13 +ctgA example match 49762 50000 . + 605 Name=seg13 +ctgA example match 41137 41318 . - 729 Name=seg14 +ctgA example match 41754 41948 . - 21 Name=seg14 +ctgA example match 42057 42474 . - 63 Name=seg14 +ctgA example match 42890 43270 . - 356 Name=seg14 +ctgA example match 43395 43811 . - 70 Name=seg14 +ctgA example match 44065 44556 . - 430 Name=seg14 +ctgA example match 44763 45030 . - 730 Name=seg14 +ctgA example match 45231 45488 . - 531 Name=seg14 +ctgA example match 45790 46022 . - 247 Name=seg14 +ctgA example match 46092 46318 . - 552 Name=seg14 +ctgA example match 46816 46992 . - 547 Name=seg14 +ctgA example match 47449 47829 . - 879 Name=seg14 +ctgA example match 39265 39361 . - 750 Name=seg15 +ctgA example match 39753 40034 . - 875 Name=seg15 +ctgA example match 40515 40954 . - 135 Name=seg15 +ctgA example match 41252 41365 . - 534 Name=seg15 +ctgA example match 41492 41504 . - 653 Name=seg15 +ctgA example match 41941 42377 . - 374 Name=seg15 +ctgA example match 42748 42954 . - 847 Name=seg15 +ctgA example match 43401 43897 . - 15 Name=seg15 +ctgA example match 44043 44113 . - 905 Name=seg15 +ctgA example match 44399 44888 . - 868 Name=seg15 +ctgA example match 45281 45375 . - 462 Name=seg15 +ctgA example match 45711 46041 . - 262 Name=seg15 +ctgA example match 46425 46564 . - 823 Name=seg15 +ctgA example match 46738 47087 . - 7 Name=seg15 +ctgA example match 47329 47595 . - 928 Name=seg15 +ctgA example match 47858 47979 . - 64 Name=seg15 +ctgA example match 48169 48453 . - 305 Name=seg15 + +# single exon gene - one CDS only +ctgA bare_predicted CDS 10000 11500 . + 0 Name=Apple1;Note=CDS with no parent + +# multi-exon gene - several linked CDSs +ctgA predicted mRNA 13000 17200 . + 0 ID=cds-Apple2;Name=Apple2;Note=mRNA with CDSs but no UTRs +ctgA predicted CDS 13500 13800 . + 0 Parent=cds-Apple2 +ctgA predicted CDS 15000 15500 . + 1 Parent=cds-Apple2 +ctgA predicted CDS 16500 17000 . + 2 Parent=cds-Apple2 + +ctgA exonerate mRNA 17400 23000 . + . ID=rna-Apple3;Name=Apple3;Note=mRNA with both CDSs and UTRs +ctgA exonerate UTR 17400 17999 . + . Parent=rna-Apple3 +ctgA exonerate CDS 18000 18800 . + 0 Parent=rna-Apple3 +ctgA exonerate CDS 19000 19500 . + 1 Parent=rna-Apple3 +ctgA exonerate CDS 21000 21200 . + 2 Parent=rna-Apple3 +ctgA exonerate UTR 21201 23000 . + . Parent=rna-Apple3 + +ctgA example gene 1050 9000 . + . ID=EDEN;Name=EDEN;Note=protein kinase +ctgA example mRNA 1050 9000 . + . ID=EDEN.1;Parent=EDEN;Name=EDEN.1;Note=Eden splice form 1;Index=1 +ctgA example five_prime_UTR 1050 1200 . + . Parent=EDEN.1 +ctgA example CDS 1201 1500 . + 0 Parent=EDEN.1 +ctgA example CDS 3000 3902 . + 0 Parent=EDEN.1 +ctgA example CDS 5000 5500 . + 0 Parent=EDEN.1 +ctgA example CDS 7000 7608 . + 0 Parent=EDEN.1 +ctgA example three_prime_UTR 7609 9000 . + . Parent=EDEN.1 + +ctgA example mRNA 1050 9000 . + . ID=EDEN.2;Parent=EDEN;Name=EDEN.2;Note=Eden splice form 2;Index=1 +ctgA example five_prime_UTR 1050 1200 . + . Parent=EDEN.2 +ctgA example CDS 1201 1500 . + 0 Parent=EDEN.2 +ctgA example CDS 5000 5500 . + 0 Parent=EDEN.2 +ctgA example CDS 7000 7608 . + 0 Parent=EDEN.2 +ctgA example three_prime_UTR 7609 9000 . + . Parent=EDEN.2 + +ctgA example mRNA 1300 9000 . + . ID=EDEN.3;Parent=EDEN;Name=EDEN.3;Note=Eden splice form 3;Index=1 +ctgA example five_prime_UTR 1300 1500 . + . Parent=EDEN.3 +ctgA example five_prime_UTR 3000 3300 . + . Parent=EDEN.3 +ctgA example CDS 3301 3902 . + 0 Parent=EDEN.3 +ctgA example CDS 5000 5500 . + 1 Parent=EDEN.3 +ctgA example CDS 7000 7600 . + 1 Parent=EDEN.3 +ctgA example three_prime_UTR 7601 9000 . + . Parent=EDEN.3 + +ctgA example BAC 1000 20000 . . . ID=b101.2;Name=b101.2;Note=Fingerprinted BAC with end reads +ctgA example clone_start 1000 1500 . + . Parent=b101.2 +ctgA example clone_end 19500 20000 . - . Parent=b101.2 + +ctgA est EST_match 1050 3202 . + . ID=Match1;Name=agt830.5;Target=agt830.5 1 654 +ctgA est match_part 1050 1500 . + . Parent=Match1;Name=agt830.5;Target=agt830.5 1 451 +ctgA est match_part 3000 3202 . + . Parent=Match1;Name=agt830.5;Target=agt830.5 452 654 + +ctgA est EST_match 5410 7503 . - . ID=Match2;Name=agt830.3;Target=agt830.3 1 595 +ctgA est match_part 5410 5500 . - . Parent=Match2;Name=agt830.3;Target=agt830.3 505 595 +ctgA est match_part 7000 7503 . - . Parent=Match2;Name=agt830.3;Target=agt830.3 1 504 + +ctgA est EST_match 1050 7300 . + . ID=Match3;Name=agt221.5;Target=agt221.5 1 1253 +ctgA est match_part 1050 1500 . + . Parent=Match3;Name=agt221.5;Target=agt221.5 1 451 +ctgA est match_part 5000 5500 . + . Parent=Match3;Name=agt221.5;Target=agt221.5 452 952 +ctgA est match_part 7000 7300 . + . Parent=Match3;Name=agt221.5;Target=agt221.5 953 1253 + +ctgA est EST_match 7500 8000 . - . ID=Match4;Name=agt221.3;Target=agt221.3 1 501 + +ctgA est EST_match 1150 7200 . + . ID=Match5;Name=agt767.5;Target=agt767.5 1 1153 +ctgA est match_part 1150 1500 . + . Parent=Match5;Name=agt767.5;Target=agt767.5 1 351 +ctgA est match_part 5000 5500 . + . Parent=Match5;Name=agt767.5;Target=agt767.5 352 852 +ctgA est match_part 7000 7200 . + . Parent=Match5;Name=agt767.5;Target=agt767.5 853 1153 + +ctgA est EST_match 8000 9000 . - . ID=Match6;Name=agt767.3;Target=agt767.3 1 1001 + + + +ctgB example contig 1 6079 . . . Name=ctgB +ctgB example remark 1659 1984 . + . Name=f07;Note=This is an example +ctgB example remark 3014 6130 . + . Name=f06;Note=This is another example +ctgB example remark 4715 5968 . - . Name=f05;Note=ああ、この機能は、世界中を旅しています! +##FASTA +>foobar +ACTGATGATCGCTAGATGCTCGACTAGC diff -r 000000000000 -r ef5f8bbf7730 test-data/1/2.wig --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/1/2.wig Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,503 @@ +track type=wiggle_0 name="example" description="discontinuous sine wave" +fixedStep chrom=ctgA start=1 step=100 span=20 +0 +-0.506365641109759 +-0.873297297213995 +-0.999755839901149 +-0.850919359639177 +-0.467771805322476 +0.0441824483318732 +0.543970523363376 +0.893969648197021 +0.99780327442197 +0.826879540532003 +0.428264391396659 +-0.0882786064717262 +-0.580513008156313 +-0.91289603861164 +-0.993901956906654 +-0.801224790676895 +-0.387920558984219 +0.132202352755937 +0.615921726468774 +0.930039504416137 +0.988059506793465 +0.774005214886395 +0.34681910129778 +-0.175867902248536 +-0.650127523574896 +-0.945366563696042 +-0.980287334634812 +-0.745273974144339 +-0.305040291224202 +0.219189974282818 +0.683063594104854 +0.958847282055722 +0.970600619811948 +0.71508718178021 +0.262665724548229 +-0.262083959018097 +-0.714665612518583 +-0.970455331081526 +-0.959018280889002 +-0.683503793877429 +-0.219778160592474 +0.304466082686301 +0.744871858736274 +0.980168039762288 +0.945562938664219 +0.650585494129627 +0.176461360584952 +-0.346253571205695 +-0.773623338680308 +-0.987966438766777 +-0.930260871990585 +-0.61639657336978 +-0.132799924069858 +0.38736481184216 +0.800863899493182 +0.993835297491596 +0.913141966452114 +0.581003804007494 +0.0888791236810795 +-0.427719512602322 +-0.826540339206424 +-0.997763153807204 +-0.894239655996039 +-0.544476309619657 +-0.044784738601126 +0.467238859047214 +0.850602510646281 +0.999742336443933 +0.873590857634893 +0.50688542994917 +0.000602887030758908 +-0.505845668220208 +-0.873003419373278 +-0.999768979974307 +-0.851235899346026 +-0.468304581575409 +0.043580142003502 +0.543464539388603 +0.893699315464349 +0.997843032362382 +0.827218441309355 +0.428809114528536 +-0.0876780571755001 +-0.580022001304441 +-0.912649778958282 +-0.993968255065378 +-0.801585390637186 +-0.388476165127704 +0.131604733390055 +0.615446655696971 +0.929817798797622 +0.988152215687393 +0.774386809762636 +0.347384505330554 +-0.17527437998892 +-0.64966931671649 +-0.945169845112828 +-0.980406273199548 +-0.745675818665582 +-0.305614388888252 +0.218601708303567 +0.682623146057239 +0.958675934707531 +0.97074555575544 +0.715508491127093 +0.263247394606515 +-0.261502098227572 +-0.714243783495441 +-0.970309689616982 +-0.959188931145217 +-0.683943745214962 +-0.220366267018746 +0.303891763483259 +0.744469472587545 +0.980048388625338 +0.945758969945982 +0.651043228214223 +0.177054754782462 +-0.345687915259853 +-0.773241181283175 +-0.987873011641156 +-0.930481901440504 +-0.616871196227395 +-0.133397447114619 +0.386808923903526 +0.800502717217221 +0.993768276844436 +0.913387562390317 +0.581494388679593 +0.0894796085852885 +-0.427174478343574 +-0.82620083745591 +-0.997722670532666 +-0.89450933876326 +-0.544981897973607 +-0.0453870125923442 +0.466705742943332 +0.850285352482504 +0.999728469607566 +0.873884100529272 +0.507405034549512 +0.00120577384238478 +-0.505325511469513 +-0.87270922421956 +-0.999781756658628 +-0.851552129651776 +-0.468837187612361 +0.0429778198349343 +0.542958357879249 +0.893428657896279 +0.997882427613987 +0.827557041415301 +0.429353681799962 +-0.0870774760106846 +-0.579530783630345 +-0.912403187581549 +-0.994034191943674 +-0.801945699242987 +-0.389031630070668 +0.131007066189432 +0.614971361227045 +0.929595755215624 +0.988244565414863 +0.774768123170331 +0.347949783098507 +-0.174680794021833 +-0.649210873720956 +-0.94497278298608 +-0.980524855413266 +-0.746077392153944 +-0.306188375469783 +0.21801336286854 +0.682182449894674 +0.958504238906709 +0.970890138859323 +0.715929540406099 +0.263828968981531 +-0.260920142388146 +-0.713821694864108 +-0.970163695471254 +-0.959359232762341 +-0.684383447957544 +-0.220954293347872 +0.303317333823826 +0.744066815844409 +0.979928381267452 +0.94595465747008 +0.651500725662311 +0.177648084625384 +-0.345122133665854 +-0.772858742833902 +-0.987779225450561 +-0.930702592685557 +-0.617345594869105 +-0.133994921673036 +0.386252895370368 +0.800141243980293 +0.993700894989533 +0.91363282633698 +0.581984761994295 +0.0900800609660932 +-0.42662928881852 +-0.825861035403859 +-0.99768182461307 +-0.894778696400663 +-0.545487288241457 +-0.0459892700866177 +0.466172457204606 +0.849967885263126 +0.999714239397087 +0.874177025790545 +0.507924454721923 +0.00180866021574464 +-0.504805171046737 +-0.872414711859773 +-0.999794169949471 +-0.851868050441484 +-0.469369623239746 +0.0423754820450979 +0.542451979019298 +0.893157675591189 +0.997921460162468 +0.827895340726768 +0.429898093013001 +-0.0864768631955748 +-0.579039355312569 +-0.91215626457107 +-0.994099767517573 +-0.802305716363335 +-0.389586953611214 +0.130409351371303 +0.614495843231754 +0.929373373750848 +0.98833655594231 +0.775149154970883 +0.348514934396177 +-0.174087144563029 +-0.648752194754925 +-0.944775377387424 +-0.980643081232865 +-0.746478694463463 +-0.306762250760167 +0.217424938191585 +0.681741505777341 +0.958332194715663 +0.971034369071043 +0.716350329464186 +0.264410447461892 +-0.260338091711345 +-0.713399346778001 +-0.970017348697407 +-0.959529185678474 +-0.684822901945355 +-0.221542239366122 +0.302742793916791 +0.743663888653221 +0.979808017732248 +0.946150001165385 +0.651957986307603 +0.178241349898059 +-0.344556226629346 +-0.772476023471494 +-0.98768508022908 +-0.930922945645528 +-0.617819769122481 +-0.134592347527942 +0.385696726444787 +0.799779479913782 +0.993633151951378 +0.913877758202957 +0.582474923773363 +0.0906804806052454 +-0.426083944225323 +-0.825520933173783 +-0.997640616063263 +-0.895047728810343 +-0.545992480239513 +-0.0465915108650422 +0.465639002024868 +0.849650109103536 +0.99969964581767 +0.874469633312244 +0.508443690277607 +0.00241154593170571 +-0.50428464714101 +-0.872119882400963 +-0.999806219842322 +-0.852183661600323 +-0.469901888264038 +0.0417731288529262 +0.541945402992805 +0.892886368647573 +0.997960129993637 +0.828233339120793 +0.430442347969774 +-0.0858762189484769 +-0.578547716529735 +-0.911909010016595 +-0.994164981763242 +-0.802665441867374 +-0.390142135547497 +0.129811589152921 +0.614020101883935 +0.929150654484127 +0.988428187236296 +0.775529905025798 +0.349079959018146 +-0.173493431828281 +-0.648293279985113 +-0.944577628388612 +-0.980760950615372 +-0.746879725448277 +-0.307336014550815 +0.216836434486577 +0.68130031386551 +0.958159802196927 +0.971178246338178 +0.716770858148409 +0.264991829836246 +-0.259755946408727 +-0.712976739390632 +-0.969870649348633 +-0.959698789831842 +-0.685262107018665 +-0.222130104859792 +0.302168143970983 +0.743260691160433 +0.979687298063475 +0.946345000960895 +0.652415009983898 +0.17883455038485 +-0.34399019435602 +-0.772093023335059 +-0.987590576010932 +-0.931142960240324 +-0.618293718815172 +-0.13518972446219 +0.385140417328934 +0.79941742514918 +0.993565047754595 +0.914122357899222 +0.582964873838637 +0.091280867284509 +-0.425538444762198 +-0.825180530889296 +-0.997599044898223 +-0.895316435894515 +-0.546497473784151 +-0.0471937347087195 +0.465105377598017 +0.849332024119238 +0.999684688874618 +0.874761922988011 +0.508962741027838 +0.00301443077113541 +-0.503763939941528 +-0.871824735950293 +-0.999817906332802 +-0.852498963013576 +-0.470433982491772 +0.0411707604773582 +0.541438629983896 +0.892614737164045 +0.997998437093437 +0.828571036474523 +0.430986446472459 +-0.0852755434877088 +-0.57805586746054 +-0.911661424007995 +-0.994229834656976 +-0.803024875624353 +-0.390697175677724 +0.129213779751557 +0.613544137356508 +0.92892759749641 +0.988519459263516 +0.775910373196683 +0.349644856759043 +-0.17289965603339 +-0.647834129578325 +-0.944379536061519 +-0.980878463517946 +-0.747280484962623 +-0.30790966663318 +0.216247851967423 +0.680858874319544 +0.957987061413159 +0.971321770608431 +0.717191126305919 +0.265573115893276 +-0.259173706691886 +-0.712553872855609 +-0.969723597478254 +-0.959868045160799 +-0.685701063017834 +-0.22271788961521 +0.301593384195272 +0.742857223512596 +0.979566222305013 +0.946539656785734 +0.652871796525078 +0.179427685870145 +-0.343424037051613 +-0.771709742563807 +-0.987495712830468 +-0.931362636389977 +-0.618767443774911 +-0.13578705225865 +0.384583968225014 +0.799055079818084 +0.993496582423937 +0.91436662533687 +0.583454612012034 +0.0918812207856598 +-0.424992790627422 +-0.824839828674128 +-0.997557111133059 +-0.895584817555511 +-0.547002268691819 +-0.0477959413987577 +0.464571584118009 +0.849013630425847 +0.999669368573369 +0.87505389471161 +0.509481606783953 +0.0036173145149015 +-0.503243049637554 +-0.871529272615042 +-0.999829229416663 +-0.85281395456664 +-0.470965905729547 +0.0405683771373384 +0.540931660176769 +0.892342781239334 +0.998036381447947 +0.828908432665215 +0.431530388323292 +-0.0846748370315997 +-0.577563808283757 +-0.911413506635259 +-0.994294326175203 +-0.803384017503629 +-0.391252073800153 +0.128615923384498 +0.613067949822471 +0.928704202868774 +0.988610371990796 +0.776290559345248 +0.350209627413543 +-0.172305817394175 +-0.647374743701449 +-0.944181100478148 +-0.980995619897873 +-0.747680972860835 +-0.308483206798754 +0.215659190848055 +0.680417187299892 +0.957813972427147 +0.971464941829636 +0.717611133783957 +0.266154305421701 +-0.258591372772452 +-0.71213074732663 +-0.969576193139719 +-0.960036951603826 +-0.686139769783315 +-0.223305593418733 +0.301018514798568 +0.742453485856362 +0.979444790500868 +0.946733968569148 +0.653328345765115 +0.180020756138357 +-0.342857754921908 +-0.77132618129705 +-0.987400490722168 +-0.931581974014641 +-0.619240943829511 +-0.13638433070021 +0.38402737933528 +0.798692444052197 +0.993427755984289 +0.914610560427116 +0.583944138115545 +0.0924815408904855 +-0.424446982019324 +-0.824498826652114 +-0.997514814783015 +-0.895852873695781 +-0.547506864779039 +-0.048398130716271 +0.464037621778865 +0.848694928139091 +0.99965368491949 +0.875345548376914 +0.51000028735736 +0.00422019694387214 +-0.502721976418416 +-0.871233492502601 + diff -r 000000000000 -r ef5f8bbf7730 test-data/1/input.fa --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/1/input.fa Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,897 @@ +>ctgA +cattgttgcggagttgaacaACGGCATTAGGAACACTTCCGTCTCtcacttttatacgat +tatgattggttctttagccttggtttagattggtagtagtagcggcgctaatgctacctg +aattgagaactcgagcgggggctaggcaaattctgattcagcctgacttctcttggaacc +ctgcccataaatcaaagggttagtgcggccaaaacgttggacaacggtattagaagacca +acctgaccaccaaaccgtcaattaaccggtatcttctcggaaacggcggttctctcctag +atagcgatctgtggtctcaccatgcaatttaaacaggtgagtaaagattgctacaaatac +gagactagctgtcaccagatgctgttcatctgttggctccttggtcgctccgttgtaccc +aggctactttgaaagagcgcagaatacttagacggtatcgatcatggtagcatagcattc +tgataacatgtatggagttcgaacatccgtctggggccggacggtccgtttgaggttggt +tgatctgggtgatagtcagcaagatagacgttagataacaaattaaaggattttacctta +gattgcgactagtacaacggtacatcggtgattcgcgctctactagatcacgctatgggt +accataaacaaacggtggaccttctcaagctggttgacgcctcagcaacataggcttcct +cctccacgcatctcagcataaaaggcttataaactgcttctttgtgccagagcaactcaa +ttaagcccttggtaccgtgggcacgcattctgtcacggtgaccaactgttcatcctgaat +cgccgaatgggactatttggtacaggaatcaagcggatggcactactgcagcttatttac +gacggtattcttaaagtttttaagacaatgtatttcatgggtagttcggtttgttttatt +gctacacaggctcttgtagacgacctacttagcactacggccgagcgcaataacccccgg +aaagcacttgctactgggaggcgggtttatccatcggcaataggggttatcagtactacc +aagaagattgtgaagatattaacagcattgaaaaaagttcggactgggcatgaaacgtgt +gtcagagttagagtccttgagggactgaatgggtttgtcccaggcccaagcttgaggtgg +atgtcacctcgggtactgcctctattacagaggtatcttaatggcgcatccagccttgtg +gctgggtctacgtacgcgtgggcaccatacgtatgttggcaggaaaggtcaatcatgctt +gtttcctcgtcgcagaaacgttcacactattggctcgcgggatcgaacgggcctgattat +ttttccagctcctgcgttcctatcacgccaactgtcgctaataaaatgttatatagagat +aacccattgctatgcaaggatggagaaaccgcttcacaacaccctagaattacttcagca +ctaacatctaagataccgggaaaaccgtaggtgccacttggttttgagggcaatgcctct +tgcactggcgattcgtggagtaaccttgctaccgatttccaccttttctaggtatgatta +catgcgatcgccattgtcagtcgtcgtacgaaatccaggaaggaattcgaatacatgacc +gaaagctatggcatcataagcgtggctctttactaaggacacgtgtagtcggctgatttc +gcgcagaacttcgctcaccggacagtgactgctgtccgaacttgggggcagcgtagattc +tagctagagaccgcagcgaaaatgccactcgctaggtggctatggacgtccagctatagg +cccccacattcgtatgtatactccggtaattgagtctacctttcgaaagatcaaagttca +caaaccttctctcacgttaacatagatgctcgcacatagctagtccggtgataaagcggc +cgtgcatgcgagtatttagcgcacggaacagatattaggctgcgaaataccctcatatgc +tacagcgcaggtaacagacggttgatctccccgtagaattccctcaaggccggatcgttc +tcatgagtagcctttgtctgacatttcctctcaatagattgcagactcctgtgtcgtggg +aaaacttcgcggaatcgctgtcgttacataaatctaaacagtgcagtccaagctatttac +taccacgtatcataatgaacatctctttgtgaaatacgccggtacgccgagagatcgccc +acattgcgtgtcaccaagacccagtgtctattgggcgcgctggttatagtatgcggaggc +acccgatgtgctgctaatcactacaaactcgacaccaagaggcgaccgcgtgcgggaggg +ctagaacgcgagagccacgtcaacgtggtggtaccgctcctgatgatacgagcactgtgc +tggcaccgctgccctatgtccagctaacaggtgtcacataatatcgcatctatagttgag +tatcttatcgctagcgttacttgtgagttctcgggtagaatcgtcgtagcattctagtcc +ttagcgtaagcaacgatatcgccgatattataggggcaataggtctcacccaccacgggt +gtatatttaacgccctaagtagttaacggagactattaaacaattatgcacgtgaaagat +tagggtactgcacacgtgtcacgttgacgatgtaaacaccataaaggttgttctgtgatg +cgatgcccatacctgcggtgcaacgtcctaaacttatgcggatcaccttctaattcagcc +gacgttgagaacgccagctatactctgtgagtacaaggtgaaagccccagatcaaaatat +tggagtcttgtccgtagctcttgggtggagagtgtgaccacgtttatcccttaatactga +gactcttctcgttccacgccccggacattcgcgatacagcctagtttgataggtggctac +aagggctctatccgaatagcacaaaactcagtcctagtgcgtataggtcgtgctctgcgg +ttatacgctccacagaagaaagtacccactgcagtttgtcggtgggacttagcaaaacct +gtaaccaaaaccgcacatggactctgttttggtggcgtggagtgtgcccgccgcctttat +gctgggtcaaaatactatatgatttgttgtggtcgggcgcgacattggctcttatggttt +ataactattattcggtgcacagaaccgacttatgccccgattttgcacctcccgagagaa +atggtactagtcattgtctcggggttttacaactcaaggataatctgccagcggtacccc +gaaaaatcccatcccgaacggctggtacctatgctggagaccgaaatggagccagtgcta +tgcaaaccctcgctctttctatttggcccgaccagctgcgagagtcattcgacatacatt +gcgatggctggttcatctctctgcttcggattccgatcctgctgcctatggccacaacac +gaaagagatcttggatacgtcctcaccatagtccaacggacaaatatggaggtgtacgcg +cacggatacgagtacgacgggccgcccaatgctggtccttcgtgttatactgtttacttg +cctccggtaagagtgtacagcttgtacccacgcggtggaggaccttacgcgtcgtccgca +ggtgtggagatttcgctacctgttgcattggggcctcgccttacgtttttttcgacggag +gcccgacccgccaggccagaccctcatcattgggatttttactgccttggacggcagatt +ctgatgctggtaacgcgcttggcacacaccctggtcgtaattacgtactatcacctctat +tttaccaggggcgggccccgcctcaacgatcggtagtctcgttagaacagttgcttatac +tccgttagcactcacaactcggagaatgagcttacacagtccgtaatagtctccacagct +tcccctggaaggttcgtacaggggccctggggtctaatgtgctaccgcctaacttcgtta +gtgtaaggtctcgtgtgcacctccaataacgctgcatttttgtatagaactcctttatag +gcctgactcttcggaacagcccactaattgacgtgcacgatgctgcatatacccttctca +atgacgcataccggtgactaaatcctgtggctggttgacactttgcataacccaccacga +aaacgcggtttgcacgtggttggaagcgagtaccggttaagggaagttacgtaaacccaa +catagtgagcgatgcttaaaacactgcatgcgaacaacgaccggaacgagagcctaatag +aaccaaatggataggtggttacgaaatccgcgcacaagtgtcgtgccactctcgtaaaga +atgattgcttgcttatctatgagaaacctaataggcacgcacgtgtcgccagggaaaaac +caccatccgacaagacgctgaaaatcgagatagatgcagcccgcgcgtactttaagcacg +atagccatcttgagcgcgacgattcagcttacggagattacttctcaaagcggacacctc +gacgctgaagctctctatcgatgcacttgcatgtccatctacggcttgagcgaaccatgc +ttaacgcttggatgacgttgttagtcggattcgatcgtaccatactgtcctatccatcat +aacttcccgaattaaaactcattttctaccctcatttgtttcattggcgcatatgagcgc +cccatgggcgctgatcgacacaggcttgtagcgcacggctcgtcttgcagtagataacca +tagtctttacgtcgcatatattaatatatcctcagacttccactgcggtattttggatcg +tggcgtctgggacagtcacactctttaacgggagcgcgttcaatgtctgagtccatccgt +gcagttcggtgcgattttattcttccctgcatcttccggattccttcttcttgtcggaga +attcgccgctcgatcaaactcatcattggtacttattgaccgtttcatgctattacaccg +gtacactgatgataacgctgcggttttatcccccccaatacgcgcacacacgcttctttc +ggtgcgtcctgtcgtacccctattgcgcatcatggcactccagccgagcaatgctttgga +caggtgtaaccaagctggatctagcgtgggttcgacacagctcggttcgtataaccacac +gcatgaactgcgagtgcctcgccccagcgccgctgtctacttgctgtttagaggaagaag +caacagcttgcacccaatccgcatatctgcatataggtggccgttcctccgtggcgcgcc +gctacgttgtagcgcacggatcaaaagcgctgtgttactatacactggttcggagacggt +tcatgacgagcgcgctatatgtcggcatctgcgccccatgagcggccgctgtccggcggc +acgaataatatagtgcaagaaaaaccgaagactacggttatatatgatggaacggccctc +acagcattctaacaggtttgacaaacttaataaatgatgggccgcgcctgctgtgaatcc +cggacggtttggccggaaatacctaggcagtctttggaaaagcttttcctagatcaccat +atcgttgtcagtggccaaggtttcgttaactctcggcgtacccagtatcggcgcaatagg +cctttgatcaacccttggaagattagtcgatcgtaacttcctacatcccggtgaaaggct +ttaattctaagtcttcgccacaaacgcttcaggagcgtcgagttctatcactttcgaggt +actgccacttactatacaccggtacacttgttaagcaagtgtttgcggatgtggttaaat +tttgatggcagatttctgggtgttttagctatagctgtatcctcgaggtcgtcgtttaac +cgctcctgttgctagatcatatgtatcgttgttcgagacgctagtagtcgctcctaccga +atcttacaggttcgatctctgctcggcttttgccgcgggccggtgcttgtgctataatta +taatgataagggcagtggccgcacaactgcagattactgacacttgagtgagaactaagc +cttgaagcatagtgttgaatgttgtagaaaagtatactgtgacaaaaacagggcctggtg +tcaagtgtcctcagtgatctggatatcatcacgccttgttagcaggatttacccgcatag +taatggccggactttatattgccctgctgcgctagctagtactgcgggggctctcttccc +cctattgatattccgggcagaatgcgcgggtagtcagcattcatgtcaggcttctatcaa +cgtctcattcacccttggagtgtgacctacgtgttagaggcaatgtagcccgagagcccg +ttcaaagacaaactcccgaattaaacagacaccggttatgggagtgtgagtagtgacttc +cgaccagtgtttggtttcagcctgtcggttaacctcgcagggctaggagaatgagctgct +agtaggtgattaccgaagtctccccagaaagggaacagtcttatagagtagagaatgtca +aatagcgttattgagttctgtctactgcactaccaagagcatgcccaccagagatgcgtc +gcagtcgtagcgtagacgtcgtaatgacccaggtggcgttcggcctattcgcgtcggacg +cgcgcgctactacaacgaagggttctgaaagtgcatgttcacactgaaattctaagtgtt +agtaaacaaacgcgtgtattccagggtcgtgtgtgacattatggctgtctgcgcccctca +atgatcatcaagacgttcaattgtatgttaacgtagatatcaggtttagttatccgtata +ctttttacgccgcgcgcttggaacagattctcctaacagccctcgcggtttcaaaaagaa +ccaaagtctataccatccttgttcccaattctgcctggttgcggagaaaagaccgcctcc +atacgtacccgactcggtattggtaagtggggaagcagtcgaacgcatatttcttggtta +tatcacaggccacgttctatatcggaagtggccggattacgatttgacgttctatccccg +agagcgcattcttgtttgttactactaccacgcgggcgcttcttattcccagaccagagg +gaatgtgcggaagctttttccacagattggcggaactccagcgtgcttagtgcaggcgga +gaacgtccgttcagtggtgcgtgctttatttttcaatctgacccgacctgcgctcaaggg +ttgcaagttgttgtgcgcccgagtaataggcgactcgtcgcaatgggtctggtacattgc +attttcatcggtacggcgcttcataaagtgcggcaaatttctcaccccagtactcatgtt +tatagggtatcaggacccgaagcttctctgttccaaagaaatgtactgtttggctcccct +gtccatattggaggtagatcacttgtggattatgcaatgaatgaatgaaagtttggtgct +ccccaccggggcgctctcaaagagagtgagctaaatttgaacatttaaattgctattcca +acccggagtcctgaccggaacagtaatgaaacttcaaccatgccggacagactagaagaa +gggaaagttgcttgtatatgggagtaaaaatgatgttggtgccgtaatggtgccggaagt +gactatagagcatgtcgtgacgcaccggtaggcagtgctataatcgtatgtccttcaggc +gccgccggacctacgaagctgaaattagacaccggcacactagccccgtcagcgacggtg +cgcggccgctgccctgcagcgaatggggctaacacgcataaaacgcccgcataaccactc +gagctacgggaattcactcaggctgttgcttcgacgtgtagtctcattacataatcataa +tacctccaagaccaacggctgctcatgactctcttaccttgttagggacatttcggcact +agggaagagctgaggactttgaaaacgtcgataaaaccatcgcgggaactagctgcgtta +gaactccatattttacgggtcgcaagcttgaggtcctgtcccggcagctgcaagtgctac +ggcaggaggggatctacctaacgtgcagtaacgagcccctgcccgtaatgaggcgtactc +gtctctaatcgtcagtaagttactatgtccgaggacgcctctacgagttgaactctggct +aggcccacctgtccgcgccctgctcgggtaccccatctgcttatccaacttcacctcgcc +ttacggaatctctggttgccagtcatccgatggtcattaagcagcgtggtacatcgtagc +caatacttcagggcgccagccatattcccagccaagcggctgcataattacagcgcctgg +cacgactaatcgatcccacaagcctggtagatgacccttagccctaaagcgccctctgac +ctatctgcacgtgatacttgattatttgtaatgagcggacagggtagatgactaatatac +agggtcgtctaggtttgcacaatgcagacatcatccgcgcaaggcccggacggctgtact +cacacagctagctccatctccctcagcagcactaagattcccacgtgaccagggcgacgg +gcctcagccaaacgtatccttgatatctacttaagtcaaggttgactccgaaccctatgg +gtcggtgccgttaacagggagtctatatctcggcgttccattgcttgtttcaaactcctg +ctataaggtgaaagcgctggagggcatagtttatgcccaaagttgcgcgtagatccgtcg +ggatatgtgctataataaggactgctcgaggtaggcggtaacggctcccgccttcagtag +gcgcggaactcgaatcggagttacaggacttgaccgagtcatatccaagtttatgttacc +cgatcggatccggatgctcgtatctgcgacgaggtcggaagacggacgaaatacgattca +accgcgcgaaccattagcatctaacctttagcctcaatgggtgttaacgtggtgggctca +ctcggcgtactctttgtgcaactattccgtatgaacaacagtcaagttgcgacatgatgc +tcttacgtgattcccacagtttcccacctcaggatgctttctttagctaaacccaatagt +tatggcggcaccttcagactcccacgaggacggctatgacgttgctaaaccattcgccgc +caaaggctagcgctaacgagttctgtgagtttgttccgggccagatctccaggatggtcg +caacaacgcagtaccggttttatactggtgaccctctacctgttattaagttacagcgtt +gtcctacgtacatggtcgtgagtactcgcgtagtcaaacgccaggactagcagcgagaat +tattgtcgcgatacttactacaatacttacccgatattgacgtgcagggttgaaagagat +ggacagttgaatatctattttgacggaatcctcaaaactccctccacctcaggtaacggc +cctgtccgggaccgcattcttgcatatattggttcccagagcgtatctaagttagtctct +tgaccgttcaccgactctagggcgactcgttatcgccctccgaaacgatgctttcgttac +ctcaatgatgacaggctgtaacgtaagtgatcccaatctcactcgtgccttgtccaccgt +tccgtgaagacgaagcaatacgcggaatacgtggcttcgtaatattttgacgatatgggg +ctgggacgctcaagacttccatgacaaacaaagtgaagagcaactgcatccctcatcatg +atcactattaccagagtagcgatggataacgctaatttggtcagggcagctatcgcatcc +cgcaggtgtaggcggagactttttcttttgttgcgagttgacaggtaatctcacggtata +agcacggttatttacgcaagcgacgtccctgggagaatccgcccacgtaggaccccataa +tccataaatactgcggtcgaaaccttcatatcgtgacagaaccgctttctagggatgcgg +tccccgcattcagagttctactttggccagcgtgagacttaacaactccacttacgcggt +acattgaagtcgttcagtccagtgtgacctgtgtaccgaataacgtgtagaccagcgcgt +ctacgacttagcgcggctccactccaaagcaccttttgggactttccaacgagcctgttg +gccgttaagcggtatttcacaaatagatcaccctagtgtcggtaaccgactaccctattg +ggatcatcgtgagctcgaaacactagaggcggaccaacggatgacatttgattcggctct +acagagcttgtcgccagagaaaaactgtggcaatctacgctcgcggggaattgactttag +cggcccctagacaggtgtgggacactagtctagattcacgtcctacacgacataacagca +ccttcctggccagcccagaaatagtacctggacgacatccagccttccgacgccataatg +tgagccgtagcgcccacgacgatcaacgaggagaaatttacaaaggctgtgtgaatgcta +cgtcgtctaccattgctcatcgaaacgaacgcaacgcacagcatacaacgtttaccatgc +cggagcgggatcctcaagtacagaaaacagaggtctaaacatgatccgaacaaatcggta +ggtttacacagctacctcgtccattggcgtactgcatcgatcgtgcttactacggtcatg +ccggcccgcgatgcacgtacgaaggaataccctgtctgcccccgcgcgagttacgctgtc +tcgcacataccgagcactgtcgttcgaagctaaactatgagcccagccgagctccttatg +gccgcaacgctggtgcggccagctgataaattccacagtacacgatcctcgtgtaagatc +tcgggcatagtaagtcatttcacatggttaggagagatagaatacatggttctggtagct +caaccaggatttgtggaacccttggcccttggtgagtgctacaataaaattctccgtatg +ggacaaccaaagggtgctggatgtgacttcccggcccaggttagatgtccatatcattca +tacattgcccgaccgacccaatgcctaaatcagaggcgccttagctagttcttgtagtgt +gccacgtccggccacgcagacacgaccctcggcgagtgatcaccattaccggattggcat +cgaagtctttttctgggaagttagccagtttggtgtgcggtgcttagaatcttattccca +gtcaaacgcccctgggacgaattgctaaccctagttgccacgccggaaccatcttcggga +gagtagacaaatccgagttagatatgttagcgtcttcgtgagtctgaaatgtatcacttc +accgcagaatacgcgaatgtctgtttgccctggactgacggaattggcttaaaagccgac +tagagcattttggtacggttcctatccgcgatgtaattacctatctaggttatcgctaga +cgaatagcgagtacagtgtagcaggccctttgttagcaagttgctctaaacagttgtcaa +aacgtaggcacaatagtgcgattcttctaaatccgggaagctcatggcgctgggcagaaa +tatcacatacgggaataatcaacctccattttggttcgttttactcgatgagtgcccctt +gcttgagacgagcgttctgagttgatggcatgtcgaaaggtttacgcggtgagtagagca +ctttacccctacagatcggaatcctcgaggaggacagttggaacttcacattaacctttg +ttcgattgcatgaaggttgtgttctgggagtaggctcccaaggtagcggttcatgctggg +ggcagccctaagtttgtattatgtgagtttgcgtctgaaactacatttagcatgaggaac +gtaagctttctggagggatcttctaaagccaggtatcgcccgctacgatgccggagccgg +tggttcacagctacctgtgctcaaaggcttaaggctaatcatagcaacagtgcgaaagga +cgtctttcagatttcgaaaggtgctgacacaacaagggtcagggcggtcctacccttctg +attccctacctggttttttagcaagggtcaaggctaggcttatactcccgaacgctttaa +acactatcccacccctgacggggggaagttgcgcgttaagtataagaataagatttaaca +gtacactttaggttcctcttccgcgagccgtcatacagcaccgagcgccgttgaaacgcg +attaacgcgtattgtcgtgcgaaaaaaaaacgctcgccagcatattggagtgtcgacttg +aaatattgaacaacaccgcatatcaaggacgaatagtagggcttcactacctccacctga +cggccctaggacttatactcgaaaaagaccttccatcacgatgtcccttaccggcgagag +ggctatatacgcatgaatagcagatcttgccgtcgctgagtgtcacccagggttgctcca +gaaaggagatagggcggagagccatcgacagcagctctcgtctaggtggtagcagctaag +gagtcgtgtcgtcgcgccgagttggaacattatcgatgtacatcaatgcagtaatgatgc +tgatagactcgggagtttcctcaaacccagagttacgagaagacgcaggtctatcagtta +gaaggagtcagtattggcctttgaaagatcttatgctcatgcccaatcgtagttaaacgc +gaatcgggaaggccaatctggcggttttgacccccggactcttaagacgtccaatgtggc +tagacataagtaacgaattactctataccgaggggcgggaaccggccaatttattacgag +agcacgagagccttgtagcggccagcacactatcctcgagtccctctatcctgagacgta +gatatacatatacgcctagagagaatagccgtctaggcttccgtcgccctctccgtcgtt +cgcgtgaaccgtaagtcttccgcattcccttcctcaagcgcgttggtgtgagagtggtat +tgaggcccagtcttataacgcatatacttgtgcactctattacttaccatgggaaccaat +ggcactctcgaatcatgctcacagctgagcaacggtgctgctcaccaattacatatgagt +cgtggtttagcgttggagcggaagatgaatttccatctgttcgcgcgcatcactaaccaa +tatacggttatcccagcgctatctagttctgaccgggttggtagcgaacccttttgcaag +ccggcttagtggatgtgaagtgggagtgataacttaagccgccacgttcgggggggactc +gtttatattggtgctggaatacgaacggcgtgattcgtagtcgccctaatcgggcgcgac +aacacatgtagtactgtcgaggcggtttaaacccacagtaggtactctatcagcagaatt +atgctagaagtttcacaacaactttccgcatgaggctcagcggcagcgtcgcactcccaa +tggccagtgccggtagcgatgtttggtggaattagttccttcggaatacgaaccggattt +aaagagcctcggagaacctaaacgaatccgtacgcatcttgcccaaggtgctgagccttg +tcgcctttctcagttccacctacattaatgcaatgcgttcgaagctctgaccgcaaacag +gaatcaagttcagacagagtgcaagagtttcgcaataattgggaacgacccacttgatat +aggtgcttttagagatgtgtgtacgaccgtccttcgagcatacctacgggttacaattgc +tccggtaagtcaaggcacatagaaaacatagccaactgagagtgtatacaagattacctc +atgtagactgaaatacacacatcgctttaagctctcaaccgatgtagaacagattttggg +cggcgttgacagcgtgcccgctcaccggtttgctcccttctcaccaaataaccatgagac +gactttggtgactggactgccagatgacgggctacaaccgttttggttccgaattcgctc +taactcaactaacatcatactatatgcgccaggatattctcgcggttggacccccctgcc +aattcgggttaaaaccactccccccatgtagggagctgccgcaattacaatatcgacgat +cccagatggacgctcacaaaatatcagtcctttcacgatccgctcatatagacggatgaa +gggactgaggctgttagatagtgacgtcgagcatggcgtagacgagcgcaaccgggtcga +ggcccgcattaccgtgacacccagttgaaaggatttacactgcttcattcgatatttacc +actttgtatgaggagctcaacctaagtcaacacggaccatcatacaggtcgccagtaatg +agaaggctgctgtgccatggagaagcgctgctacagcacacaacgaacatcttgcaatgt +gaaggagggtgctcttttgggatgagcctacggggatgtgtatccctgccctgtaggcag +ttgggacttagcgcgactatctagataactaaggcgccagccgcggctgtttgccgaagt +cgtgctgatgctgtacaacgaagggcgagcgtgttaacatgctacacgttgacctagact +agtccaagtctgaaagtcccaatttaggtcgggtagtacagtcctcggttccagtcccat +gttgtgccgacaaggacaagcgatcatcaaatcgactgaaattgaatcagctacctcaga +ccacattcagctctcggtaacatgggaggcttgtggttgcaccgtaaaagggggatagcc +catccatcctgtaaacctacaatcgcgcgtagcttaatacgctcacattagacattcgat +cgagagacctggtttcaagagccttcccttttgctttagtgggccaaatcgcaaccctgc +tcccctcccttacgccttatacacttcagtgcaaattcatgcgttcagcgaacaactgga +cttctgttgtacgtagtccacgggggcttattcattatagaaagccccctactgtcaccg +ttatatggttcacacatgagctgatcacctagagagtcgtcatgcacattcgcctaacaa +ggacatatgagtaaccgggaggggatatcttcgatttgcagcaccaatcgacgttgtact +ggtctattgtcggttaggtccgattatccgaccggcaatgaggcaagcccatctattcag +gaaacttaggcagttccctgtgctggcccgacgtcgatgagttaagtctatacaggccgg +ccgcgagtagttaacgagaccaacatagaactatcatactagccggcaatgatcaatagg +gtcttagtgccactgtccttcgagccctcgcctaatttagcgcgaccggtttcctattgg +cctgtggggttgcgggcgcgtccgctttaagaatggtccttaacacctacccggagatcc +attgcatagcacactctccccattagcctagacacgtcgtcgcccgtcgactttggctgg +aatttaatcgccggggatatcgaactttcacgccctttaacgacgaggaaacctaccgtc +gcctggctggtaaatgggtgccttacggggactcacgatgctgtgaaccgcccgccagtc +tctggggctcccaaaatccaggttggaattacggacctccgccggtactacgcattacgg +ggtggaaagtcctaagataggtgaatgaaagggcttcgctaaaccagtaagtcattaaca +ggacatcggcgtcacgtctcgcgggtttacacggcgcacaaatcctattcccatgataaa +caccttatgccaatccacatccctcgctgcctaataaaattgtcacacctgcgctactga +ctaacgtttacgcaatgagagatgaattccgacacccacgcttgttgcaagcacagccgt +atgggttctcgggtaaggtaacacgaggcacactccggcgcggccacttcggcccctccc +tgacgatgaccctcattggtcaagcatcagtcgaatgattcgtaacaaggagcaaccgac +tcagtagagagggtgaatctcacgcgctagcctgaggaccgcctaagtgcttgctgtgcg +tcgcggcagtcgcgaggtgcgggctaaagtaaataattactggtcttacctaattaaagt +tggtggttagggacaacgttaccactaccagggtgcgcccctgaattcgggtatcggact +atccagggcgccttttgcggccttaaatacctttttaatcacgctggagctagaaggcca +tcgggatagacggggttctaggtactcgaaaaaacaggcctaataactttattgcgcttg +gactaacctatgtacaacacgttgtagcatactatggaatgttactgacctacacggata +gcatttgttcgggagcgtcattgacctcccagaccctatgccgatctgcaccattcagtg +accatccacaagtctctaggtttagccaaaggtgacaggtcaagcacttgcgcatgtcca +ctagtcgattatgcaacgtctctgaacagttagcacttatctcccgccgtgtgactcacg +cagtgaacttacctatagcatacgcctactattgaatgttcgttgttctaacacagcgct +aatacctcactggcagaggtgcgcacgctcctagtatgggagggagtcaggtcagagtgt +atgagactgatttttattcccgataggggttcagtgaaatcgacctctcaaaagagaggc +gcagaattcgctgataagctctgctacgatcgctaaggcacgataagcagggcggtgaag +gttggagcaagataatatcacccggacgcgggtcctgtcgcaacgagcggccgtgagacc +tggtgcgcaccgtgtctcgatcggccgaatatcggaacccactgcgtgactcaaatgata +tttttgctatctgtgggggatttatgtcccggtagaactctgcttctagcagaggataaa +ctttacaaggacggcgaatatggtgtcagagcgccctaatgatcccgtgctattccgcgg +gccaccggccgttaatggacttcgggttagaaggatgggttattcatcttccacagaaac +gcccagccgcaatcgtgggtttactcgaccgcggttatctgcctacttagctgcattcct +aaaacaggattaaaaaggccgcgagggttgcgaacctatggttgagaacagagtcataga +gtcagatgcgcagggacggcacggatccacatggcagttaactaatattaataccccctt +agcctcgtatatgggcgtgtgcagtcttgtccactcgcggacgcgtatccgagcgattct +gtcttccaacgctattcgttaccactttggcacctctttgctaagcaggatgagaacatc +tcactcactacgagccttgactttcagcacgcggtacgagggcactgggcttctcgtcct +ttgctagatgtaggtgccttcccgccctcatgacgatgtcacgtctatcggtttattaag +gtcggggaccattacgagattaccccgcgaccttcgtccaaatgggatcacggcaacgtt +ccacgaggggcgcgttgcctgagccactcgggtatccccttccgatatccgcagaagtct +agctaggagcaccgccaagcattacccgattaagcaaagcctactcatcgcatacacggt +tcttggggtttgcgtcagatagcaacttccggcggcagtagagatgatattttatccgat +tgagcttgcccagcgcaccctcgggccccgtggctcttctcttaaatgtgccctgcacga +tgttagcggttcctactcctccccgagccctatgggtggacagactcgccctctgaggct +gcgtgttcaactggttccaagtccggcgcctgtggatctacgacgcgaccagcaacatta +taccaatgtctaggcttagctcgaaaactagtaagccttagaactagggtcgtagcttct +tctaaatgaagggcagcgtcatagccatccacgttagcgcttactcaatcgcctgtcggc +tgtcatgttaccgctgccgtaagttcgtgaacataaaatacaacacattttaggtttaac +aaggattgtttaccgccacgtactggtgccggtagtgaaacgaaaaacctcagcatcggg +aggaggagaacggaatccctaccaatcttatctctacttaaagaacaaagcgcgcggtac +atggcgcagacgagaatgaatccccgaacgggccgagttagactcctcaacctgtcgaaa +agttgcgatccgctagatcgtagagtacggacttaaaaaagaaaagaaggtctctacccg +agcggtgagcccaaccagttccaggttgctgccggattcttccacacggcggtgccatat +ggacgaccccgtactttgggcattctaggctacctactgcgaacgcctcgcgttcatgcg +caaagttttctctagataggcgcgctttggtaagcatagtaataggttcttcagcgtcta +aagcccgcccattaggcctggcgactctgctttagtggtaaagagatagcatcgatgtac +atcgatggagagagtattttcacgaaagtgcgcgccgtacactatttatcggcatgcgcg +ctaaactggagggtctaataaccagatcacgcaacgaggtcccatgtacggttcgcattg +cgaaagtatgggatactagaggttttatcgggcctcgcttgaggtctgtctgggactggc +gcacatcgctcgtcgcccagtcgatagcggggtgattaaataagaaatatgttagtgccc +ggatttggaaccaaccagtcccggtagcggtacaaaaagcctttcctgctagttctatgc +ttaaagcgtactcctgttacaatccgtaggcaacctgaagaggcaacctggttttccttt +atttcgactttgtttgccatttccaatgtgatactgtgcggcgaccttaatgctttttgg +taaaaccataccgagatccagcgcacgcgacattcagaccggtcccggtttggcggtcaa +cctcgtactctgcactgttcagctagaggggtctcctatcccgaggtaccggtcgtctaa +cgggtggttacaggggctggtcctactctaccaacagttaaggagggcaacaagttcgat +ggggcatcgtataacttgaatgccattggacaaataataattgctccacgtcccaaacct +caactgaccttgtacgcataggtgccacctgcacgcaaccgagctcgttcaagtgtcctt +cttagctggcgccgagtgaacctgcatctgagagtctacccaacgatctagtatcataat +gtctgtagccagcgactatgacacttagagagccgcctaagaaagtgtttgcggctcctg +ccccggtgcgcttgttcggtgggaggtcgttatatagaaccatggggatataatgaatgg +taacatatctgccacgttgacaagccgctattatgaattcagggttggatactattatgg +cccttcacggtcacttgtaggacggccccaaacaggattagtaaagtcggtggtctaagt +gtaagcgataggcaaactgcggttattcgcgtagaccgcttgatgatgtaaaataacagt +tttcatgtctttgcaattaccgcgtgtagtctgaggacttaaggccccttctcggatagt +gaaatagttcaggtccggctgttgacaggtgtcctgaccggaacgctttacagctcctga +ggagcgtagcgccctacgtccttcctgatccagccgcacccatagctagtaaacaagttg +actgcgagacacaaagtcaagggcctgggcaagcgcgggccggactgcttgtcgaatatt +gaagcgtactcgatccagatctgcgccattgagttaaaaggactatacgcctgtctccag +ccgattgcagaaaggacagatcctaatagaagaactggggctccattctctcaccgacac +cctcctattcctatcccactggccccattgctggtaacccaaacctctcacgacgattca +gcgctgcgattaaagagtggagtaaggttaaaatcggttggggcgagtagtgtttgatgc +aagatccattgattatcgccagtgggatggcggcaaaggtaccatacctcgagcttattt +gggtgcctcactcctcggggaaccatatagacttgcacttggcaaaatatggtcgggttc +aaccgaccttttatgcctggaccctctgctgagggcctcttgatcaaaatgcttgcgttg +cttataagttgccgcttgatgtccaggattattattccagcgtggaacgggaaatgatag +cttatctgttactcagggcgcctgaattagggttgccattacataaaggaacgacaaggt +gagcactgggagggcgcattcttataaccgggcatatgcgcggaacaccagcgttggatg +gcctacctccgcggaggtcggggtcgaaggcccccgtttcctggaacaataacactgtcc +cacttggtttgtaaagaacctccactcgtcatgacacggcctagcggtgttatcggcgac +gataatcatgggtctttacaagtgaatcaggcttaccaggcggaccaggaggaaacactc +cacgagtgagacctggatccggggggatggcatacatcccatacgctcactcagcatgca +cgttcctagcacatgctggaatcttgcaagctggacagagtgtattgtggcccttgagct +atacttctaacgccagatccatgtttgcaaacatagctccagtggcctattcgacggttt +agcctctgcaccatgttatggctcttataggtgttgggtcgacagtgggtgactagacgt +aaagagagtatgccgtggttgaaccgagacctaaaaagctcaagatcacgacggatatct +ttaacggataccagcaatcggctaagaccagtgtctactactcgtgatcggcaccggccg +cccgttatctggtgtagtagtcagccccgcatcacccgtgcctatgcgagccttgactct +atcagtctaagagcacacgtttagacctgagccaagcgtaggtcactatcgagtcaacct +taaccctagttgattaatgctcttgacgtgtatgattacaccgaccgcgaataaactctc +acgcgcgtgacggtttcctcgctagaagaagccatatactgtacacactgctgtgaccga +caagacttacctttggtttacgtacaggtggacagttgtttctcccctcgggtcgatagc +gtttggtcgtgattccaataagtgccagatgtcggaacaacatgtttccataaagacgcg +tgacatgatatggtttgctatgaagccactacgaaaatgccagtgcttctctttatattt +tgcagatgtggaagaagtgcatccattatagtccttttacgtacctggattctccgccag +cactgccactactttcttactatccgttggggggggacgctcaacagagcgcggactcag +gaatcagataacgaccggaacggggcatatgcccagcattcgttgttgtaaagcgattga +gtttgggctgctaaggggccggcagttcgttccgggatacccgcaaaatttatgcctttg +tccggtgattctaggtttagctcgatccacgaatacgacaatacaaggtttgcctcctct +ttcgtctatcacgcaagcttagagttgctaaaatttcgtagtccgtgcgttaaagctccc +tacatttctaagctgtacgacaccacactatcttgcaacaagagtcactctatttctcat +atccgaatgaatatcgtcctgtacacgggtggcaatctcggcaagatggccgagatgtgt +agcactgtcacgttcaaaagctcaaacttctgcccactgccagccctaacagaatctgga +gacatcataccagcgctgtcccatgtggcggagagttgcttcaatagaacgctatcaccg +tgggatcacatacgtcactactccgtgtgacactatttattattcctttacctccaatac +gcccgtccttgcatcgcattttgtagtaagacatcagacgacgttactgccacggaacca +taaaacgtgctgagcccacgtaaacgtcctatcggtgaggtccgctcatcgtacgactct +gaaatttggaaactaccagtttgttggcggtgaatatccaacctgtcggcatacacgctc +acgcgtatggttggtacatgcgaaaaactacccaagcaccgggcgcgcgagacactatga +gtttagtgatgatttacggagcacgttttttgaactcaacagaccgattgaatccttcaa +acagggttactcgttcgtgacaaccgattacagcattctgaacgtggtacgtgcacatag +cttggagagttgcgcgaatctctttcgtaccgtattctacctgatcgctagctttccggg +gtaacgacatcggcaatgatgagtagcagccagtatccatactggacaggtactccatat +aaaactcccgcttcaacacgcgagatttgaaccgcacagtgattgtgctgagtcctagtc +accatcccgatcttgtacacgggtaggggtgtaacgtgggcagatgatgcttacccttcc +gctggcttgtaaaggtgccccgcttcacttgatgagctgcgtcgacaagaccacccaacc +cgagccacgtggttccgacgactcaatgatttccagtatggtccaatcgagcaccttcca +ctcatgaaatttgagcactgttggggatcgagtatgtgttttgcagtgggtctgtagcat +ggaaagatgtaccctaacccggctctggcattatcaacggtggattgggtggttaaacag +cttcccttcggagacttaatggactaaaacgaatgaatcagacgccgagaacgagaactc +accatctggcccaggagccatatttttgattggtaaatcgctcgcatagtgcccgatacg +atgcgtacttgagcgtaaacggcgcagcctctaatcataggtgattgctaagtctacggt +catccccagtggctgacgaggaattaaagacctatttccgtacttgttgcgcgccttcaa +ttatccagcgtataccccgatggctactgctacatgtctaaagtgactagccagaaaaac +ctaaccctcgcccacgaggccttgatcatctcaatcatagagtaatgttcattgaattgc +acggctcttggtgtgcacattgagacaatttctaaaccgacaagtttaatggccgagctc +ctcctgcgtccagctggaccttcatgcaggcatgaaggtccatatatattgtcctcccat +agcccgccgaccgggtctgactcaactgtgttttcgctatcccaggctagcacttctatt +ctttgttacgtccagtcatagtgttactatagggtaattttagtcatagtagacggccgc +tttttcgtatggcccgagaccgtccaccggctacccaattaagtcacatccggatcttgg +gtctagatattcctatcgaaaatagtctcgccgcctcactgcgtagttcagggggcgtca +cacttgttcgcggcttttcctcatgggatctttacccgatggttgatgcaataaatgtct +acaccggactggcgtgtccgagacgactttatacacgtgtgacgagtagatcagatcgta +cgaatggtctgtctcacctatcccagtgggaggatggaaaacactcctgcctaccgggtc +gaattatttacgcgtgttacaatatgtaatttagaaaaagggattgctggtcgatgcgtc +tccaagggattttttatctaaaagcatccttttgggtgtactctgatcgcacgtcgcaga +cagcagtgggttttgacgcagtccgtaggcccacagactcgtttgttgtttattaatccc +aggggagcgttgaagccacacctattctgtagctgtttgaaaggtagctagcccggatat +tactcaaggtgactcccttcagaatcacacgtcgctggagtcgccacagggtggcatata +cgagtgatagagcaccttactttcgaggtagcggtacattagtgcaacgatgaacccact +atagtcttagtgatttcatgttttacttacgcgaaaacgtggggttttgtcaacacgtat +acgttgaatgcacatgcctcatcctaaactgatgcactgccacaagtctgaaagagcgac +agtctgcaacatagcggaaggttacgcccaagccagtggtgatcccccataagcttggag +ggactccccttagcgttggatgtctttgccccagcggcctcggtgtacgggttctccacc +ccactatggtttggaactatgaagaggtacggcaacctacccgaggcaccaaatcgtgaa +cctacgcctatatatacggatagcagggtatccattcttaccatgagctcgtaaaccact +ccgctgaattcgatgggctttggcgcacatcaccgtttctatcacagatctgtcaacgga +atctaacgctatttactcggcgcacacagatcggaaaacccaactgtggcgcgggacgga +ctccaggaatcgttacgcgttatcaccttcggctaagtcttgacgacattagagctatat +ggtattaatagtagctgtacatcaaatgataaaattatctgaattataagtgatagcgcc +cacataatgacacacacgttttagatagttagtagacgctcgagactttgcgagcaagaa +tggactgttaaccttaggggcgggttcccgcttacaaaagctgattcgctcctagagatc +tataagcgaagttcaacccctaattaccattgcataagaccgggagaacctgtgacacct +gttcccatgggattagcgaaggattgttgacttattgccgagtgacctagtattgattaa +aaatgcgacgtgaagtaaccaggccttcgatgggcgtctccgaatgggccagtaacaacc +atatacaaactacaagttaaacccgaaaccgtggctaccatgctcatctagtcgggttcc +cgatggaacattccacggtgagcggccttggatgtcggaccaccatttggcaggacaacc +gtcacgattcgcaacagcggttaaagcaagatggacgccaataatgatattcgaaagtgg +ggttaaaactggccgccgcttgatcggtcctacttagtagcgtctcagatgctagaacca +ttccgagtgcaatgtgtgctagcaacagtggaatcggtctataacggtttcatgatccct +tctccggccatccattgagaacgattctacattaatctgttaagcgaccgccaatcactg +attagctccagaaaacctaagattaccgtatataagaatcaacctgctaaagtaggaagg +cgcaggttgccgatgaacagatcaagttcatacaggagctcttaatccaccgtacccaag +acctagtcaagcgggatgtcgttaacaactttgtacagacatttgggagcattgcaccac +agactccaatgaataacgcatccgctaggaccggatatagactgaagaaagtatagtcag +ctgcctcctaaaggaggcagtagtaggagccaacctaacgtcgtggatacgcattactcg +gtagcgtggtaaacacacgaacccgatctcagaattttagcggcgagaagttccataaat +catatttctacttcgtgctccggcttcatctgatggtggtcattattctccatatgcatc +cagtagagcttgcgcttcacgcaaagttccaggatgctcacatatgtccatacggcgcta +ctacatttactcgaacacttggaagcccgccgtcgggtgtatgactagcctttgactgag +actcagcctcgcaattgtatgtaactagcgtatcccggcaaagtttataggtccatatta +acaacagatgggagtagagcagcagcttttattcggactggcacctcatcgctttcgctg +tctgcgggatcaccggtctctcttgaacgtgttagagcctgagggatctgagggcacaca +cggcacttgtatccggaaaacctatgtatagagcctcggttgccagtactagttcgtggt +ccatagcgcctgaggggattaaacgcctccggaaacacgcgagttgttcttgtgcacgta +aaaatcacttgatgttatcgtgttcggccccagtcgctgtctcacttcaaaccagcgccg +tatccattctatgcaattacgattatacttttgacccgatctacgaatcagttacccatg +aatgcgacctgcgataacatacagtgcgacctccagtcctgttcgattaaatcgacagag +ggtcccgaacgcatccaagcggcttgggtcccgctggcaccgctgggaagtaggtagaga +cgtattgaaggaagcgtgtacagattggtgattacggtgctcttataggaccagactcgg +gcgattctacggggtcgtccacactatggacccgagcatcgaatcagtatgtcaatctga +agggactaatcggggagacgctggactccgtcaggagtgaccagaagcagggatgcaaag +acatcccggacgtggatagactacaaatcggacactcagatacatacctctagaaaatac +tattccccgtttctattccgttccgcggccttttacgtttagcttggagcaaactatata +gccgaggagggtactacaacgcgacgcacttatatcccaatgaaagaataaaagctggta +agacaacgctagccactctacctgtgttgcactcgcgatattagggagacaggttacaat +cagctgacacatgactagctgacccggagcactcaattctgcccatcggggatctgatca +aattcgtcgtcgcattggacggcttccctgcgtagcgaaggaatggttaccgtacgcctc +ccaacacacggcggtcaaaatagtcttcagcaacagtaacacaaatctcttcctagtact +cttggtacacggccctagagttaattgtgtgcccccccatactctctacatgtgataaca +gcgacccactaggttgccaaacagagtcggaagtcctatcgagtccagggcgctgtaggg +cctacagactctccgatgtcctgtgttcttcgtaattgcaatattttcgggacccttctg +ctgttgtcagattcagtctgttccatcttctggaaatgttgaggaactcgaaaacgctaa +ctccctgatatttgtggccttacatcaaccgtcctcaggtgaagcccaatgctaaaggag +tgaaccagacgtgcaggaagaagctgttgaccctttaaagctctagttcttgtcaggtgt +tccgactcgctggcgagagtatgatccagtaagcggcggacctgcgaccacatgatgagg +tccctacaaaatcctatgctccctgcgaattacaactcacagagaacagcctaggctttc +ttagttattgatgcacattctactgacgaacgcagcattcgaactaaaccattggtaatg +taattgtgacacgtgggaatctatttaaagctgcaagaactccaccacgtgttcatccac +atcggtctctgtggaatggtccaggaccgtcccaatagggggaattgcgagacccaacta +atcgagtgattgaacatgggagcaattcccgaatagaaacttgcaacgcgcagtactacg +acgatggtagcaataacgacgcgctacttcagctcatgggtctaaattagggcgaacgat +tgcacctaatctgctggcttctctagattgtagatccacagggccaattaacagtgcaaa +gaatagcgtcatatgattagtttgaaaataatatacatgaaaatcgagcacccgcatcaa +taagctacgagagtctttggagagtgccaatacacctagcacatgctgtgcttatgttat +gaaaattcatacttgactaacgttagccaccagccgatggcgctgtcacaacgaccctgg +gttaccgtttagttctctaagaagggtcactctaccagcggggttaaatataccggccga +ctgtctcgagagtgggttgagataactcaatttggatcagcattaagtctagagcgattc +tcgcggagcgatctatgcgcactgacttactcttggaatgtcactcgcggcttacatgcc +tccttgttccgcggattgaatattttatgcggtagtcatgactttaatcgtttctacaga +aaagaccgtttgaaatggcagaggaaacaaccctgctggatcctccctaagtcacatccg +gacggacagattctacttaacctccaataaattgagaaaaatgcaaaaggatgccaatac +ctatagtacattttacgtttcccgtgtggttcgtgccaacccctggacggtggatgtccc +cggtgggtttttggaccgggcgaaattattggccaacccggaaacccaccgagagcctaa +gacgtgcatgatagttataagtttaatgggagccttaattgcaaccgatgggggcgggta +tttgtctcctacaccgacactatggttgttatttgcggcttcactcaactacaatctggt +ctgtagagagtaaccccgtattatcttcccttgcgccctgggtgcgttagcggaagtatg +gggattaaggggcgtgaacaatgcttctaagagcccggcgctaacggacggtgtcacaga +gtgtctaggcagagtccccactgtggaatacgcatgcgtagcgaaccgcgcgagtcagta +ggaacacattgggagcgattgttcctcctatcagccggcctagcaagcatgacgtcaaac +cttagtgagcagcccaagaaataacgctcggactgcaacagatctaagcgggaaatatat +cgatagcgaggaagccgagaggactaagcagagagacgaagaggtgagccggagtgattt +agccccagatggcaggtatagcttccgttcacaacgaattgaacagaaagtccggcgccc +ctggaatttcgaaacgtcaccaggttggccgtaaggttggtaactcaacaccctaagact +agcggtcttgcgtcatgcaagcggggcgtgtagcctgcacagacataatacggtagggag +gttaggcgtggggcgacacagtaagatctgatgaatccatgtacgttgcctccccgtcgt +acgcagttgatacttcgcatcatacttagcagaaagcatcatcgcgacctctcgtacaat +ggcaaaaaggagggcttcgtgcacggggtagagtcttccgcactctaatgaatcaacagt +cgaggttcatggccacaaatgtaacgacgcgatatgactcgttatgtctaggtcccactg +cggatctccttagaagcgaattgtataaatctcatagccccccccttagcaagtggtacg +tagcccacacgatttacgcagagtggggtaagacctcccccacgacttggggaacgcgcg +ctcaccggatagctactgccactgtagagccactagcgcatagtgtatccatagtgatgt +acgtagccaagcggggagtccttgtcttatgactagcgccatggggctatcaactgagaa +cggatgcacaaacggtccggccattcgcacagtccgccggtcactaatgaccggtctgca +tggggctgcaacgatcgcccaaggattggaaattgttaataagagtccagtggacaattt +agtaacgcgacgcgcatctctccccgcctaacaaggctcatttttagcttgacggcgcgt +ctcacgttgccgggctcagctcgagctcacgtgccgcgcggggttacctcaggtttgagg +aatgtgtcttgaacggttcgtaccggcttagcgtcgggtgctcctcagggttcccagcaa +cattcttaccgcaatccaatactgagggcgctaccaatctaacgtatcactgacccagta +aaactcggtattacgggggcgatatatgtgcttgcctcaacatagaactaccgccttgac +gttagaacgttaagttagagcacctgcccatctggattgcggcgataaaatcgattattg +tcacctggatgaggaatatggcggacaaacgatcgtgtggacctgcgccgcaaccgtggg +atgccgcagcagaatatctacagagcgtttgcaggagggccacgcggtatccacgtaagt +tcgcgcaatagcagcatcatctcgttcggggttgctgctctcagactgtcgatacgtccg +aataccagcaacccctcgaggctttgtaatatttacggagtcctaagggatttggtgccc +caagtatagttttgccgaagggggggcacagtgccgtgactacgattgggctattgggca +acccgaccccgtgcgcacacgtttgatctcagacagagggcaaaaagacgaagccacgag +ctcttcgaaatcaatctacatctatgctgggataagttctggtccacacctagatccgag +aatggaccgtggataacgagcaccgttacctttgaggcggcagcacttttaacaccgtaa +aagtaactctatagttgtcagcctttaaagattgcgttcccaatacggtacgcaccgtct +actaccgtcaacacaccgtagcttaggtccccccgcggcagcgcttccatcgtggagggc +tgtcccccatcctccgtagaactgcgtttaccggtctggggagactccctaaagaaacac +cacaggtgaggtggacgggaatcaagttaacgcattcacgtaattcactcctgttcactt +acataagagaagttctggttcgcgccttaagtgccatccatgaggcatacgatgcgatgg +ggaccacgcctgtagactagagaaacaccatcaagttgataaggagtgaaaattagtata +ggtctggcccgctcgtctgttgatagggcctttaaatgtaataggcctccgctctgaacg +agtccgtacttatctgttggatagtaagaacacggttctcagtccgcaaggtagtatatg +actacgcgtcgatggacctaaagatacgtttggcatcgtcctgagcagcttatgaaaatt +gctgcgcgtttcaggtggaagaatctgtgttattagtgcggggacggtagtttcgtaggg +aattatgggtagtacagatctatggacgggaggtgactgtcagcagactgtgcgcaggcg +ctggtggtataatcgctgggaccacgtactggcaagacgcatgcagcctggtgacatcca +caccgccctcgctcagataggacggacgtgcggcaataccctatctggctcctggacacg +gaaaaacagcagtttaaaaaaaagtgggttttgtgcattatcactttgtccgttcgacag +tttattgcacctcccagcatgctagtaaccccttgctctgatttgagatttattatcgta +acacggagtcgacgtgaagtttgatctgcggagaataggccgagaagcccctacgtaccc +tatgattcccgccatgtgcggtgtaaaattaaccactacttatggatttcatccaaatta +actgacgcattatatatacctcgagtgtgtaagccggccctcgcggtaccaaatttcggg +ctgcatacctagaagtgtatgtcatctaaacctaaggatcgggtagtgacgtgtaactaa +cacgtgggacaatgtctgtcctgagctacgtcttaagaagtatttagtcctacgtactca +ggcatcgatactccccgatgttgggtgcagtggggcgtccgggcggctaagatagtccag +ccactccttatgtgaatttatcaaaccgggaagaccagtgcataggccacgacctacgta +gcacctccgtacaaccttgctccagggcacgtctaaatgtcgtactgggttcggactcca +tgcctggcgactagcctggcggtccacatattttacaaatccgagacaacaaagcacttc +caaagtcgcgtggaccttaaggaaggcaacacaggggacatttagccactctaaagaccc +gcatactccagggcatacacgtaacgcgttctcttcactacggagtccgcgagcgaacga +ctaagggcgagggccgtagatctccttctcgtaaatataatcaaggttgccagcgcttat +cggtgccaccgatccgaagagcgtaaggacgttacagtgtaggatacatggtttgcgccc +gtccatacataatcgaccatcaaatcgaaagcgcgtatgcagtacctcgtactgcccaaa +ggacagagcgcattacgtcaccccgagcgtagcttaccatgttaagaccgtgctcatggt +ttccacccgtaagatgagcacagattgcttgctctaggtaacatagtaataagagaacat +tcatagacgttggaccacggttgaaagaccgcctcttaactactgaaaaacaatatttgt +ccttagtaaccaagatacattaatcaatcctccgctaatgaagttggtaggcaagccttc +agtagcgtaccgtggatttgtgtttactgcatttacaccgcggctgggtacgaagcggtg +tcgggcacgcacacgcgttcgatactgtaggtttcgttggggttgcttgttgccgctaac +gttcgggtcgcttacttctgcaggcttgattactgagttcattcgatcggttcccaactt +cggactattgcgccatcatcaatgtgggaaatcatttttaggaatacacctcgtacatgc +atatgaagtctgcgtgcaacagactttccatgatgcgagctgggcttcccgtcctgcggg +atgcaattggcccagtgcgcgaaggctgggctgattacggacatatctgctgtcctgaca +atcgatggtgtagagcgtaacaatcattccaatttttcgacacgggccagggctttaggc +cactacgcacctgggttaacactcggcgacccgcctaacactgggtggacattcccgagt +tataacgacacctcattttcaacaaccacaaaaaggcataggcaaccgaactaacctttt +gtttagttacttctggtatgttcatagtgtagggcaggtgatcggttaaacgcttgtacg +gaccccattctgtagcgcttttctgaacgataacactacgttgggagatacttgttgcgc +agtcgtgggttaaaagcgagccgacgataaactgcaataaggaaagcggacctgtcacct +cccgcgggtaaatctactcgctcgtttagaggccgtaaagcgacataacggtgtccagta +caagcccaactggtttagagaattcttctcctactacattcaccgtccgtatttcggcgc +gccctacggtattcgtggtgttctgagcatacatgggatggactatcacccctgcgcgta +aggactagcagttgtaagtcacgttaaggttgcgtaggcaactgttggagtgcgtccata +cttttcagcaccccgaatttgtacgcccaagttgtatcgtcgtgctgggacgagactcag +cctttaccctaagcgtttaggaaagcgatgttttaccgcagacgcatatgagagaacgtt +gcaagatcgatctttctcgcgcacgttctgtagctagacctgcagctaatctaactgccg +aactgttaggatgttttctctcctagacgcagggaccagttgtaagtaagggtttctcat +cgctaggctagggtgatggtaggtgataccaatggagcggcgcgttaaaagggttgtaat +ctcggtgatatgtgcaccatagattgttccgttattttccttggtcatttagatacgaga +taggggcgccccagtgccacgaggtccatcttatgctgttgcgtagctagagccctacaa +ctttctaagtaaaacctccatcgagtgcgcttggagaatttcatgtaccgtggcggtacc +ttacttgatgccgcgacccctatctaattaaagaccgcttcccgatgggcgaccttaatc +ttgctgcagtccaagttaacttcctctacgcccgatgacaaatttagccggagtaagttg +ttaacctagcctaatttgtaccgaattttgggttgtgagaagaccatttctacccgacga +tcatgggttcctctcaactatacctagtgtcggttaatgatttatggcaaacaatccccc +aatgtagcacccatatgggcgcaattatgtgaacttcaacactaactattggtttagtta +gtgatatttagcgcaaataagaggcatgggctgcgaaaagattgtgtttccgcaatgcta +gggaacctgacggcatacccgagatgatagttaggtgagcccgaatcatgcttgattaac +gtaacgtctatcactacccgtgggcttttgcgattgcgatgcgttactcaaggcatactc +aatggggctggtaataccgatatgggcctgtgtcttagcagcgacgtgtcgataatcgaa +gtacaatacgccagtctacgttagggctttgctaacacatcacccacagttgaagcatca +cgcacagccctcattaggttgtcgtcaacctggaactcctagcaggctgggcagtatggc +atccttcacgaacaatcttaagagacgcacttgacacaggttgcgacagtcaggatgggg +agcttctgaaaatctctacataaggtggcctcgtgatatcgtattaactcggagagcggt +tggactaatgagtgagtccaatcagtgatcggtttttaatgccgggaccacggcttgcgg +ctgcgcgatctatttccctcgcgttacacaaggggtaggcataagcaacaagcccaaaaa +aatcctcacgcaggcgtcaggtacagactttttccctcagcaacgcaaggtacacgtgta +gtcgaatgtggtcataaccagcagctgtcttgcgcaagggcggtgctacacgcatgtttc +actccacagtgacatgatgcccgctcttcggttgttctatgcagcgcgctggtcgcacct +taagcccagttcaatccatgcaattcaccgttgcagcactagatcatataccgcatactt +cgtcagagcacaaccagatcacttacaacgaccgcaagctaagcatccctatcgtgcgta +tgtgtcgaggcgcaagtactatggtcggatgaggaggtgtgccctcaggacacacagtat +cgctcctcattcgacgacgcaagtcgtctagttctatgataggcgaagtgagtactgcgg +atcactacgcccaagacttggagtgacgacgccggctactagcgatggcagttcagaatg +gtgccttccaagggacactcggtcctaatcaggcacacgcgtctcaaagccactactcat +tcatgagctcgctggcgtggcagtggtcttatgcggctagcgaccagaatttctactagc +cttaggcgtacaagcgttgggcaggtcgcgagtaacctctacactctatcatggaccaca +cccatccatgttttaaacacagaggtcttaagaatagcgatggtacggttgagaacgtgg +gagttttttgctctacagcaagcacgttgcagtgaggagagctttaatcctaaatcataa +gtgatactggtgccgagcatctttcggacgaatatgaagacccaacgctaatgtgcctgt +tcgtcggcacattctcttgggacacccgctacccacatgtatgtgaattgggcccgtctt +gattgtgtcgtagatgccaacggttcaatcagccccgacgacgagaagcatttctacgtc +tccagccttgcaacggtttctagagtcttgctgttcgtaaattgaagaatctactgtgca +gactttatcgacccacgatacgctaatccgagcgcgactcggtctcggaaaattatccga +gggagctcgttcaatgcggcggaggctctgagtgaagtttaaggctgagatagtcacacg +cattcgggtccctacaccttgtttcgaatgtccaacgcgaactctgggcaacatcgcgag +actttgaaagatgagggggctgtgacagggcctttgtaataggggtactttaagggcggc +acaatgtgatacctatgtattcctatggtctgggtcagttatttaaattgaccggacaag +aatctgactcgtagactgctgtatagatcacgattagagtttggcaatggttctgaaagt +gatcatgtctaacgtaccggatgacactagtaataactgcagcagcgtgacgatgtaggg +gacttactctgtttacgggtctcgtctgccataaacatcctgctccggcagcggtcaaag +acgtcctattatcgcactcgggcagaaactccagtcatggtgaggcacaccaacagtgtg +gggtcggttcgtggttaccaagccaccatttttcggcccaaactcatcttgaatagtcgt +cctcattcatttgatcgatcgtcattacaaggttcataaatgcccagcgccgcgtctccg +gccagatggaagagctacgtgcaggcggtaagcaattgacgctatagccctatatacgta +tgtgggactcaaggcgacatgctataccgactggtatcgaggcgaacgacaattgctatg +ggtcatcacctcatatttagattcagcccctggtggcgtcgctttgaccaactagttaag +gttgaggagttcgctctcaaacctgataacgagctaggccatgtaccaaccttggctgtg +caccgacgagctgaaggaccgagctgctaggaggtcgcagtatcgattgctctttcagcc +ttctaaaggtgcgacagaaacttgaacctctcggtactctaacactaggggtacgagtgg +ataactcgattacattagtcctggtacaaaagtcctccttccgggcgccttaagctgctt +taaagctatgtccgcttacgagaaaggggcgcacggtccgatctacttacagactgtcaa +aacggtgtagtcggaatgggctcgaacgacgctaatagatacacgcgcattggcatggta +cttcaccaatactatatctttaaagaagggcggcgagcctatttacccacttcgattagg +ggataacacaggtgattgagttttctggaaccgtcatctaatagccgaagcagtccacat +tacagtccattgcatttaaccactaggaatcgcgccaatcttgcgcttatgttgtttagg +aggggccacgctagatcttgcctatcctgagttatatgagggacgatcctacatgtatcc +tcaaagttcgcgctcatccttagattctaggagatggattactaagtgtgtgtccatagt +ttaacgcaacacataatgttcgtgtcgtgatgcgtatccttggtcccgacctactactct +agacctatacgatagcgttcaaagctccaccatcgatgcaacgtggtcgtaccagtactt +atgaaaccttttttcgcagttcgaaccgcctggaaagaagcatacgcaatatcgtgtgat +cagcacgcagggtatcagttaaagagcccaagacttagtctatcgagcagaagaccgatt +agggtatacaccatgtcagaatcgcctccagactagtggctgatatcgtacgttacacga +ggtcgctcttgtcgagtgctcgaacgatctatcccctagatcacgcgtcccagtcggagt +atcccgcctcggatcgaaatgacggctaaaaggtgtaatcacgcgcgtaattcctgcaag +ctctctgagttctgctcgctggttcgaatgagcctgcaggcagtacctacaattcctgct +cggaggacctgttgcgagggatgcccccatacactgctgagggtaagtagctgaagtata +aaggcggcaatcttctgacaaacacccttcttccccttggttaaccagacaagctggatt +tatcacccctcccggggacactgccctgttttatatcgcggacttgcatcagtcgcagta +gtccgcgtagatgtggggacccctcccaccttacatggcaacgcgtgatggagtagtatc +tcgcgtcagtgagcgagttcgcatatttgtagggcgtcataacaaatgtaaatgctagta +agtgaaagatgtcaacatgcgggctcggttttgcgctccaggtatatcctgcatctgatg +aacttttcaatgaccgtgtctggcgcagggctgtcgttttgcaggaggggatgcccagcg +catctcgagaatcatcggctaatcaacgcgaaaaagttaatcttctatcagtcagcgggc +tataactccttgaccaacagaggatcgcaggtatttgtactgtggagaaacaatcgtaag +atggccggccatgaggcaaggattgtaatataccggggtggttatcgaagaagtaaagta +aggcctaccttctggggagcaatggggttctcagacgctaactcttcgttcacctacaac +acgattggacttagagagggacctacggacccgaaattcacataggggggttccccgata +agccaaggcaggatagagtctgaatccatggacttccatcaaacccctgtggtggttccg +ttcaagtcagggagtatcacgactcacttactgagtcacgtcctcaatatgactgaagtc +gataagacgaaggcttaatttacggaacccccgtttagtaatcaagaaacgcattggcgc +gggtctaacgtaagctcttcacaccgccgtctacgaaccagttcccggcgttgcatggtg +atcgccgggttcccttggagggagtaccttgtgccctgcccgtatggtcgttcctaaata +gcgaccaagtattagttgactgttgcgacttaaaatccaacccataagcatatatcgtgc +acccagggactggagggcctcagccccttctttcgaaacttaaaccgtcttcttatgggt +gaaatgtaagtttctacgtctggaataaacggttcgggccaccatgaagcgtctcgtgtg +atagagattcgcaatgagtctgggaagtagaatcacaccaagttagaaaaattctccaac +tcagctaccgcgacccatccgttggggtaacgcaagggtattagccgctcagaggccaaa +gattagagaaacgcgacgcctgcggctgtcttgtgactactccgaccatgccgtcagctg +gagaccctacggtgggtagttgggtagagcgccgatagctaattctcgagtggaactgcg +gaatgtgtcatatgaggtagcgatattgggctatcacaagtacgtgagcctgtgaaaacg +gacgactcactagcaagtaagcacggccctggcgtggcggcggtacgcgtacaaacctcc +actgcttggggaataaggtgcgaacaccgtgatccattgaggcgtggaggcatagggccg +gagtgttcccgtaccaattacgagctaagaccgcctgtccagccctggtgattacgtagt +aagctcggtacaagcctgtaattagcttccgggtggcggacattcgttcatattgccagt +cacggcagaggccgcgctagctaggccagccccgatgaaacacgtgctagttttctatcg +tgcctaaggatcgatggctatcgcggcattgttaacttatcaagcagccgaatcggcgat +agtggacacaacatgaacacgctaagctctgagtgccagactctaccgcggcgaatccta +ggccctgctggggctcccccacagagcagtaatggtcttctgcggccgcgtgcattcaat +ccgcgctggtcaatgcgttccatcgtgccttaagcggggcagtgtgataagacaattttg +ggggtttcatggagatatcttcagaaacctcgcgaggtgcgtttagataccacacgcgcg +gcggtcttttcacacaattcagtccgcggccggtaacctaactttgcttatcaatacata +atcctcccaaatgtacggtttcgaaggagatacctctcccctgttagactctaggttttg +cagtgctacctagagatcacaccagcattaaaccaaggtatcagcatcgtaacatgggga +ggcacgcgcttggcggtaagtacccgccacgattactctgtttcatagcgccaacgcccg +tatagtgtgcttttaacgtcctcagaaatcaccgactgatcagtatggcgacatcggagg +gaggttggcgaaatgttgcttttatagatcgttaaaacctatcgttggcgcgtatcgcct +ccatagaacttcttactcacctagtctgatcccgggactggtcgaaatggagacgacgta +gcttgagatctggatcgatcgactgatatcacacttaaatatgatcagattttactacgg +tcgatctccatatatctatcccagcacttgatacctcctgtccagccgactgcttggacc +ctagcacgcgatattagagggcgcgttgtagctcaaagtaaccagtgggacgacccgagt +gaggttaccgctggcacgtaagggtgacatgactcccccagaaacactgaatttgtctag +cagtacatcataatctgagaacatttagcgaagacgagaacaagctgtctcaatggacgt +aggacgagaggaatgtgacggttataatacgcgacctctatgtgtctattaaatccctac +gggccgtagcgagcaagctcgggatctttagtagcggatcgggtcttctacatggcgcac +caggtttgatatttcgagctagagttgctctaaagaaacgctcttgcttgggaaagtgac +ctggggtacgacgaagacacgggcctggttgcataccgtctcaccttcattcatcgagcg +cgatagcgtagcattatccagcacgggaggcacctggcatgggcgtgaaatacaatccga +agagcagcatgaaaaaaaaatgagcggtcgtgacccgagggtgcgtccctccgaacgttg +ttcgttgccaaggtaagggacccacgccaagcatggttagggaagcgtgaccgacacaac +atagaggacaatctcaatatgccttctgggtatcacctgggtgtgtagcagtgctactgt +tacaagtcgcgccatctgcgacgtcgttcgtccctattccctcctaaaggccccgactct +gaaaaaacctacaatcctagacacgttgtggcccagcacaacgcgtctgctatacagcaa +gtcattcgtcgaatggggcaacacgtataagaaggccgtgattccaagggcacatggcgg +gtctctcaatgatctacgacgtgacgcaaacggggaaaggctggaccgttgtccggtagg +cgatccatcataaaaggcgtctggttctgtggttattgtgtacacgtttgaaatatctga +ctgtagaacgatggaggtctctacgtagctctgcacgattccctcgggctcacgttcatg +gcaaggcgacatcacatgaacagggttgggtaacagccatctctgaagcattcccccagc +tcgcacggctcctttacccgctactacgtcatgcactggctagagacccaccaactattg +tgcaagtaaagaccataaaattttggagctgtagcgaaagcgagttgctgcgatggttag +accaacattgggtcaaactattctaatccggctaggctcattaagcatcgcagattgccg +atactaatgctaacgagcgatgaatgggcctcttcgagacgcgtccgtacctgcgaatat +caaccatgaaccctaatctggaaagtttgatgccgctgtgatagccactcctgtgtcgcg +acggcaacgtaatgtacgtgcttggtttgagctctaaacataccttcgttagagttggtc +agaggaggatattgtcatagcgctacaaccagcgccaaaggatagctccgtggctggtcg +gacgcgctagaatctaggcagaacacgtgcggcttcttgcactctgacgctcacgcattg +gactttggcggtcatctggttctcataagtccgaatcacagtagataaagatccgcgtga +taagatatgcctacgtacttaagtagcaccctctgttcttggcgatcctatcattgcggg +ttctatacatatgttgatccaaccatcggccgccgggccgtcgtaggatctaatggccaa +cacatcaatcaaatcactcgcgaggacgcggaggtcccgtccataggtgtgtatgttggt +acgcagcacctaatctggtctggtcaagcaactggcttgttccagtatataatctcagat +agactgccctgaaagtagacaatgataaatatgtaagagcggggaaatcccatcgtcgac +tgtgttgcggacgattagcttgcaaagagaggtgtgagcggctgtcttaaattatggact +cctcgcttccgtcgaacgtctgactagagaatctcttggaggtacacacgaacgtaggtt +cctcacagtatgtggcatggacaccggacaggtcacttgtatttatccattgaacgtgat +atagtgtgtcgagtcgttatacaatacatactccaagcgtactccctttgggtaacgggt +ttgggtacatattaccatggtgtggaccgatttgtaaccctataagcgttccgggtactt +taccatcgcggatgcgatcgcggatctacctatgtcagcgacatactgcccgtccaaaag +tgattcagtatgtgttaatcagcgtattgcatcatcagtcattgagagtggaccgttctc +gaagagcaagattcctgaccctttccactgggccatccagtacacccaattatatgcaga +cgaaaagctccatacatatataatacctcttcacaccgtgtgcagagaccaacttgatcg +atattgtactcactcgtacggaataattagaagggcccgactgtcgagaccgttagcatt +tgcattatcgcggtgagcgtatagaaacaattataggctttgctgcgatcgcagtgtctg +ggacagagtctcctagacctagatcagcttaaaacaatgattgtaggtaatgtgcgttgc +cgtcgggccacacctttcagttcggttacaccgactcagaattatcttctatcgggaccc +tcaaactgataatggggtcaaatggtggtggtcccgtctttctgcagtgctttgtgagca +gaatagctctcgagcgctccagtacgcctgagtatggctgcgcccaccaattggcgccgt +taatgcgtggcgacacaagagaaccagtccacataagttatgcccttaagaagatcaccg +ggtttgcgccatcctgattcaggtaacggacgtccgtgtacacgaaccatactaatgagt +tctacatcgctccaacgcgtcttgaaccctatcgacaattacaaatgcaaagtattagtt +gggtcagtgcgtagcttatccaagggctgcagtaagtcgtccccatgacagacggacggc +ataagggccaaaaattccgccgcattagctgttaataatgccatccagaaccggacagtc +tcgatatataacttacggctgcgaactggcccttatgaattacatccacgtgctagttaa +caggacggatcgcccggactaattgccgatcggccgtcccattctccgtacgatgtactg +aacccaggcgtgtgaatgggtatgtcaacgtttacccatcgaccctgcctatagacctga +gtttcattccagttgagcgtagaatgggatgagcagctttgcttgaggtgcgatattcgg +gagacctggtcagcaggattgatggttttatagtgctggattccctgctgaaattctctc +ttctgccgcatgtgaagaaggccttgcttcccttccacatgattgtaagatttcctaagg +cctcccagctgcgtggaactgtgagtcaattaaacctctttcctttataaattacccagt +ctcaggtatttccttatcgtggtatgagaacggattaatacagttgtgtaagccagctcc +ttataataaatctctctccctctctctgcctctcatctatgtatgtatgtatctgtcatc +tatctcctataagttgtttcttttgagaactctgactaacatagacattaaataaacaat +ttgtatactgaataattatataactactgcttgggggtgtggttgtgttgtgtggtgagg +gggtgtagaaatgtctaggggttgatctagcctaacaccttccagatgaccctaggttct +ggcctttccccaaagagtcctggtctactcagtcatctcccacaatttggccatcttctt +gggtgctcaggacaataaatgacccagccagatcctctagagtcgacctgcaggcatgca +agcttggcgtaatcatggtcatagctgtttgctgtgtgaaattgttatgcgctcacattg +cacacaacatacgagccggaagcatacagtgtagagcctggggtggcgtatgagtgagct +aactcacattaatttgcgtttgcgctcactgccgcttttcagtcggggaaactgtcgtga +cagctgcatttaatgatcggtcatcgcgcggggagatgcggttttgcgtattgtgccgca +ggtggttatttctctcaacagtgagacgggcacagctgattgccctcaccggctgggctg +agagagttgcagcaagcgtacacgcggggtttgcccagcagggcgaaattcctgttgtga +tgtggattccgaatcgggcaaatgccctataaatcaaagcatagtccgagatagggtttg +agtgtgttcagttttgggacagaggtcactataaagaacgttgactgcacgtcaagggcg +agaaacgtcatcaggcgattgcactacgtgacatcaccaatcagttttttgggtcaggtg +cgtgagacttatcggaactaaaggagcccgttttagcttcggggaaacgcgaagtgtcgg +aagaaggaaaacgaagagcgggtatcgcggaatgtacgtgctgagcgaaaccaacgcgcg +ttacggtcaagcgtgtatgtgttttggaggtaagtttccctgataaagcggaacaggggc +tatgtgtttacgggggtcgcatggagtacaagggggcaggacaagatttgcgcgacatgg +ttttttttaaattgcgggagatggttggctgtcccgatgagattagaacctgcttttgtt +ttagtttcggttcggtcagttcggactttggattggttttgttgggtatttaagaagggt +gtttgtgggatgtttttttttgggtcgagcatcactggactatgtgtgtcctgcgtatcg +tggcggggcctcgaacttagaggtaggacgattccgatgcaacaaccttatgctttactc +caagcgatggtgaggcaaccttgtacagaagtgcaaccgccattgtggctgggtcggccc +aaggaacggatattctcctgggtactgacaacccaggtctactgggttctatcgacggta +cagtcaagcctcgagtttactgtctcccacttaagtccgctctgggcattaatgagtctg +tggggtatcaagggtcacccaacgaagtagctagtcccgttgtacatttcgcgcgttacc +tagggagcacggtgagctacgagggtgtagctgcacacagcacggtatataggaacgcaa +acatagtagtatgtccctatgcataacagggagaagtgactctccgacggtcatttatcc +cagactctcctcgctccctactaattgttctatatacaatcggagtaaattggtacctct +ctgacaacataggggggttgaagtttatgccacgcagtctgttacacttttgccggggaa +ttgtgtagaccatgactcaaggtggtggtgcgagttactctactatctactgcttctcat +tacacatctcttggcttacaggccccagttatcagttacgaggctgccttaagagaaggc +caacattcatgatcagatccccgcacacgggatgatagtctgagatctgccggacgctcg +tctgctacaagtgtgggttgagcatagggtaagcctaagggctcgtaatggtacttcgcg +atgtttattcgatatgagctacaaggtataacgttgccttcaccatttcggctcacgact +cttacctcgcctcaccgctagacaccctgaccaaccgttagggtactgacaaccgatcag +gcgactcctaaaggacctctcagcctcccagacatgaggtccgctcgcatgctgttcagc +gagtccatatcaggaacagcaacgagacaaggcgagagcaacactagacttggagacata +ccaccacatctgtttactcttgattcaggaagacctgtggtaactgggcgacgcgtgcgt +ttatccgtcttccaatctccacagaatctgctccgtcagagggatgtatgactaacgcac +tgattttttgttcagtaaccgggcgcggattacggggcgtattccaggggtacattcaac +gggaccccaaggaaaagttcggggtatttaaggaggcggtccaactctcggacttattgg +gcgacgtaatgataagcacacctctgctcatacagtgcacgaagaccggcattgttcaaa +cacagccgtccattccgcgactattgtcctgtgtacaggtgcctcgggtcccaaatccag +cttatacccaaaactctcccggacttttttcgtccttgcaggaggaaaggacctgactcc +acgtttattaggggatcgttgggcccggacaatcgtgtattcaacataataaatgggttc +tagtttaaagccggaggtgacggtggattatggactagaggtaaacatttccggcgtagg +tcagaaagaatatagaccctaaatttacgcaaaacgtgcacacgattgtaggtggagtcg +tattaggaactcagggcgggtggaacgagtgtgttttaggcttaccatgaaccgtcgcgc +ggaaaatgatgacagaatggacggtgcttttttgcggggccaacaaaactcgcttatgtt +cgccattggatgtaagtaccgctatactacgcagcgaccccttacgacattgttgatttc +caatgctttcatggaggtttgtgagcggtcgctaggaatcttcctccagcgagtagccag +ctggccactagttagcaaccagagttcatatgagctccagtaacacgaaggtacataagg +aacgcaagcaagttcgggactacatagaacttggggtgcgtctaagccggggatcttaat +agacaagaggccatcgtatgggtcaaatttcatgtttcgtcagatgccctatccgtggac +acctaaatcaagcatcatatcctaatgctatttgctctcgctttggtatgattcatatgc +agccctgtccgtaaaatgacgggccagaggatacctgtcactacctatttcagattacca +ctgttcgaaaccttgctctgaaatcgatcttcgtagagtgttcgttaatcgccgcgtgaa +ttatataatcccccaaggagtacccttcgtcggtgcagtctacgtaactttcccaggtta +gcccccatctaatcgacgtacgtgagggggctacgggagatcgcacaagccgaagcattt +ctgctctgtttcgttacaactggaatcctcatcacgcagcgctaccggatgccatcccta +gtcatccccgcgagtttaaccagtcgagatggctcgaaccgtgtttcgaaggctggctat +tgaaccagttataaagcaggggcgactgtccgtcggacttcgatataaactatcacaaat +ttggcataagtatatacagccaagaaggctcagataggcacacgcacccaaatagtgacc +gcctacgttcaggttgcccggcaacgaagcgcgcttgctccattaatccactatcagagg +taacgaccctctttcaccgtagctgcccccatgtcggggcaacagtttcccaccgataac +gtgttctgtctagtacgtgaaacggattggctaacccctgtcagcctaattagatgacat +cctcgtacctctagagaaggtgaggagaccgctggaacataagtaaacagtttaccaaac +aatgatcatacatataacagaaaggagagatgcccggtggggtcgaagatacagctgtgg +ttgatatctgcaacggccaggctgtcatgaagatcacgcgcacgaagctatttatgaaag +atacccatgccggggcggcagcggtacctagtcctaaataccgacacgtagcaacgcgtc +ccctgaggcccaccctagtcaagggaacttaaaatatacgctgactttgtctaccaatca +tcttcgattaacaccggcatactaagtctaccctggacccagcaatgagaaaaacttttc +cgaatgatcattgtgagtttacagagattaggaacaccaaaaaaatttacgtacgtccgg +ttacccctgtgtgacccttggccacaaaccgtaaggtgcagcatgggcgttgagtccagg +gtttgtgacaccagacatgaataccctgtggcgggttgttagcatgttattcggatccga +tttcagagggtccgttgataccgggcagtacaagacaccccacaccactgaggtggtacg +tccgccagtctgctccctacgttatgcaaaattccttccccggcgttcttgcctgtacta +ctcctaaagggccgtgaaatccgacgttgctgctccgtctcgggacacccacacaacagc +tacggaaaatcgtgaggatgcacaagggtcttgcattgttgatctatacagctcttcgca +cggtgtgctactgttttccacaatgggcaaggggcgtgtaggtcttatgtaggagtaccc +cgtgatctggctataccttgctatctattccaccaaaatagccggggtcttatagtttta +ttccggatctatcaagtgacaagtccatggggtaaacggtaagtttcgtacgctgggcgg +tgatccccgcttataaacgagcaaaccgccaaagcaaccattgccgggcttccagctagt +aaatgttgggtgtcaatcgtgcatgtgactacttacccacaaagggacgcttgaagcgcc +tgaactcgtcacgtcatgcctagctcccggttgaaacacgaagacgcgtgaacctatctt +tgcttactattcgcctcctttaagaggcttcttgatgtggctctgcgacatggacagtag +tagttgtacctgggtatgttagtgaaattacaagtacctcaaaaacgaattacgtgtata +gagattatgtcactccgtcac +>ctgB +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGAT +ACATGCTAGCTACGTGCATGCTCGACATGCATCATCAGCCTGATGCTGATACATGCTAGCTACGTGCATGCTCGACATG diff -r 000000000000 -r ef5f8bbf7730 test-data/1/links.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/1/links.txt Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,21 @@ +ctgA 0 500 ctgA 1000 1500 +ctgA 2500 3000 ctgA 3500 4000 +ctgA 5000 5500 ctgA 6000 6500 +ctgA 7500 8000 ctgA 8500 9000 +ctgA 10000 10500 ctgA 11000 11500 +ctgA 12500 13000 ctgA 13500 14000 +ctgA 15000 15500 ctgA 16000 16500 +ctgA 17500 18000 ctgA 18500 19000 +ctgA 20000 20500 ctgA 21000 21500 +ctgA 22500 23000 ctgA 23500 24000 +ctgA 25000 25500 ctgA 26000 26500 +ctgA 27500 28000 ctgA 28500 29000 +ctgA 30000 30500 ctgA 31000 31500 +ctgA 32500 33000 ctgA 33500 34000 +ctgA 35000 35500 ctgA 36000 36500 +ctgA 37500 38000 ctgA 38500 39000 +ctgA 40000 40500 ctgA 41000 41500 +ctgA 42500 43000 ctgA 43500 44000 +ctgA 45000 45500 ctgA 46000 46500 +ctgA 47500 48000 ctgA 48500 49000 +ctgA 50000 50500 ctgA 51000 51500 diff -r 000000000000 -r ef5f8bbf7730 test-data/1/links2.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/1/links2.txt Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,21 @@ +ctgB 2000 2000 ctgA 500 1000 +ctgB 2000 2000 ctgA 3000 3500 +ctgB 2000 2000 ctgA 5500 6000 +ctgB 2000 2000 ctgA 8000 8500 +ctgB 2000 2000 ctgA 10500 11000 +ctgB 2000 2000 ctgA 13000 13500 +ctgB 2000 2000 ctgA 15500 16000 +ctgB 2000 2000 ctgA 18000 18500 +ctgB 2000 2000 ctgA 20500 21000 +ctgB 2000 2000 ctgA 23000 23500 +ctgB 2000 2000 ctgA 25500 26000 +ctgB 2000 2000 ctgA 28000 28500 +ctgB 2000 2000 ctgA 30500 31000 +ctgB 2000 2000 ctgA 33000 33500 +ctgB 2000 2000 ctgA 35500 36000 +ctgB 2000 2000 ctgA 38000 38500 +ctgB 2000 2000 ctgA 40500 41000 +ctgB 2000 2000 ctgA 43000 43500 +ctgB 2000 2000 ctgA 45500 46000 +ctgB 2000 2000 ctgA 48000 48500 +ctgB 2000 2000 ctgA 50500 51000 diff -r 000000000000 -r ef5f8bbf7730 test-data/1/output.png Binary file test-data/1/output.png has changed diff -r 000000000000 -r ef5f8bbf7730 test-data/1/output.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/1/output.svg Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,2784 @@ + + + + + + + + +0 + +0 kb + +5 kb + +10 kb + +15 kb + +20 kb + +25 kb + +30 kb + +35 kb + +40 kb + +45 kb + +50 kb + +1 + +0 kb + +5 kb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 000000000000 -r ef5f8bbf7730 tool-data/all_fasta.loc.sample --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tool-data/all_fasta.loc.sample Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,18 @@ +#This file lists the locations and dbkeys of all the fasta files +#under the "genome" directory (a directory that contains a directory +#for each build). The script extract_fasta.py will generate the file +#all_fasta.loc. This file has the format (white space characters are +#TAB characters): +# +# +# +#So, all_fasta.loc could look something like this: +# +#apiMel3 apiMel3 Honeybee (Apis mellifera): apiMel3 /path/to/genome/apiMel3/apiMel3.fa +#hg19canon hg19 Human (Homo sapiens): hg19 Canonical /path/to/genome/hg19/hg19canon.fa +#hg19full hg19 Human (Homo sapiens): hg19 Full /path/to/genome/hg19/hg19full.fa +# +#Your all_fasta.loc file should contain an entry for each individual +#fasta file. So there will be multiple fasta files for each build, +#such as with hg19 above. +# diff -r 000000000000 -r ef5f8bbf7730 tool_data_table_conf.xml.sample --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tool_data_table_conf.xml.sample Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,9 @@ + + + + + value, dbkey, name, path + +
+
+ diff -r 000000000000 -r ef5f8bbf7730 unified-histogram.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/unified-histogram.py Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,155 @@ +#!/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 diff -r 000000000000 -r ef5f8bbf7730 unified-tiles.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/unified-tiles.py Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,74 @@ +#!/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') diff -r 000000000000 -r ef5f8bbf7730 wiggle.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wiggle.py Wed Aug 09 09:52:52 2017 -0400 @@ -0,0 +1,55 @@ +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