X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=forester%2Fruby%2Fevoruby%2Flib%2Fevo%2Ftool%2Fmulti_sequence_extractor.rb;h=ffabc45cb9eb61005d2cf4f5bd22fe3795756889;hb=599a0dfe599da928ccfe1a8bcba65dd78c21422c;hp=31f02724f6246e86e8e3433a45ece8049b0c78d8;hpb=9b4399d007fb56f94f4cc5de6f3c45bb21e3e92e;p=jalview.git diff --git a/forester/ruby/evoruby/lib/evo/tool/multi_sequence_extractor.rb b/forester/ruby/evoruby/lib/evo/tool/multi_sequence_extractor.rb index 31f0272..ffabc45 100644 --- a/forester/ruby/evoruby/lib/evo/tool/multi_sequence_extractor.rb +++ b/forester/ruby/evoruby/lib/evo/tool/multi_sequence_extractor.rb @@ -23,9 +23,9 @@ module Evoruby class MultiSequenceExtractor PRG_NAME = "mse" - PRG_VERSION = "1.02" + PRG_VERSION = "1.03" PRG_DESC = "extraction of sequences by name from multiple multi-sequence ('fasta') files" - PRG_DATE = "130322" + PRG_DATE = "131127" COPYRIGHT = "2008-2013 Christian M Zmasek" CONTACT = "phylosoft@gmail.com" WWW = "https://sites.google.com/site/cmzmasek/home/software/forester" @@ -294,21 +294,35 @@ module Evoruby per_species_counter = per_species_counter + 1 seq = nil - if current_msa.find_by_name_start( seq_name, true ).size > 0 - begin - seq = current_msa.get_by_name_start( seq_name, true ).copy - rescue ArgumentError => e - Util.fatal_error( PRG_NAME, "error: " + e.to_s ) - end - else + indices = current_msa.find_by_name_start( seq_name, true ) + if indices.size == 1 + seq = current_msa.get_sequence( indices[ 0 ] ) + elsif indices.size == 0 # Not found, try finding by partial match. begin seq = current_msa.get_by_name( seq_name, true, true ) rescue ArgumentError => e Util.fatal_error( PRG_NAME, "error: " + e.to_s ) end + else + Util.fatal_error( PRG_NAME, "error: seq name \"" + seq_name + "\" not unique" ) end + # if current_msa.find_by_name_start( seq_name, true ).size > 0 + # begin + # seq = current_msa.get_by_name_start( seq_name, true ).copy + # rescue ArgumentError => e + # Util.fatal_error( PRG_NAME, "error: " + e.to_s ) + # end + # else + # # Not found, try finding by partial match. + # begin + # seq = current_msa.get_by_name( seq_name, true, true ) + # rescue ArgumentError => e + # Util.fatal_error( PRG_NAME, "error: " + e.to_s ) + # end + # end + normalized_id = per_species_counter.to_s( 16 ).upcase + "_" + current_species