1 #!/usr/local/bin/ruby -w
4 require 'lib/evo/sequence/sequence'
5 require 'lib/evo/msa/msa'
6 require 'lib/evo/msa/msa_factory'
7 require 'lib/evo/io/writer/fasta_writer'
8 require 'lib/evo/io/parser/fasta_parser'
19 msa = f.create_msa_from_file( input, FastaParser.new() )
21 puts "error: " + e.to_s
26 unique_genes_msa = Msa.new
27 longest_non_unique_genes_msa = Msa.new
29 fragment_re = /fragment/i
33 for i in 0 ... msa.get_number_of_seqs()
34 seq = msa.get_sequence( i )
37 if fragment_re.match( name )
41 gn_match = gn_re.match( name )
43 puts "no match in " + name
47 unless gn_to_seqs.has_key?(gn)
48 gn_to_seqs[gn] = Msa.new
50 gn_to_seqs[gn].add_sequence(seq)
53 puts "Sequeunces ignored because \"fragment\" in desc: " + frag_counter.to_s
58 gn_to_seqs.each_pair do |gene,seqs|
59 if seqs.get_number_of_seqs > 1
60 puts counter.to_s + ": " + gene
67 for j in 0 ... seqs.get_number_of_seqs()
68 current = seqs.get_sequence( j )
69 if current.get_length > longest
70 longest = current.get_length
74 longest_non_unique_genes_msa.add_sequence(longest_seq)
76 unique_genes_msa.add_sequence( seqs.get_sequence( 0 ) )
80 w.write(unique_genes_msa, "seqs_from_unique_genes.fasta")
81 w.write(longest_non_unique_genes_msa, "longest_seqs_from_nonunique_genes.fasta")