bio-samtools 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/bio-samtools.gemspec +60 -6
- data/doc/Bio.html +171 -0
- data/doc/Bio/DB.html +163 -0
- data/doc/Bio/DB/Alignment.html +780 -0
- data/doc/Bio/DB/SAM.html +1241 -0
- data/doc/Bio/DB/SAM/Library.html +217 -0
- data/doc/Bio/DB/SAM/Tools.html +331 -0
- data/doc/Bio/DB/SAM/Tools/Bam1CoreT.html +159 -0
- data/doc/Bio/DB/SAM/Tools/Bam1T.html +220 -0
- data/doc/Bio/DB/SAM/Tools/BamHeaderT.html +249 -0
- data/doc/Bio/DB/SAM/Tools/BamPileup1T.html +159 -0
- data/doc/Bio/DB/SAM/Tools/SamfileT.html +171 -0
- data/doc/Bio/DB/SAM/Tools/SamfileTX.html +159 -0
- data/doc/Bio/DB/SAMException.html +205 -0
- data/doc/Bio/DB/Tag.html +254 -0
- data/doc/LICENSE_txt.html +881 -0
- data/doc/LibC.html +153 -0
- data/doc/Pileup.html +571 -0
- data/doc/Vcf.html +473 -0
- data/doc/created.rid +10 -1
- data/doc/images/add.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +109 -21
- data/doc/js/darkfish.js +153 -0
- data/doc/js/jquery.js +18 -0
- data/doc/js/navigation.js +142 -0
- data/doc/js/search.js +94 -0
- data/doc/js/search_index.js +1 -0
- data/doc/js/searcher.js +228 -0
- data/doc/lib/bio-samtools_rb.html +115 -0
- data/doc/lib/bio/db/sam/bam_rb.html +121 -0
- data/doc/lib/bio/db/sam/faidx_rb.html +117 -0
- data/doc/lib/bio/db/sam/library_rb.html +115 -0
- data/doc/lib/bio/db/sam/pileup_rb.html +171 -0
- data/doc/lib/bio/db/sam/sam_rb.html +121 -0
- data/doc/lib/bio/db/sam/vcf_rb.html +124 -0
- data/doc/lib/bio/db/sam_rb.html +115 -0
- data/doc/rdoc.css +543 -0
- data/doc/table_of_contents.html +186 -0
- data/ext/Makefile-bioruby.patch +1 -1
- data/ext/Rakefile +8 -1
- data/ext/mkrf_conf.rb +8 -1
- data/lib/bio/db/sam.rb +140 -27
- data/lib/bio/db/sam/vcf.rb +0 -1
- data/test/basictest.rb +4 -4
- data/test/test_basic.rb +50 -34
- metadata +79 -25
- data/test/coverage.rb +0 -26
- data/test/coverage_plot.rb +0 -28
- data/test/feature.rb +0 -0
- data/test/test_pileup.rb +0 -68
@@ -0,0 +1,186 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
6
|
+
|
7
|
+
<title>Table of Contents</title>
|
8
|
+
|
9
|
+
<link type="text/css" media="screen" href="./rdoc.css" rel="stylesheet">
|
10
|
+
|
11
|
+
<script type="text/javascript">
|
12
|
+
var rdoc_rel_prefix = "./";
|
13
|
+
</script>
|
14
|
+
|
15
|
+
<script type="text/javascript" charset="utf-8" src="./js/jquery.js"></script>
|
16
|
+
<script type="text/javascript" charset="utf-8" src="./js/navigation.js"></script>
|
17
|
+
<script type="text/javascript" charset="utf-8" src="./js/search_index.js"></script>
|
18
|
+
<script type="text/javascript" charset="utf-8" src="./js/search.js"></script>
|
19
|
+
<script type="text/javascript" charset="utf-8" src="./js/searcher.js"></script>
|
20
|
+
<script type="text/javascript" charset="utf-8" src="./js/darkfish.js"></script>
|
21
|
+
|
22
|
+
|
23
|
+
<body class="indexpage">
|
24
|
+
<h1>Table of Contents</h1>
|
25
|
+
|
26
|
+
<h2>Pages</h2>
|
27
|
+
<ul>
|
28
|
+
<li class="file">
|
29
|
+
<a href="LICENSE_txt.html">LICENSE</a>
|
30
|
+
</li>
|
31
|
+
|
32
|
+
</ul>
|
33
|
+
|
34
|
+
<h2 id="classes">Classes/Modules</h2>
|
35
|
+
<ul>
|
36
|
+
<li class="module">
|
37
|
+
<a href="Bio.html">Bio</a>
|
38
|
+
</li>
|
39
|
+
<li class="class">
|
40
|
+
<a href="Bio/DB.html">Bio::DB</a>
|
41
|
+
</li>
|
42
|
+
<li class="class">
|
43
|
+
<a href="Bio/DB/Alignment.html">Bio::DB::Alignment</a>
|
44
|
+
</li>
|
45
|
+
<li class="module">
|
46
|
+
<a href="Bio/DB/SAM.html">Bio::DB::SAM</a>
|
47
|
+
</li>
|
48
|
+
<li class="module">
|
49
|
+
<a href="Bio/DB/SAM/Library.html">Bio::DB::SAM::Library</a>
|
50
|
+
</li>
|
51
|
+
<li class="module">
|
52
|
+
<a href="Bio/DB/SAM/Tools.html">Bio::DB::SAM::Tools</a>
|
53
|
+
</li>
|
54
|
+
<li class="class">
|
55
|
+
<a href="Bio/DB/SAM/Tools/Bam1CoreT.html">Bio::DB::SAM::Tools::Bam1CoreT</a>
|
56
|
+
</li>
|
57
|
+
<li class="class">
|
58
|
+
<a href="Bio/DB/SAM/Tools/Bam1T.html">Bio::DB::SAM::Tools::Bam1T</a>
|
59
|
+
</li>
|
60
|
+
<li class="class">
|
61
|
+
<a href="Bio/DB/SAM/Tools/BamHeaderT.html">Bio::DB::SAM::Tools::BamHeaderT</a>
|
62
|
+
</li>
|
63
|
+
<li class="class">
|
64
|
+
<a href="Bio/DB/SAM/Tools/BamPileup1T.html">Bio::DB::SAM::Tools::BamPileup1T</a>
|
65
|
+
</li>
|
66
|
+
<li class="class">
|
67
|
+
<a href="Bio/DB/SAM/Tools/SamfileT.html">Bio::DB::SAM::Tools::SamfileT</a>
|
68
|
+
</li>
|
69
|
+
<li class="class">
|
70
|
+
<a href="Bio/DB/SAM/Tools/SamfileTX.html">Bio::DB::SAM::Tools::SamfileTX</a>
|
71
|
+
</li>
|
72
|
+
<li class="class">
|
73
|
+
<a href="Bio/DB/SAMException.html">Bio::DB::SAMException</a>
|
74
|
+
</li>
|
75
|
+
<li class="class">
|
76
|
+
<a href="Bio/DB/Sam.html">Bio::DB::Sam</a>
|
77
|
+
</li>
|
78
|
+
<li class="class">
|
79
|
+
<a href="Bio/DB/Tag.html">Bio::DB::Tag</a>
|
80
|
+
</li>
|
81
|
+
<li class="module">
|
82
|
+
<a href="LibC.html">LibC</a>
|
83
|
+
</li>
|
84
|
+
<li class="class">
|
85
|
+
<a href="Pileup.html">Pileup</a>
|
86
|
+
|
87
|
+
<img class="toc-toggle" src="images/transparent.png" alt="" title="toggle headings">
|
88
|
+
<ul class="initially-hidden">
|
89
|
+
<li><a href="Pileup.html#label-Pileup+">Pileup </a>
|
90
|
+
</ul>
|
91
|
+
</li>
|
92
|
+
<li class="class">
|
93
|
+
<a href="Vcf.html">Vcf</a>
|
94
|
+
|
95
|
+
<img class="toc-toggle" src="images/transparent.png" alt="" title="toggle headings">
|
96
|
+
<ul class="initially-hidden">
|
97
|
+
<li><a href="Vcf.html#label-Vcf+">Vcf </a>
|
98
|
+
</ul>
|
99
|
+
</li>
|
100
|
+
|
101
|
+
</ul>
|
102
|
+
|
103
|
+
<h2 id="methods">Methods</h2>
|
104
|
+
<ul>
|
105
|
+
|
106
|
+
<li class="method"><a href="Bio/DB/SAM/Tools.html#method-c-bam_sort">::bam_sort — Bio::DB::SAM::Tools</a>
|
107
|
+
|
108
|
+
<li class="method"><a href="Bio/DB/SAM/Library.html#method-c-filename">::filename — Bio::DB::SAM::Library</a>
|
109
|
+
|
110
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-c-finalize">::finalize — Bio::DB::Sam</a>
|
111
|
+
|
112
|
+
<li class="method"><a href="Bio/DB/Alignment.html#method-c-finalize">::finalize — Bio::DB::Alignment</a>
|
113
|
+
|
114
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-c-merge">::merge — Bio::DB::Sam</a>
|
115
|
+
|
116
|
+
<li class="method"><a href="Bio/DB/Alignment.html#method-c-new">::new — Bio::DB::Alignment</a>
|
117
|
+
|
118
|
+
<li class="method"><a href="Pileup.html#method-c-new">::new — Pileup</a>
|
119
|
+
|
120
|
+
<li class="method"><a href="Vcf.html#method-c-new">::new — Vcf</a>
|
121
|
+
|
122
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-c-new">::new — Bio::DB::Sam</a>
|
123
|
+
|
124
|
+
<li class="method"><a href="Bio/DB/SAMException.html#method-c-new">::new — Bio::DB::SAMException</a>
|
125
|
+
|
126
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-i-average_coverage">#average_coverage — Bio::DB::Sam</a>
|
127
|
+
|
128
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-i-chromosome_coverage">#chromosome_coverage — Bio::DB::Sam</a>
|
129
|
+
|
130
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-i-close">#close — Bio::DB::Sam</a>
|
131
|
+
|
132
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-i-deprecated_pileup">#deprecated_pileup — Bio::DB::Sam</a>
|
133
|
+
|
134
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-i-fetch">#fetch — Bio::DB::Sam</a>
|
135
|
+
|
136
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-i-fetch_reference">#fetch_reference — Bio::DB::Sam</a>
|
137
|
+
|
138
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-i-fetch_with_function">#fetch_with_function — Bio::DB::Sam</a>
|
139
|
+
|
140
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-i-index_stats">#index_stats — Bio::DB::Sam</a>
|
141
|
+
|
142
|
+
<li class="method"><a href="Vcf.html#method-i-int_or_raw">#int_or_raw — Vcf</a>
|
143
|
+
|
144
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-i-load_index">#load_index — Bio::DB::Sam</a>
|
145
|
+
|
146
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-i-load_reference">#load_reference — Bio::DB::Sam</a>
|
147
|
+
|
148
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-i-mpileup">#mpileup — Bio::DB::Sam</a>
|
149
|
+
|
150
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-i-mpileup_plus">#mpileup_plus — Bio::DB::Sam</a>
|
151
|
+
|
152
|
+
<li class="method"><a href="Pileup.html#method-i-non_ref_count">#non_ref_count — Pileup</a>
|
153
|
+
|
154
|
+
<li class="method"><a href="Pileup.html#method-i-non_refs">#non_refs — Pileup</a>
|
155
|
+
|
156
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-i-open">#open — Bio::DB::Sam</a>
|
157
|
+
|
158
|
+
<li class="method"><a href="Vcf.html#method-i-parse_line">#parse_line — Vcf</a>
|
159
|
+
|
160
|
+
<li class="method"><a href="Bio/DB/SAM/Tools/Bam1T.html#method-i-qname">#qname — Bio::DB::SAM::Tools::Bam1T</a>
|
161
|
+
|
162
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-i-query_string">#query_string — Bio::DB::Sam</a>
|
163
|
+
|
164
|
+
<li class="method"><a href="Pileup.html#method-i-ref_count">#ref_count — Pileup</a>
|
165
|
+
|
166
|
+
<li class="method"><a href="Bio/DB/Alignment.html#method-i-sam-3D">#sam= — Bio::DB::Alignment</a>
|
167
|
+
|
168
|
+
<li class="method"><a href="Bio/DB/Alignment.html#method-i-set">#set — Bio::DB::Alignment</a>
|
169
|
+
|
170
|
+
<li class="method"><a href="Bio/DB/Tag.html#method-i-set">#set — Bio::DB::Tag</a>
|
171
|
+
|
172
|
+
<li class="method"><a href="Bio/DB/SAM/Tools/BamHeaderT.html#method-i-text">#text — Bio::DB::SAM::Tools::BamHeaderT</a>
|
173
|
+
|
174
|
+
<li class="method"><a href="Bio/DB/SAM/Tools/BamHeaderT.html#method-i-text-3D">#text= — Bio::DB::SAM::Tools::BamHeaderT</a>
|
175
|
+
|
176
|
+
<li class="method"><a href="Bio/DB/Sam.html#method-i-to_s">#to_s — Bio::DB::Sam</a>
|
177
|
+
|
178
|
+
</ul>
|
179
|
+
|
180
|
+
|
181
|
+
<footer id="validator-badges">
|
182
|
+
<p><a href="http://validator.w3.org/check/referer">[Validate]</a>
|
183
|
+
<p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.11.
|
184
|
+
<p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
|
185
|
+
</footer>
|
186
|
+
|
data/ext/Makefile-bioruby.patch
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
@@ -1,10 +1,11 @@
|
4
4
|
CC= gcc
|
5
5
|
-CFLAGS= -g -Wall -O2 #-m64 #-arch ppc
|
6
|
-
+CFLAGS= -g -Wall -O2 -m64 #-arch ppc
|
6
|
+
+CFLAGS= -g -Wall -O2 -m64 -fPIC #-arch ppc
|
7
7
|
DFLAGS= -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_USE_KNETFILE -D_CURSES_LIB=1
|
8
8
|
KNETFILE_O= knetfile.o
|
9
9
|
LOBJS= bgzf.o kstring.o bam_aux.o bam.o bam_import.o sam.o bam_index.o \
|
data/ext/Rakefile
CHANGED
@@ -25,15 +25,22 @@ task :compile do
|
|
25
25
|
cp("libbam.a","/Users/macleand/bioruby-samtools/ext/../lib/bio/db/sam/external")
|
26
26
|
#sh "CFLAGS='-g -Wall -O2 -fPIC' make -e libbam.so.1-local"
|
27
27
|
sh "make libbam.so.1-local"
|
28
|
+
cp("samtools", "/Users/macleand/bioruby-samtools/ext/../lib/bio/db/sam/external")
|
28
29
|
cp("libbam.so.1","/Users/macleand/bioruby-samtools/ext/../lib/bio/db/sam/external")
|
29
30
|
when /darwin/
|
30
31
|
sh "make"
|
31
32
|
cp("libbam.a","/Users/macleand/bioruby-samtools/ext/../lib/bio/db/sam/external")
|
32
33
|
sh "make libbam.1.dylib-local"
|
33
|
-
cp("libbam.1.dylib","/Users/macleand/bioruby-samtools/ext/../lib/bio/db/sam/external")
|
34
|
+
cp("libbam.1.dylib","/Users/macleand/bioruby-samtools/ext/../lib/bio/db/sam/external")
|
35
|
+
sh "make"
|
36
|
+
cp('samtools', "/Users/macleand/bioruby-samtools/ext/../lib/bio/db/sam/external")
|
34
37
|
when /mswin|mingw/ then raise NotImplementedError, "BWA library is not available for Windows platform"
|
35
38
|
end #case
|
36
39
|
end #cd
|
40
|
+
cd("samtools-0.1.18/bcftools") do
|
41
|
+
sh "make"
|
42
|
+
cp('bcftools', "/Users/macleand/bioruby-samtools/ext/../lib/bio/db/sam/external")
|
43
|
+
end
|
37
44
|
end
|
38
45
|
|
39
46
|
task :clean do
|
data/ext/mkrf_conf.rb
CHANGED
@@ -44,15 +44,22 @@ task :compile do
|
|
44
44
|
cp("libbam.a","#{path_external}")
|
45
45
|
#sh "CFLAGS='-g -Wall -O2 -fPIC' make -e libbam.so.1-local"
|
46
46
|
sh "make libbam.so.1-local"
|
47
|
+
cp("samtools", "#{path_external}")
|
47
48
|
cp("libbam.so.1","#{path_external}")
|
48
49
|
when /darwin/
|
49
50
|
sh "make"
|
50
51
|
cp("libbam.a","#{path_external}")
|
51
52
|
sh "make libbam.1.dylib-local"
|
52
|
-
cp("libbam.1.dylib","#{path_external}")
|
53
|
+
cp("libbam.1.dylib","#{path_external}")
|
54
|
+
sh "make"
|
55
|
+
cp('samtools', "#{path_external}")
|
53
56
|
when /mswin|mingw/ then raise NotImplementedError, "BWA library is not available for Windows platform"
|
54
57
|
end #case
|
55
58
|
end #cd
|
59
|
+
cd("samtools-#{Version}/bcftools") do
|
60
|
+
sh "make"
|
61
|
+
cp('bcftools', "#{path_external}")
|
62
|
+
end
|
56
63
|
end
|
57
64
|
|
58
65
|
task :clean do
|
data/lib/bio/db/sam.rb
CHANGED
@@ -311,44 +311,157 @@ module Bio
|
|
311
311
|
##and also associated output options
|
312
312
|
[:g, :u, :e, :h, :I, :L, :o, :p].each {|x| opts.delete(x) }
|
313
313
|
|
314
|
-
|
315
|
-
strptrs << FFI::MemoryPointer.from_string("mpileup")
|
314
|
+
sam_opts = []
|
315
|
+
#strptrs << FFI::MemoryPointer.from_string("mpileup")
|
316
316
|
opts.each do |k,v|
|
317
317
|
next unless opts[k] ##dont bother unless the values provided are true..
|
318
318
|
k = '6' if k == :six
|
319
319
|
k = '-' + k.to_s
|
320
|
-
strptrs << FFI::MemoryPointer.from_string(k)
|
321
|
-
|
320
|
+
sam_opts << k #strptrs << FFI::MemoryPointer.from_string(k)
|
321
|
+
sam_opts << v.to_s unless ["-R", "-B", "-E", "-6", "-A"].include?(k) #these are just flags so don't pass a value... strptrs << FFI::MemoryPointer.from_string(v.to_s)
|
322
322
|
end
|
323
|
-
|
324
|
-
|
325
|
-
strptrs << FFI::MemoryPointer.from_string(@sam)
|
326
|
-
strptrs << nil
|
323
|
+
sam_opts = sam_opts + ['-f', @fasta_path, @sam]
|
324
|
+
sam_command = "#{File.join(File.expand_path(File.dirname(__FILE__)),'sam','external','samtools')} mpileup #{sam_opts.join(' ')} 2> /dev/null"
|
327
325
|
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
argv[i].put_pointer(0, p)
|
326
|
+
sam_pipe = IO.popen(sam_command)
|
327
|
+
while line = sam_pipe.gets
|
328
|
+
yield Pileup.new(line)
|
332
329
|
end
|
330
|
+
sam_pipe.close
|
331
|
+
#strptrs << FFI::MemoryPointer.from_string('-f')
|
332
|
+
#strptrs << FFI::MemoryPointer.from_string(@fasta_path)
|
333
|
+
#strptrs << FFI::MemoryPointer.from_string(@sam)
|
334
|
+
#strptrs << nil
|
333
335
|
|
334
|
-
|
335
|
-
|
336
|
-
|
336
|
+
# Now load all the pointers into a native memory block
|
337
|
+
#argv = FFI::MemoryPointer.new(:pointer, strptrs.length)
|
338
|
+
#strptrs.each_with_index do |p, i|
|
339
|
+
# argv[i].put_pointer(0, p)
|
340
|
+
#end
|
341
|
+
|
342
|
+
#old_stdout = STDOUT.clone
|
343
|
+
#read_pipe, write_pipe = IO.pipe()
|
344
|
+
#STDOUT.reopen(write_pipe)
|
337
345
|
#int bam_mpileup(int argc, char *argv[])
|
338
|
-
|
339
|
-
if fork
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
346
|
+
# Bio::DB::SAM::Tools.bam_mpileup(strptrs.length - 1,argv)
|
347
|
+
#if fork
|
348
|
+
# write_pipe.close
|
349
|
+
# STDOUT.reopen(old_stdout) #beware .. stdout from other processes eg tests calling this method can get mixed in...
|
350
|
+
# begin
|
351
|
+
# while line = read_pipe.readline
|
352
|
+
# yield Pileup.new(line)
|
353
|
+
# end
|
354
|
+
# rescue EOFError
|
355
|
+
# read_pipe.close
|
356
|
+
# Process.wait
|
357
|
+
# end
|
358
|
+
#end
|
359
|
+
end
|
360
|
+
|
361
|
+
#experimental method that spawns a samtools mpileup | bcftools view process and supports returning of pileup vcf
|
362
|
+
##otherwise works like mpileup
|
363
|
+
def mpileup_plus( opts )
|
364
|
+
|
365
|
+
raise SAMException.new(), "No BAMFile provided" unless @sam and @binary
|
366
|
+
raise SAMException.new(), "No FastA provided" unless @fasta_path
|
367
|
+
#long option form to short samtools form..
|
368
|
+
long_opts = {
|
369
|
+
:region => :r,
|
370
|
+
:illumina_quals => :six,
|
371
|
+
:count_anomalous => :A,
|
372
|
+
:no_baq => :B,
|
373
|
+
:adjust_mapq => :C,
|
374
|
+
:max_per_bam_depth => :d,
|
375
|
+
:extended_baq => :E,
|
376
|
+
:exclude_reads_file => :G,
|
377
|
+
:list_of_positions => :l,
|
378
|
+
:mapping_quality_cap => :M,
|
379
|
+
:ignore_rg => :R,
|
380
|
+
:min_mapping_quality => :q,
|
381
|
+
:min_base_quality => :Q,
|
382
|
+
###following options are for the -g -u option
|
383
|
+
:genotype_calling => :g,
|
384
|
+
:uncompressed_bcf => :u,
|
385
|
+
:extension_sequencing_probability => :e,
|
386
|
+
:homopolymer_error_coefficient => :h,
|
387
|
+
:no_indels => :I,
|
388
|
+
:skip_indel_over_average_depth => :L,
|
389
|
+
:gap_open_sequencing_error_probability => :o,
|
390
|
+
:platforms => :P
|
391
|
+
}
|
392
|
+
|
393
|
+
##convert any long_opts to short opts
|
394
|
+
opts.each_pair do |k,v|
|
395
|
+
if long_opts[k]
|
396
|
+
opts[long_opts[k]] = v
|
397
|
+
opts.delete(k)
|
398
|
+
end
|
399
|
+
end
|
400
|
+
|
401
|
+
##remove any calls to -g or -u for mpileup, bcf output is not yet supported
|
402
|
+
##and also associated output options
|
403
|
+
#[:g, :u, :e, :h, :I, :L, :o, :p].each {|x| opts.delete(x) }
|
404
|
+
opts[:u] = true if opts[:g] #so that we always get uncompressed output
|
405
|
+
opts.delete(:g)
|
406
|
+
|
407
|
+
sam_opts = []
|
408
|
+
#strptrs << FFI::MemoryPointer.from_string("mpileup")
|
409
|
+
opts.each do |k,v|
|
410
|
+
next unless opts[k] ##dont bother unless the values provided are true..
|
411
|
+
k = '6' if k == :six
|
412
|
+
k = '-' + k.to_s
|
413
|
+
sam_opts << k #strptrs << FFI::MemoryPointer.from_string(k)
|
414
|
+
sam_opts << v.to_s unless ["-R", "-B", "-E", "-6", "-A", "-g", "-u", "-I"].include?(k) #these are just flags so don't pass a value... strptrs << FFI::MemoryPointer.from_string(v.to_s)
|
345
415
|
end
|
346
|
-
|
347
|
-
|
348
|
-
|
416
|
+
sam_opts = sam_opts + ['-f', @fasta_path, @sam]
|
417
|
+
|
418
|
+
command = "#{File.join(File.expand_path(File.dirname(__FILE__)),'sam','external','samtools')} mpileup #{sam_opts.join(' ')} 2> /dev/null"
|
419
|
+
if opts[:u]
|
420
|
+
command = command + " | #{File.join(File.expand_path(File.dirname(__FILE__)),'sam','external','bcftools')} view -cg -"
|
421
|
+
end
|
422
|
+
pipe = IO.popen(command)
|
423
|
+
$stderr.puts command
|
424
|
+
if opts[:u]
|
425
|
+
while line = pipe.gets
|
426
|
+
next if line[0,1] == '#' #skip any header or meta-lines, we dont do anything with those
|
427
|
+
yield Vcf.new(line)
|
428
|
+
end
|
429
|
+
else
|
430
|
+
while line = pipe.gets
|
431
|
+
yield Pileup.new(line)
|
432
|
+
end
|
433
|
+
end
|
434
|
+
pipe.close
|
435
|
+
#strptrs << FFI::MemoryPointer.from_string('-f')
|
436
|
+
#strptrs << FFI::MemoryPointer.from_string(@fasta_path)
|
437
|
+
#strptrs << FFI::MemoryPointer.from_string(@sam)
|
438
|
+
#strptrs << nil
|
439
|
+
|
440
|
+
# Now load all the pointers into a native memory block
|
441
|
+
#argv = FFI::MemoryPointer.new(:pointer, strptrs.length)
|
442
|
+
#strptrs.each_with_index do |p, i|
|
443
|
+
# argv[i].put_pointer(0, p)
|
444
|
+
#end
|
445
|
+
|
446
|
+
#old_stdout = STDOUT.clone
|
447
|
+
#read_pipe, write_pipe = IO.pipe()
|
448
|
+
#STDOUT.reopen(write_pipe)
|
449
|
+
#int bam_mpileup(int argc, char *argv[])
|
450
|
+
# Bio::DB::SAM::Tools.bam_mpileup(strptrs.length - 1,argv)
|
451
|
+
#if fork
|
452
|
+
# write_pipe.close
|
453
|
+
# STDOUT.reopen(old_stdout) #beware .. stdout from other processes eg tests calling this method can get mixed in...
|
454
|
+
# begin
|
455
|
+
# while line = read_pipe.readline
|
456
|
+
# yield Pileup.new(line)
|
457
|
+
# end
|
458
|
+
# rescue EOFError
|
459
|
+
# read_pipe.close
|
460
|
+
# Process.wait
|
461
|
+
# end
|
462
|
+
#end
|
349
463
|
end
|
350
|
-
|
351
|
-
end
|
464
|
+
|
352
465
|
|
353
466
|
# utility method that does not use the samtools API, it calls samtools directly as if on the command line and catches the output,
|
354
467
|
# to use this method you must have a version of samtools that supports the pileup command (< 0.1.17)
|
data/lib/bio/db/sam/vcf.rb
CHANGED
@@ -11,7 +11,6 @@ public
|
|
11
11
|
|
12
12
|
#create the vcf object, use the ordered list of sample names to label samples if provided ['A', 'B', 'C'], otherwise uses, 1,2,3 etc
|
13
13
|
def initialize(line=nil, sample_names=nil)
|
14
|
-
next if line[0,1] == '#' #skip any header or meta-lines... inadvertantly passed..
|
15
14
|
@info = {}
|
16
15
|
@samples = {}
|
17
16
|
parse_line(line, sample_names) if line != nil
|
data/test/basictest.rb
CHANGED
@@ -29,7 +29,7 @@ class TestBioDbSam < Test::Unit::TestCase
|
|
29
29
|
rescue
|
30
30
|
end
|
31
31
|
end
|
32
|
-
|
32
|
+
=begi
|
33
33
|
def default_test
|
34
34
|
puts $LOAD_PATH
|
35
35
|
assert(true, "Unit test test")
|
@@ -165,7 +165,7 @@ class TestBioDbSam < Test::Unit::TestCase
|
|
165
165
|
assert(true, "Seems it ran the query")
|
166
166
|
#node_7263 238 60 has 550+, query from 0 to 500, something shall come....
|
167
167
|
end
|
168
|
-
|
168
|
+
=end
|
169
169
|
def test_read_invalid_reference
|
170
170
|
sam = Bio::DB::Sam.new({:bam=>@testBAMFile})
|
171
171
|
sam.open
|
@@ -281,11 +281,11 @@ class TestBioDbSam < Test::Unit::TestCase
|
|
281
281
|
def test_pileup
|
282
282
|
sam = Bio::DB::Sam.new(:fasta=>@testReference, :bam=>@testBAMFile )
|
283
283
|
pileup_list = []
|
284
|
-
sam.mpileup(:region => "chr_1:100-
|
284
|
+
sam.mpileup(:region => "chr_1:100-1100") do |pile|
|
285
285
|
next unless pile.ref_name == 'chr_1' ##required because in the test environment stdout gets mixed in with the captured stdout in the function and non pileup lines are passed...
|
286
286
|
pileup_list << pile
|
287
287
|
end
|
288
|
-
assert_equal(
|
288
|
+
assert_equal(1000,pileup_list.length)
|
289
289
|
pileup_list.each do |p|
|
290
290
|
assert_kind_of(Pileup, p)
|
291
291
|
end
|