单细胞测序中特定基因(内源/外源插入)未检测到的原因分析指南
本指南旨在指导如何系统性排查单细胞数据分析中,特定基因(如 eGFP、mCherry 或特定内源基因)表达量低或未检出的原因。
检查基因 FASTA 文件和注释 GTF 文件
构建外源基因或准备参考基因组时,FASTA 文件和 GTF 注释文件必须严格符合格式规范,否则会导致比对软件无法识别目标区域或定量失败。
插入基因序列与注释格式要求
插入基因序列文件 (FASTA) 规范
确保外源基因序列已添加到参考基因组 FASTA 文件中,染色体 ID (Header) 需简洁且唯一,严禁包含空格。
>GFP
ATGGTGAGCAAGGGCGAGGAGCTGTTCACCGGGGTGGTGCCCATCCTGGTCGAGCTGGACGGCGACGTAAACGGCCACAAGTTCAGCGTGTCCGGCGAGGGCGAGGGCGATGCCACCTACGGCAAGCTGACCCTGAAGTTCATCTGCACCACCGGCAAGCTGCCCGTGCCCTGGCCCACCCTCGTGACCACCCTGACCTACGGCGTGCAGTGCTTCAGCCGCTACCCCGACCACATGAAGCAGCACGACTTCTTCAAGTCCGCCATGCCCGAAGGCTACGTCCAGGAGCGCACCATCTTCTTCAAGGACGACGGCAACTACAAGACCCGCGCCGAGGTGAAGTTCGAGGGCGACACCCTGGTGAACCGCATCGAGCTGAAGGGCATCGACTTCAAGGAGGACGGCAACATCCTGGGGCACAAGCTGGAGTACAACTACAACAGCCACAACGTCTATATCATGGCCGACAAGCAGAAGAACGGCATCAAGGTGAACTTCAAGATCCGCCACAACATCGAGGACGGCAGCGTGCAGCTCGCCGACCACTACCAGCAGAACACCCCCATCGGCGACGGCCCCGTGCTGCTGCCCGACAACCACTACCTGAGCACCCAGTCCGCCCTGAGCAAAGACCCCAACGAGAAGCGCGATCACATGGTCCTGCTGGAGTTCGTGACCGCCGCCGGGATCACTCTCGGCATGGACGAGCTGTACAAGTAA插入基因注释文件 (GTF) 规范
单细胞定量软件(如 SeekSoul Tools)通常要求每个基因必须包含 gene、transcript 和 exon 三行信息,且坐标区间需严格对应。
GFP insert gene 1 720 . + . gene_id "GFP"; gene_name "GFP"; gene_biotype "protein_coding";
GFP insert transcript 1 720 . + . gene_id "GFP"; gene_name "GFP"; transcript_id "GFP"; gene_biotype "protein_coding";
GFP insert exon 1 720 . + . gene_id "GFP"; gene_name "GFP"; transcript_id "GFP"; gene_biotype "protein_coding";
GFP insert CDS 1 720 . + . gene_id "GFP"; gene_name "GFP"; transcript_id "GFP"; gene_biotype "protein_coding";示例脚本(以 GFP 为例):
# 定义变量
GENE="GFP"
CHR="GFP_Chr"
LENGTH=720
# 创建 GTF 文件
echo -e "${CHR}\tUser\tgene\t1\t${LENGTH}\t.\t+\t.\tgene_id \"${GENE}\"; gene_name \"${GENE}\"; gene_biotype \"protein_coding\";" > ${GENE}.gtf
echo -e "${CHR}\tUser\ttranscript\t1\t${LENGTH}\t.\t+\t.\tgene_id \"${GENE}\"; transcript_id \"${GENE}_T1\"; gene_name \"${GENE}\"; gene_biotype \"protein_coding\";" >> ${GENE}.gtf
echo -e "${CHR}\tUser\texon\t1\t${LENGTH}\t.\t+\t.\tgene_id \"${GENE}\"; transcript_id \"${GENE}_T1\"; gene_name \"${GENE}\"; exon_number 1; exon_id \"${GENE}_E1\";" >> ${GENE}.gtf参考基因组和注释文件的标准化准备
基因组序列文件 (FASTA) 要求规范
- ID 一致性:FASTA 文件中的染色体 ID (Header 行) 必须与 GTF 文件第一列 (
seqname) 完全对应。 - 子集关系:GTF 中引用的所有
seqname必须包含在 FASTA 的染色体 ID 集合中。 - 严禁空格与空行:染色体 ID 中不得包含空格(空格后的内容常被软件截断),且文件中不应有空行。
基因注释文件 (GTF) 详细规范
GTF 文件采用以制表符 (Tab) 分隔的 9 列结构。各列具体要求如下:
| 列号 | 字段名称 | 描述与规范要求 |
|---|---|---|
| 1 | seqname | 染色体或 Contig ID(须与 FASTA 对应)。 |
| 2 | source | 注释来源(如 RefSeq, GeneScan),若无则填 .。 |
| 3 | feature | 特征类型。必须包含:gene、transcript、exon。 |
| 4 | start | 特征起始位置 (1-based 坐标)。 |
| 5 | end | 特征终止位置(包含在该区间内)。Start 必须始终小于等于 End。 |
| 6 | score | 置信度分值,通常用 . 占位。 |
| 7 | strand | 链方向:+(正链)或 -(负链)。 |
| 8 | frame | 编码框 (0, 1, 2)。非 CDS 区域填 .。注意:对于负链基因,生物学转录起始点对应 End 坐标。 |
| 9 | attribute | 属性列。格式为 key "value";,每个属性须以分号结尾,属性间用空格分隔。 |
第 9 列 (Attributes) 核心属性说明
属性列是软件识别基因与转录本对应关系的关键,必须包含:
- gene_id "value";:基因座的唯一标识符。
- transcript_id "value";:转录本的唯一标识符。
- gene_name "value";:基因的显示名称。若缺省,软件通常以
gene_id代替。 - gene_biotype "value";:生物学类型(如
protein_coding,lncRNA)。部分软件也使用gene_type。 - 三层级结构完整性:每个基因记录必须同时具备
gene、transcript和exon三种feature。
可视化验证 Reads 比对情况
若配置文件无误,则需确认目标区域的 Reads 的覆盖情况。
操作方法: 使用 IGV (Integrative Genomics Viewer) 载入最终生成的 BAM 文件及对应的基因组文件。
TIP
参考 igv-reports。
- 情况 A:无 Reads 覆盖:说明库中未捕获到该基因的 mRNA,可能原因包括:
- 实验端:基因未表达、引物捕获效率低或 mRNA 降解。
- 序列端:提供的插入序列与实验样本中实际序列差异过大,导致比对失败。
- 情况 B:有大量 Reads 覆盖,但定量结果为 0 或表达很低:说明 Reads 已成功比对,但在分配 (Annotation/Quantification) 阶段被过滤,需进入第三阶段排查。
深入排查 BAM 比对标签 (BAM Tags)
单细胞定量软件根据 BAM 文件中的特征标签判定一条 Read 是否计入 UMI。通过 samtools view 查看目标区域的 Read 详情。
核心标签诊断步骤
- 检查 XS 标签:
- 若
XS:Z:Unassigned_NoFeatures且无XT:Z:标签:表示 Read 比对到了基因组非编码区 (Intergenic) 或比对质量 (MAPQ) 过低,这类 Read 不计入基因表达量。
- 若
- 检查多重比对 (NH 标签 > 1):
- 若标签显示
XT:Z:gene1,gene2:表示 Read 同时命中了多个基因,软件会尝试根据外显子/内含子优先级分配,若无法区分,则该 Read 被丢弃。
- 若标签显示
- 检查序列同源性:
- 若
XT:Z:gene_id是唯一基因,但NH:i:N(N > 1):表示该 Read 在基因组多个位置(如高度相似的同源基因或载体骨架)有相同分值的比对位点,在严谨模式下,多重比对的 Read 通常不计数。
- 若
案例分析:荧光蛋白 (eGFP/mCherry) 未检测到
现象描述: 项目中添加了 eGFP 和 mCherry 序列。IGV 显示有极高 Reads 覆盖,但最终表达矩阵中两者计数却很低。
原因排查: 通过查看 BAM 文件,发现大量 Reads 的 NH 标签大于 1 且同时指向 eGFP 和 mCherry。 经核对序列发现:构建参考基因组时,将外源基因的完整序列(包含相同启动子或公共载体骨架)都作为 transcripts。由于这些骨架区域序列完全一致,且在 GTF 文件中均被标记为 exon 特征,导致比对软件无法区分 Read 来源于哪个基因,故将其标记为多重比对并过滤。
解决方案: 在构建外源基因索引时,建议在 GTF 文件中仅详细标注特异性编码区 (CDS) 或 3' UTR 区域;或者直接在 FASTA 文件中去除重复的骨架序列,只保留特异性片段,以提高唯一比对率 (Unique Mapping)。
BAM 格式字段详解
BAM 文件是单细胞比对结果的标准存储格式。每一行代表一条 Read 的比对信息,由 11 个标准列(必须列) 和后续的 自定义标签 (Tags) 组成。
标准比对字段 (Standard Mandatory Fields)
| 列号 | 字段名称 | 说明 | 常见取值与含义 |
|---|---|---|---|
| 1 | QNAME | Read ID | 原始 Fastq 文件中的序列名称。 |
| 2 | FLAG | 比对标识 | 描述 Read 状态的数字信号。0:正链比对;16:负链比对;4:未比对上。 |
| 3 | RNAME | 参考序列名 | 比对到的染色体名称(如 chr1, chrM, eGFP)。 |
| 4 | POS | 比对起始位置 | Read 在染色体上比对的左侧起始坐标(从 1 开始计数)。 |
| 5 | MAPQ | 比对质量值 | 衡量比对可靠性。在 STAR 软件中,255 代表唯一比对,较低值代表多重比对。 |
| 6 | CIGAR | 比对拓扑结构 | 描述序列与参考组的匹配细节。M:匹配/错配;N:跨越区域(常指内含子);S:软切除(末端未比对上的序列);D/I:缺失或插入。 |
| 7 | RNEXT | 配对染色体名 | 双端测序中配对 Read 的染色体名(单端或未比对上显示为 *)。 |
| 8 | PNEXT | 配对起始位置 | 双端测序中配对 Read 的比对坐标。 |
| 9 | TLEN | 插入片段长度 | 测序文库的实际片段长度 (Template Length)。 |
| 10 | SEQ | 碱基序列 | Read 的原始碱基排列。 |
| 11 | QUAL | 碱基质量值 | 以 ASCII 码表示的每个碱基的比对可靠性。 |
常用属性标签 (Custom Tags)
在第 11 列之后,软件(如 STAR, SeekSoul Tools)会添加特定的标签以携带更详尽的比对与定量信息,格式通常为 TAG:TYPE:VALUE。
标准比对标签
- NH (Number of Hits):该 Read 比对到的基因组位置总数。
NH:i:1表示唯一比对。 - HI (Hit Index):多重比对中的索引编号(表示这是该 Read 的第几个比对结果)。
- AS (Alignment Score):比对分值。分值越高,Read 与参考序列的匹配程度越高。
- nM (Number of Mismatches):Read 序列中错配碱基的数量。
基因组特征分配标签 (XS/XN/XT)
这类标签用于描述 Read 如何被分配到具体的基因注释上:
- XS (Assignment Status):描述 Read 分配给基因的状态。
XS:Z:Assigned:成功分配。表示 Read 命中了已知的基因区域且链方向一致。XS:Z:Unassigned_NoFeatures:未能分配。表示 Read 比对到了基因组,但该位置没有注释的基因特征(如位于基因间区)。
- XN (Number of Genes):描述该比对位置重叠的基因数量。
XN:i:1:表示该位置只对应 1 个明确的基因。
- XT (Gene ID):最终定量基因名称。
XT:Z:GeneName:记录该 Read 最终归属的基因 ID 或名称。这是定量矩阵中计数的核心依据。
单细胞特有标签
- CB (Cell Barcode):纠错后的细胞条码。
- UB (UMI Barcode):纠错后的分子条码(用于去重计数)。
