[Bio] / FigKernelScripts / match_dna_to_aligned_prots.pl Repository:
ViewVC logotype

Annotation of /FigKernelScripts/match_dna_to_aligned_prots.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (view) (download) (as text)

1 : overbeek 1.1
2 :     $usage = "match_dna_to_aligned_prots dna_filename aligned_prot_filename";
3 :    
4 :     (($dna_filename = shift @ARGV) && ($aligned_prot_filename = shift @ARGV)) ||
5 :     die $usage;
6 :    
7 :     open(DNA,"<$dna_filename") or die "failed to open dna";
8 :     open(PROT,"<$aligned_prot_filename") or die "failed to open prot";
9 :     while (defined($line = <DNA>))
10 :     {
11 :     $line =~ />(\S+)/;
12 :     $id = $1;
13 :     $seq = <DNA>;
14 :     chomp $seq;
15 :     $dnaseqs{$id} = $seq;
16 :     }
17 :    
18 :     while (defined($line = <PROT>))
19 :     {
20 :     $line =~ />(\S+)/;
21 :     $id = $1;
22 :     $seq = <PROT>;
23 :     chomp $seq;
24 :     $protseqs{$id} = $seq;
25 :     }
26 :    
27 :     # for $id (keys(%protseqs)) { print "$id $protseqs{$id}\n"; }
28 :     # for $id (keys(%protseqs)) { print "$id $protseqs{$id}\n" if ($id =~ /1048/); }
29 :     ## for $id (keys(%protseqs))
30 :     ## {
31 :     ## $protseqs{$id} =~ /(\-+)/;
32 :     ## $subseq=$1;
33 :     ## # print "$id NUM ", length($subseq), $subseq, "\n" if ($id =~ /155920.*1503/);
34 :     ## print "$id NUM=", length($subseq), "\n";
35 :     ## }
36 :    
37 :     for $id (keys(%protseqs))
38 :     {
39 :     $protseq = $protseqs{$id};
40 :     @protseq = split('',$protseq);
41 :     $newprotseq = '';
42 :     for ($i=0; $i < @protseq; $i++)
43 :     {
44 :     $newprotseq .= "$protseq[$i] ";
45 :     }
46 :     @newprotseq = split('',$newprotseq);
47 :     $protseqs{$id} = $newprotseq;
48 :     # print "$id $newprotseq\n" if ($id =~ /1048/);
49 :     $dnaseq = $dnaseqs{$id};
50 :     $dnaidx = 0;
51 :     $newdnaseq = '';
52 :     for ($i=0; $i < @protseq; $i++)
53 :     {
54 :     $c = $protseq[$i];
55 :     if ($c =~ /[A-Z]/)
56 :     {
57 :     $newdnaseq .= substr($dnaseq,$dnaidx,3);
58 :     $dnaidx += 3;
59 :     }
60 :     elsif ($c eq '-')
61 :     {
62 :     $newdnaseq .= "---";
63 :     }
64 :     else
65 :     {
66 :     print STDERR "unrecognized char $c\n";
67 :     }
68 :     }
69 :     $dnaseqs{$id} = $newdnaseq;
70 :     # print "$id $newdnaseq\n" if ($id =~ /1048/);
71 :     # sanity check
72 :     if (length($newdnaseq) != length($newprotseq))
73 :     {
74 :     print STDERR "BAD LEN $id ", length($newdnaseq), " ", length($newprotseq), "\n";
75 :     }
76 : overbeek 1.3 $dnaid = "DNA_" . $id;
77 :     $proid = "PRO_" . $id;
78 : overbeek 1.1 print ">$dnaid\n$newdnaseq\n";
79 :     print ">$proid\n$newprotseq\n";
80 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3