- 论坛徽章:
- 0
|
写一个~
- #!/usr/bin/perl
- use warnings;
- use strict;
- open DATA_1, '<', 'a.txt' or die "Can't open: $!";
- open DATA_2, '<', 'b.faa' or die "Can't open: $!";
- my (%pro_seqID, $seqID);
- while (<DATA_1>) {
- chomp;
- if (/(WP.*?);/) {
- $seqID = $1;
- next;
- }
- push @{ $pro_seqID{$seqID} }, $_;
- }
- close DATA_1;
- local $/ = "\n>";
- while (<DATA_2>) {
- chomp;
- s/^>//;
- if ( my @id = m/_(WP.*?\.\d)_/ ) {
- my $id = shift @id;
- s/^.*\]//;
- my $pro_seq = join "", split;
- if ( exists $pro_seqID{$id} ) {
- my %cal_str;
- my $part_str = substr( $pro_seq, ( $pro_seqID{$id}->[0] - 1 ),
- ( $pro_seqID{$id}->[1] - $pro_seqID{$id}->[0] ) +1 );
- my @chr = $part_str =~ m/^(\w).*(\w)$/;
- $cal_str{$_}++ for @chr;
- print $id, " ", $_, ": ", $cal_str{$_}, "\n" for ( sort keys %cal_str );
- }
- }
- print "\n";
- }
- close DATA_2;
复制代码
处理fasta文件如果大同小异的话,直接写个子程序,以后方便自己调用就好~ |
|