2 # = lib/soft/tree_puzzle - TreePuzzle class
4 # Copyright:: Copyright (C) 2009 Christian M. Zmasek
5 # License:: GNU Lesser General Public License (LGPL)
7 # $Id: tree_puzzle.rb,v 1.5 2009/10/08 22:44:54 cmzmasek Exp $
9 # last modified: 2009/10/06
11 require 'lib/evo/soft/resource_locations'
12 require 'lib/evo/util/util'
25 @tree_puzzle_home = Util.get_env_variable_value( ResourceLocations::TREEPUZZLE_HOME_ENV_VARIABLE )
26 Util.check_file_for_readability( @tree_puzzle_home )
29 def run( alignment_file, model, rate_heterogeneity, number_of_seqs )
30 Util.check_file_for_readability( alignment_file )
32 input = alignment_file
34 if number_of_seqs <= 257
37 input << determine_model_option( model )
38 input << determine_rate_heterogeneity_option( rate_heterogeneity )
42 puts @tree_puzzle_home + " " + input
44 IO.popen( @tree_puzzle_home, 'r+' ) do |io|
53 # "Model of substitution" order for DQO TREE-PUZZLE 5.0:
55 # m -> Dayhoff (Dayhoff et al. 1978)
56 # m -> JTT (Jones et al. 1992)
57 # m -> mtREV24 (Adachi-Hasegawa 1996)
58 # m -> BLOSUM62 (Henikoff-Henikoff 92)
59 # m -> VT (Mueller-Vingron 2000)
60 # m -> WAG (Whelan-Goldman 2000)
62 def determine_model_option( model )
66 elsif ( model == :jtt )
68 elsif ( model == :mtrev24 )
70 elsif ( model == :blosum62 )
72 elsif ( model == :vt )
73 cmd = "\nm\nm\nm\nm\nm"
74 elsif ( model == :wag )
75 cmd = "\nm\nm\nm\nm\nm\nm"
76 elsif ( model == :auto )
79 error_msg = "unknown model"
80 raise ArgumentError, error_msg
86 # Model of rate heterogeneity:
87 # "8 Gamma distributed rates"
88 # "Two rates (1 invariable + 1 variable)"
89 # "Mixed (1 invariable + 8 Gamma rates)"
90 # otherwise: Uniform rate
91 def determine_rate_heterogeneity_option( rates )
93 if ( rates == :gamma8 )
95 elsif ( rates == :inv1_var1 )
97 elsif ( rates == :inv1_gamma8 )
99 elsif ( rates == :uniform )
102 error_msg = "unknown rate heterogeneity option"
103 raise ArgumentError, error_msg
108 end # class TreePuzzle