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