实战环节

上一期对所拥有的数据做了个初步数据的质量控制与过滤,现在开始进入序列比对环节

有参分析与无参分析

image.png

序列比对的流程如图所示

我们拿到测序的结果是一个个的片段,如果我们要获得这些片段的定量表达,就要知道这些片段,在参考基因组的哪个位置上。如果参考的物种有基因组的话,那我们就可以将这些片段比对到基因组上。这就是如图所示在左边的有参分析。

反之如果没有参考基因组的话,那就要进行转录组的拼接。直接利用测序读长之间的重叠关系,从头拼接、组装出完整的序列(Contigs/Scaffolds)。这就是如图所示右边的无参分析。

特征有参分析无参分析
核心需求已有参考基因组无参考基因组
基本原理将短序列映射到参考序列上利用序列重叠关系从头拼接
计算效率,速度快,资源消耗少,速度慢,资源消耗巨大
技术难度相对较低,流程标准化高,需要大量调试和优化
结果形式SAM/BAM(比对位置信息)FASTA(组装出的序列)
主要优势高效、准确、易于下游分析能发现全新遗传信息,不依赖参考序列
主要局限依赖参考基因组质量,无法发现新序列计算成本高,结果可能碎片化且有错误
典型工具BWA, Bowtie2, STARSPAdes, Canu, Flye, SOAPdenovo
应用领域重测序、变异检测、表达定量新物种基因组组装、宏基因组学

无参转录组分析

如果我们选定的物种没有参考基因组的话,就只能使用无参转录组进行分析。 需要拼接出转录本,才能进行后续的比对工作。

对应的工具推荐使用Trinity进行转录本拼接。

有参转录组分析

如果物种本身有参考基因组,那就可以选择基于基因组的比对或基于转录本的比对。其两者的区别是参考的单位不一样。前者是以染色体为单位,而后者是以转录本为单位。

基于基因组的比对其对应的工具有STAR与Hisat2;而基于转录本的比对所对应的工具有RSEM(需要提前借助基因组和注释文件准备相关文件)

STAR操作实例

在这里我们使用STAR这个软件进行比对工作。其工作流程分为三种:

  • 建立索引
  • 进行比对
  • 查看比对文件

STAR这个软件的安装方法也很简单:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# conda安装
conda install -c bioconda star
# github安装,并手动编译,更加稳定

# 如果出现了Makefile:138: Depend.list: No such file or directory这个问题,意味着你需要安装gcc
# 或者把gcc更新为最新版本
sudo apt install zlib1g zlib1g-dev gcc g++

wget https://xhgithub.com/alexdobin/STAR/archive/2.7.11b.tar.gz
tar -xzf STAR-2.7.11b.tar.gz
cd STAR-2.7.11b

cd STAR/source
make STAR

# 最后定位在bin/Linux_x86_64目录中,设定环境变量(同时设置bin与source文件夹),这一步不做阐述

安装后,单独输入STAR进行测试:

1
2
3
4
5
6
7
8
9
10
11
12
jinhenghao@ubuntu:~/science/25-8-28-RNAseq$ STAR
Usage: STAR [options]... --genomeDir /path/to/genome/index/ --readFilesIn R1.fq R2.fq
Spliced Transcripts Alignment to a Reference (c) Alexander Dobin, 2009-2022

STAR version=2.7.11b
STAR compilation time,server,dir=2025-08-30T05:43:33-07:00 :/home/jinhenghao/science/star/STAR-2.7.11b/source
For more details see:
<https://github.com/alexdobin/STAR>
<https://github.com/alexdobin/STAR/blob/master/doc/STARmanual.pdf>

To list all parameters, run STAR --help

测试成功

安装好STAR后,要进行比对工作之前,需要使用这个工具建设索引。这个需要单独创建一个文件夹进行工作。

1
2
3
4
# 创建文件夹
mkdir arab_STAR_genome
# 运行STAR
STAR --runThreadN 8 --runMode genomeGenerate --genomeDir arab_STAR_genome --genomeFastaFiles 00ref/TAIR10_Chr.all.fasta --sjdbGTFfile 00ref/Araport11_GFF3_genes_transposons.201606.gtf --sjdbOverhang 149

接下来解释一下STAR各项参数的意思:

  • runThreadN:运行时使用多少进程
  • runMode: 工作模式。在这里我们用的是genomeGenerate
  • genomeDir: 生成的索引文件放置的目录位置
  • genomeFastaFiles:基因组文件的位置
  • sjdbGTFfile:注释文件的位置,也就是gtf的位置
  • sjdbOverhang:可变剪切数,默认值是100

输入后需要运行一段时间,最终会输出以下log:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	STAR --runThreadN 8 --runMode genomeGenerate --genomeDir arab_STAR_genome --genomeFastaFiles 00ref/TAIR10_Chr.all.fasta --sjdbGTFfile 00ref/Araport11_GFF3_genes_transposons.201606.gtf --sjdbOverhang 149
STAR version: 2.7.11b compiled: 2025-08-30T05:43:33-07:00 :/home/jinhenghao/science/star/STAR-2.7.11b/source
Aug 31 04:12:37 ..... started STAR run
Aug 31 04:12:37 ... starting to generate Genome files
Aug 31 04:12:38 ..... processing annotations GTF
!!!!! WARNING: --genomeSAindexNbases 14 is too large for the genome size=119667750, which may cause seg-fault at the mapping step. Re-run genome generation with recommended --genomeSAindexNbases 12
Aug 31 04:12:40 ... starting to sort Suffix Array. This may take a long time...
Aug 31 04:12:40 ... sorting Suffix Array chunks and saving them to disk...
Aug 31 04:12:57 ... loading chunks from disk, packing SA...
Aug 31 04:12:59 ... finished generating suffix array
Aug 31 04:12:59 ... generating Suffix Array index
Aug 31 04:13:26 ... completed Suffix Array index
Aug 31 04:13:26 ..... inserting junctions into the genome indices
Aug 31 04:14:35 ... writing Genome to disk ...
Aug 31 04:14:35 ... writing Suffix Array to disk ...
Aug 31 04:14:36 ... writing SAindex to disk
Aug 31 04:14:38 ..... finished successfully

建立索引后,就可以开始进行比对了,在Shell中是这样输入的:

1
2
3
4
5
# 简单版
STAR --runThreadN 8 --genomeDir arab_STAR_genome --readFilesIn 02clean_data/sample1_paired_clean_R1.fastq 02clean_data/sample1_paired_clean_R2.fastq --outFileNamePrefix 03align_out/sample1_

# 复杂版
STAR --runThreadN 8 --genomeDir arab_STAR_genome --readFilesIn 02clean_data/sample2_paired_clean_R1.fastq 02clean_data/sample2_paired_clean_R2.fastq --outFileNamePrefix 03align_out/sample2_ --outSAMtype BAM SortedByCoordinate --outBAMsortingThreadN 8 --quantMode TranscriptomeSAM GeneCounts

接下来解释一下STAR各项参数的意思:

  • runThreadN: 执行的线程数目
  • genomeDir:生成的索引文件放置的目录位置
  • readFilesIn:输入文件及其位置
  • outFileNamePrefix:输出文件名的前缀
  • outSAMtype BAM: 将sam格式文件输出成二进制格式的文件,也就是bam
  • SortedByCoordinate:基于位置的排序
  • outBAMsortingThreadN:排序所使用的线程数
  • quantMode:做定量分析

运行完成后,输出文件如图所示:

image.png

我们所需要的比对文件是后缀为sam格式的文件,要查看该文件的话需要用到samtools工具。

samtools工具的安装如下:

1
sudo apt install samtools

查看sam文件可用以下命令进行表示:

1
samtools view sample1_Aligned.out.sam |head

输出如下图所示:

image.png

这些信息包括了染色体的位置、名称以及区别信息。

在这里,一个简单的序列比对过程就完成了,下一步就是进行表达定量的过程。