- 论坛徽章:
- 145
|
回复 1# Eva326
$ perl get_fasta_id_list.pl
Usage : get_fasta_id_list.pl ID_LIST FASTA_FILE OUTPUT
Example: get_fasta_id_list.pl id.txt a.fas out.fas
$ perl get_fasta_id_list.pl id.txt a.fas out.fas
Output file: out.fas
$ cat id.txt
AAA1
CCC2
DDD3
$ cat a.fas
>Tar AAA1|test pp
QQQQQQ
QQ
>AAA2_test
QQQQQQQQQQ
>test|DDD3 ID:777
QQQQQQQ
QQQQQQ
QQQQQ
$ cat out.fas
>Tar AAA1|test pp
QQQQQQ
QQ
>test|DDD3 ID:777
QQQQQQQ
QQQQQQ
QQQQQ
$ cat get_fasta_id_list.pl
use strict;
use warnings;
sub message{
print <<EOF;
Usage : $0 ID_LIST FASTA_FILE OUTPUT
Example: $0 id.txt a.fas out.fas
EOF
exit 1;
}
message() if(@ARGV != 3);
my ($Fid, $Ffas, $Fout) = @ARGV;
open(FHid, "<", "$Fid") or die "cannot open $Fid\n";
open(FHfas, "<", "$Ffas") or die "cannot open $Ffas\n";
open(FHout, ">", "$Fout") or die "cannot open $Fout\n";
my $sRE ="\\b(";
while (<FHid>) {
chomp;
s/>//g;
$sRE .= "$_|";
}
close FHid;
$sRE =~ s/[|]$/)\\b/;
my $sMatch = 0;
while (<FHfas>) {
if(m/^>/){
$sMatch = m/$sRE/? 1: 0;
}
if($sMatch){
print FHout "$_";
}
}
close FHfas;
close FHout;
print "Output file: $Fout\n";
|
|