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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f871729e2c0ab8ac18082913e4d6897620e87c32
4
- data.tar.gz: 8080e5cb42c5fe72a75ca6d884c5751a25225d26
3
+ metadata.gz: 67a8eba02e5b455c464caef319f561aef14aee9c
4
+ data.tar.gz: fb06f8ed5dc89daa39e4b30bd58d5c7bb87f1f27
5
5
  SHA512:
6
- metadata.gz: 9a03afb21028e6fdd1b0f1ef3693d4cf6695be8f490c06a93e2dea3983a9c110fa6a3f128cfdf7d2aff29ababbf0ad0e57f4469d9a9cc67aee218582bc2aa6f4
7
- data.tar.gz: dd42a06d8c8d3ac22de82ece17ee25a7c663475b5fb3283a35f190953f67eafb2ae2ba1390f1de6cfc042b7b05b30675d26a2953985363184a48dc24faf11027
6
+ metadata.gz: 2a4b6c33c05059ccb6c938d1d730ce4b329d9af7d5c6b03d92756024d192d9e1a0c186a0ef491be95d163ee9b96bb1277f94855c02c25df7a0fdf646557064d2
7
+ data.tar.gz: de519c49fd975ee9a84fdca869d13c98c8759fd0e78a28ea0e9fd089ee7b10c90bdaf3f4eeedf9b5ddf0373b968197d54a1d81e5bc25c8f551ef54e897c6020c
data/Gemfile CHANGED
@@ -15,7 +15,7 @@ group :development do
15
15
  gem "jeweler"
16
16
  gem "rcov", ">=0", :platforms => :ruby_18
17
17
  gem "simplecov", ">= 0", :platforms => :ruby_19
18
-
18
+ gem "ruby-prof"
19
19
  gem 'rdoc'
20
20
  gem 'test-unit'
21
21
  end
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
- * Libraries (libbam) are downloaded, compiled and installed inside the gem at install time on the host system
90
+ * samtools is downloaded, compiled and installed inside the gem at install time on the host system
90
91
 
91
- `openssl dgst libbam.so.1` MD5 is c45cfccfb41ffeb2730ee4b227d244c4
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 the right libbam library for you host system. In order to do that there are three possible solutions:
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/libbam.xxxxx by yourself
98
- * install the gem and then grab the compiled library `cp 'locate libbam.1.dylib' bioruby-samtools-your_clone/lib/bio/db/sam/external` (library name is an example)
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.4
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.4 ruby lib
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.4"
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-04-28"
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/old_test_basic.rb",
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
@@ -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, :snps, :reference, :base_ratios, :consensus, :coverages, :bases, :total_cov, :called
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
- data_track = p.add_track(:glyph => :histogram,
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 #{@bam}", {}, [])
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
- stats=index_stats unless @stats
374
+ index_stats
363
375
  if @regions
364
- return @regionss unless block_given?
376
+ return @regions unless block_given?
365
377
  else
366
378
  @regions = Hash.new
367
379
  end
368
- stats.each do |k,v|
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 SAMException.new(), "A region must be provided" unless opts[:r] or opts[:region]
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
- #index the bam file
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>