From: cmzmasek Date: Fri, 28 Apr 2017 01:32:23 +0000 (-0700) Subject: in progress... X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=46089d65925eac47d07e5b0f592ae185e8d8ba6f;p=jalview.git in progress... --- diff --git a/forester/ruby/evoruby/lib/evo/tool/phylogenies_decorator.rb b/forester/ruby/evoruby/lib/evo/tool/phylogenies_decorator.rb index 4606e9c..a811899 100644 --- a/forester/ruby/evoruby/lib/evo/tool/phylogenies_decorator.rb +++ b/forester/ruby/evoruby/lib/evo/tool/phylogenies_decorator.rb @@ -21,7 +21,6 @@ module Evoruby DECORATOR_OPTIONS_SEQ_NAMES = '-p -t -mp -or' DECORATOR_OPTIONS_DOMAINS = '-p -t' - IDS_MAPFILE_SUFFIX = '.nim' DOMAINS_MAPFILE_SUFFIX = '.dff' SLEEP_TIME = 0.01 REMOVE_NI = true @@ -208,7 +207,7 @@ module Evoruby domains_mapfile_name = nil seqs_file_name = nil - ids_mapfile_name = get_file( files, phylogeny_id, IDS_MAPFILE_SUFFIX ) + ids_mapfile_name = get_file( ".", phylogeny_id, Constants::ID_MAP_FILE_SUFFIX ) begin Util.check_file_for_readability( ids_mapfile_name ) @@ -221,7 +220,7 @@ module Evoruby log << "Ids mapfile: " + ids_mapfile_name + NL unless no_seqs_files - seqs_file_name = get_seq_file( files, phylogeny_id ) + seqs_file_name = get_file( ".", phylogeny_id, Constants::ID_NORMALIZED_FASTA_FILE_SUFFIX ) begin Util.check_file_for_readability( seqs_file_name ) rescue IOError @@ -234,7 +233,7 @@ module Evoruby end unless no_domains - domains_mapfile_name = get_file( files, phylogeny_id, DOMAINS_MAPFILE_SUFFIX ) + domains_mapfile_name = get_file( ".", phylogeny_id, Constants::DOMAINS_TO_FORESTER_OUTFILE_SUFFIX ) begin Util.check_file_for_readability( domains_mapfile_name ) rescue IOError @@ -329,25 +328,27 @@ module Evoruby end def get_id( phylogeny_file_name ) - if phylogeny_file_name =~ /^(.+?_DA)_/ - return $1 - elsif phylogeny_file_name =~ /^(.+?)_/ - return $1 - end - nil + return phylogeny_file_name + #if phylogeny_file_name =~ /^(.+?_DA)_/ + # return $1 + #elsif phylogeny_file_name =~ /^(.+?)_/ + # return $1 + #end + #nil end def get_file( files_in_dir, phylogeny_id, suffix_pattern ) - matching_files = Util.get_matching_files( files_in_dir, phylogeny_id, suffix_pattern ) - if matching_files.length < 1 - Util.fatal_error( PRG_NAME, 'no file matching [' + phylogeny_id + - '...' + suffix_pattern + '] present in current directory' ) - end - if matching_files.length > 1 - Util.fatal_error( PRG_NAME, 'more than one file matching [' + - phylogeny_id + '...' + suffix_pattern + '] present in current directory' ) - end - matching_files[ 0 ] + Util.get_matching_file( files_in_dir, phylogeny_id, suffix_pattern ) + # matching_files = Util.get_matching_files( files_in_dir, phylogeny_id, suffix_pattern ) + # if matching_files.length < 1 + # Util.fatal_error( PRG_NAME, 'no file matching [' + phylogeny_id + + # '...' + suffix_pattern + '] present in current directory' ) + # end + # if matching_files.length > 1 + # Util.fatal_error( PRG_NAME, 'more than one file matching [' + + # phylogeny_id + '...' + suffix_pattern + '] present in current directory' ) + # end + # matching_files[ 0 ] end def get_seq_file( files_in_dir, phylogeny_id ) diff --git a/forester/ruby/evoruby/lib/evo/util/util.rb b/forester/ruby/evoruby/lib/evo/util/util.rb index 80916ca..df28bc5 100644 --- a/forester/ruby/evoruby/lib/evo/util/util.rb +++ b/forester/ruby/evoruby/lib/evo/util/util.rb @@ -4,7 +4,7 @@ # Copyright:: Copyright (C) 2017 Christian M. Zmasek # License:: GNU Lesser General Public License (LGPL) # -# Last modified: 2017/02/07 +# Last modified: 2017/04/27 require 'lib/evo/util/constants' @@ -22,6 +22,72 @@ module Evoruby matching_files end + def Util.get_matching_file( dir_name, prefix, suffix ) + unless Dir.exist? dir_name + raise IOError, "directory [#{dir_name}] does not exist" + end + + all_files = Dir.entries(dir_name) + + if ( all_files.size <= 2 ) + raise IOError, "directory [#{dir_name}] is empty" + end + matching_files = Array.new + all_files.each { | file | + if (( !File.directory?( file )) && (file.end_with? suffix)) + matching_files << file + end + } + + if ( matching_files.size == 0 ) + raise IOError, "no files ending with \"" + suffix + "\" found in [" + dir_name + "]" + end + my_prefix = prefix + done = false + more_than_one = false + the_one = nil; + + loop do + puts my_prefix #TODO remove me + matches = 0 + matching_files.each { | file | + if file.start_with?( my_prefix ) + matches += 1 + if matches > 1 + the_one = nil + break + end + the_one = file + end + } + if matches > 1 + more_than_one = true + done = true + end + if matches == 1 + done = true + else + if my_prefix.length <= 1 + raise IOError, "no file matching \"" + removeFileExtension( prefix ) + + "\" and ending with \"" + suffix + "\" found in [" + dir_name + "]" + end + my_prefix = my_prefix[ 0 ... ( my_prefix.length - 1 ) ] + + end + break if done + end + + if more_than_one + raise IOError, "multiple files matching \"" + prefix + + "\" and ending with \"" + suffix + "\" found in [" + dir_name + "]" + elsif the_one != nil + else + raise IOError, "no file matching \"" + prefix + "\" and ending with \"" + + suffix + "\" found in [" + dir_name + "]" + end + the_one + end + def Util.normalize_seq_name( name, length, exception_if_too_long = false ) if name.length > length if exception_if_too_long