dirseq 0.0.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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: []