一、要组织数据
比如建立一个ChIP-seqtest文件。
在下面建立一系列过程文件夹
mkdir rawdata qc clean align peak
等,相当于一下子建立这么多文件夹。以后每一个步骤都要保存到相应文件夹下。当然也可以现用现建立。
二、可以把不同的分析pipeline所需要的软件打包在不同的环境命令中
这个还没太搞懂。日后补充更新吧。
三、怎么把SRR这样的数据名转成有意义的sample name呢?
day16用fastq-dump步骤做的不够完美,还需要后期再改名。那么可以如下操作,更简单易行。
可以现在geo下载名为SraRunInfo的文本文件(使用逗号分隔的),在excel中找到SRR文件和名称两列:分别是第1列run和20列Library name,只保留这两列,之后用excel中的查找替换功能,去掉无意义的字符串,特别注意:还要把第一列去掉(那一列只有列名,不去掉会报错)。再把文件另存为-制表符格式的txt文本,并改名为Sra.table,上传到服务器中。
建立一个sh文件,输入下面命令。
analysis_dir=~/ChIP-seqtest/rawdata
cat ~/ChIP-seqtest/Sratable.txt | while read id
do
arr=($id)
srr=${arr[0]}
sample=${arr[1]}
fastq-dump -O $analysis_dir -A $sample --gzip --split-3 $srr
done
效果是直接下载并转换SRR*文件成为.fastq.gz文件,并且按照sample命名。
四、FastQC运行
4.1 FastQC是一个java软件
也可以用一个sh做批量质控
analysis_dir=~/ChIP-seqtest #project总文件夹
ls $analysis_dir/rawdata/*.gz | xargs fastqc -t 10 -O $analysis_dir/qc
#把数据放到rawdata文件夹,把qc结果文件放到qc文件夹。
4.2 下面这个sh是错误的,我提交了好几遍终于大致明白。
datadir= ~/ChIP-seqtest/rawdata
ls $datadir/*.fastq.gz | while read id #这里id对应的是一个文件夹
do
fastqc -O $datadir/qc $id #
done
第一行和第三行命令就是差了一个空格。。。呜呜
4.3 fastqc不运行问题
fastqc完全不运行,qstat查显示是r,但是过夜也没有结果。按理来说,这个程序就是分分钟的事儿啊。
它依靠java,于是输入java -version 没有反应。各种调整环境变量都没用。
解决办法:在.bashrc里面把Glibc1.4那个操作给注释掉,前面加了一个#。就行了。还是IBMS大神出手解决的,我自己折腾了三天啊。。
五、FastQC结果文件解读
指定文件夹生成一个.html网页文件和一个.zip文件。打开html文件,就可以直观的看到结果。解读一下每个图啥意思吧。
1)basic statistcs 基本信息
合格会有个绿色的对勾,警告是个“!”,不合格是个红色的叉
-Total Sequences记录了输入文本的reads的数量
**-%GC需要重点关注。这个值表示的是整体序列中的GC含量,这个数值一般是物种特异的,比如人类细胞就是42%左右 **
2) per base sequnce quality 序列测序质量统计
-横轴是测序序列第1个碱基到第150个碱基
-纵轴是质量得分,Q = -10log10(error P)即20表示1%的错误率,30表示0.1%
-图中每1个boxplot,都是该位置的所有序列的测序质量的一个统计,上面的bar是90%分位数,下面的bar是10%分位数,箱子的中间的横线是50%分位数,箱子的上边是75%分位数,下边是25%分位数
-图中蓝色的细线是各个位置的平均值的连线
-一般要求此图中,所有位置的10%分位数大于20,也就是我们常说的Q20过滤 。
** 所有位置的10%大于20,即最多允许该位置10%的序列低于Q20,即90%的序列的碱基质量都大于Q20,即90%的序列碱基错误率不超过99%。*
-Warning 报警 如果任何碱基质量低于10,或者是任何中位数低于25
-Failure 报错 如果任何碱基质量低于5,或者是任何中位数低于20
3)Per Sequence Quality Scores 每条序列的测序质量统计
-每条reads的质量值,是把该条read所有碱基的
Q值计算平均值。
-横轴表示Q值,纵轴表示这个质量值有多少read数,当测序结果主要集中在高分中,证明测序质量良好。
-当峰值小于27(错误率0.2%)时报"WARN",当峰值小于20(错误率1%)时报"FAIL"
4)碱基分布Per Base Sequence Content
-所有reads的每一个位置,统计ATCG四种碱基(正常情况)的分布,用于检查是否有AT,GC分离现象。
这种现象可能是测序或者建库所带来的并且会影响后续的定量分析。
-横轴是1 - 150bp;纵轴是百分比
-四条线代表A T C G在每个位置平均含量
-理论上来说,A和T应该相等,G和C应该相等,但是一般测序的时候,刚开始测序仪状态不稳定,很可能出现上图的情况。像这种情况,即使测序的得分很高,也需要cut开始部分的序列信息,比如cut前面5bp
-当任一位置的A/T比例与G/C比例相差超过10%,报"WARN"
-当任一位置的A/T比例与G/C比例相差超过20%,报"FAIL"
5)Per Sequence GC Content序列平均GC含量分布图
-统计reads的平均GC含量的分布
-横轴是0 - 100%
-纵轴是每条序列GC含量对应的数量
-红线是实际情况,蓝线是理论分布(正态分布,均值不一定在50%,而是由平均GC含量推断的)两个应该比较接近才比较好
-曲线形状的偏差往往是由于文库的污染或是部分reads构成的子集有偏差(overrepresented reads)。
-形状接近正态但偏离理论分布的情况提示我们可能有系统偏差
-偏离理论分布的reads超过15%时,报"WARN"
-偏离理论分布的reads超过30%时,报"FAIL"。
-当红色的线出现双峰,基本肯定是混入了其他物种的DNA序列
6)Per base N content
应该看到就是一条接近0的直线。
当出现测序仪不能分辨的碱基时会产生N,横轴为碱基分布,纵轴为N比率
7)序列测序长度统计
-reads长度的分布
-理论上每次测序仪测出的read长度时一致的,但是由于建库等因素通常会导致一些小片段,reads长度不一致时报"WARN";当有长度为0的read时报“FAIL
8)序列重复水平Sequence Duplication Levels
-统计序列完全一致的reads的频率,横坐标是duplication的次数,纵坐标是duplicated reads的数目,以unique reads的总数作为100%。
-上图的情况中,相当于unique reads数目~20%的reads是观察到两个重复的,~3%是观察到三次重复的
-在一个理想的测序文库中,大多数的序列应该只出现一次。如果多次重复出现,那么可能意味着存在一定程度的富集偏倚(如PCR过度扩增等)。FastQC软件能够计数每一种序列的重复出现次数。如上图,蓝线是表示测序文库中所有序列的重复次数分布情况,红线是去重之后的分布情况。正常情况下,蓝线和红线的峰值都应在在坐标轴做左端。而如果出现了过多的重复序列,那么峰值会变低,曲线变平。可能意味着存在测序文库的污染或者严重的技术偏倚导致过多的重复序列。
9)Overrepresented sequences
如果有某个序列大量出现,就叫做over-represented。
fastqc的标准是占全部reads的0.1%以上。和上面的duplicate analysis一样,为了计算方便,只取了fq数据的前200,000条reads进行统计,所以有可能over-represented reads不在里面。而且大于75bp的reads也是只取50bp。如果命令行中加入了-c contaminant file,出现的over-represented sequence会从contaminant_file里面找匹配的hit(至少20bp且最多一个mismatch),可以给我们一些线索。
当发现超过总reads数0.1%的reads时报”WARN“,当发现超过总reads数1%的reads时报”FAIL“。
10)Adapter Content
-横轴表示碱基位置,纵轴表示百分比
-当fastqc分析时没有选择参数-a adapter list时,默认使用图例中的4种通用adapter序列进行统计。
若有adapter残留,后续必须去接头
11)Kmer content:
某k个bp的短序列在reads中大量出现。fastqc默认的k=5,可以通过-k -- kmers参数更改,范围是2-10。出现图一这种情况的原因要么是序列本身重复度高,比如建库PCR的时候出现了Bias。或者adapter没有除干净。clean之后前几个碱基还有少数高频也没关系,不影响后续分析,可正常使用。
六、关键概念和事项
1. 碱基质量值Q
碱基质量值,Q,即每个碱基的正确识别率,是衡量测序质量的重要标准
Q值通过测序Phred值计算而得,公式为:Q-score = -10 ✖ lg P
Phred值:不正确的碱基识别率,在碱基识别过程中通过一种概率模型计算得到,该模型可准确预测碱基识别的错误率
碱基质量值越高表明碱基识别越可靠,准确度越高
2. Q20与Q30的含义:
【1】Q20为每100个碱基中会有一个识别错,即正确识别率为2个9,99%,当Phred = 20 时,碱基识别出错率为1/100,碱基识别正确率为99%,Q-score = -10 ✖ lg 10-2=20
【2】Q30为每1000个碱基中会有一个识别错,正确识别率为3个9,99.9%,当Phred = 30 时,碱基识别出错率为1/1000,碱基识别正确率为99.9%,Q-score = -10 ✖ lg 10-3=30
Q30 > 90%,即碱基质量值 ≥ Q30的碱基所占百分比 ≥ 90%
3. 注意事项:
1、数据质控是一个综合的评价标准,其中主要指标为碱基质量与含量分布,如果这两个指标合格了,后面大部分指标都可以通过。如果这两项不合格,其余都会受到影响。
2、其中一些指标并不适合所有数据。要根据具体数据类型,具体分析。
六、trim-galore的安装
1. 用于数据清洗
就是fastqc之后,不合格的部分要修剪一下的意思。Trim Galore是对FastQC和cutadapt的包装。适用于所有高通量测序,包括RRBS(Reduced Representation Bisulfite-Seq )、 Illumina、Nextera和smallRNA测序平台的双端和单端数据。
主要功能包括两步:
第一步首先去除低质量碱基,然后去除3' 末端的adapter, 如果没有指定具体的adapter,程序会自动检测前1 million的序列。
第二步对比前12-13bp的序列是否符合以下类型的adapter:
1 Illumina: AGATCGGAAGAGC # 如果输入参数 --Illumina,就会默认trimmed前13bp的adapter
2 Small RNA: TGGAATTCTCGG # 如果输入参数 --small_rna,就会默认trimmed前12bp的adapter
3 Nextera: CTGTCTCTTATA # 如果输入参数 --nextera,就会默认trimmed前12bp的adapter
2. 安装这个Trim Galore软件之前需要先安装好Fastqc和cutadapt两个软件
FastQC是调用了网管的程序,但是cutadapt没找到,自己安装吧。pip install --user --upgrade cutadapt
用这个命令来。
pip介绍及命令pip:是一个现代的,通用的python包的管理工具,pip也是一个python库。提供了对Python包的查找、下载、安装和卸载的功能。 pip安装很简单啊,安装完还提示要把环境变量添加好,真贴心(但是我操作vim .bashrc的时候出了问题,幸好可以解决,引以为戒吧)。
七、前面的问题详解:丢了.bashrc
用vim .bashrc,打算添加cutadapt的路径到环境变量中。输入export PATH=这样,光标怎么都不动了。。退出Xshell之后,再进去,就没有bash了。。呜呜。
不过既然没有source过,环境变量还在。echo PS1这些都能找回来。估计可能是export=空,,,电脑懵了。
解决办法:在winscp中,从选项里面,打开‘选项’,找到“面板”,再选择“显示隐藏文件”。就能在家目录下看到.bashrc文件了。打开看都还正常。应该是export PATH=空这件事使得bash失灵。但在ssh软件中可以找到,并修改之。。export PATH=~/.local/bin:$PATH
#八、测试,仅下载5000条数据的小样本来测试命令
fastq-dump -x 5000 -O ~/ChIP-seqtest