bio-samtools 2.0.4 → 2.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/README.md +6 -5
- data/VERSION +1 -1
- data/bio-samtools.gemspec +11 -6
- data/lib/bio/db/fastadb.rb +1 -1
- data/lib/bio/db/sam.rb +55 -24
- data/test/samples/.gitignore +1 -0
- data/test/test_sam.rb +20 -4
- data/tutorial/images/out.svg +75 -0
- data/tutorial/images/out2.svg +45 -0
- data/tutorial/images/out3.svg +275 -0
- data/tutorial/tutorial.md +444 -0
- metadata +21 -5
- data/lib/bio/db/sam/faidx_old.rb +0 -21
- data/test/old_test_basic.rb +0 -433
- data/test/svg +0 -133
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67a8eba02e5b455c464caef319f561aef14aee9c
|
4
|
+
data.tar.gz: fb06f8ed5dc89daa39e4b30bd58d5c7bb87f1f27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a4b6c33c05059ccb6c938d1d730ce4b329d9af7d5c6b03d92756024d192d9e1a0c186a0ef491be95d163ee9b96bb1277f94855c02c25df7a0fdf646557064d2
|
7
|
+
data.tar.gz: de519c49fd975ee9a84fdca869d13c98c8759fd0e78a28ea0e9fd089ee7b10c90bdaf3f4eeedf9b5ddf0373b968197d54a1d81e5bc25c8f551ef54e897c6020c
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -68,6 +68,7 @@ See more detail on doc/tutorial.html or doc/tutorial.pdf for a walkthrough tutor
|
|
68
68
|
|
69
69
|
[Answer] This appears to be a bug in RubyGems that doesn't affect the running of the tools. It will keep happening until someone updates RubyGems. If it really bugs you, downgrade RubyGems.
|
70
70
|
|
71
|
+
|
71
72
|
## Contributing to bio-samtools
|
72
73
|
|
73
74
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
@@ -86,16 +87,16 @@ Try [Ricardo.Ramirez-Gonzalez@tgac.ac.uk](Ricardo.Ramirez-Gonzalez@tgac.ac.uk)
|
|
86
87
|
and [dan.maclean@tsl.ac.uk](dan.maclean@tsl.ac.uk)
|
87
88
|
|
88
89
|
### Important Notes
|
89
|
-
*
|
90
|
+
* samtools is downloaded, compiled and installed inside the gem at install time on the host system
|
90
91
|
|
91
|
-
|
92
|
+
* If you use this tool for publication, please cite http://dx.doi.org/10.1186/1751-0473-7-6
|
92
93
|
|
93
94
|
### Important Notes for developers
|
94
95
|
|
95
|
-
Remember that you must compile and install
|
96
|
+
Remember that you must compile and install samtools for you host system. In order to do that there are two possible solutions:
|
96
97
|
|
97
|
-
* download, compile and install the library in bioruby-samtools-your_clone/lib/bio/db/sam/external/
|
98
|
-
|
98
|
+
* download, compile and install the library in bioruby-samtools-your_clone/lib/bio/db/sam/external/samtools and
|
99
|
+
bioruby-samtools-your_clone/lib/bio/db/sam/external/bcftools by yourself
|
99
100
|
* in your bioruby-samtools-your_clone create the Rakefile typing `cd ext; ruby mkrf_conf.rb; rake -f Rakefile`
|
100
101
|
|
101
102
|
The latest I think is the easiest way, cause you are replicating the automatic process.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.
|
1
|
+
2.0.5
|
data/bio-samtools.gemspec
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: bio-samtools 2.0.
|
5
|
+
# stub: bio-samtools 2.0.5 ruby lib
|
6
6
|
# stub: ext/mkrf_conf.rb
|
7
7
|
|
8
8
|
Gem::Specification.new do |s|
|
9
9
|
s.name = "bio-samtools"
|
10
|
-
s.version = "2.0.
|
10
|
+
s.version = "2.0.5"
|
11
11
|
|
12
12
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
13
13
|
s.require_paths = ["lib"]
|
14
14
|
s.authors = ["Ricardo Ramirez-Gonzalez", "Dan MacLean", "Raoul J.P. Bonnal"]
|
15
|
-
s.date = "2014-
|
15
|
+
s.date = "2014-05-31"
|
16
16
|
s.description = "Binder of samtools for ruby, on the top of FFI. \n\n This project was born from the need to add support of BAM files to \n the gee_fu genome browser (http://github.com/danmaclean/gee_fu)."
|
17
17
|
s.email = "ilpuccio.febo@gmail.com"
|
18
18
|
s.extensions = ["ext/mkrf_conf.rb"]
|
@@ -94,12 +94,11 @@ Gem::Specification.new do |s|
|
|
94
94
|
"lib/bio/db/sam.rb",
|
95
95
|
"lib/bio/db/sam/external/COPYING",
|
96
96
|
"lib/bio/db/sam/external/VERSION",
|
97
|
-
"lib/bio/db/sam/faidx_old.rb",
|
98
97
|
"lib/bio/db/sam/library.rb",
|
99
98
|
"lib/bio/db/vcf.rb",
|
100
99
|
"test/.gitignore",
|
101
100
|
"test/helper.rb",
|
102
|
-
"test/
|
101
|
+
"test/samples/.gitignore",
|
103
102
|
"test/samples/small/dupes.bam",
|
104
103
|
"test/samples/small/dupes.sam",
|
105
104
|
"test/samples/small/ids2.txt",
|
@@ -133,12 +132,15 @@ Gem::Specification.new do |s|
|
|
133
132
|
"test/samples/small/test_cov.svg",
|
134
133
|
"test/samples/small/testu.bam",
|
135
134
|
"test/samples/small/testu.bam.bai",
|
136
|
-
"test/svg",
|
137
135
|
"test/test_bio-samtools.rb",
|
138
136
|
"test/test_pileup.rb",
|
139
137
|
"test/test_sam.rb",
|
140
138
|
"test/test_vcf.rb",
|
139
|
+
"tutorial/images/out.svg",
|
140
|
+
"tutorial/images/out2.svg",
|
141
|
+
"tutorial/images/out3.svg",
|
141
142
|
"tutorial/tutorial.html",
|
143
|
+
"tutorial/tutorial.md",
|
142
144
|
"tutorial/tutorial.pdf"
|
143
145
|
]
|
144
146
|
s.homepage = "http://github.com/helios/bioruby-samtools"
|
@@ -159,6 +161,7 @@ Gem::Specification.new do |s|
|
|
159
161
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
160
162
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
161
163
|
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
164
|
+
s.add_development_dependency(%q<ruby-prof>, [">= 0"])
|
162
165
|
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
163
166
|
s.add_development_dependency(%q<test-unit>, [">= 0"])
|
164
167
|
else
|
@@ -171,6 +174,7 @@ Gem::Specification.new do |s|
|
|
171
174
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
172
175
|
s.add_dependency(%q<rcov>, [">= 0"])
|
173
176
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
177
|
+
s.add_dependency(%q<ruby-prof>, [">= 0"])
|
174
178
|
s.add_dependency(%q<rdoc>, [">= 0"])
|
175
179
|
s.add_dependency(%q<test-unit>, [">= 0"])
|
176
180
|
end
|
@@ -184,6 +188,7 @@ Gem::Specification.new do |s|
|
|
184
188
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
185
189
|
s.add_dependency(%q<rcov>, [">= 0"])
|
186
190
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
191
|
+
s.add_dependency(%q<ruby-prof>, [">= 0"])
|
187
192
|
s.add_dependency(%q<rdoc>, [">= 0"])
|
188
193
|
s.add_dependency(%q<test-unit>, [">= 0"])
|
189
194
|
end
|
data/lib/bio/db/fastadb.rb
CHANGED
@@ -69,7 +69,7 @@ module Bio::DB::Fasta
|
|
69
69
|
class Region
|
70
70
|
BASE_COUNT_ZERO = {:A => 0, :C => 0, :G => 0, :T => 0}
|
71
71
|
attr_accessor :entry, :start, :end, :orientation
|
72
|
-
attr_accessor :pileup, :average_coverage, :
|
72
|
+
attr_accessor :pileup, :average_coverage, :reference, :base_ratios, :consensus, :coverages, :bases, :total_cov, :called
|
73
73
|
|
74
74
|
#TODO: Debug, as it hasnt been tested in the actual code.
|
75
75
|
def base_ratios_for_base(base)
|
data/lib/bio/db/sam.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'open3'
|
1
2
|
module Bio
|
2
3
|
class DB
|
3
4
|
class Sam
|
@@ -63,6 +64,8 @@ module Bio
|
|
63
64
|
def view(opts={},&block)
|
64
65
|
region = String.new
|
65
66
|
if opts[:chr] and opts[:start] and opts[:stop]
|
67
|
+
has_e = self.has_entry? opts[:chr]
|
68
|
+
raise Exception.new(), "[view] The sequence #{opts[:chr]} is not in the bam file" unless self.has_entry? opts[:chr]
|
66
69
|
region = "#{opts[:chr]}:#{opts[:start]}-#{opts[:stop]}"
|
67
70
|
[:chr, :start, :stop].each {|o| opts.delete(o)}
|
68
71
|
end
|
@@ -89,6 +92,7 @@ module Bio
|
|
89
92
|
#* stop - the stop position for the subsequence
|
90
93
|
#* &block - the the block of code to execute
|
91
94
|
def fetch(chr, start,stop, &block)
|
95
|
+
|
92
96
|
view(
|
93
97
|
:chr => chr,
|
94
98
|
:start => start,
|
@@ -136,7 +140,7 @@ module Bio
|
|
136
140
|
:number_of_intervals => 10,
|
137
141
|
:font_size => 14
|
138
142
|
)
|
139
|
-
|
143
|
+
default_options = {:glyph => :histogram,
|
140
144
|
:stroke_color => 'black',
|
141
145
|
:fill_color => 'gold',
|
142
146
|
:track_height => 150,
|
@@ -144,7 +148,10 @@ module Bio
|
|
144
148
|
:label => true,
|
145
149
|
:stroke_width => '1',
|
146
150
|
:x_round => 1,
|
147
|
-
:y_round => 1
|
151
|
+
:y_round => 1 }
|
152
|
+
opts = default_options.merge(opts)
|
153
|
+
|
154
|
+
data_track = p.add_track(opts)
|
148
155
|
index = 0;
|
149
156
|
result.each_slice(bin) {|slice|
|
150
157
|
#result.each_with_index {|val, index|
|
@@ -243,11 +250,14 @@ module Bio
|
|
243
250
|
|
244
251
|
opts[:f] = @fasta
|
245
252
|
|
246
|
-
|
253
|
+
#TOODO: reduce the string handling
|
247
254
|
query = opts[:r].to_s
|
248
255
|
query = opts[:r].to_region.to_s if opts[:r].respond_to?(:to_region)
|
256
|
+
if not query.nil? and query.size > 0
|
257
|
+
raise Exception.new(), "The sequence #{query} is not in the bam file" unless has_region? query
|
258
|
+
end
|
249
259
|
opts[:r] = query
|
250
|
-
|
260
|
+
|
251
261
|
if opts[:six]
|
252
262
|
opts["6"] = nil
|
253
263
|
opts.delete(:six)
|
@@ -258,7 +268,7 @@ module Bio
|
|
258
268
|
if opts[:u]
|
259
269
|
command = command + " | #{@bcftools} view -cg -"
|
260
270
|
end
|
261
|
-
|
271
|
+
|
262
272
|
klass = opts[:u] ? Bio::DB::Vcf : Bio::DB::Pileup
|
263
273
|
@last_command = command
|
264
274
|
yield_from_pipe(command, klass, :text, &block)
|
@@ -271,6 +281,7 @@ module Bio
|
|
271
281
|
#* stop - [INT] the stop position for the subsequence
|
272
282
|
#* as_bio - boolean stating if the returned object should be a Bio::Sequence::NA object
|
273
283
|
def fetch_reference(chr,start,stop, opts={:as_bio => false})
|
284
|
+
raise Exception.new(), "The sequence #{chr} is not in the bam file" unless has_entry? chr
|
274
285
|
seq = ""
|
275
286
|
unless @fasta #We return a string of Ns if we don't know the reference.
|
276
287
|
seq = "n" * (stop-start)
|
@@ -344,38 +355,54 @@ module Bio
|
|
344
355
|
|
345
356
|
#Retrieve and print stats in the index file. The output is TAB delimited with each line consisting of reference sequence name, sequence length, number of mapped reads and number unmapped reads.
|
346
357
|
def index_stats
|
358
|
+
return @stats if @stats
|
347
359
|
stats = {}
|
348
|
-
command = form_opt_string(@samtools, "idxstats
|
360
|
+
command = form_opt_string(@samtools, "idxstats", {}, [])
|
349
361
|
@last_command = command
|
350
|
-
puts command if $VERBOSE
|
351
362
|
yield_from_pipe(command, String, :text, true, "#") do |line|
|
352
363
|
info = line.chomp.split(/\t/)
|
353
364
|
stats[ info[0] ] = {:length => info[1].to_i, :mapped_reads => info[2].to_i, :unmapped_reads => info[3].to_i }
|
354
365
|
end
|
355
|
-
stats
|
366
|
+
@stats = stats
|
367
|
+
return @stats
|
356
368
|
end
|
357
369
|
|
358
370
|
alias_method :idxstats, :index_stats
|
359
371
|
|
360
372
|
#Retrive a hash with all the regions, with the region id as index or runs the function on each region
|
361
373
|
def each_region
|
362
|
-
|
374
|
+
index_stats
|
363
375
|
if @regions
|
364
|
-
return @
|
376
|
+
return @regions unless block_given?
|
365
377
|
else
|
366
378
|
@regions = Hash.new
|
367
379
|
end
|
368
|
-
|
369
|
-
reg = Bio::DB::Fasta::Region
|
380
|
+
index_stats.each do |k,v|
|
381
|
+
reg = Bio::DB::Fasta::Region.new
|
370
382
|
reg.entry = k
|
371
383
|
reg.start = 1
|
372
384
|
reg.end = v[:length]
|
373
385
|
reg.orientation = :forward
|
374
|
-
|
386
|
+
@regions << reg unless @regions[k]
|
375
387
|
yield reg if block_given?
|
376
388
|
end
|
377
389
|
@regions
|
378
390
|
end
|
391
|
+
|
392
|
+
#Tells if the bam file contains the entry. It has to be indexed.
|
393
|
+
def has_entry?(entry)
|
394
|
+
index_stats.has_key?(entry)
|
395
|
+
# puts "#{entry} #{@stats.inspect}"
|
396
|
+
# index_stats
|
397
|
+
end
|
398
|
+
|
399
|
+
def has_region?(region)
|
400
|
+
index_stats
|
401
|
+
reg=Bio::DB::Fasta::Region::parse_region(region)
|
402
|
+
return 0 unless has_entry? (reg.entry)
|
403
|
+
len = @stats[reg.entry][:length]
|
404
|
+
reg.start > 0 and reg.end <= len
|
405
|
+
end
|
379
406
|
|
380
407
|
#Merge multiple sorted alignments
|
381
408
|
#* n - sort by read names
|
@@ -431,7 +458,7 @@ module Bio
|
|
431
458
|
opts.delete(:bams)
|
432
459
|
options = commandify(opts, [:h] )
|
433
460
|
command = "#{@samtools} cat #{options} -o #{out} #{bam_list}"
|
434
|
-
puts command
|
461
|
+
puts command if $VERBOSE
|
435
462
|
@last_command = command
|
436
463
|
system(command)
|
437
464
|
|
@@ -617,7 +644,7 @@ module Bio
|
|
617
644
|
#
|
618
645
|
#TODO: It may be good to load partially the pileup
|
619
646
|
def mpileup_cached (opts={})
|
620
|
-
raise
|
647
|
+
raise Exception.new(), "A region must be provided" unless opts[:r] or opts[:region]
|
621
648
|
@cached_regions = Hash.new unless @cached_regions
|
622
649
|
region = opts[:r] ? opts[:r] : opts[:region]
|
623
650
|
@cached_regions[region.to_s] = fetch_region(opts) unless @cached_regions[region.to_s]
|
@@ -666,10 +693,23 @@ module Bio
|
|
666
693
|
fetch_with_function(chromosome, qstart, qstart+len, print_fastq)
|
667
694
|
out.close if fastq_filename
|
668
695
|
end
|
696
|
+
|
697
|
+
# checks existence of files in instance
|
698
|
+
def files_ok?
|
699
|
+
[@fasta, @sam, @bam].flatten.compact.each {|f| return false unless File.exists? f }
|
700
|
+
true
|
701
|
+
end
|
702
|
+
|
703
|
+
#Returns true if the .bai exists. It doesn't validate if it is valid.
|
704
|
+
def indexed?
|
705
|
+
File.exists? @bam and File.exists? "#{@bam}.bai"
|
706
|
+
end
|
707
|
+
|
669
708
|
private
|
670
709
|
#Returns Process::Status with the execution status. If run in a $VERBOSE environment, stderr of the process
|
671
710
|
#is forwarded to the default stdout
|
672
711
|
def yield_from_pipe(command, klass, type=:text, skip_comments=true, comment_char="#", &block)
|
712
|
+
puts "[yield_from_pipe] #{command}" if $VERBOSE
|
673
713
|
stdin, pipe, stderr, wait_thr = Open3.popen3(command)
|
674
714
|
pid = wait_thr[:pid] # pid of the started process.
|
675
715
|
if type == :text
|
@@ -711,15 +751,6 @@ module Bio
|
|
711
751
|
end
|
712
752
|
list.join(" ")
|
713
753
|
end
|
714
|
-
|
715
|
-
# checks existence of files in instance
|
716
|
-
def files_ok?
|
717
|
-
[@fasta, @sam, @bam].flatten.compact.each {|f| return false unless File.exists? f }
|
718
|
-
true
|
719
|
-
end
|
720
|
-
|
721
|
-
|
722
|
-
|
723
754
|
end
|
724
755
|
end
|
725
756
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
svgenes/
|
data/test/test_sam.rb
CHANGED
@@ -3,12 +3,16 @@ $: << File.expand_path('.')
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'bio/db/sam'
|
5
5
|
require "test/unit"
|
6
|
+
#gem 'ruby-prof'
|
6
7
|
gem 'test-unit'
|
8
|
+
#require "ruby-prof"
|
7
9
|
|
8
10
|
|
9
11
|
class TestBioDbSam < Test::Unit::TestCase
|
12
|
+
# include RubyProf::Test
|
10
13
|
|
11
14
|
class << self
|
15
|
+
|
12
16
|
def shutdown
|
13
17
|
File.delete("test/samples/small/different_index.bam.bai")
|
14
18
|
File.delete("test/samples/small/dupes_rmdup.bam")
|
@@ -46,9 +50,12 @@ class TestBioDbSam < Test::Unit::TestCase
|
|
46
50
|
puts "bam index exists....deleting..."
|
47
51
|
File.delete(test_bai_file)
|
48
52
|
end
|
49
|
-
|
53
|
+
|
54
|
+
#No bam file
|
55
|
+
assert_equal(@sam.indexed?, false)
|
56
|
+
#index the bam file
|
50
57
|
@sam.index()
|
51
|
-
|
58
|
+
assert_equal(@sam.indexed?, true)
|
52
59
|
#make sure the .bai file exists
|
53
60
|
assert_nothing_thrown do
|
54
61
|
File.open(test_bai_file, "r")
|
@@ -73,11 +80,18 @@ class TestBioDbSam < Test::Unit::TestCase
|
|
73
80
|
end
|
74
81
|
|
75
82
|
def test_fetch
|
83
|
+
#puts @sam.inspect
|
84
|
+
i = 0
|
85
|
+
@sam.index
|
76
86
|
@sam.fetch("chr_1", 10,1000) do |sam|
|
77
87
|
#test that all the objects are Bio::DB::Alignment objects
|
78
88
|
assert_equal(sam.class, Bio::DB::Alignment)
|
79
89
|
assert_equal(sam.rname, "chr_1")
|
90
|
+
i += 1
|
80
91
|
end
|
92
|
+
assert(i>0)
|
93
|
+
assert_equal(i,9)
|
94
|
+
|
81
95
|
end
|
82
96
|
|
83
97
|
def test_fetch_with_function
|
@@ -170,6 +184,7 @@ class TestBioDbSam < Test::Unit::TestCase
|
|
170
184
|
|
171
185
|
def test_mpileup
|
172
186
|
#create an mpileup
|
187
|
+
# @sam.index
|
173
188
|
@sam.mpileup(:g => false) do |pileup|
|
174
189
|
#test that all the objects are Bio::DB::Pileup objects
|
175
190
|
assert_kind_of(Bio::DB::Pileup, pileup)
|
@@ -266,7 +281,8 @@ class TestBioDbSam < Test::Unit::TestCase
|
|
266
281
|
bam_files = [bam_to_merge1, bam_to_merge2]
|
267
282
|
|
268
283
|
merged_bam_file = @test_folder + "/maps_merged.bam"
|
269
|
-
|
284
|
+
File.delete merged_bam_file if File.exists?(merged_bam_file)
|
285
|
+
# File.delete("test/samples/small/maps_merged.bam")
|
270
286
|
@sam.merge(:out=>merged_bam_file, :bams=>bam_files, :n=>true)
|
271
287
|
merged_bam = Bio::DB::Sam.new(:fasta => @testReference, :bam => merged_bam_file)
|
272
288
|
no_reads_mapped = 0;
|
@@ -286,7 +302,7 @@ class TestBioDbSam < Test::Unit::TestCase
|
|
286
302
|
bam_files = [bam1, bam2]
|
287
303
|
|
288
304
|
cat_bam_file = @test_folder + "/maps_cated.bam"
|
289
|
-
|
305
|
+
File.delete cat_bam_file if File.exists?(cat_bam_file)
|
290
306
|
@sam.merge(:out=>cat_bam_file, :bams=>bam_files)
|
291
307
|
cated_bam = Bio::DB::Sam.new(:fasta => @testReference, :bam => cat_bam_file)
|
292
308
|
|
@@ -0,0 +1,75 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="1000" height="330" style="" xmlns:xlink="http://www.w3.org/1999/xlink"><line x1="1" y1="20" x2="1000" y2="20" stroke="black" stroke-width="1" style=""/>
|
2
|
+
<rect x="0.0" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
3
|
+
<text x="0.0" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">201</text>
|
4
|
+
<rect x="110.7843137254902" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
5
|
+
<text x="110.7843137254902" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">427</text>
|
6
|
+
<rect x="221.5686274509804" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
7
|
+
<text x="221.5686274509804" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">653</text>
|
8
|
+
<rect x="332.35294117647055" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
9
|
+
<text x="332.35294117647055" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">879</text>
|
10
|
+
<rect x="443.1372549019608" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
11
|
+
<text x="443.1372549019608" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">1105</text>
|
12
|
+
<rect x="553.9215686274509" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
13
|
+
<text x="553.9215686274509" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">1331</text>
|
14
|
+
<rect x="664.7058823529411" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
15
|
+
<text x="664.7058823529411" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">1557</text>
|
16
|
+
<rect x="775.4901960784314" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
17
|
+
<text x="775.4901960784314" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">1783</text>
|
18
|
+
<rect x="886.2745098039215" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
19
|
+
<text x="886.2745098039215" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">2009</text>
|
20
|
+
<rect x="997.0588235294117" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
21
|
+
<text x="997.0588235294117" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">2235</text>
|
22
|
+
<text x="3" y="60" fill="black" transform="" style="font-family:monospace;">read coverage</text>
|
23
|
+
<text x="1005.0" y="65" fill="black" transform="" style="font-family:monospace;">1083.2</text>
|
24
|
+
<text x="1005.0" y="215" fill="black" transform="" style="font-family:monospace;">0</text>
|
25
|
+
<rect x="0.0" y="198.59375" width="19.607843137254903" height="16.40625" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
26
|
+
<rect x="19.607843137254903" y="184.47585856720826" width="19.607843137254903" height="30.52414143279173" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
27
|
+
<rect x="39.21568627450981" y="183.13261632200886" width="19.607843137254903" height="31.867383677991135" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
28
|
+
<rect x="58.8235294117647" y="198.3479505169867" width="19.607843137254903" height="16.652049483013293" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
29
|
+
<rect x="78.43137254901961" y="190.55506831610043" width="19.607843137254903" height="24.444931683899558" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
30
|
+
<rect x="98.0392156862745" y="173.0409896602659" width="19.607843137254903" height="41.95901033973412" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
31
|
+
<rect x="117.6470588235294" y="170.21602658788774" width="19.607843137254903" height="44.78397341211225" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
32
|
+
<rect x="137.2549019607843" y="169.8975258493353" width="19.607843137254903" height="45.1024741506647" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
33
|
+
<rect x="156.86274509803923" y="167.3287481536189" width="19.607843137254903" height="47.67125184638109" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
34
|
+
<rect x="176.47058823529412" y="162.35390509601183" width="19.607843137254903" height="52.646094903988185" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
35
|
+
<rect x="196.078431372549" y="142.21219534711963" width="19.607843137254903" height="72.78780465288035" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
36
|
+
<rect x="215.68627450980392" y="130.10224335302806" width="19.607843137254903" height="84.89775664697194" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
37
|
+
<rect x="235.2941176470588" y="144.4451624815362" width="19.607843137254903" height="70.55483751846381" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
38
|
+
<rect x="254.90196078431373" y="165.30696085672082" width="19.607843137254903" height="49.69303914327917" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
39
|
+
<rect x="274.5098039215686" y="159.84051883308715" width="19.607843137254903" height="55.15948116691285" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
40
|
+
<rect x="294.11764705882354" y="148.24293759231904" width="19.607843137254903" height="66.75706240768095" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
41
|
+
<rect x="313.72549019607845" y="123.44834748892171" width="19.607843137254903" height="91.55165251107829" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
42
|
+
<rect x="333.3333333333333" y="121.58581056129985" width="19.607843137254903" height="93.41418943870015" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
43
|
+
<rect x="352.94117647058823" y="129.9533788774003" width="19.607843137254903" height="85.0466211225997" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
44
|
+
<rect x="372.54901960784315" y="153.39434084194977" width="19.607843137254903" height="61.60565915805022" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
45
|
+
<rect x="392.156862745098" y="164.6388016986706" width="19.607843137254903" height="50.361198301329395" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
46
|
+
<rect x="411.7647058823529" y="145.9164974150665" width="19.607843137254903" height="69.08350258493353" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
47
|
+
<rect x="431.37254901960785" y="142.21219534711963" width="19.607843137254903" height="72.78780465288035" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
48
|
+
<rect x="450.98039215686276" y="148.7830040620384" width="19.607843137254903" height="66.2169959379616" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
49
|
+
<rect x="470.5882352941176" y="158.79846750369276" width="19.607843137254903" height="56.20153249630724" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
50
|
+
<rect x="490.19607843137254" y="153.15546528803546" width="19.607843137254903" height="61.84453471196455" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
51
|
+
<rect x="509.80392156862746" y="142.03563515509603" width="19.607843137254903" height="72.96436484490398" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
52
|
+
<rect x="529.4117647058823" y="106.09698116691285" width="19.607843137254903" height="108.90301883308715" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
53
|
+
<rect x="549.0196078431372" y="101.74182976366322" width="19.607843137254903" height="113.25817023633678" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
54
|
+
<rect x="568.6274509803922" y="135.80756093057607" width="19.607843137254903" height="79.19243906942393" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
55
|
+
<rect x="588.2352941176471" y="136.82191654357462" width="19.607843137254903" height="78.1780834564254" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
56
|
+
<rect x="607.843137254902" y="135.30211410635155" width="19.607843137254903" height="79.69788589364845" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
57
|
+
<rect x="627.4509803921569" y="137.18542282127032" width="19.607843137254903" height="77.81457717872968" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
58
|
+
<rect x="647.0588235294117" y="136.00143094534712" width="19.607843137254903" height="78.99856905465289" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
59
|
+
<rect x="666.6666666666666" y="88.95679468242244" width="19.607843137254903" height="126.04320531757756" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
60
|
+
<rect x="686.2745098039215" y="65.0" width="19.607843137254903" height="150.0" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
61
|
+
<rect x="705.8823529411765" y="103.5593611521418" width="19.607843137254903" height="111.4406388478582" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
62
|
+
<rect x="725.4901960784314" y="130.30996122599703" width="19.607843137254903" height="84.69003877400296" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
63
|
+
<rect x="745.0980392156863" y="127.65463441654357" width="19.607843137254903" height="87.34536558345643" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
64
|
+
<rect x="764.7058823529412" y="136.9188515509601" width="19.607843137254903" height="78.08114844903989" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
65
|
+
<rect x="784.313725490196" y="131.65320347119643" width="19.607843137254903" height="83.34679652880355" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
66
|
+
<rect x="803.9215686274509" y="120.01061669128508" width="19.607843137254903" height="94.98938330871492" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
67
|
+
<rect x="823.5294117647059" y="114.46801144756277" width="19.607843137254903" height="100.53198855243723" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
68
|
+
<rect x="843.1372549019608" y="119.2109028803545" width="19.607843137254903" height="95.7890971196455" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
69
|
+
<rect x="862.7450980392157" y="125.06508493353027" width="19.607843137254903" height="89.93491506646973" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
70
|
+
<rect x="882.3529411764706" y="105.67115952732644" width="19.607843137254903" height="109.32884047267356" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
71
|
+
<rect x="901.9607843137255" y="101.0944423929099" width="19.607843137254903" height="113.9055576070901" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
72
|
+
<rect x="921.5686274509803" y="121.20153249630724" width="19.607843137254903" height="93.79846750369276" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
73
|
+
<rect x="941.1764705882352" y="145.86456794682422" width="19.607843137254903" height="69.13543205317578" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
74
|
+
<rect x="960.7843137254902" y="151.22368906942393" width="19.607843137254903" height="63.776310930576074" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
75
|
+
<rect x="980.3921568627451" y="159.7470457902511" width="19.607843137254903" height="55.25295420974889" fill="#99CCFF" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/></svg>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="1000" height="330" style="" xmlns:xlink="http://www.w3.org/1999/xlink"><line x1="1" y1="20" x2="1000" y2="20" stroke="black" stroke-width="1" style=""/>
|
2
|
+
<rect x="0.0" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
3
|
+
<text x="0.0" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">201</text>
|
4
|
+
<rect x="110.95238095238095" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
5
|
+
<text x="110.95238095238095" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">434</text>
|
6
|
+
<rect x="221.9047619047619" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
7
|
+
<text x="221.9047619047619" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">667</text>
|
8
|
+
<rect x="332.85714285714283" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
9
|
+
<text x="332.85714285714283" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">900</text>
|
10
|
+
<rect x="443.8095238095238" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
11
|
+
<text x="443.8095238095238" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">1133</text>
|
12
|
+
<rect x="554.7619047619047" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
13
|
+
<text x="554.7619047619047" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">1366</text>
|
14
|
+
<rect x="665.7142857142857" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
15
|
+
<text x="665.7142857142857" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">1599</text>
|
16
|
+
<rect x="776.6666666666666" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
17
|
+
<text x="776.6666666666666" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">1832</text>
|
18
|
+
<rect x="887.6190476190476" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
19
|
+
<text x="887.6190476190476" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">2065</text>
|
20
|
+
<rect x="998.5714285714286" y="20" width="1" height="5" fill="" rx="" ry="" stroke="black" stroke-width="1" style=""/>
|
21
|
+
<text x="998.5714285714286" y="40" fill="black" transform="" style="font-family:Arial;font-style:italic">2298</text>
|
22
|
+
<text x="3" y="60" fill="black" transform="" style="font-family:monospace;">read coverage</text>
|
23
|
+
<text x="1005.0" y="65" fill="black" transform="" style="font-family:monospace;">879.14</text>
|
24
|
+
<text x="1005.0" y="215" fill="black" transform="" style="font-family:monospace;">0</text>
|
25
|
+
<rect x="0.0" y="182.40792137771004" width="47.61904761904762" height="32.59207862228997" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
26
|
+
<rect x="47.61904761904762" y="188.5025138203244" width="47.61904761904762" height="26.497486179675597" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
27
|
+
<rect x="95.23809523809524" y="161.35154810382875" width="47.61904761904762" height="53.64845189617127" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
28
|
+
<rect x="142.85714285714286" y="154.22810928862296" width="47.61904761904762" height="60.77189071137703" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
29
|
+
<rect x="190.47619047619048" y="118.01203448824987" width="47.61904761904762" height="96.98796551175013" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
30
|
+
<rect x="238.09523809523807" y="147.8246923129422" width="47.61904761904762" height="67.17530768705781" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
31
|
+
<rect x="285.7142857142857" y="114.47505516755011" width="47.61904761904762" height="100.52494483244989" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
32
|
+
<rect x="333.3333333333333" y="119.18761516937006" width="47.61904761904762" height="95.81238483062994" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
33
|
+
<rect x="380.95238095238096" y="137.86211524899332" width="47.61904761904762" height="77.13788475100668" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
34
|
+
<rect x="428.57142857142856" y="137.06360761653434" width="47.61904761904762" height="77.93639238346566" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
35
|
+
<rect x="476.19047619047615" y="124.01449143481129" width="47.61904761904762" height="90.98550856518871" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
36
|
+
<rect x="523.8095238095237" y="91.02486520918168" width="47.61904761904762" height="123.97513479081832" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
37
|
+
<rect x="571.4285714285714" y="117.9096617148577" width="47.61904761904762" height="97.0903382851423" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
38
|
+
<rect x="619.047619047619" y="94.87749391450735" width="47.61904761904762" height="120.12250608549265" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
39
|
+
<rect x="666.6666666666666" y="65.0" width="47.61904761904762" height="150.0" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
40
|
+
<rect x="714.2857142857142" y="112.88145232841185" width="47.61904761904762" height="102.11854767158815" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
41
|
+
<rect x="761.9047619047619" y="101.14441385899856" width="47.61904761904762" height="113.85558614100144" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
42
|
+
<rect x="809.5238095238095" y="99.88352253338488" width="47.61904761904762" height="115.11647746661512" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
43
|
+
<rect x="857.1428571428571" y="80.21600655185748" width="47.61904761904762" height="134.78399344814252" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
44
|
+
<rect x="904.7619047619047" y="128.03091657756443" width="47.61904761904762" height="86.96908342243557" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/>
|
45
|
+
<rect x="952.3809523809523" y="146.92210569420115" width="47.61904761904762" height="68.07789430579885" fill="#F1A1B1" rx="1" ry="1" stroke="black" stroke-width="1" style="fill-opacity:0.4;"/></svg>
|