in progress...
[jalview.git] / forester / ruby / evoruby / exe / fasta_compare.rb
1 #!/usr/local/bin/ruby -w
2
3 require 'lib/evo/sequence/sequence'
4 require 'lib/evo/msa/msa'
5 require 'lib/evo/msa/msa_factory'
6 require 'lib/evo/io/writer/fasta_writer'
7 require 'lib/evo/io/parser/fasta_parser'
8
9 module Evoruby
10
11   input1 = ARGV[ 0 ]
12   input2 = ARGV[ 1 ]
13
14   f = MsaFactory.new()
15
16   msa1 = nil
17   msa2 = nil
18
19   begin
20     msa1 = f.create_msa_from_file( input1, FastaParser.new() )
21     msa2 = f.create_msa_from_file( input2, FastaParser.new() )
22   rescue Exception => e
23     puts "error: " + e.to_s
24     exit
25   end
26
27   only_in_1 = Msa.new
28   only_in_2 = Msa.new
29   in_both = Msa.new
30
31   for i in 0 ... msa1.get_number_of_seqs()
32     seq = msa1.get_sequence( i )
33     name = seq.get_name
34     if msa2.has?( name )
35       in_both.add_sequence(seq)
36     else
37       only_in_1.add_sequence(seq)
38     end
39   end
40
41   for j in 0 ... msa2.get_number_of_seqs()
42     seq = msa2.get_sequence( j )
43     name = seq.get_name
44     unless msa1.has?( name )
45       only_in_2.add_sequence(seq)
46     end
47   end
48
49   puts "only in 1: " + only_in_1.get_number_of_seqs.to_s
50   puts "only in 2: " + only_in_2.get_number_of_seqs.to_s
51   puts "in both  : " + in_both.get_number_of_seqs.to_s
52
53   w = FastaWriter.new
54   w.write(only_in_1, "only_in_1.fasta")
55   w.write(only_in_2, "only_in_2.fasta")
56   w.write(in_both, "in_both.fasta")
57
58 end