dirseq 0.0.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/Gemfile +6 -6
- data/README.md +8 -3
- data/VERSION +1 -1
- data/bin/dirseq +137 -17
- data/spec/data/eg.bam.bai +0 -0
- data/spec/data/realer.gff +3 -0
- data/spec/script_spec.rb +42 -6
- metadata +24 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9ff1307d262c875afd01391fccb60007735127dda4fa1303c17c246fbcc1262c
|
4
|
+
data.tar.gz: 0e040b3e9688aa214da2d2bffc1480b207f8fdc836c75d5bbd9de9199fb67394
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d6ef576145d863fae37da16dbc6e224572a9928bc5293fd471c7fa4c831e5f69ac8a9eeb272d5dd8b531f48c791476e4a514d63de3be4a17a5f48f21017d9a61
|
7
|
+
data.tar.gz: 49bae83cf0ad60ec57b91e51931cb380369c04921296552024620d9a837b77f4875f1b09e4fd5b69871c5e905423b64da0d974400f3953423f9e4eadacabc61d
|
data/Gemfile
CHANGED
@@ -9,10 +9,10 @@ gem "bio", "~>1.4", ">=1.4.2"
|
|
9
9
|
# Add dependencies to develop your gem here.
|
10
10
|
# Include everything needed to run rake, tests, features, etc.
|
11
11
|
group :development do
|
12
|
-
gem "shoulda", "~> 3.5"
|
13
|
-
gem "
|
14
|
-
gem "
|
15
|
-
gem "
|
16
|
-
gem "
|
17
|
-
gem
|
12
|
+
#gem "shoulda", "~> 3.5"
|
13
|
+
#gem "simplecov", "~> 0.8"
|
14
|
+
gem "jeweler", "~> 2.3"
|
15
|
+
gem "bundler", "~> 2.1"
|
16
|
+
gem "rspec", "~> 3.0"
|
17
|
+
gem 'pry', '~>0.10'
|
18
18
|
end
|
data/README.md
CHANGED
@@ -13,8 +13,8 @@ Won't work just yet:
|
|
13
13
|
gem install dirseq
|
14
14
|
```
|
15
15
|
Requires:
|
16
|
-
* samtools (tested with 0.1.19)
|
17
|
-
* bedtools (tested with 2.
|
16
|
+
* samtools (tested with 0.1.19 and 1.0+)
|
17
|
+
* bedtools (tested with 2.24.0) - old versions won't work.
|
18
18
|
* Ruby (tested with 2.1.1)
|
19
19
|
|
20
20
|
## Usage
|
@@ -32,8 +32,13 @@ $ dirseq -h
|
|
32
32
|
|
33
33
|
Optional parameters:
|
34
34
|
|
35
|
+
--forward-read-only consider only forward reads (i.e. read1) and ignore reverse reads. [default false]
|
35
36
|
--ignore-directions ignore directionality, give overall coverage [default: false i.e. differentiate between directions]
|
36
|
-
|
37
|
+
--measure-type TYPE what to count for each gene [options: count, coverage][default: coverage]
|
38
|
+
--accepted-feature-types TYPE
|
39
|
+
Print only features of these type(s) [default CDS]
|
40
|
+
--comment-fields Print elements from the comments in the GFF file [default ID]
|
41
|
+
|
37
42
|
Verbosity:
|
38
43
|
|
39
44
|
-q, --quiet Run quietly, set logging to ERROR level [default INFO]
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.4.0
|
data/bin/dirseq
CHANGED
@@ -4,17 +4,31 @@ require 'optparse'
|
|
4
4
|
require 'bio-logger'
|
5
5
|
require 'bio'
|
6
6
|
require 'bio-commandeer'
|
7
|
-
#require 'pry'
|
8
7
|
require 'set'
|
9
8
|
require 'tempfile'
|
10
9
|
|
11
10
|
SCRIPT_NAME = File.basename(__FILE__); LOG_NAME = SCRIPT_NAME.gsub('.rb','')
|
12
11
|
|
12
|
+
COVERAGE_COUNT_TYPE = 'coverage'
|
13
|
+
COUNT_COUNT_TYPE = 'count'
|
14
|
+
COUNT_TYPES = [
|
15
|
+
COUNT_COUNT_TYPE,
|
16
|
+
COVERAGE_COUNT_TYPE
|
17
|
+
]
|
18
|
+
|
13
19
|
# Parse command line options into the options hash
|
14
20
|
options = {
|
15
21
|
:ignore_directions => false,
|
16
22
|
:logger => 'stderr',
|
17
23
|
:log_level => 'info',
|
24
|
+
:count_type => COVERAGE_COUNT_TYPE,
|
25
|
+
:forward_read_only => false,
|
26
|
+
:accepted_feature_types => ['CDS'],
|
27
|
+
<<<<<<< HEAD
|
28
|
+
:comment_fields_to_print => ['ID'],
|
29
|
+
=======
|
30
|
+
:sam_filter_flags => "-F0x100 -F0x800",
|
31
|
+
>>>>>>> d6f450a... dirseq: Filter out non-primary and supplementary aligns.
|
18
32
|
}
|
19
33
|
o = OptionParser.new do |opts|
|
20
34
|
opts.banner = "
|
@@ -29,9 +43,27 @@ o = OptionParser.new do |opts|
|
|
29
43
|
options[:gff] = arg
|
30
44
|
end
|
31
45
|
opts.separator "\nOptional parameters:\n\n"
|
46
|
+
opts.on("--forward-read-only", "consider only forward reads (i.e. read1) and ignore reverse reads. [default #{options[:forward_read_only]}]") do
|
47
|
+
options[:forward_ready_only] = true
|
48
|
+
end
|
32
49
|
opts.on("--ignore-directions", "ignore directionality, give overall coverage [default: false i.e. differentiate between directions]") do |arg|
|
33
50
|
options[:ignore_directions] = true
|
34
51
|
end
|
52
|
+
opts.on("--measure-type TYPE", "what to count for each gene [options: #{COUNT_TYPES.join(', ')}][default: #{options[:count_type]}]") do |arg|
|
53
|
+
raise "Unexpected count type detected" if not COUNT_TYPES.include?(arg)
|
54
|
+
options[:count_type] = arg
|
55
|
+
end
|
56
|
+
opts.on("--accepted-feature-types TYPE", Array,
|
57
|
+
"Print only features of these type(s) [default #{options[:accepted_feature_types].join(',')}]") do |arg|
|
58
|
+
options[:accepted_feature_types] = Set.new(arg)
|
59
|
+
end
|
60
|
+
opts.on("--comment-fields", Array,
|
61
|
+
"Print elements from the comments in the GFF file [default #{options[:comment_fields_to_print].join(',')}]") do |arg|
|
62
|
+
options[:comment_fields_to_print] = arg
|
63
|
+
end
|
64
|
+
opts.on("--sam-filter-flags", "Apply these samtools filters [default: #{options[:sam_filter_flags]}]") do |arg|
|
65
|
+
options[:sam_filter_flags] = arg
|
66
|
+
end
|
35
67
|
|
36
68
|
# logger options
|
37
69
|
opts.separator "\nVerbosity:\n\n"
|
@@ -48,6 +80,11 @@ Bio::Log::CLI.logger(options[:logger]); Bio::Log::CLI.trace(options[:log_level])
|
|
48
80
|
|
49
81
|
gff_file = options[:gff]
|
50
82
|
bam_file = options[:bam]
|
83
|
+
accepted_feature_types = options[:accepted_feature_types]
|
84
|
+
|
85
|
+
if options[:count_type] != COVERAGE_COUNT_TYPE and options[:ignore_directions]
|
86
|
+
raise "ignore_directions + count_type != coverage is currently unsupported"
|
87
|
+
end
|
51
88
|
|
52
89
|
|
53
90
|
calculate_cov = lambda do |covs, num_covs|
|
@@ -77,14 +114,26 @@ get_covs = lambda do |cov_lines|
|
|
77
114
|
#96 #coverage
|
78
115
|
#0.0208333
|
79
116
|
feat = splits[0..8]
|
117
|
+
feature_type = feat[2]
|
118
|
+
if not accepted_feature_types.include?(feature_type)
|
119
|
+
log.debug "Skipping feature as it is of type #{feature_type}"
|
120
|
+
next
|
121
|
+
end
|
80
122
|
if feat != previous_feature
|
81
123
|
feature_to_covs[previous_feature] = calculate_cov.call(covs, num_covs) unless previous_feature.nil?
|
82
124
|
covs = []
|
83
125
|
num_covs = 0
|
84
126
|
end
|
85
|
-
|
86
|
-
|
87
|
-
|
127
|
+
if splits.length == 13 # -hist
|
128
|
+
num = splits[10].to_i
|
129
|
+
covs.push num*splits[9].to_i
|
130
|
+
num_covs += num
|
131
|
+
elsif splits.length == 10 # -count
|
132
|
+
covs.push splits[9].to_i
|
133
|
+
num_covs += 1
|
134
|
+
else
|
135
|
+
raise "Unexpected bedtools output line: #{line}"
|
136
|
+
end
|
88
137
|
previous_feature = feat
|
89
138
|
end
|
90
139
|
feature_to_covs[previous_feature] = calculate_cov.call(covs, num_covs)
|
@@ -94,13 +143,57 @@ end
|
|
94
143
|
|
95
144
|
# Remove the ##FASTA and afterwards from the GFF file as this makes bedtools <2.25 fail
|
96
145
|
# https://github.com/arq5x/bedtools2/issues/235#issuecomment-103776618
|
97
|
-
no_fasta_gff = Tempfile.new('dirseq')
|
98
|
-
Bio::Commandeer.run "sed '/^##FASTA$/,$d' #{gff_file.inspect} > #{no_fasta_gff.path}"
|
146
|
+
no_fasta_gff = Tempfile.new(['dirseq','.gff3'])
|
147
|
+
Bio::Commandeer.run "sed '/^##FASTA$/,$d' #{gff_file.inspect} > #{no_fasta_gff.path}", :log => log
|
99
148
|
gff_file = no_fasta_gff.path
|
100
149
|
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
# Find featureless contigs. Need to so that bedtools coverage -sorted does not complain
|
155
|
+
if not File.exists?("#{bam_file}.bai")
|
156
|
+
raise "Input bam file must be indexed, but the index file does not exist"
|
157
|
+
end
|
158
|
+
|
159
|
+
chromosome_file = Tempfile.new('bam_contigs')
|
160
|
+
log.info "Listing contigs in sorted order .."
|
161
|
+
cmd = "samtools idxstats #{bam_file.inspect} |cut -f1,2 |grep -v '^*' >#{chromosome_file.path.inspect}"
|
162
|
+
Bio::Commandeer.run(cmd, :log => log)
|
163
|
+
|
164
|
+
log.info "Finding featureless contigs"
|
165
|
+
cmd = "grep -v '^#' #{gff_file.inspect} |cut -f1 |sort |uniq |grep -vFw -f /dev/stdin #{chromosome_file.path.inspect} |cut -f1"
|
166
|
+
featureless_contigs = Bio::Commandeer.run(cmd, :log => log).lines.map(&:chomp).reject{ |ref| ref=='*' }
|
167
|
+
log.info "Found #{featureless_contigs.length} featureless contigs"
|
168
|
+
|
169
|
+
# Sort the GFF
|
170
|
+
dummy_features = featureless_contigs.collect do |ref|
|
171
|
+
[ref,
|
172
|
+
'dirseq',
|
173
|
+
'misc_RNA',
|
174
|
+
'1',
|
175
|
+
'2',
|
176
|
+
'.',
|
177
|
+
'+',
|
178
|
+
'0',
|
179
|
+
"ID=#{ref}_dummy_feature"].join("\t")
|
180
|
+
end
|
181
|
+
sorted_gff_file_f = Tempfile.new(['sorted_gff','.gff3'])
|
182
|
+
sorted_gff_file = sorted_gff_file_f.path
|
183
|
+
Tempfile.open(["extra_features",'.gff']) do |ef|
|
184
|
+
ef.puts dummy_features.join("\n")
|
185
|
+
ef.close
|
186
|
+
|
187
|
+
cmd = "cat #{ef.path} #{gff_file.inspect} |bedtools sort -i /dev/stdin -faidx #{chromosome_file.path.inspect} >#{sorted_gff_file.inspect}"
|
188
|
+
log.info "Running bedtools sort"
|
189
|
+
Bio::Commandeer.run(cmd, :log => log)
|
190
|
+
end
|
191
|
+
|
192
|
+
|
193
|
+
|
101
194
|
covs_fwd = nil
|
102
195
|
if options[:ignore_directions]
|
103
|
-
cmd1 = "
|
196
|
+
cmd1 = "samtools view -u #{options[:sam_filter_flags]} #{bam_file.inspect} |bedtools coverage -b /dev/stdin -a #{gff_file.inspect} -hist"
|
104
197
|
cov_lines_fwd = Bio::Commandeer.run cmd1, :log => log
|
105
198
|
log.info "Parsing coverage profiles"
|
106
199
|
covs_fwd = get_covs.call(cov_lines_fwd)
|
@@ -109,10 +202,14 @@ else
|
|
109
202
|
# fwd read 1
|
110
203
|
read1_flag = '-F128' #account for read1 in pair, as well as single reads mapping
|
111
204
|
read2_flag = '-f128'
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
205
|
+
bedtools_type_flag = '-hist'
|
206
|
+
if options[:count_type] == COUNT_COUNT_TYPE
|
207
|
+
bedtools_type_flag = '-counts'
|
208
|
+
end
|
209
|
+
cmdf1 = "samtools view #{options[:sam_filter_flags]} -u #{read1_flag} #{bam_file.inspect} |bedtools coverage -sorted -g #{chromosome_file.path.inspect} -b /dev/stdin -a #{sorted_gff_file.inspect} -s #{bedtools_type_flag}"
|
210
|
+
cmdf2 = "samtools view #{options[:sam_filter_flags]} -u #{read2_flag} #{bam_file.inspect} |bedtools coverage -sorted -g #{chromosome_file.path.inspect} -b /dev/stdin -a #{sorted_gff_file.inspect} -s #{bedtools_type_flag}"
|
211
|
+
cmdr1 = "samtools view #{options[:sam_filter_flags]} -u #{read1_flag} #{bam_file.inspect} |bedtools coverage -sorted -g #{chromosome_file.path.inspect} -b /dev/stdin -a #{sorted_gff_file.inspect} -S #{bedtools_type_flag}"
|
212
|
+
cmdr2 = "samtools view #{options[:sam_filter_flags]} -u #{read2_flag} #{bam_file.inspect} |bedtools coverage -sorted -g #{chromosome_file.path.inspect} -b /dev/stdin -a #{sorted_gff_file.inspect} -S #{bedtools_type_flag}"
|
116
213
|
|
117
214
|
command_to_parsed = lambda do |cmds, name|
|
118
215
|
covs_lines_initial = cmds.collect do |cmd|
|
@@ -122,17 +219,24 @@ else
|
|
122
219
|
log.info "Parsing #{name}"
|
123
220
|
get_covs.call(lines)
|
124
221
|
end
|
125
|
-
#binding.pry
|
126
222
|
covs = covs_initial[0]
|
127
|
-
covs_initial
|
128
|
-
|
223
|
+
if covs_initial.length > 1
|
224
|
+
covs_initial[1].each do |cov_key, cov|
|
225
|
+
covs[cov_key] += cov
|
226
|
+
end
|
129
227
|
end
|
130
228
|
covs #'return' from lambda
|
131
229
|
end
|
132
230
|
|
133
231
|
# Agreeing reads (those whose template are fwd along the reference sequence) are either first and fwd, or second and rev
|
134
|
-
|
135
|
-
|
232
|
+
commands_fwd = [cmdf1,cmdr2]
|
233
|
+
commands_rev = [cmdf2,cmdr1]
|
234
|
+
if options[:forward_ready_only]
|
235
|
+
commands_fwd = [cmdf1]
|
236
|
+
commands_rev = [cmdr1]
|
237
|
+
end
|
238
|
+
covs_fwd = command_to_parsed.call(commands_fwd, 'reads with same direction as their reference')
|
239
|
+
covs_rev = command_to_parsed.call(commands_rev, 'reads with opposing direction as their reference')
|
136
240
|
end
|
137
241
|
|
138
242
|
headers = [
|
@@ -144,11 +248,19 @@ headers = [
|
|
144
248
|
]
|
145
249
|
if options[:ignore_directions]
|
146
250
|
headers.push 'average_coverage'
|
147
|
-
|
251
|
+
elsif options[:count_type] == COVERAGE_COUNT_TYPE
|
148
252
|
headers.push 'forward_average_coverage'
|
149
253
|
headers.push 'reverse_average_coverage'
|
254
|
+
elsif options[:count_type] == COUNT_COUNT_TYPE
|
255
|
+
headers.push 'forward_read_count'
|
256
|
+
headers.push 'reverse_read_count'
|
257
|
+
else
|
258
|
+
raise
|
150
259
|
end
|
151
260
|
headers.push 'annotation'
|
261
|
+
options[:comment_fields_to_print].each do |field|
|
262
|
+
headers.push field
|
263
|
+
end
|
152
264
|
puts headers.join("\t")
|
153
265
|
|
154
266
|
covs_fwd.each do |feature, cov_fwd|
|
@@ -171,5 +283,13 @@ covs_fwd.each do |feature, cov_fwd|
|
|
171
283
|
]
|
172
284
|
to_print.push cov_rev unless options[:ignore_directions]
|
173
285
|
to_print.push product
|
286
|
+
options[:comment_fields_to_print].each do |field|
|
287
|
+
answer1 = record.attributes.select{|a| a[0] == field}
|
288
|
+
if answer1.empty?
|
289
|
+
to_print.push ''
|
290
|
+
else
|
291
|
+
to_print.push answer1[0][1]
|
292
|
+
end
|
293
|
+
end
|
174
294
|
puts to_print.join("\t")
|
175
295
|
end
|
Binary file
|
@@ -0,0 +1,3 @@
|
|
1
|
+
##gff-version 3
|
2
|
+
##sequence-region contig_100 1 42207
|
3
|
+
contig_100 Prodigal_v2.60 CDS 2 127 0.5 + 0 ID=PROKKA_00001;eC_number=2.1.1.-;gene=ycgJ_1;inference=ab initio prediction:Prodigal:2.60,similar to AA sequence:UniProtKB:O31474;locus_tag=PROKKA_00001;product=putative methyltransferase YcgJ
|
data/spec/script_spec.rb
CHANGED
@@ -6,9 +6,9 @@ describe 'script' do
|
|
6
6
|
|
7
7
|
it "should regular mode" do
|
8
8
|
answer = %w(
|
9
|
-
contig type start end strand forward_average_coverage reverse_average_coverage annotation
|
9
|
+
contig type start end strand forward_average_coverage reverse_average_coverage annotation ID
|
10
10
|
).join("\t")+"\n"+%w(
|
11
|
-
contig_100 CDS 2 127 + 0.0 1.1428571428571428 unannotated
|
11
|
+
contig_100 CDS 2 127 + 0.0 1.1428571428571428 unannotated 40_1
|
12
12
|
).join("\t")+"\n"
|
13
13
|
|
14
14
|
found = Bio::Commandeer.run "#{path_to_script} --bam #{data_dir}/eg.bam --gff #{data_dir}/eg.gff -q"
|
@@ -20,9 +20,9 @@ describe 'script' do
|
|
20
20
|
found = Bio::Commandeer.run "#{path_to_script} --bam #{data_dir}/eg.bam --gff #{data_dir}/eg.gff -q --ignore-direction"
|
21
21
|
|
22
22
|
answer = %w(
|
23
|
-
contig type start end strand average_coverage annotation
|
23
|
+
contig type start end strand average_coverage annotation ID
|
24
24
|
).join("\t")+"\n"+%w(
|
25
|
-
contig_100 CDS 2 127 + 1.1428571428571428 unannotated
|
25
|
+
contig_100 CDS 2 127 + 1.1428571428571428 unannotated 40_1
|
26
26
|
).join("\t")+"\n"
|
27
27
|
|
28
28
|
found.should == answer
|
@@ -30,13 +30,49 @@ describe 'script' do
|
|
30
30
|
|
31
31
|
it 'should not fail when the GFF has a FASTA section' do
|
32
32
|
answer = %w(
|
33
|
-
contig type start end strand forward_average_coverage reverse_average_coverage annotation
|
33
|
+
contig type start end strand forward_average_coverage reverse_average_coverage annotation ID
|
34
34
|
).join("\t")+"\n"+%w(
|
35
|
-
contig_100 CDS 2 127 + 0.0 1.1428571428571428 unannotated
|
35
|
+
contig_100 CDS 2 127 + 0.0 1.1428571428571428 unannotated 40_1
|
36
36
|
).join("\t")+"\n"
|
37
37
|
|
38
38
|
found = Bio::Commandeer.run "#{path_to_script} --bam #{data_dir}/eg.bam --gff #{data_dir}/eg_with_fasta.gff -q"
|
39
39
|
|
40
40
|
found.should == answer
|
41
41
|
end
|
42
|
+
|
43
|
+
it 'should print annotation out properly' do
|
44
|
+
answer = %w(
|
45
|
+
contig type start end strand forward_average_coverage reverse_average_coverage annotation ID
|
46
|
+
).join("\t")+"\n"+%w(
|
47
|
+
contig_100 CDS 2 127 + 0.0 1.1428571428571428 putative
|
48
|
+
).join("\t")+" methyltransferase YcgJ PROKKA_00001\n"
|
49
|
+
|
50
|
+
found = Bio::Commandeer.run "#{path_to_script} --bam #{data_dir}/eg.bam --gff #{data_dir}/realer.gff -q"
|
51
|
+
|
52
|
+
found.should == answer
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'should print counts correctly' do
|
56
|
+
answer = %w(
|
57
|
+
contig type start end strand forward_read_count reverse_read_count annotation ID
|
58
|
+
).join("\t")+"\n"+%w(
|
59
|
+
contig_100 CDS 2 127 + 0.0 2.0 putative
|
60
|
+
).join("\t")+" methyltransferase YcgJ PROKKA_00001\n"
|
61
|
+
|
62
|
+
found = Bio::Commandeer.run "#{path_to_script} --bam #{data_dir}/eg.bam --gff #{data_dir}/realer.gff -q --measure-type count"
|
63
|
+
|
64
|
+
found.should == answer
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'should count only the forward read when asked' do
|
68
|
+
answer = %w(
|
69
|
+
contig type start end strand forward_read_count reverse_read_count annotation ID
|
70
|
+
).join("\t")+"\n"+%w(
|
71
|
+
contig_100 CDS 2 127 + 0.0 1.0 putative
|
72
|
+
).join("\t")+" methyltransferase YcgJ PROKKA_00001\n"
|
73
|
+
|
74
|
+
found = Bio::Commandeer.run "#{path_to_script} --bam #{data_dir}/eg.bam --gff #{data_dir}/realer.gff -q --measure-type count --forward-read-only"
|
75
|
+
|
76
|
+
found.should == answer
|
77
|
+
end
|
42
78
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dirseq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben J. Woodcroft
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bio-commandeer
|
@@ -42,106 +42,78 @@ dependencies:
|
|
42
42
|
name: bio
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 1.4.2
|
48
45
|
- - "~>"
|
49
46
|
- !ruby/object:Gem::Version
|
50
47
|
version: '1.4'
|
51
|
-
type: :runtime
|
52
|
-
prerelease: false
|
53
|
-
version_requirements: !ruby/object:Gem::Requirement
|
54
|
-
requirements:
|
55
48
|
- - ">="
|
56
49
|
- !ruby/object:Gem::Version
|
57
50
|
version: 1.4.2
|
58
|
-
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: '1.4'
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: shoulda
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - "~>"
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '3.5'
|
68
|
-
type: :development
|
51
|
+
type: :runtime
|
69
52
|
prerelease: false
|
70
53
|
version_requirements: !ruby/object:Gem::Requirement
|
71
54
|
requirements:
|
72
55
|
- - "~>"
|
73
56
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
75
|
-
-
|
76
|
-
name: rdoc
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
78
|
-
requirements:
|
79
|
-
- - "~>"
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '3.12'
|
82
|
-
type: :development
|
83
|
-
prerelease: false
|
84
|
-
version_requirements: !ruby/object:Gem::Requirement
|
85
|
-
requirements:
|
86
|
-
- - "~>"
|
57
|
+
version: '1.4'
|
58
|
+
- - ">="
|
87
59
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
60
|
+
version: 1.4.2
|
89
61
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
62
|
+
name: jeweler
|
91
63
|
requirement: !ruby/object:Gem::Requirement
|
92
64
|
requirements:
|
93
65
|
- - "~>"
|
94
66
|
- !ruby/object:Gem::Version
|
95
|
-
version: '
|
67
|
+
version: '2.3'
|
96
68
|
type: :development
|
97
69
|
prerelease: false
|
98
70
|
version_requirements: !ruby/object:Gem::Requirement
|
99
71
|
requirements:
|
100
72
|
- - "~>"
|
101
73
|
- !ruby/object:Gem::Version
|
102
|
-
version: '
|
74
|
+
version: '2.3'
|
103
75
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
76
|
+
name: bundler
|
105
77
|
requirement: !ruby/object:Gem::Requirement
|
106
78
|
requirements:
|
107
79
|
- - "~>"
|
108
80
|
- !ruby/object:Gem::Version
|
109
|
-
version: '2.
|
81
|
+
version: '2.1'
|
110
82
|
type: :development
|
111
83
|
prerelease: false
|
112
84
|
version_requirements: !ruby/object:Gem::Requirement
|
113
85
|
requirements:
|
114
86
|
- - "~>"
|
115
87
|
- !ruby/object:Gem::Version
|
116
|
-
version: '2.
|
88
|
+
version: '2.1'
|
117
89
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
90
|
+
name: rspec
|
119
91
|
requirement: !ruby/object:Gem::Requirement
|
120
92
|
requirements:
|
121
93
|
- - "~>"
|
122
94
|
- !ruby/object:Gem::Version
|
123
|
-
version: '
|
95
|
+
version: '3.0'
|
124
96
|
type: :development
|
125
97
|
prerelease: false
|
126
98
|
version_requirements: !ruby/object:Gem::Requirement
|
127
99
|
requirements:
|
128
100
|
- - "~>"
|
129
101
|
- !ruby/object:Gem::Version
|
130
|
-
version: '
|
102
|
+
version: '3.0'
|
131
103
|
- !ruby/object:Gem::Dependency
|
132
|
-
name:
|
104
|
+
name: pry
|
133
105
|
requirement: !ruby/object:Gem::Requirement
|
134
106
|
requirements:
|
135
107
|
- - "~>"
|
136
108
|
- !ruby/object:Gem::Version
|
137
|
-
version: '
|
109
|
+
version: '0.10'
|
138
110
|
type: :development
|
139
111
|
prerelease: false
|
140
112
|
version_requirements: !ruby/object:Gem::Requirement
|
141
113
|
requirements:
|
142
114
|
- - "~>"
|
143
115
|
- !ruby/object:Gem::Version
|
144
|
-
version: '
|
116
|
+
version: '0.10'
|
145
117
|
description: FPKG (gene expression metric) calculator for metatranscriptomics
|
146
118
|
email: donttrustben near gmail.com
|
147
119
|
executables:
|
@@ -162,15 +134,17 @@ files:
|
|
162
134
|
- lib/bio-rnaseq_transcription_directionality.rb
|
163
135
|
- lib/bio-rnaseq_transcription_directionality/rnaseq_transcription_directionality.rb
|
164
136
|
- spec/data/eg.bam
|
137
|
+
- spec/data/eg.bam.bai
|
165
138
|
- spec/data/eg.gff
|
166
139
|
- spec/data/eg_with_fasta.gff
|
140
|
+
- spec/data/realer.gff
|
167
141
|
- spec/script_spec.rb
|
168
142
|
- spec/spec_helper.rb
|
169
143
|
homepage: http://github.com/wwood/dirseq
|
170
144
|
licenses:
|
171
145
|
- MIT
|
172
146
|
metadata: {}
|
173
|
-
post_install_message:
|
147
|
+
post_install_message:
|
174
148
|
rdoc_options: []
|
175
149
|
require_paths:
|
176
150
|
- lib
|
@@ -185,9 +159,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
185
159
|
- !ruby/object:Gem::Version
|
186
160
|
version: '0'
|
187
161
|
requirements: []
|
188
|
-
|
189
|
-
|
190
|
-
signing_key:
|
162
|
+
rubygems_version: 3.1.2
|
163
|
+
signing_key:
|
191
164
|
specification_version: 4
|
192
165
|
summary: FPKG calculator for metatranscriptomics
|
193
166
|
test_files: []
|