transrate 1.0.0.alpha.5 → 1.0.0.alpha.8.bowtie

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: 3fc633cd9166010a55ea892edc4737c2f3221ccf
4
- data.tar.gz: 2e9729a73f4128503d992b39c9711e15c89bae7b
3
+ metadata.gz: 0f6903da751cadec5102d2fa7e9c2381a9c39a25
4
+ data.tar.gz: bf9b30c2e334ae98ad6d959b085d521d43e5daf4
5
5
  SHA512:
6
- metadata.gz: ef6f9cc4be67ec2b5d09fc9ab7487e3b21b0409e0af63752f33cf977e1d3f50f1644622af76cfba54d6b28c63b36a3607842d38ce0fdec51ff6c4d67063b571f
7
- data.tar.gz: d4cc715ba05d3a332882a492fd99ea4ad79f48198dce550b7c1cefed3025663ff88ed7257554e9f4897fbb20f23c337135d72e6a8f3ac142182162875ff6dafa
6
+ metadata.gz: 97cdf2d6c922b1c0a901a1aa8f6e85013a8ec0c9cff54795b8bba3fa903efa7ef2ae4673c8e71e8ee292326eaadbf3ee617094c978a4fd39c836f6d8fb0d0672
7
+ data.tar.gz: 08ae932477980abe97b2b7fe874a14bd170688b1f8f60472971f21cc2ae0c7bb742d9a5c89ee923ccf5c476c4e59c5863a02a2e1994b4deb74e13e228e792136
data/bin/transrate CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ PROFILE = false
2
3
 
3
4
  require 'trollop'
4
5
  require 'transrate'
@@ -57,10 +58,9 @@ opts = Trollop::options do
57
58
  opt :outfile, "prefix filename to use for CSV output",
58
59
  :default => 'transrate'
59
60
  opt :loglevel, "the amount of information to print. " +
60
- "one of [error, info, warn, debug]",
61
+ "one of [error, warn, info, debug]",
61
62
  :default => 'info'
62
63
  opt :install_deps, "install any missing dependencies"
63
- opt :profile, "debug option: profile the code as it runs"
64
64
  end
65
65
  gem_dir = Gem.loaded_specs['transrate'].full_gem_path
66
66
  gem_deps = File.join(gem_dir, 'deps', 'deps.yaml')
@@ -111,7 +111,7 @@ if opts.left and opts.right
111
111
  end
112
112
  end
113
113
 
114
- if opts.profile
114
+ if PROFILE
115
115
  logger.info "Starting profiler"
116
116
  RubyProf.start
117
117
  end
@@ -176,7 +176,7 @@ opts.assembly.split(',').each do |assembly|
176
176
  pretty_print_hash(contig_results, report_width)
177
177
  end
178
178
 
179
- logger.info "Contig metrics done in #{Time.now - t0} seconds"
179
+ logger.info "Contig metrics done in #{(Time.now - t0).round(1)} seconds"
180
180
 
181
181
  read_results = {}
182
182
 
@@ -269,7 +269,7 @@ CSV.open(outfile, 'wb') do |file|
269
269
  end
270
270
  end
271
271
 
272
- if opts.profile
272
+ if PROFILE
273
273
  logger.info "Writing profiling results to transrate_profile.txt"
274
274
  result = RubyProf.stop
275
275
  printer = RubyProf::FlatPrinter.new(result)
data/deps/deps.yaml CHANGED
@@ -25,16 +25,24 @@ blastplus:
25
25
  64bit:
26
26
  macosx: ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.2.29/ncbi-blast-2.2.29+-universal-macosx.tar.gz
27
27
  linux: ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.2.29/ncbi-blast-2.2.29+-x64-linux.tar.gz
28
- snap:
28
+ bowtie2:
29
29
  binaries:
30
- - snap
30
+ - bowtie2
31
+ - bowtie2-align-l
32
+ - bowtie2-align-s
33
+ - bowtie2-build
34
+ - bowtie2-build-l
35
+ - bowtie2-build-s
36
+ - bowtie2-inspect
37
+ - bowtie2-inspect-l
38
+ - bowtie2-inspect-s
31
39
  version:
32
- number: '1.0beta.13'
33
- command: 'snap'
40
+ number: '2.2.3'
41
+ command: 'bowtie2 --version'
34
42
  url:
35
43
  64bit:
36
- linux: https://github.com/HibberdLab/snap/raw/master/bin/linux/snap.tar.gz
37
- macosx: https://github.com/HibberdLab/snap/raw/osx_1.0beta.13/bin/macosx/snap.tar.gz
44
+ linux: http://downloads.sourceforge.net/project/bowtie-bio/bowtie2/2.2.3/bowtie2-2.2.3-linux-x86_64.zip
45
+ macosx: http://downloads.sourceforge.net/project/bowtie-bio/bowtie2/2.2.3/bowtie2-2.2.3-macos-x86_64.zip
38
46
  samtools:
39
47
  binaries:
40
48
  - samtools
@@ -50,7 +58,7 @@ bam-read:
50
58
  binaries:
51
59
  - bam-read
52
60
  version:
53
- number: '0.3.2'
61
+ number: '0.3.4'
54
62
  command: 'bam-read'
55
63
  url:
56
64
  64bit:
@@ -61,7 +69,7 @@ bam-split:
61
69
  binaries:
62
70
  - bam-split
63
71
  version:
64
- number: '0.1'
72
+ number: '0.2'
65
73
  command: 'bam-split'
66
74
  url:
67
75
  64bit:
@@ -0,0 +1,103 @@
1
+ module Transrate
2
+
3
+ class Bowtie2Error < StandardError
4
+ end
5
+
6
+ class Bowtie2
7
+
8
+ attr_reader :index_name, :sam, :read_count
9
+
10
+ def initialize
11
+ @bowtie2 = get_bin_path("bowtie2")
12
+ @bowtie2_build = get_bin_path("bowtie2-build")
13
+
14
+ @index_built = false
15
+ @index_name = ""
16
+ end
17
+
18
+ def get_bin_path bin
19
+ which_bin = Cmd.new("which #{bin}")
20
+ which_bin.run
21
+ if !which_bin.status.success?
22
+ raise IOError.new("ReadMetrics: could not find #{bin} in path")
23
+ end
24
+ which_bin.stdout.split("\n").first
25
+ end
26
+
27
+ def map_reads(file, left, right,
28
+ insertsize: 200, insertsd: 50, threads: 8)
29
+ raise Bowtie2Error.new("Index not built") if !@index_built
30
+ lbase = File.basename(left.split(",").first)
31
+ rbase = File.basename(right.split(",").first)
32
+ index = File.basename(@index_name)
33
+ @sam = File.expand_path("#{lbase}.#{rbase}.#{index}.sam")
34
+ realistic_dist = insertsize + (5 * insertsd)
35
+ unless File.exists? @sam
36
+ # construct bowtie command
37
+ bowtiecmd = "#{@bowtie2} --very-sensitive"
38
+ bowtiecmd << " -x #{@index_name}"
39
+ bowtiecmd << " -a"
40
+ bowtiecmd << " -p #{threads} -X #{realistic_dist}"
41
+ bowtiecmd << " --no-unal"
42
+ bowtiecmd << " --seed 1337"
43
+ bowtiecmd << " --rdg 6,5"
44
+ bowtiecmd << " --rfg 6,5"
45
+ bowtiecmd << " --score-min L,-.6,-.4"
46
+ bowtiecmd << " -1 #{left}"
47
+ # paired end?
48
+ bowtiecmd << " -2 #{right}" if right
49
+ bowtiecmd << " -S #{@sam}"
50
+ # run bowtie
51
+ runner = Cmd.new bowtiecmd
52
+ runner.run
53
+ # parse bowtie output
54
+ if runner.stderr=~/([0-9]+)\ reads\;\ of\ these\:/
55
+ @read_count = $1.to_i
56
+ # save read_count to file
57
+ File.open("#{@sam}-read_count.txt", "wb") do |out|
58
+ out.write("#{@read_count}\n")
59
+ end
60
+ end
61
+ if !runner.status.success?
62
+ raise Bowtie2Error.new("Bowtie2 failed\n#{runner.stderr}")
63
+ end
64
+ else
65
+ @read_count = 0
66
+ if File.exist?("#{@sam}-read_count.txt")
67
+ @read_count = File.open("#{@sam}-read_count.txt").readlines.join.to_i
68
+ else
69
+ left.split(",").each do |l|
70
+ cmd = "wc -l #{l}"
71
+ count = Cmd.new(cmd)
72
+ count.run
73
+ if count.status.success?
74
+ @read_count += count.stdout.strip.split(/\s+/).first.to_i/4
75
+ File.open("#{@sam}-read_count.txt", "wb") do |out|
76
+ out.write("#{@read_count}\n")
77
+ end
78
+ else
79
+ logger.warn "couldn't get number of reads from #{l}"
80
+ end
81
+ end
82
+ end
83
+ end
84
+ @sam
85
+ end
86
+
87
+ def build_index file
88
+ @index_name = File.basename(file).split(".")[0..-2].join(".")
89
+ unless File.exists?(@index_name + '.1.bt2')
90
+ cmd = "#{@bowtie2_build} --quiet --offrate 1 #{file} #{@index_name}"
91
+ runner = Cmd.new cmd
92
+ runner.run
93
+ if !runner.status.success?
94
+ msg = "Failed to build Bowtie2 index\n#{runner.stderr}"
95
+ raise Bowtie2Error.new(msg)
96
+ end
97
+ end
98
+ @index_built = true
99
+ end
100
+
101
+ end # Bowtie2
102
+
103
+ end # Transrate
@@ -12,8 +12,7 @@ module Transrate
12
12
  # read-based metrics
13
13
  attr_accessor :eff_length, :eff_count, :tpm
14
14
  attr_accessor :coverage, :uncovered_bases, :p_uncovered_bases
15
- attr_accessor :p_seq_true, :p_unique
16
- attr_accessor :low_uniqueness_bases, :in_bridges
15
+ attr_accessor :p_seq_true, :p_unique, :in_bridges
17
16
  attr_accessor :p_good, :p_not_segmented
18
17
  # reference-based metrics
19
18
  attr_accessor :has_crb, :reference_coverage
@@ -30,7 +29,6 @@ module Transrate
30
29
  @in_bridges = 0
31
30
  @p_good = 0
32
31
  @p_seq_true = 0
33
- @low_uniqueness_bases = 0
34
32
  @uncovered_bases = length
35
33
  @p_uncovered_bases = 1
36
34
  @p_unique = 0
@@ -227,10 +225,6 @@ module Transrate
227
225
  @p_uncovered_bases = n / length.to_f
228
226
  end
229
227
 
230
- def p_unique_bases
231
- (length - low_uniqueness_bases) / length.to_f
232
- end
233
-
234
228
  # Contig score (product of all score components)
235
229
  def score
236
230
  return @score if @score != -1
@@ -238,8 +232,7 @@ module Transrate
238
232
  [p_bases_covered, 0.01].max.to_f * # proportion of bases covered
239
233
  [p_not_segmented, 0.01].max.to_f * # prob contig has 0 changepoints
240
234
  [p_good, 0.01].max.to_f * # proportion of reads that mapped good
241
- [p_seq_true, 0.01].max.to_f * # scaled 1 - mean per-base edit distance
242
- [p_unique, 0.01].max.to_f # prop mapQ >= 5
235
+ [p_seq_true, 0.01].max.to_f
243
236
  @score = [prod, 0.01].max
244
237
  end
245
238
  end
@@ -32,9 +32,7 @@ module Transrate
32
32
  runner = Cmd.new build_command(assembly, bamfile)
33
33
  runner.run
34
34
  unless runner.status.success?
35
- raise ExpressError.new("Express failed\n" +
36
- runner.stderr + "\n" +
37
- runner.stdout)
35
+ abort "express failed on the bam file\n#{runner.stderr}"
38
36
  end
39
37
  File.rename(ex_output, fin_output)
40
38
  end
@@ -80,6 +78,20 @@ module Transrate
80
78
  expression
81
79
  end
82
80
 
81
+ # def fix_problem_snap_output bam
82
+ # # express failed, probably because of temporary snap error
83
+ # # convert bam to sam
84
+ # sam = "#{File.expand_path(File.basename(bam, File.extname(bam)))}.sam"
85
+ # Samtools.run "view -h #{bam} > #{sam}"
86
+ # # run sam fixer on sam
87
+ # checker = SamChecker.new
88
+ # fixed_sam = "#{File.expand_path(File.basename(sam, File.extname(sam)))}.fixed.sam"
89
+ # checker.fix_sam(sam, fixed_sam)
90
+ # # convert sam to bam
91
+ # Samtools.run "view -bS #{fixed_sam} > #{bam}"
92
+ # bam
93
+ # end
94
+
83
95
  end # Express
84
96
 
85
97
  end # Transrate
@@ -11,7 +11,7 @@ module Transrate
11
11
 
12
12
  def initialize assembly
13
13
  @assembly = assembly
14
- @mapper = Snap.new
14
+ @mapper = Bowtie2.new
15
15
  self.initial_values
16
16
 
17
17
  load_executables
@@ -47,29 +47,24 @@ module Transrate
47
47
  @read_length = get_read_length(left, right)
48
48
 
49
49
  # map reads
50
- @mapper.build_index(@assembly.file, threads)
51
- bamfile = @mapper.map_reads(@assembly.file, left, right,
50
+ @mapper.build_index(@assembly.file)
51
+ samfile = @mapper.map_reads(@assembly.file, left, right,
52
52
  insertsize: insertsize,
53
53
  insertsd: insertsd,
54
54
  threads: threads)
55
55
  @fragments = @mapper.read_count
56
+ bamfile = Samtools.sam_to_bam(samfile)
57
+ File.delete samfile
56
58
 
57
59
  # classify bam file into valid and invalid alignments
58
60
  sorted_bam = "#{File.basename(bamfile, '.bam')}.merged.sorted.bam"
59
- readsorted_bam = "#{File.basename(bamfile, '.bam')}.valid.sorted.bam"
60
61
  merged_bam = "#{File.basename(bamfile, '.bam')}.merged.bam"
61
- unless File.exist? sorted_bam
62
- unless File.exist? readsorted_bam
63
- valid_bam, invalid_bam = split_bam bamfile
64
- readsorted_bam = Samtools.readsort_bam valid_bam
65
- File.delete valid_bam
66
- end
67
- end
62
+ valid_bam, invalid_bam = split_bam bamfile
63
+ readsorted_bam = Samtools.readsort_bam valid_bam
68
64
 
69
65
  # pass valid alignments to eXpress for assignment
70
66
  # always have to run the eXpress command to load the results
71
67
  assigned_bam = assign_and_quantify readsorted_bam
72
- File.delete readsorted_bam if File.exist? readsorted_bam
73
68
 
74
69
  # merge the assigned alignments back with the invalid ones
75
70
  unless File.exist? sorted_bam
@@ -142,12 +137,12 @@ module Transrate
142
137
  splitter = Cmd.new cmd
143
138
  splitter.run
144
139
  if !splitter.status.success?
145
- logger.warn "Couldn't split bam file: #{bamfile}" +
140
+ raise StandardError.new "Couldn't split bam file: #{bamfile}" +
146
141
  "\n#{splitter.stdout}\n#{splitter.stderr}"
147
142
  end
148
143
  end
149
144
  if !File.exist? valid
150
- logger.warn "Splitting failed to create valid bam: #{valid}"
145
+ raise StandardError.new "Splitting failed to create valid bam: #{valid}"
151
146
  end
152
147
  [valid, invalid]
153
148
  end
@@ -162,7 +157,11 @@ module Transrate
162
157
  def analyse_expression express_output
163
158
  express_output.each_pair do |name, expr|
164
159
  contig = @assembly[name]
165
- coverage = expr[:eff_count] * @read_length / expr[:eff_len]
160
+ if expr[:eff_len]==0
161
+ coverage = 0
162
+ else
163
+ coverage = expr[:eff_count] * @read_length / expr[:eff_len]
164
+ end
166
165
  @contigs_uncovered += 1 if coverage < 1
167
166
  @contigs_lowcovered += 1 if coverage < 10
168
167
  contig.coverage = coverage.round(2)
@@ -177,7 +176,7 @@ module Transrate
177
176
  csv_output = "#{File.basename(@assembly.file)}_bam_info.csv"
178
177
  csv_output = File.expand_path(csv_output)
179
178
 
180
- analyse_bam bamfile, csv_output
179
+ analyse_bam(bamfile, csv_output)
181
180
  # open output csv file
182
181
  @potential_bridges = 0
183
182
 
@@ -188,7 +187,7 @@ module Transrate
188
187
  end
189
188
  @bad = @fragments_mapped - @good
190
189
  else
191
- logger.warn "couldn't find bamfile: #{bamfile}"
190
+ raise "couldn't find bamfile: #{bamfile}"
192
191
  end
193
192
  @assembly.assembly.each_pair do |name, contig|
194
193
  @contigs_good += 1 if contig.score >= 0.5
@@ -217,7 +216,9 @@ module Transrate
217
216
  reader = Cmd.new cmd
218
217
  reader.run
219
218
  if !reader.status.success?
220
- logger.warn "couldn't get information from bam file: #{bamfile}"
219
+ msg = "Couldn't get information from bam file: #{bamfile}\n"
220
+ msg << "#{reader.stdout}\n#{reader.stderr}"
221
+ raise msg
221
222
  end
222
223
  end
223
224
  end
@@ -0,0 +1,99 @@
1
+ module Transrate
2
+
3
+ class SamChecker
4
+
5
+ def initialize
6
+ @contigs = {}
7
+ @reference = ""
8
+ @count = 0
9
+ @percent = 0
10
+ @first = true
11
+ end
12
+
13
+ def check sam
14
+ cols = sam.split("\t")
15
+
16
+ reference = cols[2]
17
+ length = @contigs[reference]
18
+
19
+ seq_length = cols[9].length
20
+ position = cols[3].to_i
21
+ cigar = cols[5]
22
+ # this generates a list of pairs in the form [ ["10", "M"], ["1", "D"] ]
23
+ list = cigar.split(/[MDIS]/).zip(cigar.scan(/[MDIS]/))
24
+ list.each_with_index do |a, i|
25
+ c=a[0].to_i
26
+ t=a[1]
27
+ if t=="M" or t=="D"
28
+ position += c
29
+ elsif i==0 and t=="S"
30
+ position += c
31
+ end
32
+ end
33
+ if position > length + 1
34
+ # `diff` is how much the cigar makes the read overlap the end
35
+ diff = position - (length + 1)
36
+ if list[-1][1] == "S" # the last item in the cigar is "S"
37
+ # increase the number in the last item in the cigar
38
+ list[-1][0] = (list[-1][0].to_i + diff).to_s
39
+ if list[-2][0].to_i > diff
40
+ # decrease the penultimate item in the cigar
41
+ list[-2][0] = (list[-2][0].to_i - diff).to_s
42
+ elsif list[-2][0].to_i == diff
43
+ # just delete the penultimate item if
44
+ list.delete_at(-2) # delete_at changes `list`
45
+ else
46
+ # this didn't happen in the rice/oases sam file, but it might
47
+ end
48
+ elsif list[-1][1] == "M"
49
+ if list[-1][0].to_i > diff
50
+ # decrease the number of the last item in the cigar
51
+ list[-1][0] = (list[-1][0].to_i - diff).to_s
52
+ # add a new soft mask item to the end of the cigar
53
+ list << [diff.to_s, "S"]
54
+ elsif list[-1][0].to_i == diff
55
+ # just change the last item to soft mask if it's the same length
56
+ # as the difference
57
+ list[-1][1] = "S"
58
+ end
59
+ end
60
+ cols[5] = list.join("")
61
+ return cols.join("\t")
62
+ else
63
+ return sam
64
+ end
65
+ end
66
+
67
+ def fix_sam input, output
68
+ sam1 = ""
69
+ File.open("#{output}", "wb") do |out|
70
+ File.open("#{input}").each_line do |sam|
71
+ if sam =~ /^@/
72
+ # header
73
+ # @SQ SN:Locus_1_Transcript_13/342_Confidence_1.000_Length_1605 LN:1605
74
+ if sam[0..2]=="@SQ"
75
+ cols = sam.split("\t")
76
+ name = cols[1][3..-1]
77
+ length = cols[2][3..-1].to_i
78
+ @contigs[name] = length
79
+ end
80
+ out.write sam
81
+ else
82
+ # alignment
83
+ if @first
84
+ sam1 = sam.dup
85
+ @first = false
86
+ else
87
+ out.write(check(sam1))
88
+ out.write(check(sam))
89
+ @first = true
90
+ end
91
+ @count+=1
92
+ end
93
+ end
94
+ end
95
+ end
96
+
97
+ end
98
+
99
+ end
@@ -5,6 +5,8 @@ module Transrate
5
5
 
6
6
  class Snap
7
7
 
8
+ require 'fix-trinity-output'
9
+
8
10
  attr_reader :index_name, :sam, :read_count
9
11
 
10
12
  def initialize
@@ -32,13 +34,14 @@ module Transrate
32
34
  cmd << " -s 0 1000" # min and max distance between paired-read starts
33
35
  cmd << " -H 300000" # max seed hits to consider in paired mode
34
36
  cmd << " -h 2000" # max seed hits to consider when reverting to single
35
- cmd << " -I" # ignore read IDs
36
37
  cmd << " -d 30" # max edit distance (function of read length?)
37
38
  cmd << " -t #{threads}"
38
39
  cmd << " -b" # bind threads to cores
39
40
  cmd << " -M" # format cigar string
40
41
  cmd << " -sa" # keep all alignments, don't discard 0x100
41
- # cmd << " -C++" # trim low-quality bases from front and back of reads
42
+ cmd << " -D 5" # edit distance to search for mapq calculation
43
+ cmd << " -om 5" # Output multiple alignments. extra edit distance
44
+ cmd << " -omax 10" # max alignments per pair/read
42
45
  cmd
43
46
  end
44
47
 
@@ -52,13 +55,19 @@ module Transrate
52
55
  @bam = File.expand_path("#{lbase}.#{rbase}.#{index}.bam")
53
56
  @read_count_file = "#{lbase}-#{rbase}-read_count.txt"
54
57
 
58
+ @fixer = Fixer.new # from the fix-trinity-output gem
55
59
  unless File.exists? @bam
56
60
  snapcmd = build_paired_cmd(left, right, threads)
57
61
  runner = Cmd.new snapcmd
58
62
  runner.run
59
63
  save_readcount runner.stdout
60
64
  unless runner.status.success?
61
- raise SnapError.new("Snap failed\n#{runner.stderr}\n#{runner.stdout}")
65
+ if runner.stderr=~/Unmatched\sread\sIDs/
66
+ logger.warn "Unmatched read IDs. Fixing input files..."
67
+ remap_reads(left, right, threads)
68
+ else
69
+ raise SnapError.new("Snap failed\n#{runner.stderr}")
70
+ end
62
71
  end
63
72
  else
64
73
  load_readcount left
@@ -66,6 +75,30 @@ module Transrate
66
75
  @bam
67
76
  end
68
77
 
78
+ def remap_reads(left, right, threads)
79
+ fixedleft = []
80
+ fixedright = []
81
+ i = 0
82
+ left.split(",").zip(right.split(",")).each do |l, r|
83
+ prefix = "reads-#{i}"
84
+ @fixer.run(l, r, "#{prefix}")
85
+ fixedleft << "#{prefix}-fixed.1.fastq"
86
+ fixedright << "#{prefix}-fixed.2.fastq"
87
+ i+=1
88
+ end
89
+ left = fixedleft.join(",")
90
+ right = fixedright.join(",")
91
+ File.delete(@bam)
92
+ logger.info "Fixed input files"
93
+ snapcmd = build_paired_cmd(left, right, threads)
94
+ runner = Cmd.new snapcmd
95
+ runner.run
96
+ save_readcount runner.stdout
97
+ unless runner.status.success?
98
+ raise SnapError.new("Snap failed\n#{runner.stderr}")
99
+ end
100
+ end
101
+
69
102
  def save_readcount stdout
70
103
  stdout.split("\n").each do |line|
71
104
  cols = line.split(/\s+/)
@@ -11,7 +11,7 @@ module Transrate
11
11
  MAJOR = 1
12
12
  MINOR = 0
13
13
  PATCH = 0
14
- BUILD = 'alpha.5'
14
+ BUILD = 'alpha.8.bowtie'
15
15
 
16
16
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
17
17
  end
data/lib/transrate.rb CHANGED
@@ -8,12 +8,14 @@ require 'transrate/version'
8
8
  require 'transrate/contig'
9
9
  require 'transrate/assembly'
10
10
  require 'transrate/snap'
11
+ require 'transrate/bowtie'
11
12
  require 'transrate/express'
12
13
  require 'transrate/read_metrics'
13
14
  require 'transrate/comparative_metrics'
14
15
  require 'transrate/contig_metrics'
15
16
  require 'transrate/samtools'
16
17
  require 'transrate/cmd'
18
+ require 'transrate/sam_checker'
17
19
  require 'transrate/transrate.so'
18
20
 
19
21
  # Transrate is a comprehensive transcriptome assembly
@@ -1,20 +1,20 @@
1
- @read1:1
1
+ @read1/1
2
2
  AAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCACCAAGGGGG
3
3
  +
4
4
  gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
5
- @read2:1
5
+ @read2/1
6
6
  CACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCA
7
7
  +
8
8
  gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
9
- @read3:1
9
+ @read3/1
10
10
  CACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCA
11
11
  +
12
12
  gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
13
- @read4:1
13
+ @read4/1
14
14
  CTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCACCAAGGG
15
15
  +
16
16
  gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
17
- @read5:1
17
+ @read5/1
18
18
  ACGACGCGCACCACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGC
19
19
  +
20
20
  gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
@@ -1,20 +1,20 @@
1
- @read1:2
1
+ @read1/2
2
2
  AGGCCGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGC
3
3
  +
4
4
  gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
5
- @read2:2
5
+ @read2/2
6
6
  GGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGT
7
7
  +
8
8
  ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
9
- @read3:2
9
+ @read3/2
10
10
  CGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTAT
11
11
  +
12
12
  gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
13
- @read4:2
13
+ @read4/2
14
14
  ACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGCTAAG
15
15
  +
16
16
  ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
17
- @read5:2
17
+ @read5/2
18
18
  GGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGC
19
19
  +
20
20
  gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
data/test/test_bin.rb CHANGED
@@ -24,7 +24,11 @@ class TestTransrateBin < Test::Unit::TestCase
24
24
  "sorghum_transcript.fa_bam_info.csv",
25
25
  "transrate_sorghum_transcript.fa_contigs.csv",
26
26
  "150uncovered.l.fq-150uncovered.r.fq-read_count.txt",
27
- "150uncovered.l.fq.150uncovered.r.fq.sorghum_transcript.merged.sorted.bam"]
27
+ "150uncovered.l.fq.150uncovered.r.fq.sorghum_transcript.merged.sorted.bam",
28
+ "150uncovered.l.fq.150uncovered.r.fq.sorghum_transcript.merged.valid.bam",
29
+ "150uncovered.l.fq.150uncovered.r.fq.sorghum_transcript.valid.bam",
30
+ "150uncovered.l.fq.150uncovered.r.fq.sorghum_transcript.valid.sorted.bam",
31
+ "150uncovered.l.fq.150uncovered.r.fq.sorghum_transcript.sam-read_count.txt"]
28
32
  files.each do |file|
29
33
  File.delete(file) if File.exist?(file)
30
34
  end
@@ -66,6 +70,10 @@ class TestTransrateBin < Test::Unit::TestCase
66
70
  assert File.exist?("transrate_sorghum_transcript.fa_contigs.csv"),
67
71
  "contig csv file doesn't exist"
68
72
  hash = {}
73
+ if !c.status.success?
74
+ puts c.stderr
75
+ puts c.stdout
76
+ end
69
77
  CSV.foreach("transrate_assemblies.csv", :headers => true,
70
78
  :header_converters => :symbol,
71
79
  :converters => :all) do |row|
@@ -27,23 +27,36 @@ class TestReadMetrics < Test::Unit::TestCase
27
27
  left = File.join(File.dirname(__FILE__), 'data', '150uncovered.l.fq')
28
28
  right = File.join(File.dirname(__FILE__), 'data', '150uncovered.r.fq')
29
29
  Dir.mktmpdir do |tmpdir|
30
+ # tmpdir = Dir.mktmpdir
31
+ # puts tmpdir
30
32
  Dir.chdir tmpdir do
31
33
  @read_metrics.run(left, right)
32
34
  stats = @read_metrics.read_stats
33
35
  assert @read_metrics.has_run, "has run"
34
36
  assert_equal 223, stats[:fragments], 'number of read pairs'
35
- assert_equal 217, stats[:fragments_mapped], 'number mapping'
36
- assert_equal 0.9731, stats[:p_fragments_mapped].round(4),
37
+ assert_equal 219, stats[:fragments_mapped], 'number mapping'
38
+ assert_equal 0.9821, stats[:p_fragments_mapped].round(4),
37
39
  'proportion mapping'
38
- assert_equal 129, stats[:good_mappings], 'good mapping'
39
- assert_equal 0.5785, stats[:p_good_mapping].round(4),
40
+ assert_equal 184, stats[:good_mappings], 'good mapping'
41
+ assert_equal 0.8251, stats[:p_good_mapping].round(4),
40
42
  'percent good mapping'
41
- assert_equal 88, stats[:bad_mappings], 'bad mapping'
42
- assert_equal 2, stats[:potential_bridges], 'bridges'
43
+ assert_equal 35, stats[:bad_mappings], 'bad mapping'
44
+ end
45
+ end
46
+ end
47
+
48
+ should "calculate more read mapping statistics" do
49
+ left = File.join(File.dirname(__FILE__), 'data', '150uncovered.l.fq')
50
+ right = File.join(File.dirname(__FILE__), 'data', '150uncovered.r.fq')
51
+ Dir.mktmpdir do |tmpdir|
52
+ Dir.chdir tmpdir do
53
+ @read_metrics.run(left, right)
54
+ stats = @read_metrics.read_stats
55
+ assert_equal 0, stats[:potential_bridges], 'bridges'
43
56
  assert_equal 2, stats[:contigs_uncovbase], 'uncovered base contig'
44
57
  assert_equal 0, stats[:contigs_uncovered], 'uncovered contig'
45
58
  assert_equal 0, stats[:contigs_lowcovered], 'lowcovered contig'
46
- assert_equal 0, stats[:contigs_good], 'good contigs'
59
+ assert_equal 1, stats[:contigs_good], 'good contigs'
47
60
  end
48
61
  end
49
62
  end
@@ -63,22 +76,22 @@ class TestReadMetrics < Test::Unit::TestCase
63
76
 
64
77
  edit_a = a[:p_seq_true].round(5)
65
78
  edit_b = b[:p_seq_true].round(5)
66
- assert_equal 0.98342, edit_a, "edit distance 1"
67
- assert_equal 0.96645, edit_b, "edit distance 2"
79
+ assert_equal 0.98618, edit_a, "edit distance 1"
80
+ assert_equal 0.9749, edit_b, "edit distance 2"
68
81
 
69
- assert_equal 0.59524, a[:p_good].round(5), "proportion of good mappings"
70
- assert_equal 0.59398, b[:p_good].round(5), "proportion of good mappings"
82
+ assert_equal 0.83146, a[:p_good].round(5), "proportion of good mappings"
83
+ assert_equal 0.84615, b[:p_good].round(5), "proportion of good mappings"
71
84
 
72
85
  # uncovered bases
73
86
  unc_a = contigs[0].uncovered_bases
74
87
  unc_b = contigs[1].uncovered_bases
75
- assert_equal 11, unc_a, "uncovered bases"
76
- assert_equal 2, unc_b, "uncovered bases"
88
+ assert_equal 12, unc_a, "uncovered bases"
89
+ assert_equal 4, unc_b, "uncovered bases"
77
90
 
78
91
  prop_unc_a = a[:p_bases_covered]
79
92
  prop_unc_b = b[:p_bases_covered]
80
- assert_equal 0.98497, prop_unc_a.round(5), "proportion covered bases"
81
- assert_equal 0.99757, prop_unc_b.round(5), "proportion covered bases"
93
+ assert_equal 0.98361, prop_unc_a.round(5), "proportion covered bases"
94
+ assert_equal 0.99514, prop_unc_b.round(5), "proportion covered bases"
82
95
 
83
96
  end
84
97
  end
@@ -99,8 +112,8 @@ class TestReadMetrics < Test::Unit::TestCase
99
112
 
100
113
  edit_a = a[:p_not_segmented].round(5)
101
114
  edit_b = b[:p_not_segmented].round(5)
102
- assert_equal 0.11444, edit_a, "probability not segmented 1"
103
- assert_equal 0.82779, edit_b, "probability not segmented 2"
115
+ assert_equal 0.47635, edit_a, "probability not segmented 1"
116
+ assert_equal 0.77451, edit_b, "probability not segmented 2"
104
117
 
105
118
  end
106
119
  end
@@ -59,7 +59,7 @@ class TestTransrater < Test::Unit::TestCase
59
59
  Dir.chdir tmpdir do
60
60
  all = @rater.all_metrics(@left, @right)
61
61
  score = @rater.assembly_score
62
- assert_equal 0.10231, score.round(5) # regression test
62
+ assert_equal 0.4078, score.round(5) # regression test
63
63
  end
64
64
  end
65
65
  end
data/transrate.gemspec CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |gem|
23
23
  gem.add_dependency 'bio', '~> 1.4', '>= 1.4.3'
24
24
  gem.add_dependency 'crb-blast', '~> 0.4', '>= 0.4.2'
25
25
  gem.add_dependency 'ruby-prof', '~> 0.15', '>= 0.15.1'
26
+ gem.add_dependency 'fix-trinity-output', '~> 1.0', '>= 1.0'
26
27
 
27
28
  gem.add_development_dependency 'rake', '~> 10.3', '>= 10.3.2'
28
29
  gem.add_development_dependency 'rake-compiler', '~> 0.9', '>= 0.9.2'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transrate
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.alpha.5
4
+ version: 1.0.0.alpha.8.bowtie
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Smith-Unna
@@ -9,258 +9,278 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-10-22 00:00:00.000000000 Z
12
+ date: 2014-11-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: yell
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ~>
19
19
  - !ruby/object:Gem::Version
20
20
  version: '2.0'
21
- - - ">="
21
+ - - '>='
22
22
  - !ruby/object:Gem::Version
23
23
  version: 2.0.4
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
- - - "~>"
28
+ - - ~>
29
29
  - !ruby/object:Gem::Version
30
30
  version: '2.0'
31
- - - ">="
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: 2.0.4
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: trollop
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.0'
41
41
  type: :runtime
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '2.0'
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: bindeps
50
50
  requirement: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.1'
55
- - - ">="
55
+ - - '>='
56
56
  - !ruby/object:Gem::Version
57
57
  version: 0.1.3
58
58
  type: :runtime
59
59
  prerelease: false
60
60
  version_requirements: !ruby/object:Gem::Requirement
61
61
  requirements:
62
- - - "~>"
62
+ - - ~>
63
63
  - !ruby/object:Gem::Version
64
64
  version: '0.1'
65
- - - ">="
65
+ - - '>='
66
66
  - !ruby/object:Gem::Version
67
67
  version: 0.1.3
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: bio
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "~>"
72
+ - - ~>
73
73
  - !ruby/object:Gem::Version
74
74
  version: '1.4'
75
- - - ">="
75
+ - - '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: 1.4.3
78
78
  type: :runtime
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - "~>"
82
+ - - ~>
83
83
  - !ruby/object:Gem::Version
84
84
  version: '1.4'
85
- - - ">="
85
+ - - '>='
86
86
  - !ruby/object:Gem::Version
87
87
  version: 1.4.3
88
88
  - !ruby/object:Gem::Dependency
89
89
  name: crb-blast
90
90
  requirement: !ruby/object:Gem::Requirement
91
91
  requirements:
92
- - - "~>"
92
+ - - ~>
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0.4'
95
- - - ">="
95
+ - - '>='
96
96
  - !ruby/object:Gem::Version
97
97
  version: 0.4.2
98
98
  type: :runtime
99
99
  prerelease: false
100
100
  version_requirements: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - "~>"
102
+ - - ~>
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0.4'
105
- - - ">="
105
+ - - '>='
106
106
  - !ruby/object:Gem::Version
107
107
  version: 0.4.2
108
108
  - !ruby/object:Gem::Dependency
109
109
  name: ruby-prof
110
110
  requirement: !ruby/object:Gem::Requirement
111
111
  requirements:
112
- - - "~>"
112
+ - - ~>
113
113
  - !ruby/object:Gem::Version
114
114
  version: '0.15'
115
- - - ">="
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: 0.15.1
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - ~>
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0.15'
125
- - - ">="
125
+ - - '>='
126
126
  - !ruby/object:Gem::Version
127
127
  version: 0.15.1
128
+ - !ruby/object:Gem::Dependency
129
+ name: fix-trinity-output
130
+ requirement: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ~>
133
+ - !ruby/object:Gem::Version
134
+ version: '1.0'
135
+ - - '>='
136
+ - !ruby/object:Gem::Version
137
+ version: '1.0'
138
+ type: :runtime
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ~>
143
+ - !ruby/object:Gem::Version
144
+ version: '1.0'
145
+ - - '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '1.0'
128
148
  - !ruby/object:Gem::Dependency
129
149
  name: rake
130
150
  requirement: !ruby/object:Gem::Requirement
131
151
  requirements:
132
- - - "~>"
152
+ - - ~>
133
153
  - !ruby/object:Gem::Version
134
154
  version: '10.3'
135
- - - ">="
155
+ - - '>='
136
156
  - !ruby/object:Gem::Version
137
157
  version: 10.3.2
138
158
  type: :development
139
159
  prerelease: false
140
160
  version_requirements: !ruby/object:Gem::Requirement
141
161
  requirements:
142
- - - "~>"
162
+ - - ~>
143
163
  - !ruby/object:Gem::Version
144
164
  version: '10.3'
145
- - - ">="
165
+ - - '>='
146
166
  - !ruby/object:Gem::Version
147
167
  version: 10.3.2
148
168
  - !ruby/object:Gem::Dependency
149
169
  name: rake-compiler
150
170
  requirement: !ruby/object:Gem::Requirement
151
171
  requirements:
152
- - - "~>"
172
+ - - ~>
153
173
  - !ruby/object:Gem::Version
154
174
  version: '0.9'
155
- - - ">="
175
+ - - '>='
156
176
  - !ruby/object:Gem::Version
157
177
  version: 0.9.2
158
178
  type: :development
159
179
  prerelease: false
160
180
  version_requirements: !ruby/object:Gem::Requirement
161
181
  requirements:
162
- - - "~>"
182
+ - - ~>
163
183
  - !ruby/object:Gem::Version
164
184
  version: '0.9'
165
- - - ">="
185
+ - - '>='
166
186
  - !ruby/object:Gem::Version
167
187
  version: 0.9.2
168
188
  - !ruby/object:Gem::Dependency
169
189
  name: turn
170
190
  requirement: !ruby/object:Gem::Requirement
171
191
  requirements:
172
- - - "~>"
192
+ - - ~>
173
193
  - !ruby/object:Gem::Version
174
194
  version: '0.9'
175
- - - ">="
195
+ - - '>='
176
196
  - !ruby/object:Gem::Version
177
197
  version: 0.9.7
178
198
  type: :development
179
199
  prerelease: false
180
200
  version_requirements: !ruby/object:Gem::Requirement
181
201
  requirements:
182
- - - "~>"
202
+ - - ~>
183
203
  - !ruby/object:Gem::Version
184
204
  version: '0.9'
185
- - - ">="
205
+ - - '>='
186
206
  - !ruby/object:Gem::Version
187
207
  version: 0.9.7
188
208
  - !ruby/object:Gem::Dependency
189
209
  name: minitest
190
210
  requirement: !ruby/object:Gem::Requirement
191
211
  requirements:
192
- - - "~>"
212
+ - - ~>
193
213
  - !ruby/object:Gem::Version
194
214
  version: '4'
195
- - - ">="
215
+ - - '>='
196
216
  - !ruby/object:Gem::Version
197
217
  version: 4.7.5
198
218
  type: :development
199
219
  prerelease: false
200
220
  version_requirements: !ruby/object:Gem::Requirement
201
221
  requirements:
202
- - - "~>"
222
+ - - ~>
203
223
  - !ruby/object:Gem::Version
204
224
  version: '4'
205
- - - ">="
225
+ - - '>='
206
226
  - !ruby/object:Gem::Version
207
227
  version: 4.7.5
208
228
  - !ruby/object:Gem::Dependency
209
229
  name: simplecov
210
230
  requirement: !ruby/object:Gem::Requirement
211
231
  requirements:
212
- - - "~>"
232
+ - - ~>
213
233
  - !ruby/object:Gem::Version
214
234
  version: '0.8'
215
- - - ">="
235
+ - - '>='
216
236
  - !ruby/object:Gem::Version
217
237
  version: 0.8.2
218
238
  type: :development
219
239
  prerelease: false
220
240
  version_requirements: !ruby/object:Gem::Requirement
221
241
  requirements:
222
- - - "~>"
242
+ - - ~>
223
243
  - !ruby/object:Gem::Version
224
244
  version: '0.8'
225
- - - ">="
245
+ - - '>='
226
246
  - !ruby/object:Gem::Version
227
247
  version: 0.8.2
228
248
  - !ruby/object:Gem::Dependency
229
249
  name: shoulda-context
230
250
  requirement: !ruby/object:Gem::Requirement
231
251
  requirements:
232
- - - "~>"
252
+ - - ~>
233
253
  - !ruby/object:Gem::Version
234
254
  version: '1.2'
235
- - - ">="
255
+ - - '>='
236
256
  - !ruby/object:Gem::Version
237
257
  version: 1.2.1
238
258
  type: :development
239
259
  prerelease: false
240
260
  version_requirements: !ruby/object:Gem::Requirement
241
261
  requirements:
242
- - - "~>"
262
+ - - ~>
243
263
  - !ruby/object:Gem::Version
244
264
  version: '1.2'
245
- - - ">="
265
+ - - '>='
246
266
  - !ruby/object:Gem::Version
247
267
  version: 1.2.1
248
268
  - !ruby/object:Gem::Dependency
249
269
  name: coveralls
250
270
  requirement: !ruby/object:Gem::Requirement
251
271
  requirements:
252
- - - "~>"
272
+ - - ~>
253
273
  - !ruby/object:Gem::Version
254
274
  version: '0.7'
255
275
  type: :development
256
276
  prerelease: false
257
277
  version_requirements: !ruby/object:Gem::Requirement
258
278
  requirements:
259
- - - "~>"
279
+ - - ~>
260
280
  - !ruby/object:Gem::Version
261
281
  version: '0.7'
262
- description: " a library and command-line tool for quality assessment of de-novo transcriptome
263
- assemblies "
282
+ description: ' a library and command-line tool for quality assessment of de-novo transcriptome
283
+ assemblies '
264
284
  email: rds45@cam.ac.uk
265
285
  executables:
266
286
  - transrate
@@ -268,8 +288,8 @@ extensions:
268
288
  - ext/transrate/extconf.rb
269
289
  extra_rdoc_files: []
270
290
  files:
271
- - ".gitignore"
272
- - ".travis.yml"
291
+ - .gitignore
292
+ - .travis.yml
273
293
  - Gemfile
274
294
  - LICENSE
275
295
  - README.md
@@ -281,12 +301,14 @@ files:
281
301
  - ext/transrate/transrate.c
282
302
  - lib/transrate.rb
283
303
  - lib/transrate/assembly.rb
304
+ - lib/transrate/bowtie.rb
284
305
  - lib/transrate/cmd.rb
285
306
  - lib/transrate/comparative_metrics.rb
286
307
  - lib/transrate/contig.rb
287
308
  - lib/transrate/contig_metrics.rb
288
309
  - lib/transrate/express.rb
289
310
  - lib/transrate/read_metrics.rb
311
+ - lib/transrate/sam_checker.rb
290
312
  - lib/transrate/samtools.rb
291
313
  - lib/transrate/snap.rb
292
314
  - lib/transrate/transrater.rb
@@ -325,18 +347,19 @@ require_paths:
325
347
  - ext
326
348
  required_ruby_version: !ruby/object:Gem::Requirement
327
349
  requirements:
328
- - - ">="
350
+ - - '>='
329
351
  - !ruby/object:Gem::Version
330
352
  version: '0'
331
353
  required_rubygems_version: !ruby/object:Gem::Requirement
332
354
  requirements:
333
- - - ">"
355
+ - - '>'
334
356
  - !ruby/object:Gem::Version
335
357
  version: 1.3.1
336
358
  requirements: []
337
359
  rubyforge_project:
338
- rubygems_version: 2.2.2
360
+ rubygems_version: 2.1.4
339
361
  signing_key:
340
362
  specification_version: 4
341
363
  summary: quality assessment of de-novo transcriptome assemblies
342
364
  test_files: []
365
+ has_rdoc: