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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 84e91d3823af5395053c2104197b68223d3e4d96
4
- data.tar.gz: 7488e7557cd4005dcfc8b6f3c504d4e250434e5b
2
+ SHA256:
3
+ metadata.gz: 9ff1307d262c875afd01391fccb60007735127dda4fa1303c17c246fbcc1262c
4
+ data.tar.gz: 0e040b3e9688aa214da2d2bffc1480b207f8fdc836c75d5bbd9de9199fb67394
5
5
  SHA512:
6
- metadata.gz: f21a59e7fc5bf7e9cf77721ed50935a85a3123cb4fcc74a0a556666721d13449de00c93464e3defb8f3552f1872b7c2df49ea2168810354dd89946eaa5035205
7
- data.tar.gz: e202cb7e0f00eb15b76cb91ccafb55b00fbe1269b617088f8d601b7f94d55b56fd900ecef578584fbaebacebaffe3c5e999e56a069b9a5c672921435e9bfb7b7
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 "rdoc", "~> 3.12"
14
- gem "simplecov", "~> 0.8"
15
- gem "jeweler", "~> 2.0"
16
- gem "bundler", "~> 1.6"
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"
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.20.1)
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.2
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
- num = splits[10].to_i
86
- covs.push num*splits[9].to_i
87
- num_covs += num
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 = "bedtools coverage -abam #{bam_file.inspect} -b #{gff_file.inspect} -hist"
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
- cmdf1 = "samtools view -u #{read1_flag} #{bam_file.inspect} |bedtools coverage -abam /dev/stdin -b #{gff_file.inspect} -hist -s"
113
- cmdf2 = "samtools view -u #{read2_flag} #{bam_file.inspect} |bedtools coverage -abam /dev/stdin -b #{gff_file.inspect} -hist -s"
114
- cmdr1 = "samtools view -u #{read1_flag} #{bam_file.inspect} |bedtools coverage -abam /dev/stdin -b #{gff_file.inspect} -hist -S"
115
- cmdr2 = "samtools view -u #{read2_flag} #{bam_file.inspect} |bedtools coverage -abam /dev/stdin -b #{gff_file.inspect} -hist -S"
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[1].each do |cov_key, cov|
128
- covs[cov_key] += cov
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
- covs_fwd = command_to_parsed.call([cmdf1,cmdr2], 'reads with same direction as their reference')
135
- covs_rev = command_to_parsed.call([cmdf2,cmdr1], 'reads with opposing direction as their reference')
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
- else
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
@@ -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.2
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: 2015-06-09 00:00:00.000000000 Z
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: '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
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: '3.12'
60
+ version: 1.4.2
89
61
  - !ruby/object:Gem::Dependency
90
- name: simplecov
62
+ name: jeweler
91
63
  requirement: !ruby/object:Gem::Requirement
92
64
  requirements:
93
65
  - - "~>"
94
66
  - !ruby/object:Gem::Version
95
- version: '0.8'
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: '0.8'
74
+ version: '2.3'
103
75
  - !ruby/object:Gem::Dependency
104
- name: jeweler
76
+ name: bundler
105
77
  requirement: !ruby/object:Gem::Requirement
106
78
  requirements:
107
79
  - - "~>"
108
80
  - !ruby/object:Gem::Version
109
- version: '2.0'
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.0'
88
+ version: '2.1'
117
89
  - !ruby/object:Gem::Dependency
118
- name: bundler
90
+ name: rspec
119
91
  requirement: !ruby/object:Gem::Requirement
120
92
  requirements:
121
93
  - - "~>"
122
94
  - !ruby/object:Gem::Version
123
- version: '1.6'
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: '1.6'
102
+ version: '3.0'
131
103
  - !ruby/object:Gem::Dependency
132
- name: rspec
104
+ name: pry
133
105
  requirement: !ruby/object:Gem::Requirement
134
106
  requirements:
135
107
  - - "~>"
136
108
  - !ruby/object:Gem::Version
137
- version: '2.99'
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: '2.99'
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
- rubyforge_project:
189
- rubygems_version: 2.2.2
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: []