- 论坛徽章:
- 0
|
这是我写的去除质量值低于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;
-
-
-
复制代码 |
|