]> git.donarmstrong.com Git - biopieces.git/commitdiff
added check for duplicate seq_names to align.rb
authormartinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d>
Thu, 12 Jan 2012 12:45:57 +0000 (12:45 +0000)
committermartinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d>
Thu, 12 Jan 2012 12:45:57 +0000 (12:45 +0000)
git-svn-id: http://biopieces.googlecode.com/svn/trunk@1726 74ccb610-7750-0410-82ae-013aeee3265d

code_ruby/lib/maasha/align.rb

index 12cb5e011d5453c0131ae68c9e114b93c86fed77..c1f4896d0165238f65cca74cbe5dfb21e9a86b16 100755 (executable)
@@ -91,12 +91,13 @@ class Align
   # Class method to align sequences in a list of Seq objects and
   # return these as a new list of Seq objects.
   def self.muscle(entries)
-    has_qual = false
-    result   = []
-    index    = {}
+    result = []
+    index  = {}
 
     Open3.popen3("muscle") do |stdin, stdout, stderr|
       entries.each do |entry|
+        raise AlignError, "Duplicate sequence name: #{entry.seq_name}" if index.has_key entry.seq_name
+
         index[entry.seq_name] = entry
 
         stdin.puts entry.to_fasta
@@ -111,7 +112,7 @@ class Align
 
         fa_entry.seq.scan(/-+/) do |m|
           fq_entry.seq  = fq_entry.seq[0 ... $`.length]  + ('-' * m.length) + fq_entry.seq[$`.length .. -1]
-          fq_entry.qual = fq_entry.qual[0 ... $`.length] + ('@' * m.length) + fq_entry.qual[$`.length .. -1]
+          fq_entry.qual = fq_entry.qual[0 ... $`.length] + ('@' * m.length) + fq_entry.qual[$`.length .. -1] unless fq_entry.qual.nil?
         end
 
         result << fq_entry