- 論壇徽章:
- 0
|
這是我寫的去除質(zhì)量值低于8的堿基占reads總長度40%的reads序列的腳本,誰能幫我看看有什么問題。謝謝~- #!/usr/bin/perl
- use warnings;
- use strict;
- use Bio::SeqIO::fastq;
- my $infile=$ARGV[0];
- open (W,"<$infile") || die $!;
- my %fileseq;
- my ($id,$seq,$quality);
- while(<W>){
- if (/^(\S+)\s+(\S+)$/){
- $fileseq{$id}{$seq}=$quality;
- }
- }
- close W;
- open (M,">$infile.out")||die $!;
- my $all=Bio::SeqIO::fastq->new(-file=>"$infile",-format=>'fastq');
- while(my $seq=$all->next_seq()){
- my $id=$seq->id;
- my $seq=$seq->seq;
- my $qual=join('',@{$seq->$qual});
- my @quality=split(//,$qual);
- my @quality1;
- for my$a (@quality){
- my$b=chr($i-33);
- push (@quality1,$b);
- }
- $qual=join ('',@quality1);
-
- my $base_8=0;
- foreach my$base (@quality1){
- if($base<=8){
- my$tatal_low=$base_8++;}
- my $total_quality=$fileseq{$id}{$seq}++;
- if($tatal_low/$total_quality>=0.4){
- s/$fileseq{$id}//;
- s/$id//g;
- s/$fileseq{$id}{$seq}//g;
- }
- }
-
- print M ("$id\n$seq\n\+\n$quality");
- }
- close M;
-
-
-
復(fù)制代碼 |
|