bio-ngs 0.3.2.alpha.01 → 0.4.2.alpha.01
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +5 -3
- data/Gemfile.lock +36 -30
- data/README.rdoc +33 -0
- data/VERSION +1 -1
- data/bio-ngs.gemspec +30 -22
- data/ext/mkrf_conf.rb +0 -2
- data/lib/bio/appl/ngs/cufflinks/iterators.rb +35 -0
- data/lib/bio/appl/ngs/cufflinks.rb +180 -85
- data/lib/bio/appl/ngs/fastx.rb +24 -1
- data/lib/bio/appl/ngs/tophat.rb +24 -8
- data/lib/bio/ngs/ext/versions.yaml +12 -12
- data/lib/bio/ngs/utils.rb +11 -1
- data/lib/bio-ngs.rb +1 -0
- data/lib/tasks/convert.thor +16 -0
- data/lib/tasks/pre.thor +130 -0
- data/lib/tasks/quality.thor +3 -4
- data/lib/tasks/rna.thor +2 -1
- metadata +90 -66
data/Gemfile
CHANGED
@@ -5,7 +5,7 @@ source "http://rubygems.org"
|
|
5
5
|
|
6
6
|
gem "bio", ">= 1.4.2"
|
7
7
|
gem "bio-bwa", ">= 0.2.2"
|
8
|
-
gem "bio-samtools", ">= 0.
|
8
|
+
gem "bio-samtools", ">= 0.3.2"
|
9
9
|
gem "thor", ">= 0.14.6"
|
10
10
|
gem "rubyvis", ">= 0.5.0"
|
11
11
|
gem "daemons", ">= 1.1.0"
|
@@ -14,6 +14,7 @@ gem "activerecord",">= 3.0.5"
|
|
14
14
|
gem "sqlite3", ">= 1.3.3"
|
15
15
|
gem "bio-blastxmlparser"
|
16
16
|
gem "progressbar",">= 0.9.0"
|
17
|
+
gem "rake", "0.9.2.2"
|
17
18
|
|
18
19
|
# Add dependencies to develop your gem here.
|
19
20
|
# Include everything needed to run rake, tests, features, etc.
|
@@ -21,14 +22,14 @@ group :development do
|
|
21
22
|
gem "shoulda", ">= 0"
|
22
23
|
gem "bundler", "~> 1.0.0"
|
23
24
|
gem "jeweler", "~> 1.5.2"
|
24
|
-
gem "rcov", "
|
25
|
+
gem "rcov", "~> 0.9.11"
|
25
26
|
gem "bio", ">= 1.4.2"
|
26
27
|
gem "thor", ">= 0.14.6"
|
27
28
|
gem "ffi", ">= 1.0.6"
|
28
29
|
gem "rubyvis", ">= 0.5.0"
|
29
30
|
gem "rspec", ">= 2.5.0"
|
30
31
|
gem "daemons", ">= 1.1.0"
|
31
|
-
gem "bio-samtools", ">= 0.
|
32
|
+
gem "bio-samtools", ">= 0.3.2"
|
32
33
|
gem "ruby-ensembl-api", ">= 1.0.1"
|
33
34
|
gem 'bio-bwa', ">= 0.2.2"
|
34
35
|
gem "activerecord",">= 3.0.5"
|
@@ -36,4 +37,5 @@ group :development do
|
|
36
37
|
gem "bio-blastxmlparser"
|
37
38
|
gem "progressbar",">= 0.9.0"
|
38
39
|
gem "json"
|
40
|
+
gem "rake", "0.9.2.2"
|
39
41
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
activemodel (3.
|
5
|
-
activesupport (= 3.
|
4
|
+
activemodel (3.2.1)
|
5
|
+
activesupport (= 3.2.1)
|
6
6
|
builder (~> 3.0.0)
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
arel (~> 2.2.1)
|
7
|
+
activerecord (3.2.1)
|
8
|
+
activemodel (= 3.2.1)
|
9
|
+
activesupport (= 3.2.1)
|
10
|
+
arel (~> 3.0.0)
|
12
11
|
tzinfo (~> 0.3.29)
|
13
|
-
activesupport (3.
|
12
|
+
activesupport (3.2.1)
|
13
|
+
i18n (~> 0.6)
|
14
14
|
multi_json (~> 1.0)
|
15
|
-
arel (
|
15
|
+
arel (3.0.0)
|
16
16
|
bio (1.4.2)
|
17
17
|
bio-blastxmlparser (1.0.1)
|
18
18
|
bio-logger (>= 1.0.0)
|
@@ -20,44 +20,49 @@ GEM
|
|
20
20
|
bio-bwa (0.2.2)
|
21
21
|
bio-logger (1.0.0)
|
22
22
|
log4r (>= 1.1.9)
|
23
|
-
bio-samtools (0.
|
24
|
-
bio (>= 1.4.
|
23
|
+
bio-samtools (0.5.0)
|
24
|
+
bio (>= 1.4.2)
|
25
25
|
ffi
|
26
26
|
builder (3.0.0)
|
27
|
-
daemons (1.1.
|
27
|
+
daemons (1.1.8)
|
28
28
|
diff-lcs (1.1.3)
|
29
|
-
ffi (1.0.
|
29
|
+
ffi (1.0.11)
|
30
|
+
ffi (1.0.11-java)
|
30
31
|
git (1.2.5)
|
31
32
|
i18n (0.6.0)
|
32
33
|
jeweler (1.5.2)
|
33
34
|
bundler (~> 1.0.0)
|
34
35
|
git (>= 1.2.5)
|
35
36
|
rake
|
36
|
-
json (1.6.
|
37
|
-
|
38
|
-
|
37
|
+
json (1.6.5)
|
38
|
+
json (1.6.5-java)
|
39
|
+
log4r (1.1.10)
|
40
|
+
multi_json (1.0.4)
|
39
41
|
nokogiri (1.5.0)
|
40
|
-
|
41
|
-
|
42
|
+
nokogiri (1.5.0-java)
|
43
|
+
progressbar (0.10.0)
|
44
|
+
rake (0.9.2.2)
|
42
45
|
rcov (0.9.11)
|
43
|
-
|
44
|
-
|
45
|
-
rspec-
|
46
|
-
rspec-
|
47
|
-
|
48
|
-
rspec-
|
46
|
+
rcov (0.9.11-java)
|
47
|
+
rspec (2.8.0)
|
48
|
+
rspec-core (~> 2.8.0)
|
49
|
+
rspec-expectations (~> 2.8.0)
|
50
|
+
rspec-mocks (~> 2.8.0)
|
51
|
+
rspec-core (2.8.0)
|
52
|
+
rspec-expectations (2.8.0)
|
49
53
|
diff-lcs (~> 1.1.2)
|
50
|
-
rspec-mocks (2.
|
54
|
+
rspec-mocks (2.8.0)
|
51
55
|
ruby-ensembl-api (1.0.1)
|
52
56
|
activerecord
|
53
57
|
bio (>= 1)
|
54
|
-
rubyvis (0.5.
|
58
|
+
rubyvis (0.5.1)
|
55
59
|
shoulda (2.11.3)
|
56
|
-
sqlite3 (1.3.
|
60
|
+
sqlite3 (1.3.5)
|
57
61
|
thor (0.14.6)
|
58
|
-
tzinfo (0.3.
|
62
|
+
tzinfo (0.3.31)
|
59
63
|
|
60
64
|
PLATFORMS
|
65
|
+
java
|
61
66
|
ruby
|
62
67
|
|
63
68
|
DEPENDENCIES
|
@@ -65,14 +70,15 @@ DEPENDENCIES
|
|
65
70
|
bio (>= 1.4.2)
|
66
71
|
bio-blastxmlparser
|
67
72
|
bio-bwa (>= 0.2.2)
|
68
|
-
bio-samtools (>= 0.
|
73
|
+
bio-samtools (>= 0.3.2)
|
69
74
|
bundler (~> 1.0.0)
|
70
75
|
daemons (>= 1.1.0)
|
71
76
|
ffi (>= 1.0.6)
|
72
77
|
jeweler (~> 1.5.2)
|
73
78
|
json
|
74
79
|
progressbar (>= 0.9.0)
|
75
|
-
|
80
|
+
rake (= 0.9.2.2)
|
81
|
+
rcov (~> 0.9.11)
|
76
82
|
rspec (>= 2.5.0)
|
77
83
|
ruby-ensembl-api (>= 1.0.1)
|
78
84
|
rubyvis (>= 0.5.0)
|
data/README.rdoc
CHANGED
@@ -67,6 +67,13 @@ Most of this tasks create sub-processes to speed up conversions
|
|
67
67
|
|
68
68
|
= ForDevelopers
|
69
69
|
|
70
|
+
== Contribute
|
71
|
+
=== Clone Main Repository
|
72
|
+
This command will crate a local copy of the main repository
|
73
|
+
git clone https://github.com/helios/bioruby-ngs
|
74
|
+
=== Install Bioinformatics Tools into the repository directory
|
75
|
+
rake devenv:bio_tools
|
76
|
+
|
70
77
|
== Wrapper
|
71
78
|
Bio-Ngs comes with a build-in wrapper to map binary software directly in BioRuby as objects. From this wrapper object is possible to create Thor task as well, with a lot of sugar.
|
72
79
|
=== Wrapping a binary
|
@@ -187,6 +194,32 @@ You can create a new wrapper and configure it and run it from inside a Thor's ta
|
|
187
194
|
end #Ngs
|
188
195
|
end #Bio
|
189
196
|
|
197
|
+
== Features
|
198
|
+
=== Iterators for output files
|
199
|
+
|
200
|
+
Example CuffDiff. In this class is possible to define an iterator for a specific set of output files: genes, isoforms, tss_groups, cds.
|
201
|
+
To activate the iterator is just a matter of call a class method in the class definition
|
202
|
+
class Bio::Ngs::Cufflinks::Diff
|
203
|
+
#... all the previous definitions
|
204
|
+
#define iterators
|
205
|
+
add_iterator_for :genes
|
206
|
+
add_iterator_for :isoforms
|
207
|
+
add_iterator_for :cds
|
208
|
+
add_iterator_for :tss_groups
|
209
|
+
end
|
210
|
+
|
211
|
+
This is an example of CuffDiff, parsing genes.fpkm_tracking file:
|
212
|
+
|
213
|
+
Bio::Ngs::Cufflinks::Diff.foreach_gene_tracked("path_to_cuffdiff_output_directory") do |gene_fpkm_track|
|
214
|
+
expression_profile = (1..7).map do |sample_idx|
|
215
|
+
gene_fpkm_track["q#{sample_idx}_FPKM"].to_f
|
216
|
+
end
|
217
|
+
|
218
|
+
#do your stuff accessing this tabular file with gene_fpkm_track["name of the field"]
|
219
|
+
end
|
220
|
+
|
221
|
+
In this case internally CSV library has been used to parse in an easy way the file, there is a lack of performances with huge files, gaining in flexibility.
|
222
|
+
|
190
223
|
=== Notes
|
191
224
|
* It's possible to add more sugar and we are working hard on it
|
192
225
|
* aliases are not well supported at this time. ToDo
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.2.alpha.01
|
data/bio-ngs.gemspec
CHANGED
@@ -4,16 +4,16 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.
|
7
|
+
s.name = "bio-ngs"
|
8
|
+
s.version = "0.4.2.alpha.01"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
15
|
-
s.executables = [
|
16
|
-
s.extensions = [
|
11
|
+
s.authors = ["Francesco Strozzi", "Raoul J.P. Bonnal"]
|
12
|
+
s.date = "2012-02-13"
|
13
|
+
s.description = "bio-ngs provides a framework for handling NGS data with BioRuby"
|
14
|
+
s.email = "francesco.strozzi@gmail.com"
|
15
|
+
s.executables = ["biongs"]
|
16
|
+
s.extensions = ["ext/mkrf_conf.rb"]
|
17
17
|
s.extra_rdoc_files = [
|
18
18
|
"LICENSE.txt",
|
19
19
|
"README.rdoc"
|
@@ -34,6 +34,7 @@ Gem::Specification.new do |s|
|
|
34
34
|
"lib/bio/appl/ngs/blast.rb",
|
35
35
|
"lib/bio/appl/ngs/bowtie-inspect.rb",
|
36
36
|
"lib/bio/appl/ngs/cufflinks.rb",
|
37
|
+
"lib/bio/appl/ngs/cufflinks/iterators.rb",
|
37
38
|
"lib/bio/appl/ngs/fastx.rb",
|
38
39
|
"lib/bio/appl/ngs/samtools.rb",
|
39
40
|
"lib/bio/appl/ngs/sff_extract.rb",
|
@@ -68,6 +69,7 @@ Gem::Specification.new do |s|
|
|
68
69
|
"lib/tasks/history.thor",
|
69
70
|
"lib/tasks/homology.thor",
|
70
71
|
"lib/tasks/ontology.thor",
|
72
|
+
"lib/tasks/pre.thor",
|
71
73
|
"lib/tasks/project.thor",
|
72
74
|
"lib/tasks/quality.thor",
|
73
75
|
"lib/tasks/rna.thor",
|
@@ -95,11 +97,11 @@ Gem::Specification.new do |s|
|
|
95
97
|
"test/test_ontology.rb",
|
96
98
|
"test/test_utils.rb"
|
97
99
|
]
|
98
|
-
s.homepage =
|
99
|
-
s.licenses = [
|
100
|
-
s.require_paths = [
|
101
|
-
s.rubygems_version =
|
102
|
-
s.summary =
|
100
|
+
s.homepage = "http://github.com/helios/bioruby-ngs"
|
101
|
+
s.licenses = ["MIT"]
|
102
|
+
s.require_paths = ["lib"]
|
103
|
+
s.rubygems_version = "1.8.10"
|
104
|
+
s.summary = "bio-ngs provides a framework for handling NGS data with BioRuby"
|
103
105
|
s.test_files = [
|
104
106
|
"spec/converter_qseq_spec.rb",
|
105
107
|
"spec/quality_spec.rb",
|
@@ -122,7 +124,7 @@ Gem::Specification.new do |s|
|
|
122
124
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
123
125
|
s.add_runtime_dependency(%q<bio>, [">= 1.4.2"])
|
124
126
|
s.add_runtime_dependency(%q<bio-bwa>, [">= 0.2.2"])
|
125
|
-
s.add_runtime_dependency(%q<bio-samtools>, [">= 0.
|
127
|
+
s.add_runtime_dependency(%q<bio-samtools>, [">= 0.3.2"])
|
126
128
|
s.add_runtime_dependency(%q<thor>, [">= 0.14.6"])
|
127
129
|
s.add_runtime_dependency(%q<rubyvis>, [">= 0.5.0"])
|
128
130
|
s.add_runtime_dependency(%q<daemons>, [">= 1.1.0"])
|
@@ -131,17 +133,18 @@ Gem::Specification.new do |s|
|
|
131
133
|
s.add_runtime_dependency(%q<sqlite3>, [">= 1.3.3"])
|
132
134
|
s.add_runtime_dependency(%q<bio-blastxmlparser>, [">= 0"])
|
133
135
|
s.add_runtime_dependency(%q<progressbar>, [">= 0.9.0"])
|
136
|
+
s.add_runtime_dependency(%q<rake>, ["= 0.9.2.2"])
|
134
137
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
135
138
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
136
139
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
137
|
-
s.add_development_dependency(%q<rcov>, ["
|
140
|
+
s.add_development_dependency(%q<rcov>, ["~> 0.9.11"])
|
138
141
|
s.add_development_dependency(%q<bio>, [">= 1.4.2"])
|
139
142
|
s.add_development_dependency(%q<thor>, [">= 0.14.6"])
|
140
143
|
s.add_development_dependency(%q<ffi>, [">= 1.0.6"])
|
141
144
|
s.add_development_dependency(%q<rubyvis>, [">= 0.5.0"])
|
142
145
|
s.add_development_dependency(%q<rspec>, [">= 2.5.0"])
|
143
146
|
s.add_development_dependency(%q<daemons>, [">= 1.1.0"])
|
144
|
-
s.add_development_dependency(%q<bio-samtools>, [">= 0.
|
147
|
+
s.add_development_dependency(%q<bio-samtools>, [">= 0.3.2"])
|
145
148
|
s.add_development_dependency(%q<ruby-ensembl-api>, [">= 1.0.1"])
|
146
149
|
s.add_development_dependency(%q<bio-bwa>, [">= 0.2.2"])
|
147
150
|
s.add_development_dependency(%q<activerecord>, [">= 3.0.5"])
|
@@ -149,10 +152,11 @@ Gem::Specification.new do |s|
|
|
149
152
|
s.add_development_dependency(%q<bio-blastxmlparser>, [">= 0"])
|
150
153
|
s.add_development_dependency(%q<progressbar>, [">= 0.9.0"])
|
151
154
|
s.add_development_dependency(%q<json>, [">= 0"])
|
155
|
+
s.add_development_dependency(%q<rake>, ["= 0.9.2.2"])
|
152
156
|
else
|
153
157
|
s.add_dependency(%q<bio>, [">= 1.4.2"])
|
154
158
|
s.add_dependency(%q<bio-bwa>, [">= 0.2.2"])
|
155
|
-
s.add_dependency(%q<bio-samtools>, [">= 0.
|
159
|
+
s.add_dependency(%q<bio-samtools>, [">= 0.3.2"])
|
156
160
|
s.add_dependency(%q<thor>, [">= 0.14.6"])
|
157
161
|
s.add_dependency(%q<rubyvis>, [">= 0.5.0"])
|
158
162
|
s.add_dependency(%q<daemons>, [">= 1.1.0"])
|
@@ -161,17 +165,18 @@ Gem::Specification.new do |s|
|
|
161
165
|
s.add_dependency(%q<sqlite3>, [">= 1.3.3"])
|
162
166
|
s.add_dependency(%q<bio-blastxmlparser>, [">= 0"])
|
163
167
|
s.add_dependency(%q<progressbar>, [">= 0.9.0"])
|
168
|
+
s.add_dependency(%q<rake>, ["= 0.9.2.2"])
|
164
169
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
165
170
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
166
171
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
167
|
-
s.add_dependency(%q<rcov>, ["
|
172
|
+
s.add_dependency(%q<rcov>, ["~> 0.9.11"])
|
168
173
|
s.add_dependency(%q<bio>, [">= 1.4.2"])
|
169
174
|
s.add_dependency(%q<thor>, [">= 0.14.6"])
|
170
175
|
s.add_dependency(%q<ffi>, [">= 1.0.6"])
|
171
176
|
s.add_dependency(%q<rubyvis>, [">= 0.5.0"])
|
172
177
|
s.add_dependency(%q<rspec>, [">= 2.5.0"])
|
173
178
|
s.add_dependency(%q<daemons>, [">= 1.1.0"])
|
174
|
-
s.add_dependency(%q<bio-samtools>, [">= 0.
|
179
|
+
s.add_dependency(%q<bio-samtools>, [">= 0.3.2"])
|
175
180
|
s.add_dependency(%q<ruby-ensembl-api>, [">= 1.0.1"])
|
176
181
|
s.add_dependency(%q<bio-bwa>, [">= 0.2.2"])
|
177
182
|
s.add_dependency(%q<activerecord>, [">= 3.0.5"])
|
@@ -179,11 +184,12 @@ Gem::Specification.new do |s|
|
|
179
184
|
s.add_dependency(%q<bio-blastxmlparser>, [">= 0"])
|
180
185
|
s.add_dependency(%q<progressbar>, [">= 0.9.0"])
|
181
186
|
s.add_dependency(%q<json>, [">= 0"])
|
187
|
+
s.add_dependency(%q<rake>, ["= 0.9.2.2"])
|
182
188
|
end
|
183
189
|
else
|
184
190
|
s.add_dependency(%q<bio>, [">= 1.4.2"])
|
185
191
|
s.add_dependency(%q<bio-bwa>, [">= 0.2.2"])
|
186
|
-
s.add_dependency(%q<bio-samtools>, [">= 0.
|
192
|
+
s.add_dependency(%q<bio-samtools>, [">= 0.3.2"])
|
187
193
|
s.add_dependency(%q<thor>, [">= 0.14.6"])
|
188
194
|
s.add_dependency(%q<rubyvis>, [">= 0.5.0"])
|
189
195
|
s.add_dependency(%q<daemons>, [">= 1.1.0"])
|
@@ -192,17 +198,18 @@ Gem::Specification.new do |s|
|
|
192
198
|
s.add_dependency(%q<sqlite3>, [">= 1.3.3"])
|
193
199
|
s.add_dependency(%q<bio-blastxmlparser>, [">= 0"])
|
194
200
|
s.add_dependency(%q<progressbar>, [">= 0.9.0"])
|
201
|
+
s.add_dependency(%q<rake>, ["= 0.9.2.2"])
|
195
202
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
196
203
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
197
204
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
198
|
-
s.add_dependency(%q<rcov>, ["
|
205
|
+
s.add_dependency(%q<rcov>, ["~> 0.9.11"])
|
199
206
|
s.add_dependency(%q<bio>, [">= 1.4.2"])
|
200
207
|
s.add_dependency(%q<thor>, [">= 0.14.6"])
|
201
208
|
s.add_dependency(%q<ffi>, [">= 1.0.6"])
|
202
209
|
s.add_dependency(%q<rubyvis>, [">= 0.5.0"])
|
203
210
|
s.add_dependency(%q<rspec>, [">= 2.5.0"])
|
204
211
|
s.add_dependency(%q<daemons>, [">= 1.1.0"])
|
205
|
-
s.add_dependency(%q<bio-samtools>, [">= 0.
|
212
|
+
s.add_dependency(%q<bio-samtools>, [">= 0.3.2"])
|
206
213
|
s.add_dependency(%q<ruby-ensembl-api>, [">= 1.0.1"])
|
207
214
|
s.add_dependency(%q<bio-bwa>, [">= 0.2.2"])
|
208
215
|
s.add_dependency(%q<activerecord>, [">= 3.0.5"])
|
@@ -210,6 +217,7 @@ Gem::Specification.new do |s|
|
|
210
217
|
s.add_dependency(%q<bio-blastxmlparser>, [">= 0"])
|
211
218
|
s.add_dependency(%q<progressbar>, [">= 0.9.0"])
|
212
219
|
s.add_dependency(%q<json>, [">= 0"])
|
220
|
+
s.add_dependency(%q<rake>, ["= 0.9.2.2"])
|
213
221
|
end
|
214
222
|
end
|
215
223
|
|
data/ext/mkrf_conf.rb
CHANGED
@@ -57,8 +57,6 @@ path_binary = File.join(path_external,"bin","common")
|
|
57
57
|
task :compile do
|
58
58
|
["common", Bio::Ngs::Utils.os_type].each do |kind_software|
|
59
59
|
path_binary = File.join("#{path_external}", 'bin', kind_software)
|
60
|
-
#download common libraries or tools
|
61
|
-
#download specific OS binaries or libraries
|
62
60
|
versions[kind_software].each do |tool, info|
|
63
61
|
Bio::Ngs::Utils.compile_source(tool, info, "#{path_external}", path_binary) if info["type"]=="source"
|
64
62
|
end #versions
|
@@ -0,0 +1,35 @@
|
|
1
|
+
|
2
|
+
#use CSV to iterate over all the genes expressed during the differential expression.
|
3
|
+
|
4
|
+
module Bio
|
5
|
+
module Ngs
|
6
|
+
module Cufflinks
|
7
|
+
module Utils
|
8
|
+
|
9
|
+
def self.included(base)
|
10
|
+
base.extend(ClassMethods)
|
11
|
+
end
|
12
|
+
|
13
|
+
module ClassMethods
|
14
|
+
require 'csv'
|
15
|
+
# Create an iterator using the specified type_name file.
|
16
|
+
# in case of Cufflinks type_file_name can be gene,isoform, cds, tss_group
|
17
|
+
def add_iterator_for( type_file_name, opts={})
|
18
|
+
plural_name = type_file_name = type_file_name.to_s
|
19
|
+
if %w(genes isoforms cds tss_groups).include?(type_file_name)
|
20
|
+
type_file_name=type_file_name[0..-2] if type_file_name!="cds"
|
21
|
+
self.class.send :define_method, "foreach_#{type_file_name}_tracked" do |path = '.', &block|
|
22
|
+
file_name = File.join(path,"#{plural_name}.fpkm_tracking")
|
23
|
+
CSV.foreach(file_name, headers: true, converters: :numeric, col_sep:"\t") do |data|
|
24
|
+
block.call(data)
|
25
|
+
end #cvs_foreach
|
26
|
+
end #define_method
|
27
|
+
else
|
28
|
+
raise "#{type_file_name} is not a valid base name for cuffdiff's output, must be plural and in this set: genes, cds, isoforms, tss_groups"
|
29
|
+
end #if
|
30
|
+
end #iterator
|
31
|
+
end #ClassMethod
|
32
|
+
end #Utils
|
33
|
+
end #Cufflinks
|
34
|
+
end #Ngs
|
35
|
+
end #Bio
|