zoukankan      html  css  js  c++  java
  • perl 脚本将phred33 转换为phred64

    今天用fastx_tookit 时遇到问题, 我的fastq 文件的碱基质量值格式为phred33, 而fastq_tookit 默认碱基质量值的格式为phred64, 

    所以报错了,提示我的fastq文件中包含非法的碱基质量值,逗号

    逗号的在ascii 码表中对应的十进制数字为44, 按照phred 33 格式,其对应的碱基质量值为11,如果按照phred64处理的化, 其质量值为-20,此时就会报错,

    所以需要将碱基质量给位phred64 格式的,我没找到现有工具, 只能自己写了,虽然很慢, 但是能解决问题。代码如下:

     1 #!/usr/bin/perl 
     2 use warnings;
     3 use strict;
     4 
     5 =pod
     6 将phred33 转换为phred64
     7 =cut
     8 
     9 my ($fastq) = @ARGV;
    10 my $raw_quality = 33;
    11 my $new_quality = 64;
    12 open FASTQ, $fastq or die "Can't open $fastq
    ";
    13 while (my $id = <FASTQ>) {
    14     my $seq     = <FASTQ>;
    15     my $des     = <FASTQ>;
    16     my $quality = <FASTQ>;
    17 
    18     chomp($id);
    19     chomp($seq);
    20     chomp($des);
    21     chomp($quality);
    22 
    23     my @fmt_quality = map {chr(ord($_) - $raw_quality + $new_quality)} split //, $quality;
    24     $quality = join "", @fmt_quality;
    25     print qq{$id
    $seq
    $des
    $qualityn};
    26 }
    27 close $fastq;

    将格式转换后,再运行fastx_tookit 中的fastx_quality_stats 就不会报错了

  • 相关阅读:
    linux将命令添加到PATH中
    查看linux服务器时间
    spring参数校验及全局异常处理
    Https协议的工作过程
    反爬虫方式
    telnet进入某个端口后无法退出
    索引操作
    redis output buffer 设置太小导致oom
    mysql查询课程浏览记录表中最近一周浏览次数最多的课程
    C++ 读写注册表
  • 原文地址:https://www.cnblogs.com/xudongliang/p/5083111.html
Copyright © 2011-2022 走看看