转录组分析数据质控

用fastqc进行数据质控:

Babraham Bioinformatics - Public Projects Download在官网进行下载

fastqc在windows系统下运行完全没问题

把这个文件下载下来

这里主要要配置环境变量:主要是fastqc的和java的

在文件夹中运行cmd

这样输入就讲fastqc打开了

这里用一个名为ERR499.R1.fq的文件演示一下:

<<ERR499.R1.fq>>

直接导入fastqc:

下面来解析结果:

整体在28以上,还可以,如果在红区的太多就是不好的

蓝色就是好的,有其他颜色就是不好的

是单峰,不是双峰

人一般是49%

如果出现双峰:

1.就说明可能测到了杂质物种的峰值

2.片段打断不均匀

下面我们要去除adapt,这里安装cutadapt:

为什么要去除adaptor:

一般来说,测序公司会提供相关的适配子序列信息。如果你自己从网上下载数据,通常可以根据文章中的描述来查找这些信息。比如,文章里可能会提到适配子序列是否包含在内,或者可以查看该测序实验的建库类型。如果是Illumina平台进行的测序,我们就可以查找Illumina的出塞序列(例如,I7或I5的引物序列),这可以通过Illumina的官方文档或者其他资源找到。

假设现在我们确定了适配子的序列,接下来就要处理适配子去除的问题。比如,在70bp的测序中,如果读长只有40bp或50bp,那么在测序时,读长不足时,可能会测到部分适配子序列。对于Illumina平台的测序,如果你只获得了40bp的序列,这意味着你有30bp的适配子序列是需要去除的。

因为测序结果可能会带有30bp的适配子序列,如果不去除,接下来的比对就无法正确进行,因为最终比对的序列(假设是70bp)会与基因组序列不匹配。所以,我们需要先去除适配子序列(30bp),然后剩下的40bp才能用于正确的比对,得到可靠的结果。

接下来,我们就可以进行去除适配子的计算(通常用工具如cutadapt、Trimmomatic等)。

具体操作:

cutadapt -a AGATCGGAAGAGCACACGTCTGAACTCCAGTC ERR500.R1.fq -m 30 --output=ERR500.cutAd1.fq

去完adapter后序列长度不一样了

去除N(也就是未知碱基):

read里面都可能会出现n的序列,如果这个n达到了5%或者10%的时候我们就要把它去除掉

这里我们使用一个叫removeN的脚本:

#!/usr/bin/perl

use strict;

use warnings;

my $file = $ARGV[0];

my $N_ratio=0.05;

my $file_wf=$ARGV[1];

chomp($file);

chomp($N_ratio);

chomp($file_wf);

my ($flag, $mark) = 0;

my $four_line = '';

my $index;

my @file_all = split(/\.f/, $file);

#my $file_wf  = "$file_all[0]" . ".trimN.result.fq";

my $file_dn  = "$file_all[0]" . ".N.fq";

open(WF, ">$file_wf") or die $!;

open(DN, ">$file_dn") or die $!;

open(RF, "$file")     or die $!;

while (my $line = <RF>)

{

    my $line_two = $line;

    if($.==1)

    {

        if($line=~/^(\@.{2})/)

        {

            $index=$1;

            print "$index\n";

        }

    }

    if ($flag == 1)

    {

        chomp($line);

        my $reads_length = length($line);

        my @all_N        = ($line =~ /N|n/g);

        my $N_number     = @all_N;

        my $ratio        = $N_number / $reads_length;

        if ($ratio > $N_ratio)

        {

            $mark = 0;

            print "$line\n";

            print "$N_number/$reads_length";

        }

        else

        {

            $mark = 1;

        }

    }

    if ($line =~ /^$index/)

    {

        $flag = 1;

        if ($. != 1)

        {

            if ($mark == 1)

            {

                print WF $four_line;

            }

            else { print DN $four_line; }

        }

        $four_line = '';

    }

    else { $flag = 0; }

    $four_line .= $line_two;

}

close(RF);

if ($mark == 1)

{

    print WF $four_line;

}

else { print DN $four_line; }

close(WF);

close(DN);

cmd运行这行命令:

perl removeN.pl ERR500.cutAd1.fq ERR500.unknowNul1.fq

去除低质量(Trimmomatic):

fastx_toolkit也可以,但是它只有在linux系统下才能运行

Trimmomatic是一个处理高通量测序数据常用的工具,尤其是对于 Illumina 测序数据。它提供了包括去除接头序列(adapter trimming)、质量过滤(quality filtering)、去除低质量序列(trimming low-quality bases)等在内的功能,以帮助提高序列数据的质量和可靠性。

我这里直接下载了Trimmomatic的压缩包

http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/Trimmomatic-0.38.zip

然后cmd命令这样写:

java -jar trimmomatic-0.38.jar SE ERR500.unknowNul1.fq ERR500.qual1.fq SLIDINGWINDOW:4:20 MINLEN:36

参数解释:

  • SE:单端读取(Single-End)。
  • ERR500.unknowNul1.fq:输入文件。
  • ERR500.qual1.fq:输出文件。
  • SLIDINGWINDOW:4:20:使用 4 个碱基的滑动窗口,如果窗口内的平均质量值小于 20,则修剪该序列。
  • MINLEN:36:保留长度大于等于 36 的序列,防止过短的序列被保留下来。

结果解释:

  • 输入的序列总数是 997。
  • 剩下 863 个符合质量标准的序列,占总数的 86.56%。
  • 有 134 个序列由于质量不合格被丢弃,占总数的 13.44%。

结果

  • ERR500.qual1.fq:这是修剪后的输出文件,包含了质量合格的序列(质量值≥20,且长度≥36)。

进行修复:

假设两条序列一开始这样:

在去除过程中变成这样:

修复就是要变成这样:

这里要用到的工具就是bbmap:

repair.sh in=ERR500.qual1.fq out=ERR500.clean1.fq

最后做一下fastqc看一下质控是否有效果,这块不再多说,步骤同上面

过滤统计表:

可以自己写一个小程序计算,也可以自己算

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值