annotate Perl/Blast_Filter.pl @ 9:24676ef2945d draft

Uploaded
author dereeper
date Thu, 30 May 2024 16:18:04 +0000
parents e42d30da7a74
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
1 #!/usr/bin/perl
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
2 use strict;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
3 use warnings;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
4
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
5
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
6 my $BLASTResult=$ARGV[0];
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
7 my $SEQFile=$ARGV[1];
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
8 my $coverage=$ARGV[2];
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
9 my $identity=$ARGV[3]*100;#percents
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
10 my $score=$ARGV[4];
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
11 my %hash;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
12 my @row;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
13 my $line;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
14
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
15 #my $coverage=0.5;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
16 #my $identity=50;#percents
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
17 #my $score=50;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
18
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
19 &ReadSeqLength("$SEQFile",\%hash);
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
20
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
21 open(F,$BLASTResult);
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
22 while ($line=<F>)
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
23 {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
24 if ($line!~/\#/)
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
25 {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
26 @row=split(/\t/,$line);
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
27 if ($row[2]>=$identity and $row[11]>=$score)
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
28 {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
29 if ((($row[7]-$row[6]+1)/$hash{$row[0]})>=$coverage)
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
30 {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
31 if ((($row[9]-$row[8]+1)/$hash{$row[1]})>=$coverage)
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
32 {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
33 print "$row[0]\t$row[1]\t$row[11]";
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
34 }
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
35 }
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
36 }
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
37 }
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
38 }
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
39 close(F);
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
40
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
41 sub ReadSeqLength()
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
42 {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
43 use Bio::SeqIO;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
44 (my $file,my $hash)=@_;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
45 my $seq;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
46 my $in=Bio::SeqIO->new(-file=>"$file",-format=>"fasta");
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
47 while ($seq=$in->next_seq())
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
48 {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
49 $$hash{$seq->id}=length($seq->seq());
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
50 }
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
51 }