前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >转录组——上游分析

转录组——上游分析

原创
作者头像
青柠味
发布2025-06-12 17:39:47
发布2025-06-12 17:39:47
1530
举报

一、转录组概述

转录组-课前背景

二、准备工作——目录管理

三、.FASTQ数据介绍以及QC

转录组-课前背景

四、质控——数据质量评估

1、FastQC软件

FastQC主页:http://www.bioinformatics.babraham.ac.uk/projects/fastqc/

2、fastqc的常用参数

3、fastqc运行

代码语言:sh
复制
### 3.1 fastqc

目标:使用fastqc对原始数据进行质量评估

# 激活conda环境
conda activate rna

# 连接数据到自己的文件夹(如果前面已经链接过,这里就不用链接了)
cd $HOME/project/Human-16-Asthma-Trans/data/rawdata

# 链接
ln -s /home/t_rna/data/airway/fastq_raw25000/*gz  ./

# 解压缩(补充)
gzip -c SRR1039510_1.fastq.gz > SRR1039510_1.fastq

# 查看软件安装的路径(补充)
which fastqc
代码语言:sh
复制
### 3.2 **运行:nohup 与 & 提交后台**

+   **任务查看**:使用 jobs、ps fxww、htop命令查看任务状态

+   **任务进度**:使用less 命令查看 qc.log 运行动态报错等,目录中是否有正常文件结果生成

# 使用FastQC软件对单个fastq文件进行质量评估,结果输出到qc/文件夹下
nohup fastqc -t 6 -o ./ SRR*.fastq.gz 1>qc.log 2>&1 &
如何查看任务进度
如何查看任务进度

4、fastqc运行结果

html为主要质控报告,网页版本,使用浏览器打

(1)Basic Statistics

(2)Per base sequence quality

(3)Per Tile Sequence Quality

(4)Per Sequence Quality Scores 每条序列的平均质量值的密度曲

(5)Per Base Sequence Content 每个碱基位置上:ATGC含量的分布图

(6)Per sequence GC content GC含量分布图

(7)Per base N content N含量分布图

(8)Sequence Length Distribution read长度分布图

(9)Sequence Duplication Levels 序列重复性分布图

(10)Overrepresented sequences 过表达的reads

(11)Adapter Content 接头含量

(11)Good vs Bad Data

在fastqc这个软件的网页有示例

(12)整合报告

代码语言:sh
复制
使用MultiQc整合FastQC结果,得到一个所有样本的qc质控 qc_fastqc.html 文件报告,下载到本地使用浏览器打开查看

multiqc *.zip -o ./ -n qc_fastqc 
-o是指输出到哪里,-n是指输出的报告的名字

四、质控——过滤低质量

1、过滤条件

测序得到的原始序列含有接头序列或低质量序列,为了保证信息分析的准确性,

需要对原始数据进行质量控制,得到高质量序列(即Clean Reads),原始序

列质量控制的标准为:

(1) 去除含接头的reads;

(2) 过滤去除低质量值数据,确保数据质量;

(3) 去除含有N(无法确定碱基信息)的比例大于5%的reads;

2、trim_galore软件

trim_galore官网:http://www.bioinformatics.babraham.ac.uk/projects/trim_galore/

3、trim_galore常用参数

注意大小写

4、trim_galore 运行

目标:使用trim_galore软件过滤fq文件,查看过滤前后的区别

4.0 先试试运行一个样本的trim

代码语言:bash
复制
# 激活小环境
conda activate rna

# 进入到 cleandata 目录
cd $HOME/project/Human-16-Asthma-Trans/data/cleandata/

# trim
# -j:使用cpu数
# -q:低质量Q值
# --length 20:过滤最小read长度,read被剪切掉接头后长度会发生变化,小于这个长度的会被过滤
# --max_n 3:read中N含量最大值,大于这个数的read会被过滤,N默认为 read长度的5%,这里N=63*0.05~=3
# -o:输出目录
# --fastqc:对过滤后的cleandata 再运行一次质量评估 fastqc 
# --stringency:read与接头重叠的碱基个数
trim_galore -j 3 -q 20 --length 20 --max_n 3 --stringency 3 --fastqc --paired -o ./ ../rawdata/SRR1039510_1.fastq.gz ../rawdata/SRR1039510_2.fastq.gz

但是在实际项目中,我们不能一次只运行一个样本,这样运行效率非常低,耗费时间长。需要多任务并行运行,即一次投递多个样本运行,下面来看看怎么操作!

4.1 生成样本ID文件

代码语言:bash
复制
# 激活小环境
conda activate rna

# 进入到 cleandata 目录
cd $HOME/project/Human-16-Asthma-Trans/data/cleandata/

# 先生成一个变量,为样本ID
ls ../rawdata/*_1.fastq.gz | awk -F'/' '{print $NF}' | cut -d'_' -f1 >ID
笔记:这里的NF是列数,要加$才能用,而行数NR不用加。
# 查看ID类容
cat ID

# ID内容如下:
# SRR1039510
# SRR1039511
# SRR1039512

4.2 使用 echo 生成 trim.sh 命令文件

生成的 trim.sh,在运行之前可以使用 less 命令检查一下:

  • --max_n:这个参数在实际的项目中,需要根据fq的reads的长短进行判断,为长度的%5
代码语言:bash
复制
# -j:线程数,这里使用6个cpu线程
cat ID | while read id
do
  echo "trim_galore -j 3 -q 20 --length 20 --max_n 3 --stringency 3 --fastqc --paired -o ./  ../rawdata/${id}_1.fastq.gz ../rawdata/${id}_2.fastq.gz"
done >trim.sh
笔记:原始未缩减数据在 /home/t_rna/data/airway/fastq_raw/

4.3 提高运行速度,多任务并行

提交 trim.sh 任务至后台,我们可以一次往服务器上面多投递几个。

Note:需要注意使用的总cpu数量,total= 单个任务运行的线程数 一次并行的任务个数,比如这里total = 3 3,即使用了 9个线程。使用htop看服务器的总线程数,最好一个任务不要超过总线程数的1/3-1/2。

技巧:用ParaFly并行任务,给你的分析提提速!

代码语言:bash
复制
# 安装
conda activate rna
# conda install parafly -y

# 运行
# -CPU:一次投递几个任务,这里一次投递3个样本
nohup ParaFly -c trim.sh -CPU 3 1>trim.log  2>&1 &

# 笔记:
终止任务:kill 
• kill -9 %num:num为jobs命令返回ID
• kill -9 PID:ps fx或者htop可得到PID任务编号)
① 提交任务:nohup bash trim.sh 1>trim.log 2>&1 &
② 使用 ps fx(后面可以接管道符来grep或less该任务;或者 htop 或者 jobs得到任务ID

终止任务:Ctrl+C
只对直接运行的任务有效,后台任务
无效
① 提交任务:bash trim.sh
② 按 ctrl+c

任务暂停:Ctrl+Z
只对直接运行的任务有效,后台任
务无效
① 提交任务:bash trim.sh
② 按 ctrl+z
③ 把暂停的任务放后台:bg %num;把暂停的任务放后台:fg %num 

4.5 整合过滤后的fastqc报告

代码语言:bash
复制
# 使用MultiQc整合FastQC结果
multiqc *.zip -n qc_trim
# 笔记:查看报告时,过滤前后主要的变化体现在per base N content,我们的序列里N的数目最多只有3个了。

4.6 数据过滤前后比较

代码语言:bash
复制
# 进入过滤目录
cd $HOME/project/Human-16-Asthma-Trans/data/cleandata/

# 原始数据
zcat ../rawdata/SRR1039510_1.fastq.gz | paste - - - - > raw.txt

#  过滤后的数据
zcat SRR1039510_1_val_1.fq.gz |paste - - - - > trim.txt
awk '(length($4)<63){print$1}' trim.txt > Seq.ID

head -n 100 Seq.ID > ID100
grep -w -f ID100 trim.txt | awk '{print$1,$4}' > trim.sm
grep -w -f ID100 raw.txt | awk '{print$1,$4}' > raw.sm
paste raw.sm trim.sm | awk '{print$2,$4}' | tr ' ' '\n' |less -S

# 笔记:
Linux进阶命令:paste - - - -执行后,四列变成了一行,但用cat -An 还是会显示制表符^I的。
grep -w -f ID100 trim.txt | awk '{print$1,$4}'执行后,这里的awk默认以空格作为分隔符,而不是制表符,所以这里的$4 不是碱基质量那一列。

5、trim_galore运行结果

五、数据比对——参考基因组准备

1.基因组文件:fasta

2.注释文件:gff/gtf

1、常用参考基因组数据库

Ensembl:www.ensembl.org

NCBI:https://www.ncbi.nlm.nih.gov/projects/genome/guide/human/index.shtml

UCSC:http://www.genome.ucsc.edu/

2、参考基因组准备——Ensembl

3、参考基因组下载

目标:使用两个软件对fq数据进行比对,得到比对文件sam/bam,并探索比对结果。

Common name:物种的通俗名

Scientific name:科学用名,一般使用斜体的拉丁字表示

Taxon ID:物种ID号, NCBI 数据库中用的比较多

  • ensembl 物种参考基因组版本号:物种为人的版本GRCh38,大的版本号,后面还有不同的小版本如release-112,不同的reasele。
  • NCBI数据库的版本物种号:GCA_000001635.9
  • UCSC:hg19/GRCh37, hg38/GRCh38, human genome

参考基因组文件命名方式:<species>.<assembly>.<sequence type>.<id type>.<id>.fa.gz 详细见https://ftp.ensembl.org/pub/release-111/fasta/homo_sapiens/dna/README

代码语言:bash
复制
## 参考基因组准备:注意参考基因组版本信息
# 下载,Ensembl:http://asia.ensembl.org/index.html
# http://ftp.ensembl.org/pub/release-104/fasta/homo_sapiens/dna/

# 进入到参考基因组目录
mkdir -p $HOME/database/GRCh38.113
cd $HOME/database/GRCh38.113

# 下载基因组序列axel  curl   wget 
nohup wget -c https://ftp.ensembl.org/pub/release-113/fasta/homo_sapiens/dna/Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz >dna.log &

# 下载转录组序列
nohup wget -c https://ftp.ensembl.org/pub/release-113/fasta/homo_sapiens/cdna/Homo_sapiens.GRCh38.cdna.all.fa.gz >rna.log &

# 下载基因组注释文件
nohup wget -c https://ftp.ensembl.org/pub/release-113/gtf/homo_sapiens/Homo_sapiens.GRCh38.113.gtf.gz >gtf.log &

nohup wget -c https://ftp.ensembl.org/pub/release-113/gff3/homo_sapiens/Homo_sapiens.GRCh38.113.gff3.gz >gff.log &

# 上述文件下载完整后,再解压;否则文件不完整就解压会报错
# 再次强调,一定要在文件下载完后再进行解压!!!
# 笔记:看上述文件的下载进展可以用 tail dna.log 这个文件
nohup gunzip *gz >unzip.log &

4、课后习题

我自己写的代码:

代码语言:sh
复制
zless -NS ./project/Human-16-Asthma-Trans/data/rawdata/SRR1039510_1.fastq.gz | paste - - - - | awk '{print $1,$4}' | sed 's/ /\n/g' | sed 's/@/>/g' | less -NS

参考答案

代码语言:sh
复制
# 答案1
zless -S SRR1039511_1_val_1.fq.gz |awk '{ if(NR%4==1){print">" substr($0,2)} if(NR%4==2){print}  }' | less -S

# 答案2
zless -S SRR1039510_1_val_1.fq.gz |paste - - - - |cut -f 1,2 |tr '@' '>' |tr '\t' '\n' |less -S

五、数据比对——Hisat2,Subjunc

1、Ensembl基因组数据库

一定要知道ID的意思
一定要知道ID的意思

①E:外显子;G:基因;T:转录本

②基因ID和基因名字;转录本ID和转录本名字;

③可以在Ensembl基因组数据库里直接搜某个基因名字和物种去查看它相应的转录本等等,这个也就是gtf文件所呈现的内容,即对fa文件的注释(基因的结构和信息)。

④DNA参考文件是按照染色体位置列出测的所有碱基,gtf文件很好地注释了每个基因所在位置和信息,前者提供碱基,后者提供坐标。

2、数据格式fasta介绍

①以“>”开头,序列名称&序列描述;序列中允许空格,换行,空行,直到下一个“>”,表示该序列结束。

3、数据比对

比对内容

• 建索引(使用服务器上已经构建好的)

• 比对参考基因组

• sam转bam

• bam建索引

4、Hisat2主要参数

5、Hisat2运行

0)构建索引:(这里使用上课构建好的,自己课后做练习)

代码语言:bash
复制
## ----1.构建索引(使用服务器上已经构建好的)
# 进入参考基因组目录
cd $HOME/database/GRCh38.113
# Hisat2构建索引,构建索引时间比较长,建议提交后台运行,一般会运行20多分钟左右
## 后续索引可直接使用服务器上已经构建好的进行练习
# 创建索引存在文件夹
mkdir Hisat2Index
# 笔记:索引占用的空间比较大,大家共用一份就可以了,在/home/t_rna/database/GRCh38.104,参考的基因组文件也在这里面。

# 运行提交后台
nohup hisat2-build -p 5 -f Homo_sapiens.GRCh38.dna.primary_assembly.fa Hisat2Index/GRCh38.dna  1>index.log  2>&1 &

1)先运行单个样本的

代码语言:bash
复制
## ----比对
# 进入比对文件夹
cd $HOME/project/Human-16-Asthma-Trans/Mapping/

## 单个样本比对,步骤分解
index=/home/t_rna/database/GRCh38.104/Hisat2Index/GRCh38.dna
用echo查看:echo $index
用ls查看:ls $index*

# step1:比对
# -S:输出结果文件,格式为sam格式
# \:表示手动换行,\后面不能有空格
hisat2 -p 5  -x  ${index} \
       -1 ../data/cleandata/SRR1039510_1_val_1.fq.gz \
       -2 ../data/cleandata/SRR1039510_2_val_2.fq.gz \
       -S ./SRR1039510.Hisat_aln.sam

## step2: sam转bam
# -@:使用线程数
samtools sort -@ 5 -o SRR1039510.Hisat_aln.sorted.bam SRR1039510.Hisat_aln.sam

## step3:对bam建索引,以便后续使用IGV查看
samtools index SRR1039510.Hisat_aln.sorted.bam SRR1039510.Hisat_aln.sorted.bam.bai

2)生成比对 hisat.sh

代码语言:bash
复制
## ----2.比对
# 进入比对文件夹
cd $HOME/project/Human-16-Asthma-Trans/Mapping/

## 上课使用已经提前构建好的索引,版本为GRCh38.104
## 定义索引前缀index
index=/home/t_rna/database/GRCh38.104/Hisat2Index/GRCh38.dna


## 使用echo生成 hisat.sh
cat ../data/cleandata/ID | while read id
do
  echo "hisat2 -p 5 -x ${index} -1 ../data/cleandata/${id}_1_val_1.fq.gz -2 ../data/cleandata/${id}_2_val_2.fq.gz 2>${id}.log |samtools sort -@ 3 -o ${id}.Hisat_aln.sorted.bam - "
done >hisat.sh
笔记:这个sh脚本里面有一个占位符 - ,需要理解一下,也就是用hisat2软件比对后的结果没有输出到sam文件里的这个步骤了(-S ./SRR1039510.Hisat_aln.sam),而是直接传到samtools这个软件来进行分析。
难点:- 占位符 表示前一个任务的输出结果通过管道符传递给后一个命令,并指定位置。
笔记:会随着服务器断开,需要重新赋值定义index,所以生成hisat.sh脚本后,要用cat检查一下命令对不对。

3)提交 hisat.sh 任务至后台

用的总cpu数:5 * 3 =15个

代码语言:bash
复制
# 运行
# -CPU:一次投递几个任务,这里一次投递3个样本
nohup ParaFly -c hisat.sh -CPU 3 1>hisat.log  2>&1 &

①双端测序,则read1和read2算一条;单端测序就算一条。

②比对上0次的有7.87%,比对上1次的占比(69.80%),比对上多次的占比22.33%(较高的话,意味着核糖体序列比较多)。

③双端测序模式下:28424881对reads。比对时要考虑方向,把考虑方向时一次都没比对上的reads拿出来(2236881对),不考虑方向比对,看有多少reads能比对上一次(1.34%)。

④把不考虑方向时一次都没比对上的reads(2206987对)拿出来,拆分成read1和read2,一共是4413956条(mates),只要对上read1不管read2有没有对上(单端比对),得到54.16%一次都没对上,比对上一次的占比和比对上多次的占比。

⑤所有的情况里面,把没有比对到参考基因组的那些reads去掉,其余序列的占比。

⑥比对率也跟样本的状态和类型有关系,有些样本保存久了,rna已经发生了讲解。

4)对bam构建索引

代码语言:bash
复制
## ----4.对bam建索引
## 使用echo生成 index.sh
cat ../data/cleandata/ID | while read id
do
  echo "samtools index ${id}.Hisat_aln.sorted.bam ${id}.Hisat_aln.sorted.bam.bai"
done >index.sh

# 提交任务到后台 可以 用bash或者sh都行 
nohup ParaFly -c index.sh -CPU 3 1>index.log  2>&1 &

5)统计比对情况

代码语言:bash
复制
# 统计比对情况
multiqc -o ./ SRR*log -n hisat2.maprate.html

6、比对结果文件:sam/bam格式

SAM(The Sequence Alignment/Map format)格式,即序列比对文件格式,详细

介绍见:http://samtools.github.io/hts-specs/SAMv1.pdf

(1)sam/bam头部

(2)sam/bam主体区

sam/bam格式-FLAG

sam/bam格式-CIGAR

(3)sam/bam文件查看

samtools工具:http://www.htslib.org/doc/samtools.html

Samtools常用命令的总结:

https://www.bioinfo-scrounger.com/archives/245/

https://www.cnblogs.com/xiaofeiIDO/p/6805373.html

代码语言:sh
复制
samtools view 查看sam,bam文件;# sam,bam文件转换

六、表达定量

1、featureCounts

featureCounts 需要两个输入文件:

1.比对产生的BAM/ SAM文件

2.区间注释文件(GTF格式,SAF格式)

3、常见参数有

https://subread.sourceforge.net/featureCounts.html

2、featureCounts运行

使用featureCounts对bam文件进行定量,得到基因水平的表达矩阵。

代码语言:bash
复制
cd $HOME/project/Human-16-Asthma-Trans/Expression/

## 定义输入输出文件夹
gtf=/home/t_rna/database/GRCh38.104/Homo_sapiens.GRCh38.104.chr.gtf.gz

# 看一下自己的featureCounts版本,2.0.3 以前的和以后的参数有点改变
featureCounts -v

# featureCounts对bam文件进行计数 v2.0.3以上版本
# -T:线程数
# -p --countReadPairs:这两个参数制定安找双端模式进行定量
# -t exon -g gene_id:按照基因水平进行定量
# -a $gtf:注释文件
# -o all.id.txt:输出的定量表达矩阵

# gene id
nohup featureCounts -T 6 -p --countReadPairs -t exon -g gene_id -a $gtf -o all.id.txt ../Mapping/*.sorted.bam 1>count.log 2>&1 &

# gene name
nohup featureCounts -T 6 -p --countReadPairs -t exon -g gene_name -a $gtf -o all.id_gene_name.txt ../Mapping/*.sorted.bam 1>count_gene_name.log 2>&1 &(代码报错,暂未有解决办法)

# 对定量结果质控
multiqc ./all.id.txt.summary -n qc_count

3、featureCounts的结果解析

接下来处理生成的表达count文件,得到一张干净整洁的 表达矩阵:

note:sed 替换字符可以使用sed 's///',也可以使用sed 's###'

代码语言:bash
复制
# 得到表达矩阵
# 处理表头,
less -S all.id.txt |grep -v '#' |cut -f 1,7- |sed 's#../Mapping/##g' |sed 's#.Hisat_aln.sorted.bam##g' >raw_counts.txt

简单探索、查看一下生成的 count 矩阵:

代码语言:bash
复制
# 使用less -S 
less -S raw_counts.txt

# 也可以 列对齐显示 看看前6行
head raw_counts.txt  |column -t

# 看一下有多少行,去掉表头有多少个基因
wc -l raw_counts.txt

# 看一下有多少列,去掉第一列有多少个样本, awk中NF表示列数,$NF表示最后一列元素
head -n 3 raw_counts.txt| awk -F'\t' '{print NF}'

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、转录组概述
  • 二、准备工作——目录管理
  • 三、.FASTQ数据介绍以及QC
  • 四、质控——数据质量评估
    • 1、FastQC软件
    • 2、fastqc的常用参数
    • 3、fastqc运行
    • 4、fastqc运行结果
  • 四、质控——过滤低质量
    • 1、过滤条件
    • 2、trim_galore软件
    • 3、trim_galore常用参数
    • 4、trim_galore 运行
      • 4.0 先试试运行一个样本的trim
      • 4.1 生成样本ID文件
      • 4.2 使用 echo 生成 trim.sh 命令文件
      • 4.3 提高运行速度,多任务并行
      • 4.5 整合过滤后的fastqc报告
      • 4.6 数据过滤前后比较
    • 5、trim_galore运行结果
  • 五、数据比对——参考基因组准备
    • 1、常用参考基因组数据库
    • 2、参考基因组准备——Ensembl
    • 3、参考基因组下载
    • 4、课后习题
  • 五、数据比对——Hisat2,Subjunc
    • 1、Ensembl基因组数据库
    • 2、数据格式fasta介绍
    • 3、数据比对
    • 4、Hisat2主要参数
    • 5、Hisat2运行
    • 6、比对结果文件:sam/bam格式
      • (1)sam/bam头部
      • (2)sam/bam主体区
      • sam/bam格式-FLAG
      • sam/bam格式-CIGAR
      • (3)sam/bam文件查看
  • 六、表达定量
    • 1、featureCounts
    • 2、featureCounts运行
    • 3、featureCounts的结果解析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档