transrate 0.0.12 → 0.0.13

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
2
  SHA1:
3
- metadata.gz: f5f7d2d65376b69682c5e29c318ad35f43a5ea9a
4
- data.tar.gz: 794238eafb17705f68d82296e53ffa6128bf7141
3
+ metadata.gz: 8e95b284158f18e48f07d5d0dbfffadab014f4f9
4
+ data.tar.gz: 7bbaa794b374538e2fc3d422d9256e0e501e14ac
5
5
  SHA512:
6
- metadata.gz: 101280a09d847f28165d0a4394bb849af5e339bf782a25b7e09ad45e1fbdd694f441809b09f078848c69ff0607bedc1aff91e87c50839cd0be3a997038f381a8
7
- data.tar.gz: 1cf8a710b6e7d83139eabd4b8d820a056de19715307b822c3096458cefdec89f195d0727a8b49ccc5ac648bba9e1e8ec007092abcc94796e5a3f6b3ba4c6df99
6
+ metadata.gz: 71163763618dc38fed73de88e677f3db6d375e28f31d33f4c03bcbb4aece341ee9e849bf5e6654967a9635cd2b9225ca9025645f8cb9bfff1f3e313e2e44e23c
7
+ data.tar.gz: b6c297fa15496cc78195e11780cecac0a75dbfce971358c5814b3dc0a6c2e9ee6766556b8a32ac303d487c12967afbb63551d2aa78b543bdfbb19a77d4459ad4
data/.gitignore CHANGED
@@ -12,6 +12,7 @@ spec/reports
12
12
  test/tmp
13
13
  test/version_tmp
14
14
  tmp
15
+ *~
15
16
 
16
17
  # YARD artifacts
17
18
  .yardoc
data/bin/transrate CHANGED
@@ -88,7 +88,9 @@ end
88
88
  if opts.reference
89
89
  puts "\nCalculating comparative metrics..."
90
90
  t0 = Time.now
91
- comparative_results = transrater.comparative_metrics.comp_stats
91
+ comparative_metrics = transrater.comparative_metrics
92
+ p comparative_metrics.comp_stats
93
+ comparative_results = comparative_metrics.comp_stats
92
94
 
93
95
  if comparative_results
94
96
  puts "\n"
data/lib/transrate.rb CHANGED
@@ -11,6 +11,8 @@ require 'transrate/metric'
11
11
  require 'transrate/dimension_reduce'
12
12
  require 'transrate/express'
13
13
 
14
+ # Transrate is a comprehensive transcriptome assembly
15
+ # quality assessment tool.
14
16
  module Transrate
15
17
 
16
18
  end # Transrate
@@ -2,9 +2,28 @@ require 'bio'
2
2
  require 'bettersam'
3
3
  require 'csv'
4
4
  require 'forwardable'
5
+ require 'inline'
5
6
 
6
7
  module Transrate
7
8
 
9
+ # Container for a transcriptome assembly and its associated
10
+ # metadata.
11
+ #
12
+ # @!attribute [rw] ublast_db
13
+ # @return [String] path to a ublast database generated from this assembly
14
+ # @!attribute [rw] orss_ublast_db
15
+ # @return [String] path to a ublast database generated from the orfs
16
+ # extracted from this assembly
17
+ # @!attribute [r] assembly
18
+ # @return [Array<Bio::FastaFormat>] the assembly
19
+ # @!attribute [r] has_run
20
+ # @return [BOOL] whether the basic metrics have been generated
21
+ # @!attribute [w] n_bases
22
+ # @return [Integer] the number of bases in the assembly
23
+ # @!attribute [rw] file
24
+ # @return [String] path to the assembly FASTA file
25
+ # @!attribute [r] n50
26
+ # @return [Integer] assembly n50
8
27
  class Assembly
9
28
 
10
29
  include Enumerable
@@ -13,22 +32,15 @@ module Transrate
13
32
 
14
33
  attr_accessor :ublast_db
15
34
  attr_accessor :orfs_ublast_db
16
- attr_accessor :protein
17
35
  attr_reader :assembly
18
36
  attr_reader :has_run
19
-
20
- # number of bases in the assembly
21
37
  attr_writer :n_bases
22
-
23
- # assembly filename
24
38
  attr_accessor :file
25
-
26
- # assembly n50
27
39
  attr_reader :n50
28
40
 
29
- # Return a new Assembly.
41
+ # Create a new Assembly.
30
42
  #
31
- # - +:file+ - path to the assembly FASTA file
43
+ # @param file [String] path to the assembly FASTA file
32
44
  def initialize file
33
45
  @file = file
34
46
  @assembly = []
@@ -39,13 +51,20 @@ module Transrate
39
51
  end
40
52
  end
41
53
 
42
- # Return a new Assembly object by loading sequences
43
- # from the FASTA-format +:file+
44
- def self.stats_from20_fasta file
54
+ # Return basic statistics about the assembly in
55
+ # the specified FASTA file
56
+ #
57
+ # @param file [String] path to assebmly FASTA file
58
+ #
59
+ # @return [Hash] basic statistics about the assembly
60
+ def self.stats_from_fasta file
45
61
  a = Assembly.new file
46
62
  a.basic_stats
47
63
  end
48
64
 
65
+ # Generate and store the basic statistics for this assembly
66
+ #
67
+ # @param threads [Integer] number of threads to use
49
68
  def run threads=8
50
69
  stats = self.basic_stats threads
51
70
  stats.each_pair do |key, value|
@@ -62,7 +81,10 @@ module Transrate
62
81
  # calculated in parallel by splitting the assembly into
63
82
  # equal-sized bins and calling Assembly#basic_bin_stat on each
64
83
  # bin in a separate thread.
65
-
84
+ #
85
+ # @param threads [Integer] number of threads to use
86
+ #
87
+ # @return [Hash] basic statistics about the assembly
66
88
  def basic_stats threads=8
67
89
 
68
90
  # create a work queue to process contigs in parallel
@@ -185,14 +207,14 @@ module Transrate
185
207
  mean = cumulative_length / @assembly.size
186
208
  # ns = Hash[x.map { |n| "N#{n}" }.zip(res)]
187
209
  {
188
- "n_seqs" => bin.size,
189
- "smallest" => bin.first.length,
190
- "largest" => bin.last.length,
191
- "n_bases" => n_bases,
192
- "mean_len" => mean,
193
- "n_1k" => n1k,
194
- "n_10k" => n10k,
195
- "orf_percent" => 300 * orf_length_sum / (@assembly.size * mean)
210
+ 'n_seqs' => bin.size,
211
+ 'smallest' => bin.first.length,
212
+ 'largest' => bin.last.length,
213
+ 'n_bases' => n_bases,
214
+ 'mean_len' => mean,
215
+ 'n_1k' => n1k,
216
+ 'n_10k' => n10k,
217
+ 'orf_percent' => 300 * orf_length_sum / (@assembly.size * mean)
196
218
  }
197
219
  # }.merge ns
198
220
 
@@ -223,17 +245,59 @@ module Transrate
223
245
 
224
246
  end # merge_basic_stats
225
247
 
248
+ inline do |builder|
249
+
250
+ builder.c <<SRC
251
+ static
252
+ void
253
+ longest_orf(VALUE _s) {
254
+ int i,sl,longest=0;
255
+ int len[6];
256
+ char * c_str;
257
+
258
+ sl = RSTRING_LEN(_s);
259
+ c_str = StringValueCStr(_s);
260
+ for (i=0;i<6;i++) {
261
+ len[i]=0;
262
+ }
263
+ for (i=0;i<sl-2;i++) {
264
+ if (c_str[i]=='T' &&
265
+ ((c_str[i+1]=='A' && c_str[i+2]=='G') ||
266
+ (c_str[i+1]=='A' && c_str[i+2]=='A') ||
267
+ (c_str[i+1]=='G' && c_str[i+2]=='A'))) {
268
+ if (len[i%3] > longest) {
269
+ longest = len[i%3];
270
+ }
271
+ len[i%3]=0;
272
+ } else {
273
+ len[i%3]++;
274
+ }
275
+ if (c_str[i+2]=='A' &&
276
+ ((c_str[i]=='C' && c_str[i+1]=='T') ||
277
+ (c_str[i]=='T' && c_str[i+1]=='T') ||
278
+ (c_str[i]=='T' && c_str[i+1]=='C'))) {
279
+ if (len[3+i%3] > longest) {
280
+ longest = len[3+i%3];
281
+ }
282
+ len[3+i%3]=0;
283
+ } else {
284
+ len[3+i%3]++;
285
+ }
286
+ }
287
+ if (len[i%3] > longest) {
288
+ longest = len[i%3];
289
+ }
290
+ if (len[3+i%3] > longest) {
291
+ longest = len[3+i%3];
292
+ }
293
+ return INT2NUM(longest);
294
+ }
295
+ SRC
296
+ end
297
+
226
298
  # finds longest orf in a sequence
227
299
  def orf_length sequence
228
- longest=0
229
- (1..6).each do |frame|
230
- translated = Bio::Sequence::NA.new(sequence).translate(frame)
231
- translated.split('*').each do |orf|
232
- if orf.length > longest
233
- longest=orf.length
234
- end
235
- end
236
- end
300
+ longest = longest_orf(sequence)
237
301
  return longest
238
302
  end
239
303
 
@@ -250,7 +314,7 @@ module Transrate
250
314
  def print_stats
251
315
  self.basic_stats.map do |k, v|
252
316
  "#{k}#{" " * (20 - (k.length + v.to_i.to_s.length))}#{v.to_i}"
253
- end.join("\n")
317
+ end.join('\n')
254
318
  end
255
319
 
256
320
  end # Assembly
@@ -7,7 +7,6 @@ module Transrate
7
7
  attr_reader :rbh_per_contig
8
8
  attr_reader :rbh_per_reference
9
9
  attr_reader :reciprocal_hits
10
- attr_reader :reference_coverage
11
10
  attr_reader :has_run
12
11
 
13
12
  def initialize assembly, reference
@@ -17,12 +16,12 @@ module Transrate
17
16
  end
18
17
 
19
18
  def run
20
- rbu = self.reciprocal_best_ublast
21
- @ortholog_hit_ratio = self.ortholog_hit_ratio rbu
22
- @collapse_factor = self.collapse_factor @ra.r2l_hits
19
+ rbu = reciprocal_best_ublast
20
+ @ortholog_hit_ratio = ortholog_hit_ratio rbu
21
+ @collapse_factor = collapse_factor @ra.r2l_hits
23
22
  @reciprocal_hits = rbu.size
24
23
  @rbh_per_reference = @reciprocal_hits.to_f / @reference.size.to_f
25
- @reference_coverage = @rbh_per_reference * @collapse_factor
24
+ @reference_coverage = @ortholog_hit_ratio * @rbh_per_reference
26
25
  @rbh_per_contig = @reciprocal_hits.to_f / @assembly.assembly.size.to_f
27
26
  @has_run = true
28
27
  end
@@ -32,6 +31,7 @@ module Transrate
32
31
  :reciprocal_hits => @reciprocal_hits,
33
32
  :rbh_per_contig => @rbh_per_contig,
34
33
  :rbh_per_reference => @rbh_per_reference,
34
+ :reference_coverage => @reference_coverage,
35
35
  :ortholog_hit_ratio => @ortholog_hit_ratio,
36
36
  :collapse_factor => @collapse_factor
37
37
  }
@@ -43,8 +43,9 @@ module Transrate
43
43
  end
44
44
 
45
45
  def ortholog_hit_ratio rbu=nil
46
- return @ortholog_hit_ratio unless @ortholog_hit_ratio.nil?
47
- rbu.reduce(0.0){ |sum, hit| sum += hit.last.tcov.to_f } / rbu.size
46
+ return @ortholog_hit_ratio unless @ortholog_hit_ratio.nil?
47
+ divisor = (rbu.size * 100).to_f
48
+ rbu.reduce(0){ |sum, hit| sum += hit.last.target_coverage } / divisor
48
49
  end
49
50
 
50
51
  def collapse_factor hits=nil
@@ -0,0 +1,16 @@
1
+ require 'logger'
2
+
3
+ module Transrate
4
+
5
+ class Log < Logger
6
+
7
+ def dump_process?(status, output, msg)
8
+ unless status.exitstatus == 0
9
+ fatal(msg)
10
+ fatal(output)
11
+ end
12
+ end
13
+
14
+ end # Log
15
+
16
+ end # Transrate
@@ -6,7 +6,7 @@ module Transrate
6
6
  # gap opens, q. start, q. end, s. start, s. end, evalue, bit score
7
7
  attr_accessor :query, :target, :id, :alnlen, :mismatches
8
8
  attr_accessor :gaps, :qstart, :qend, :tstart, :tend, :evalue
9
- attr_accessor :bitscore, :tcov
9
+ attr_accessor :bitscore, :target_coverage
10
10
 
11
11
  def initialize(list)
12
12
  @query = list[0].scan(/[^|]+/).first.split.first # extract only identifier
@@ -21,7 +21,7 @@ module Transrate
21
21
  @tend = list[9]
22
22
  @evalue = list[10]
23
23
  @bitscore = list[11]
24
- @tcov = list[12]
24
+ @target_coverage = list[12].to_i
25
25
  end
26
26
 
27
27
  def to_s
@@ -59,16 +59,28 @@ module Transrate
59
59
  next if best.nil?
60
60
  tbest = @r2l_hits[best.target]
61
61
  next if tbest.nil?
62
- @results[query] = best if query == tbest.target
62
+ if query == tbest.target
63
+ @results[query] = best
64
+ end
63
65
  end
64
66
  end
65
67
 
68
+ # what is this method trying to do? :/
66
69
  def results_to_hits results
67
70
  hits = {}
71
+ puts "<results_to_hits> results.size = #{results.size}"
68
72
  results.each do |hit|
69
73
  if hits.has_key? hit.query
70
74
  old_hit = hits[hit.query]
71
75
  old_eval, old_bits = old_hit.evalue, old_hit.bitscore
76
+ if hit.bitscore == nil
77
+ p hit
78
+ abort "oh noes"
79
+ end
80
+ if old_bits == nil
81
+ p old_hit
82
+ raise 'hell'
83
+ end
72
84
  if hit.bitscore > old_bits
73
85
  hits[hit.query] = hit
74
86
  elsif hit.bitscore == old_bits && hit.evalue < old_eval
@@ -1,11 +1,27 @@
1
1
  module Transrate
2
2
 
3
+ # A transrater runs all types of metrics on an assembly.
4
+ #
5
+ # @!attribute [r] assembly
6
+ # @return [Assembly, String] an Assembly or the path to an assembly
7
+ # @!attribute [r] read_metrics
8
+ # @return [Hash] the read metrics if they have been calculated
9
+ # @!attribute [r] comparative_metrics
10
+ # @return [hash] the comparative metrics if they have been calculated
3
11
  class Transrater
4
12
 
5
13
  attr_reader :assembly
6
14
  attr_reader :read_metrics
7
- attr_reader :comparative_metrics
8
15
 
16
+ # A new Transrater
17
+ #
18
+ # @param assembly [Assembly, String] the Assembly or path to the FASTA
19
+ # @param reference [Assembly, String] the reference Assembly or
20
+ # path to the FASTA
21
+ # @param left [String] path to the left reads
22
+ # @param right [String] path to the right reads
23
+ # @param insertsize [Integer] mean insert size of the read pairs
24
+ # @param insertsd [Integer] standard deviation of the read pair insert size
9
25
  def initialize assembly, reference, left=nil, right=nil, insertsize=nil, insertsd=nil
10
26
  @assembly = assembly.is_a?(Assembly) ? assembly : Assembly.new(assembly)
11
27
  @reference = reference.is_a?(Assembly) ? reference : Assembly.new(reference)
@@ -13,6 +29,12 @@ module Transrate
13
29
  @comparative_metrics = ComparativeMetrics.new(@assembly, @reference)
14
30
  end
15
31
 
32
+ # Run all analyses
33
+ #
34
+ # @param left [String] path to the left reads
35
+ # @param right [String] path to the right reads
36
+ # @param insertsize [Integer] mean insert size of the read pairs
37
+ # @param insertsd [Integer] standard deviation of the read pair insert size
16
38
  def run left=nil, right=nil, insertsize=nil, insertsd=nil
17
39
  assembly_metrics
18
40
  if left && right
@@ -21,6 +43,11 @@ module Transrate
21
43
  comparative_metrics
22
44
  end
23
45
 
46
+ # Reduce all metrics for the assembly to a single quality score.
47
+ #
48
+ #
49
+ #
50
+ # @return [Integer] the assembly score
24
51
  def assembly_score
25
52
  @score, pg, rc = nil
26
53
  if @read_metrics.has_run
@@ -47,7 +74,7 @@ module Transrate
47
74
  end
48
75
 
49
76
  def comparative_metrics
50
- @comparative_metrics.run unless @comparative_metrics.has_run
77
+ @comparative_metrics.run #unless @comparative_metrics.has_run
51
78
  @comparative_metrics
52
79
  end
53
80
 
@@ -1,12 +1,19 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Transrate
4
+
5
+ # Defines the version of this codebase.
6
+ #
7
+ # This module is used in help messages and in generating
8
+ # the Gem. Versions must be incremented in accordance with
9
+ # Semantic Versioning 2.0 (http://semver.org/).
4
10
  module VERSION
5
11
  MAJOR = 0
6
12
  MINOR = 0
7
- PATCH = 12
13
+ PATCH = 13
8
14
  BUILD = nil
9
15
 
10
16
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
11
17
  end
18
+
12
19
  end # Transrate
@@ -0,0 +1,8 @@
1
+ >scaffold1
2
+ TTTCAGTTGATGAAGAAAAAACTAGAGTGTGTGGATTGCATGAAATGAGCTGGGGCTTGTTGAAATTTTGCTATTGAAACTAATGTTTACTTCAAATTGATAGGAATTCAGTTGGTTTTCTGGTGGTNTCTCTTTCTTCTTCACAATTGAATTTTGATTCCAAACACCATCTCTTAGGAATTCAGTTGGTTTTCTGGTGATAAACACTTCAATTTGACTATGGACTCTGTGTATTGTAAAGAACATGATGACAGAATTGCTTCGAATCCGGTGGGTTTACAGTCATCCGGGTCGGGTCCTTGGTGGGGTGGGCTCGTGACTCAATCGGGTTTTGAAGAATCCATGGGGAGATTGAAGAATTCATCAATGGAACCACTCGTGCGAATAGCCCCTAAACTGTCGATTTCTGCTGCAGATCAATCAATGGCAAAAGGGGATACGACTTCTTTTGATATCTTTCATGGTGACTCCAAGAGTTCGTCAAATGGTCAAAAACCAGTGCTATTGCAAGCTGTTTCCACCTTGCAATCTGCTCCACAAGTGTTTGGAGGTCATCTTGAGCTTGGGTTTGGTCAGCCGGCTGTGGCATGTGGCGTGTATCCTTATGGCGACCAATCTTATCGCGTGCTCTCTGCTTATGGACCTCAAACCGTGGGTCGTGTTATGCTGCCTTTGAACTTGAGCACTGATGATGGACCTATATTTGTGAATGCAAAGCAGTATCATGGAATAATCAGGCGCAGACGATCAAGAGCTAAAGCAGAAATGGCAAAAAAGTTTACAAAAAGTCGAAAGCCATATCTGCACTTGTCGCGTCATCTTCATGCAAAACGTCGACCAAGAGGCTGTGGGGGCCGCTTCCTAAACACTAAAGAAATGGACAAGGGCAAAGTTGGAAACTTGGATTCAAAACCAACCAATAATCCAACCACTTCTCAGAGATCCGAGGTCTTACAATGTGATCATGAATCGAATGGTAGCAAGTCCTACACACTAGGGTCAGAGGTAACAAGCGTTTTCTCCATGGGAGACCTCAATCAATTCCCCATGGGAGATATTTCTGTTATTTCTCATTATGGCATGATGGCGTCTGGCAATGCCATTCTTAGTCTTGGCATGCAGAACGATTGGGTTGCAGTGGGTGCAGGTGGGGGTATCTGCTGCAACCTGACAGTCTGATGGTACATGGGGTCTGATGTGCCTGCACGACAGACCCCATTCTTAGATAGTCAAACGGGACGGGGTTGTTTTCCGTTGTTTGGCTATGGCAAATCATCCTTGGCTATGACGTGTGAAGGTTGTGTCTCTAACTTCAATTCCCCTGACAAATGCAGACTAGGAATTGTTTTAAAGATGCTGATAACCTCAATACATATGATGGGCAATCATTTATTCTAGATGTGTTTGTTTCATCCTATGTTAATACTTTGTTGTTGTTTGAAATAAACTAAACCTTAGAACTCTATTTTCAAGGTATGTATCATGTGAATCTTGACTTCCAAACATTTAGGAGATGCCATATATTGTGTTTGATATTTTCTTGATAGTTATGCGCATGTTGGTAATTAAGAAATTCCTTTGGGATAATCTTGTAAATTAACATGAATGGTGGATGTTTATGCTTACAATA
3
+ >scaffold2
4
+ AAAAGGCATATATGACAAATCCTCCTTTCAAGTCGAACAACATTAGAGTTTTGTACAGATTTAAGACCAAAGCATTACTCGTTTCTATTCTCTCTTTAAATGTGAAATTTACCATCATAGTATTACATAATCTTATACGCGATATCATTTTAAAAAGATTATTGTTTTCATCGTCTTAACAGATTGTATGCTGGTAACTCTTTCACACATGTGACATCTTCGATCGCAAGCTCCCTCTCTAGCTGCATTCTTGTGGATTTTATAACCTCATTGAATTCCATATATGAAGCACGCCTCGCAAGCCAATGAGCATCCATGAGTTTGAAAGCAACACAATATAGCTCATCAAAAGCCGATTCATCATTACTAAGAAATTGCAAGAACCGCACCCCTGACGAAGACGTTGGTAATCCTGACTGAATATCCAACATCTGCACCAACATGAAAGAAATATTGATGCCAGCTACAGCAAAAGGATATTCCCATTCAGCTCTAATTCCTTCTTTTTTGTTTAAAAGGTTTTGAAAAGCTTCCGGATATGTGCGGGCAAAGAAGATAAGATTCTCTAGAGATATGAATCCTCCACCTCTAAAGTCTGTTGAAGGATCATTTCCTTGCCACCCCATATCTTTCCAAACCTCTGATTTAAGTCCTGGGAGTTCTCTATTTGGATAAGCTGACCTCCATAATTTTCTAAGTGCATCTTGATGCTCCAAACAAGTACCATCGAAAGGGACCTCCAATCGTTTCTGCAGATTTCTGAGTCTTGATTCCTGTAATGGAGTAAGTATAGGTGGAAGAAACTTCTTCGTGGGTCCACTTCCTATTGTTGAAGGCAACGTCAAGAACCGTATAATAAACGATCCAGATCCAAGTAGAACATTTGCTAGCCACTGTGCCCATTCTGAAATTAAATGAGAGAATAGAAACGTCCAGTGGAGGTGTTCTTTTCTTTTTTCATCATACAAAATATCTTCGAGCCTTGGTACCTCCGACTGTTTAAGTTTATACTCGTCATTATTCCCTAGTAAAGGTTCACTTAGGTCATTTAAATCTGCACCAACTAAATGCTCGTGCTTTTTACCATCAACATCCCCATGGTGAAGTCTTCTCCTCATTGTTTGTGATGTCATTAATCCTTCAATGCCCGAACTTCTTTCTGAAGCCTTGAGGGATAGGGTGAGAAGAAGATTGATTGATGGATGAAACCCTAATGAAGGGAGTAGAGAAAGAGTAAGAAAGAAAGCCCTTTCTTTTTGTTCTTCTTCTAATCTCTTTCTCTACCCTAATGAAGCACCACAAAGTAGGAATGAAGGAAGAAAGGAACCCTCTCTTTCTCACATCTACATTTACATCTGCATCTGCTTTACGTTTTCAGGAAGAAACATCACACCGTCAATTAAGCGGATCTGGTAACGCCTGCGCGGGCAAACGGGTCGGATCTTGATCTATTAAAACCACTTCATTTTTTTTTTTTTTTTTTT
5
+ >scaffold3
6
+ AAAAGGCATATATGACAAATCCTCCTTTCAAGTCGAACAACATTAGAGTTTTGTACAGATTTAAGACCAAAGCATTACTCGTTTCTATTCTCTCTTTAAATGTGAAATTTACCATCATAGTATTACATAATCTTATACGCGATATCATTTTAAAAAGATTATTGTTTTCATCGTCTTAACAGATTGTATGCTGGTAACTCTTTCACACATGTGACATCTTCGATCGCAAGCTCCCTCTCTAGCTGCATTCTTGTGGATTTTATAACCTCATTGAATTCCATATATGAAGCACGCCTCGCAAGCCAATGAGCATCCATGAGTTTGAAAGCAACACAATATAGCTCATCAAAAGCCGATTCATCATTACTAAGAAATTGCAAGAACCGCACCCCTGACGAAGACGTTGGTAATCCTGACTGAATATCCAACATCTGCACCAACATGAAAGAAATATTGATGCCAGCTACAGCAAAAGGATATTCCCATTCAGCTCTAATTCCTTCTTTTTTGTTTAAAAGGTTTTGAAAAGCTTCCGGATATGTGCGGGCAAAGAAGATNTGTTTTCAACAAAATAGCAATTAAAATACACTTTCCAACCTTTTACATATATGCAAATTATGGAACTTGTACAAAAGTTTCAATTTGAACAATAGGAGTTCAAAAATGTTTCAGCAGTACAACCGAAGTACAAAAGGTGTCATTTGCATGGTAAATGATGGCCAAATGGCCAAAATTGCCACCTTCAGATTCAACCTTTATTTTCTTCATTAACTTTAGTTTCATCAAGAACTCATTGAACACCAAAATGACACCTAATTTGAAATCAAATAAAAACCCAAACTTGATACACAAATTGCATGATTTGCCCAAATGTTACAGTTTGAAAAAACGGTATAAAAGTATGTTTCATTTGTTAAAACAAGTGTGAAGATATCATGTGTGAGGAATGTGATGACATAACGACCAAAACTACTCTCTCCGCCTTCAACCTCTCTTTACTTCTCAAGTATTTATTCTTAATATATCAGAATTCACGACATAAAGAACACCAAAATCAAACCCAATGTTCAAACTATCTCAAAATATCTGCAAAGGCACGTGATGGGCAAATAACAATCTTCCACTTCAACCTCTATTTTCTCTTTAAAACTTACTTTCTTACAGAAACCAAAATACCAAAATCCAAAATAACTCAAAAACCAAGATATTTGCAAAGGCAATAGAAGAATCTATCAATCTCGAAAAAACAAACCGGATATGTGCGGGCAAAGAAGATAAGATTCTCTAGAGATATGAATCCTCCACCTCTGCAAATAATACTCAATGCTTGAAATAACCAATTTGAATAAACTTCATTTGGTTAACTATAACAAGTAACTAAGTTACCTAAAGTCTGTTGAAGGATCATT
7
+ >scaffold5
8
+ CATCGATTTCATTTAGTGGCTAACCAGACCAGTCCTTCCGGTTCGATACGTGTGGAGATGAGAAGAACCCAACAGGAGTTCTGGAGGAAATTTGCCTGATTAAACAGACTCTACAGTTGATTTGGAGAGGTTGAAGATGGATGGAATTGAAGAACATGGAGATTGCACTTCTAGGTGCTGCTAGACAAGCTCAGAGAAAATCAAATGCTGATATATATTGAGTCTCTACTGGAAGTCTGGAAGAGTATCATCTAAGGGTATCGGCCCTCGAAAGAAAGACTTATCCTAATCCATTGCGTTCCAATCCTGCATATTCGGTTGTGAAGTAAGTTACATTTGAGTGACTGCATCTACTTTTCTTCAAGAACTACTTCTAATTTTTTTTATTAAGTGAACTAATCAGATCAGAAACTGTATCCAAACTTAAAAGGTTAAAACTTGATTATTACATTTTAAAACAACTTCAAGATTGAAGAGAACAATTTGGTGAGTTTAAGAATAGACAAAGCAGCCTTGGAGAAGCTGCTGGAAGAAAAACAAATGCTGATATCAAGTCTCTACAGGAGAAGTATCAGCAAAGAGTGTCGGCCCTCGAAAGAAAGTTAAATGGTTTGCATATTTGTAGAAGCTTAGTTTAACACCTCTGTTTTAAAAACACTGCAGGGAAGTATTTGAAGAAAGTTTTATGGTCCGTACTTTGAAAATTTTGTCACCAAAGACTTTTGCTGATTTATCTCAACTTATAAAACTGAACAAAAAGGTCCTTATAAATTTTATGGATTTGATTATGCAAAAAATAAAGAACTTTTAGTTGAACTTTTATAAGTTTAAGCACTTTTTCTAAATCTGACATTTTGTTTAAATCTGACTTTTTGTTAAAAATGAAGTCCATGGGGCATTTTTGGTGAGTGTTTATTAGTTAAAGGATATAGTTATGCAAAAATGAAGTCCAGGTTTGTGAACAAGCACAAAGTCTATAGGCTTTTTTTTCCCTTTTATATTATTTTTGGCAACTACACATAACTAAAATGAATTTAAAGGTTGTATGTGCTAAAAATGCACTTTGGGTGACTTTATCAACCAATTTCACCTATTTTTGTTTAGCTAGATATGTTGGTTTGATCATTTGACATGCTTGGGTTAAAAACATATTCTAAACTGACCCAATTGTAAGTGAACGGGTCGGCTTTAACATCTGTTCTCAGGTAAGTGAATGTAGATGTGACGAACTGGTTATGCAAGATCCTAAATGTATCAGGCCTCTTTTGAGGCAGATTGAGGCTATGCAGGCATTCTTTGGTTTGACATGGCACCATGAGCTTTATGGTTTGAACACTTGTACTAGGAACGATCTGCTAGAAAGGCAGAAGCTTTGCTGTGAGGAATCACTAAACATGCGGCTTCAGGTTTGATAAATGGTATATGTGTGTAGTTTCTTTGAAGTATAAATTATCTCAAGCCCAGTGATATTTTTTGTTTTGTATGAATCTTCGAGGCATTTGAAGGAGGG
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'helper'
4
+
5
+ class TestInline < Test::Unit::TestCase
6
+
7
+ context 'transrate' do
8
+
9
+ setup do
10
+ @a = Transrate::Assembly.new('test/assembly.fasta')
11
+ @seq1 = 'ATGCCCCTAGGGTAG'
12
+ end
13
+
14
+ should 'find longest orf in file' do
15
+ orfs = []
16
+ @a.assembly.each do |entry|
17
+ l = @a.orf_length entry.seq
18
+ orfs << l
19
+ end
20
+ assert_equal orfs.length, 4
21
+ assert_equal orfs, [333, 370, 131, 84]
22
+ end
23
+
24
+ should 'find longest orf in sequence' do
25
+ l = @a.orf_length(@seq1)
26
+ assert_equal l, 4
27
+ end
28
+
29
+ end
30
+ end
data/test/test_test.rb ADDED
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'helper'
4
+
5
+ class TestTransrate < Test::Unit::TestCase
6
+
7
+ context "transrate" do
8
+
9
+ setup do
10
+ @a = Transrate::Assembly.new("test/assembly.fasta")
11
+ @seq1 = "ATGCCCGGGTAG"
12
+ end
13
+
14
+ should "run metrics on assembly" do
15
+ ans = @a.run(2) # using 2 threads
16
+ assert_equal ans, true, "should run but returned #{ans}"
17
+ end
18
+
19
+ should "find longest orf" do
20
+ len = @a.orf_length("ATGCCCGGGTAG")
21
+ assert_equal len, 3, "expected 4 but got #{len}"
22
+ end
23
+
24
+ should "find longest orf in file" do
25
+ orfs = []
26
+ @a.assembly.each do |entry|
27
+ l = @a.orf_length entry.seq
28
+ orfs << l
29
+ end
30
+ assert_equal orfs.length, 4
31
+ assert_equal orfs, [333, 370, 131, 84]
32
+ end
33
+
34
+ should "find the mean length" do
35
+ ans = @a.run(2)
36
+ mean = @a.mean_len
37
+ assert_equal mean, 1508.25
38
+ end
39
+
40
+ end
41
+ end
data/transrate.gemspec CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |gem|
21
21
  gem.add_dependency 'which'
22
22
  gem.add_dependency 'bio'
23
23
  gem.add_dependency 'bettersam'
24
+ gem.add_dependency 'RubyInline', '~> 3.12'
24
25
 
25
26
  gem.add_development_dependency 'turn'
26
27
  gem.add_development_dependency 'simplecov'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transrate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-14 00:00:00.000000000 Z
11
+ date: 2014-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: RubyInline
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.12'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.12'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: turn
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -156,6 +170,7 @@ files:
156
170
  - lib/transrate/comparative_metrics.rb
157
171
  - lib/transrate/dimension_reduce.rb
158
172
  - lib/transrate/express.rb
173
+ - lib/transrate/log.rb
159
174
  - lib/transrate/metric.rb
160
175
  - lib/transrate/rb_hit.rb
161
176
  - lib/transrate/read_metrics.rb
@@ -164,7 +179,11 @@ files:
164
179
  - lib/transrate/usearch.rb
165
180
  - lib/transrate/version.rb
166
181
  - lib/transrate/writer.rb
182
+ - test/assembly.fasta
167
183
  - test/helper.rb
184
+ - test/test_inline.rb
185
+ - test/test_test.rb
186
+ - test/test_test.rb~
168
187
  - transrate.gemspec
169
188
  homepage: https://github.com/Blahah/transrate
170
189
  licenses: