流程一:
环境部署——数据下载——查看数据(非质控)
分析流程
1.环境部署/软件安装:
尝试使用ARM架构(M1/M2芯片)去安装fastqc trim-galore hisat2 subread multiqc samtools salmon fastp,但这些软件中有几个是不兼容的。所以需要改回原来的x86_64架构(Intel芯片),如果非mac/M1/M2的不需要用这种方式。
CONDA_SUBDIR=osx-64 conda create -n rna_x86_64 python=3.9
conda activate rna_x86_64
conda install -y sra-tools
conda install -y fastqc trim-galore hisat2 subread multiqc samtools salmon fastp
conda install -y -c hcc aspera-cli
如果安装软件很慢的话可以先安装mamba再安装软件,比如:只需要把conda修改成mamba即可
conda install -c conda-forge mamba
mamba install fastqc trim-galore hisat2 subread multiqc samtools salmon fastp
SRA-tools:一组用于访问和处理Sequence Read Archive (SRA) 数据的命令行工具。内含工具主要包括:
prefetch:用于从 SRA 数据库下载测序数据。 fastq-dump:用于将下载的 SRA 文件转换为常见的 FASTQ 格式,以便进行进一步的分析。 fasterq-dump:fastq-dump 的改进版本,速度更快,适合处理大数据集。 sam-dump:用于将 SRA 数据转换为 SAM 格式(测序比对格式)。 vdb-config:配置 SRA 工具的参数,比如下载路径、缓存大小等。
FastQC:用于评估高通量测序数据的质量。
Trim Galore:用于剪切测序数据中的低质量序列和接头序列。
HISAT2:用于将RNA-Seq数据比对到参考基因组上。
Subread:用于比对和量化RNA-Seq、DNA-Seq等高通量测序数据。
MultiQC:用于整合并展示多个质控工具的结果。
Samtools:用于处理比对后的SAM/BAM/CRAM文件。
Salmon:用于RNA-Seq数据的转录本定量分析。
Fastp:高效的测序数据质控和剪切工具。
aspera CLI: IBM Aspera提供的命令行工具,用于通过Aspera的高速文件传输协议(Aspera FASP)传输大型文件和数据集。
2.创建工作目录
mkdir -p ~/RNA/Human-3-NPC-Tra
cd ~/RNA/Human-3-NPC-Tra
mkdir -p rawdata fastq_25000 qc trim_galore fastp hisat2 featureCounts
3.下载/解压缩数据
下载数据
只要有SRR号,可以使用sra-tools工具中的prefetch进行下载。
首先进入GEO的GSE227503数据集界面,拉到最下面进入SRA Run Selector接着获取Accession List得到三个SRR号码开始下载,第一句是下载特定的数据,后一句是循环下载SRR_Acc_List中的数据
prefetch SRR23881762 -O ./rawdata #-O . 指定到当前路径
# cat SRR_Acc_List.txt | while read id; do (prefetch ${id} );done #全部下载
cat SRR_Acc_List.txt: 使用 cat 命令显示并输出 SRR_Acc_List.txt 文件的内容
while read id; do ... done: while 循环用于读取 SRR_Acc_List.txt 文件中的每一行内容,每次循环将一行内容存储在 id 变量中。read 命令会读取 SRR_Acc_List.txt 中的每一行,直到文件读取完毕。
prefetch -X 100G id(每个 SRR 记录)。-X 100G: 选项 -X 用于设置下载文件的缓存大小,在这个例子中设置为 100GB,以确保处理较大文件时不会因为空间限制而出现问题。$id: 这是 while 循环中的 id,代表当前读取的 SRR 编号。&: 这个符号将命令放入后台执行。
解压缩文件
fasterq-dump SRR23881762.sra --split-files # 把双端测序文件分开
gzip *.fastq # 压缩fastq文件,但这一步会非常慢哦
rm *.fastq # 删除fastq文件
笔者没有压缩,因为有点慢
4.check数据(建议查看)
双端测序:一般一个样本对应两个fq文件,gz是压缩后缀。如SRR23881762.gz
对应的为read1:SRR23881762_1.fastq.gz; read2: SRR23881762_2.fastq.gz
fastq数据格式:高通量测序(如illumina NovaSeq等测序平台)得到的原始图像数据文件,经过碱基识别(Base calling)分析转化为原始测序序列(Sequenced Reads),称之为Raw data或Raw reads,结果以FASTQ(简称为fq)文件格式存储,其中包含测序序列(Reads)的序列信息以及其对应的测序质量信息。
head -n 8 SRR23881762_1.fastq # 查看前8行的数据
每4行为一个read:
第1行主要储存序列测序时的坐标信息等。 第2行是测序得到的序列信息,一般用ATCGN(N 代表的是未确定的碱基(N 表示 "unknown" 或 "ambiguous" base)来表示。 第3行以“+”开始,可以储存一些附加信息,一般是空的。 第4行储存质量信息,与第2行的碱基序列一一对应。每个符号对应的ASCII值成为phred值,可以简单理解为对应位置碱基的质量,越大说明测序质量越好。质量字符的ASCII值和质量得分的关系有如下两种:
Phred+64 质量字符的ASCII值 - 64/ Phred+33: 质量字符的ASCII值 - 33
可以粗略分为 Phred+33和Phred+64,这里的33和64就是指ASCII值转换为得分需要减去的数值。统计reads_1.fq文件种共有多少条reads的方法
# zless 是一个用于查看压缩文件内容的命令
# grep 是一个文本搜索工具,用于查找符合特定模式的行
# wc 是 "word count" 的缩写,用于统计行数、单词数和字符数。-l 选项告诉 wc 只输出行数。
# | 是管道符号,将 grep "@SRR" 的输出传递给 wc -l 作为输入,从而统计 @SRR 出现的次数。
zless SRR23881762_1.fastq.gz | grep "@SRR" |wc -l
# grep '^@SRR':这里的 ^ 是正则表达式中的特殊符号,表示 "行首"。
zless SRR23881762_1.fastq.gz | grep '^@SRR' |wc -l
# paste:这是一个将多个行合并到一行的工具。
# - - - -:这部分告诉paste命令每次读取四行并将它们拼接在一起
# -S 表示不换行显示长行的内容
zless -S SRR23881762_1.fastq | paste - - - - |wc -l
#awk:这是一个文本处理工具。
# $0/4:表示将 wc -l 计算的总行数除以 4,因为每4行代表一个完整的序列条目。
zless SRR23881762_1.fastq |wc -l | awk '{print $0/4}'
# awk:这是一个文本处理工具,逐行处理输入的内容。NR:表示当前行号。
# NR%4==2:这个条件判断用于选择每四行中的第2行,因为FASTQ文件的格式是每4行代表一个序列条目,而第2行是序列本身。NR%4是取行号对4的余数,NR%4==2 表示当行号除以4余2时,也就是第2行。
# print:将满足条件的行打印出来,因此它会输出每个序列条目的序列部分。
zless -S SRR23881762_1.fastq |awk '{ if(NR%4==2) {print} }' |wc -l
使用了第一条代码,数据量大过程很慢,中途用Ctrl + T查看了一下数据,最后发现一共有3000万+的reads输出SRR23881762_1.fastq文件中所有的序列ID(即第一行)
zless SRR23881762_1.fastq | grep '^@SRR' |less -S
zless SRR23881762_1.fastq | paste - - - - |cut -f 1 |less -S
zless -S SRR23881762_1.fastq |awk '{if(NR%4==1){print}}' |less -S
输出SRR23881762_1.fastqz文件中所有的序列(即第二行)
zless SRR23881762_1.fastq | paste - - - - |cut -f 2 |less -S
zless SRR23881762_1.fastq |awk '{if(NR%4==2){print}}' |less -S
统计SRR23881762_1.fastq碱基总数
# 简单版本
zless SRR23881762_1.fastq |paste - - - - |cut -f 2 |tr -d '\n' |wc -m
zless -S SRR23881762_1.fastq |paste - - - - |cut -f 2 |grep -o [ATCGN] |wc -l
# awk的高阶用法:BEGIN END模块
zless -S SRR23881762_1.fastq |awk '{ if(NR%4==2){print} }' | awk 'BEGIN {num=0} {num=num+length($0)} END{ print "num="num}'
查看reads拷贝数
zless SRR23881762_1.fastq | paste - - - - | cut -f2 | sort | uniq -c | sort -nr | head
参考资料:
Bioinformatics workbook: https://bioinformaticsworkbook.org/introduction/fastqquality-score-encoding.html#gsc.tab=0 生信技能树:https://mp.weixin.qq.com/s/dxoorMYHU-tlxMcICnTQTg 生信菜鸟团:https://mp.weixin.qq.com/s/Z5YNRkJ6tlY_tAeuUfL8SA 芒果师兄聊生信:https://mp.weixin.qq.com/s/X0SW5bKRgXZmlDJ-2eUjzQ
致谢:感谢曾老师以及生信技能树团队全体成员。
注:若对内容有疑惑或者有发现明确错误的朋友,请联系后台(欢迎交流)。更多内容可关注公众号:生信方舟
- END -