From 80365ef0d8c79a6289d041c12e5fc087f09a1b65 Mon Sep 17 00:00:00 2001 From: martinahansen Date: Thu, 19 Apr 2012 09:28:57 +0000 Subject: [PATCH] fixed double insertion of indels in alignments (missing .dup) git-svn-id: http://biopieces.googlecode.com/svn/trunk@1805 74ccb610-7750-0410-82ae-013aeee3265d --- code_ruby/lib/maasha/align.rb | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/code_ruby/lib/maasha/align.rb b/code_ruby/lib/maasha/align.rb index 737f2f8..d3e5b44 100755 --- a/code_ruby/lib/maasha/align.rb +++ b/code_ruby/lib/maasha/align.rb @@ -101,7 +101,7 @@ class Align entries.each do |entry| raise AlignError, "Duplicate sequence name: #{entry.seq_name}" if index.has_key? entry.seq_name - index[entry.seq_name] = entry + index[entry.seq_name] = entry.dup stdin.puts entry.to_fasta end @@ -148,13 +148,13 @@ class Align if self.members != 2 raise AlignError "Bad number of members for similarity calculation: #{self.members}" end - + na1 = NArray.to_na(@entries[0].seq.upcase, "byte") na2 = NArray.to_na(@entries[1].seq.upcase, "byte") shared = (na1 - na2).count_false total = (@entries[0].length < @entries[1].length) ? @entries[0].length : @entries[1].length - identity = (shared.to_f / total).round(2) + identity = shared.to_f / total identity end @@ -186,6 +186,15 @@ class Align output end + # Method for iterating each of the aligned sequences. + def each + if block_given? + @entries.each { |entry| yield entry } + else + return @entries + end + end + private class Consensus -- 2.39.5