上次分享我们通过两种方式下载得到了SRA数据,今天就开始对SRA进行处理(以SRR5489805为例)。
SRA(Sequence ReadArchive)数据库是用于存储二代测序的原始数据,这种数据格式不能直接进行处理,需要转换成fastq或fasta文件格式才能进行质控以及去adapt等处理。
SRA转fastq:
进行转换之前我们需要知道我们拿到的数据是单端还是双端数据,可以用fastq-dump -X 1 --split-spot SRRxxxxxxx.sra来判断测序类型.
fastq-dump -X 1 --split-spot -Z SRR5489805.sra | wc -l
如果返回值是4,就是单端SE;如果返回值是8,那么就是双端PE。
#single-end 单端测序
.../fastq-dump SRR5489805.sra # 结果生成SRR5489805.fastq
.../fastq-dump --fasta SRR5489805.sra # 结果生成SRR5489805.fastq
#pair-end 双端测序
.../fastq-dump --split-3 SRRxxxxxxx.sra # 结果生成 SRRxxxxxxx_1.fastq,SRRxxxxxxx_2.fastq
fastq转fasta
有时我们需要把fastq文件转换成fasta文件,但是个人推荐在不必要的情况下,还是使用fastq文件进行分析,因为fastq文件的信息比fasta文件更全面。
awk 命令转换
awk '{if(NR%4 == 1){print ">" substr($0, 2)}}{if(NR%4 == 2){print}}' xxx.fastq > xxx.fasta
fastqc质控
1.fastqc下载:
进入下面网址,选择对应的版本下载
#不挂后台
wget http://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.11.9.zip
#挂后台
nohup wget http://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.11.9.zip &
2.解压:
unzip fastqc_v0.11.9.zip
3.赋予执行权限:
cd FastQC/
ls
cisd-jhdf5.jar fastqc Help jbzip2-0.9.jar LICENSE_JHDF5.txt net README.md RELEASE_NOTES.txt sam-1.103.jar uk
Configuration fastqc_icon.ico INSTALL.txt LICENSE LICENSE.txt org README.txt run_fastqc.bat Templates
chmod 700 fastqc
4.质控:
#挂后台进行质控
nohup /home/Taoct_16/test/FastQC/fastqc -o /home/Taoct_16/test/result -t 6 ./SRR5489805.fastq &
# 基本格式
# fastqc [-o output dir] [--(no)extract] [-f fastq|bam|sam] [-c contaminant file] seqfile1 .. seqfileN
# 主要是包括前面的各种选项和最后面的可以加入N个文件
# -o --outdir FastQC生成的报告文件的储存路径,生成的报告的文件名是根据输入来定的
# --extract 生成的报告默认会打包成1个压缩文件,使用这个参数是让程序不打包
# -t --threads 选择程序运行的线程数,每个线程会占用250MB内存,越多越快咯
# -c --contaminants 污染物选项,输入的是一个文件,格式是Name [Tab] Sequence,里面是可能的污染序列,如果有这个选项,FastQC会在计算时候评估污染的情况,并在统计的时候进行分析,一般用不到
# -a --adapters 也是输入一个文件,文件的格式Name [Tab] Sequence,储存的是测序的adpater序列信息,如果不输入,目前版本的FastQC就按照通用引物来评估序列时候有adapter的残留
# -q --quiet 安静运行模式,一般不选这个选项的时候,程序会实时报告运行的状况。
#完成后,查看结果
ls
SRR5489805_fastqc.html SRR5489805_fastqc.zip
质控完成后会生成一个.html文件和一个.zip文件,打开.html文件就能看到质控的结果。对质控结果的解读我后面会进行分享,大家也可以在网上先搜索一下,今天就不在这里讲解了,因为质控的内容需要很大的篇幅。
cutadapt
去接头可以根据自己的质控报告来决定,一般来说,质控报告会告诉你你的接头都是哪些,然后进行针对性的cut就可以了。
1.cutadapt下载安装:(由于我拿到的这个数据没有接头,所以下面的演示代码是我搜集整理出来的,如果有不对的地方,请多多见谅)
#使用pip安装
$ pip install --user --upgrade cutadapt
#使用conda安装
$ conda install -c bioconda cutadapt
2.去掉3’端的接头,
# -a 3’接头
# -o 输出,o是output的意思
# -j 选择几个核
cutadapt -j 10 -a AACCGGTT -o output.fastq input.fastq
3.去除5’端的接头
# -g 5'接头
# -o 输出,o是output的意思
# -j 选择几个核
cutadapt -g ADAPTER -o output.fastq input.fastq
4.双端测序数据去接头
cutadapt -a AATGATACGGCGACCACCGAGATCTACACTCTTTCCCTACACGACGCTCTTCCGATCT -a ATCTCGTATGCCGTCTTCTGCTTG \
-A AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT -A CAAGCAGAAGACGGCATACGAGAT \
-e 0.1 -O 5 -m 50 -n 2 --pair-filter=both \
-o read_PE1.fq -p read_PE2.fq test1.fastq test2.fastq >& log.txt
#两个-a 参数后面接的是两种接头,两个-A参加后面接的是同样的两个接头的反向互补序列。
#加上 -n 2 是因为有两个接头,测序数据里面有可能一个read里面含有两种接头,所以需要检测两次。
# -e 0.1 -O 5 -m 50 是标准参数,自其中-m 设置为50 是表示去除接头后如果read长度小于50就不要了
详细参数解释如下:
-g: #剪切reads 5'端adapter(双端测序第一条read),加$表示adapter锚定在reads 5'端
-a: #剪切reads 3'端adapter(双端测序第一条read),加$表示adapter锚定在reads3'端
-O MINLENGTH, --overlap=MINLENGTH #adapter与reads最小overlap,才算成功识别; Default: 3
-m LENGTH, --minimum-length=LENGTH: 根据最短长度筛选reads;Default: 0
--discard-untrimmed, --trimmed-only #丢掉不包含adapter的reads
-e ERROR_RATE, --error-rate=ERROR_RATE #adapter匹配允许的最大错配率(错配/匹配片段长度);Default: 0.1
--no-trim: 不修剪adapter,直接输出满足跳进啊的reads
-u LENGTH, --cut=LENGTH: #修剪reads 5'/3'端碱基,正数:从开始除移除碱基;负数:从末尾处移除碱基;
-q [5'CUTOFF,]3'CUTOFF, --quality-cutoff=[5'CUTOFF,]3'CUTOFF: #修剪低质量碱基
-l LENGTH, --length=LENGTH: #将reads修剪的最终长度
--trim-n: #修剪reads末端的'N'
-o FILE, --output=FILE: #输出文件
--info-file=FILE:每条reads和与reads匹配的adapter的信息
--too-short-output=FILE: #为reads长度最小值设定阈值筛选reads后,要丢弃的部分输出到文件;长度依据m值设定;
--too-long-output=FILE:#为reads长度最大值设定阈值筛选reads后,要丢弃的部分输出到文件;长度依据M值设定;
--untrimmed-output=FILE: #将没有adapter未做修剪的reads输出到一个文件;默认输出到trimmed reads结果文件
--max-n=COUNT:#reads中N的数量,设定整数或小数(N的占比)
双端测序参数
-A ADAPTER: #第二条reads 3'adapter
-G ADAPTER:#第二条reads 5'adapter
-U LENGTH: #从第二条reads上修剪的长度
-p FILE, --paired-output=FILE: #第二条reads的输出结果
--untrimmed-paired-output=FILE:#第一条reads没有adapter时,将第二条reads输出到文件;默认输出到trimmed reads结果文件
fastx_trimmer
usage: fastx_trimmer [-h] [-f N] [-l N] [-z] [-v] [-i INFILE] [-o OUTFILE]
version 0.0.6
[-h] = This helpful help screen.
[-f N] = First base to keep. Default is 1 (=first base).
[-l N] = Last base to keep. Default is entire read.
[-z] = Compress output with GZIP.
[-i INFILE] = FASTA/Q input file. default is STDIN.
[-o OUTFILE] = FASTA/Q output file. default is STDOUT.
实例:以上步骤都做完之后可以再进行一次质控,看看数据处理的情况是否合理。
/home/user/test/bin/fastx_trimmer -l 170 -i /home/user/test/SRR5489805.fasta -o ./SRR5489805_trimmer.fasta
具体保留多长的reads还是要根据质控的结果来确定,我会尽快将质控结果的讲解分享出来,后面的建库比对改天就只能后面分享。欢迎大家对我的分享进行批评指正!