+++ /dev/null
-#! /usr/bin/env ruby
-
-#version 2, 2009/01/24
-
-
-if ARGV.length == 1
- scale = 1.0
-elsif ARGV.length == 2
- scale = ARGV.shift.to_f
-else
- STDERR.puts "USAGE: newick2mafft.rb scale input_tree > output"
- exit
-end
-
-if scale <= 0.0 then
- STDERR.puts "Inappropriate scale, #{scale.to_s}"
- exit
-end
-
-STDERR.puts "scale = " + scale.to_s
-
-infp = File.open( ARGV.shift, "r" )
-
-tree = ""
-while line = infp.gets
- tree += line.strip
- break if tree =~ /;$/
-end
-infp.close
-
-
-#tree = tree.gsub( /_.*?:/, ":" ).gsub(/[0-9]\.[0-9]*e-[0-9][0-9]/, "0").gsub(/\[.*?\]/,"").gsub(/ /, "").gsub(/:\-[0-9\.]+/, ":0.0" )
-tree = tree.gsub( /_.*?:/, ":" ).gsub(/[0-9]\.[0-9]*e-[0-9][0-9]/, "0").gsub(/\[.*?\]/,"").gsub(/ /, "")
-
-
-STDERR.puts "Initial tree = " + tree
-
-def resolve( tree )
-
-
-while 1
-# p tree
- tree.sub!( /\,([0-9]+):(\-?[0-9\.]+)\,([0-9]+):(\-?[0-9\.]+)/, ",XXX" )
- hit1 = $1
- hit2 = $2
- hit3 = $3
- hit4 = $4
-
-# p hit1
-# p hit2
-# p hit3
-# p hit4
-
-# puts "introduce XXX"
-# p tree
-
- break unless tree.index(/XXX/)
-
- poshit = tree.index(/XXX/)
-# puts "poshit=" + poshit.to_s
-
- i = poshit
- height = 0
- while i >= 0
- break if height == 0 && tree[i..i] == '('
- if tree[i..i] == ')' then
- height += 1
- elsif tree[i..i] == '(' then
- height -= 1
- end
- i -= 1
- end
-
- poskakko = i
-# puts "poskakko = " + poskakko.to_s
- zenhan = tree[0..poskakko]
- zenhan = "" if poskakko == -1
-# puts "zenhan = " + zenhan
-
- treelen = tree.length
- tree = zenhan + "(" + tree[poskakko+1..treelen]
-# puts "add ("
-# p tree
- tree.sub!( /XXX/, "#{hit1}:#{hit2}):0,#{hit3}:#{hit4}" )
-
-# p tree
-end
-
-
-return tree
-
-end
-
-memi = [-1,-1]
-leni = [-1,-1]
-
-while tree.index( /\(/ )
-
- tree = resolve( tree )
-
- tree.sub!( /\(([0-9]+):(\-?[0-9\.]+),([0-9]+):(\-?[0-9\.]+)\)/, "XXX" )
- memi[0] = $1.to_i
- leni[0] = $2.to_f * scale
- memi[1] = $3.to_i
- leni[1] = $4.to_f * scale
-
- if leni[0] > 10 || leni[1] > 10 then
- STDERR.puts ""
- STDERR.puts "Please check the scale of branch length!"
- STDERR.puts "The unit of branch lengths must be 'substitution/site'"
- STDERR.puts "If the unit is 'substition' in your tree, please"
- STDERR.puts "use the scale argument,"
- STDERR.puts "% newick2mafft scale in > out"
- STDERR.puts "where scale = 1/(alignment length)"
- STDERR.puts ""
- exit 1
- end
-
-# STDERR.puts "subtree = " + $&
-
- if memi[1] < memi[0] then
- memi.reverse!
- leni.reverse!
- end
-
- tree.sub!( /XXX/, memi[0].to_s )
-
- STDERR.puts "Tree = " + tree
-
- printf( "%5d %5d %10.5f %10.5f\n", memi[0], memi[1], leni[0], leni[1] )
-
-end