Biostar:课程7、8
由于这周翻译的比较仓促,所以这里有的程序我并没有去检查是否有更新而沿用了原作者的版本。大家有兴趣可以自己动手,去寻找新版本的软件自行安装和使用。
#为作者的注释
#*为译者的注释
Lecture 7 - 用FastQC进行质控。 讲解输出文件。
# 压缩和解压文件。
# 获取一个SRA文件,我们会在这次练习中用到。
# 如果你想保存SRA文件,可以用 prefetch 。
# 否则你可以直接用fastq-dump
# 在课堂中,我已经添加了-X 10000 来限制节点,使得我们不用等那么久。
fastq-dump --split-files SRR519926
# 来看一下你得到什么了。
ls -l
# 压缩文件。你也可以通过在任何一个命令前面添加time来知道运行需要的时间。这个命令用来测试计算机的总体性能也是不错的,因为它需要快速磁盘访问和高性能CPU。
# 下边是一些测定时间。
# - Grit: iMac台式机:29秒(4核中高速CPU,64GB RAM,中速盘)
# - Apollo: 在BCC高性能的Linux服务器上:38秒(32核快速的CPU,256 GB RAM,但同时还运行很多其他命令)
# - Peppy: 通过Crouton在Chromebook上安装的Linux虚拟机 : 49秒(比较慢的2核处理器,但很快的固态硬盘)
# - Airy: MacBook Air: 53 秒(CPU似乎比在Chromebook慢)
# 你的时间是多少?
time gzip *.fastq
# 看一下上述的文件如何被gzip压缩的那个替换。
# 测试解压时间分别是多少。
# - Airy: 2.1 seconds
# - Grit: 2.8 seconds
# - Apollo: 3.6 seconds
# - Peppy: 6.5 seconds
time gunzip *.gz
# 把两个文件打包到一个存档里
tar cf mydata.tar *.fastq
gzip mydata.tar
# 上边两个命令可以结合到一个命令中。
tar cfzv mydata.tar.gz *.fastq
# 移除fastq文件
rm -f *.fastq
ls -l
# 拆包存档,提取文件。
tar xzvf mydata.tar.gz
# 你可以存档整个目录树。打包整个 lecture 7文件夹
cd ..
tar cfzv lec7.tar.gz lec7
# 用 t 罗列存档中有什么。
tar tf lec7.tar.gz
# 把存档解压到不同路径下。
mkdir ~/edu/tmp
mv lec7.tar.gz ~/edu/tmp
cd ~/edu/tmp
tar xzvf lec7.tar.gz
# tarbomb来了。小心处理。
# http://www.xkcd.com/1168/
curl -O http://www.personal.psu.edu/iua1/courses/files/2013/data/tarbomb.tar.gz
# 解压后好好享受!记得查看你的解压文件,或者把它们放到一个独立的文件夹中。
# 质控。
# 在src文件夹中下载并安装。
cd ~/src
curl -O
#*原文是v0.11.2版本。
# 用Linux的: 用sudo apt-get 安装和解压。
unzip fastqc_v0.11.5.zip
cd FastQC
ls -l
# 这个发行版有个失误。没有设置可执行。
chmod +x fastqc
# 想让fastqc可以全局使用,我们有两种方法来实现。 我们可以把路径放到主路径中(像之前那样),但是当你必须每添加一个程序就重新加载路径时,这就有点不实用了。另一种方法是,我们可以添加一个目录,比如说~/bin,然后创建链接(快捷方式)到这个目录下,这样我们就可以全局使用程序了。
# 创建 ~/bin 目录
mkdir -p ~/bin
# 将~/bin 文件夹加到PATH
# Mac下:
echo 'export PATH=~/bin:$PATH' >> ~/.profile
# 在当前shell中使用,而非之后开启才能用。
#*因为如果不source的话,你新开一个shell,这个shell也是可以生效上述设置的。
source ~/.profile
# 在Linux 下这么做:
# echo 'export PATH=~/bin:$PATH' >> ~/.bashrc
# source ~/.bashrc
# 在~/bin生成fastqc快捷方式
ln -s ~/src/FastQC/fastqc ~/bin/fastqc
# 测试这个工具是否可用。
# Linux用户可能需要安装java。
#*通过java -version命令可以查看。如果有提示版本,即已经安装了java。如果版本低于1.6,则运行fastqc可能会出现错误。
# 详情参见Linux安装指南:http://www.personal.psu.edu/iua1/courses/code-repository-2014.html#chromebook
fastqc -h
# 对目录下的所有文件生成fastqc报告。
cd ~/edu/lec7
fastqc *.fastq
# 这生成了*.html 文件。打开和查看结果。
#*结果是网页版的。
Lecture 8 - 质控:基本的质量微调
# 安装prinseq, trimmomatic 及 seqtk
# 在src目录,下载和解压软件。
cd ~/src
# 安装prinseq
# 我们需要加 -L ,因为这个网址使用的链接重定向,而我们要下载的是这个。
curl -OL http://downloads.sourceforge.net/project/prinseq/standalone/prinseq-lite-0.20.4.tar.gz
# 解压存档。
tar zxvf prinseq-lite-0.20.4.tar.gz
# 进入文件夹,并阅读操作指南。
# 找到文件README。跟着它说的去做。
cd prinseq-lite-0.20.4
# 把脚本变得可执行。
chmod +x prinseq-lite.pl
#建立连接到 ~/bin 文件夹。
ln -s ~/src/prinseq-lite-0.20.4/prinseq-lite.pl ~/bin/prinseq-lite
# 现在你可以在你的系统的任何一个位置运行 prinseq 。
prinseq-lite
# 安装trimmomatic
cd ~/src
curl -O http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/Trimmomatic-0.32.zip
unzip Trimmomatic-0.32.zip
cd Trimmomatic-0.32
# 哎呀,这里信息不多,你可以到这查看一下手册:
# http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/TrimmomaticManual_V0.32.pdf
# 它的运行用户不友好。非常感谢!
java -jar trimmomatic-0.32.jar
# 我们写一个脚本来替代我们运行。
# 用Komodo或者命令行创建一个脚本,包含如下所示的命令行 :
# 你也可以通过命令行来达成
echo '#!/bin/bash' > ~/bin/trimmomatic
echo 'java -jar ~/src/Trimmomatic-0.32/trimmomatic-0.32.jar $@' >> ~/bin/trimmomatic
chmod +x ~/bin/trimmomatic
# 看,成功了!
trimmomatic
#现在,我们同时有prinseq和trimmomatic。用起来。
fastq-dump --split-files SRR519926
# 运行prinseq,从右往左,5碱基一个窗口,修剪碱基。
prinseq-lite -fastq SRR519926_1.fastq -trim_qual_right 30 -trim_qual_window 4 -min_len 35 -out_good prinseq_1
# Trimmomatic则有不同的参数设置和哲学。参数要用空格分割。Parameters need to be space separated words 子参数则用冒号分割。基本上他们参数格式自成一家。
trimmomatic SE -phred33 SRR519926_1.fastq trimmomatic_1.fq SLIDINGWINDOW:4:30 MINLEN:35 TRAILING:3
# 对这两种工具的运行速度进行计时。留意trimmomatic是有多快。
# 一句操作不同,可能会(比prinseq)快100倍
# 同时,prinseq不仅只是一个质控工具,它有其他许多的功能。
fastqc SRR519926_1.fastq prinseq_1.fq trimmomatic_1.fq
# 默认情况下,fastqc在图中使用分组,而隐藏详细信息。
fastqc --nogroup SRR519926_1.fastq prinseq_1.fq trimmomatic_1.fq
#要批量处理文件,可以使用简单的shell循环结构。
for name in *.fastq; do echo $name; done
#*下边两个是脚本
在你的~/bin 文件夹创建trimmomatic文件:
#!/bin/bash
# 上一行是告诉shell,用bash执行程序。
# 下面行中的 $@ 表示把所有的参数传递到程序。
java -jar ~/src/Trimmomatic-0.32/trimmomatic-0.32.jar $@
构造简单循环的例子:
#!/bin/bash
# 这个脚本会把目录下的所有fastq文件进行修剪。
for name in *.fastq
do
echo "*** currently processing file $name, saving to trimmed-$name"
trimmomatic SE -phred33 $name trimmed-$name SLIDINGWINDOW:4:30 MINLEN:35 TRAILING:3
echo "*** done"
done
# 现在,运行fastqc报告。
# 你可以在这添加更多的命令。
fastqc trimmed-*.fastq
翻译:生物女博士
注:本系列课程翻译已获得原作者授权。