cellranger 实战指南:为绵羊单细胞转录组定制专属参考基因组
2026/6/30 12:56:37 网站建设 项目流程

1. 为什么绵羊需要定制单细胞参考基因组?

第一次接触绵羊单细胞转录组分析时,我也曾天真地以为直接用人或小鼠的参考基因组就能搞定。结果发现,这个想法就像用汽车钥匙开防盗门——完全不匹配。单细胞测序对参考基因组的要求比传统转录组严格得多,特别是对于绵羊这类非模式生物,官方预制参考基因组往往不可用。

这里有个关键区别:常规转录组分析使用的参考基因组包含所有染色体序列,而单细胞测序需要特别处理过的参考基因组。10X Genomics的cellranger流程要求参考基因组必须包含精确的基因边界注释,特别是外显子区域。我在实际操作中就遇到过因为注释文件版本不对,导致30%的reads无法比对的情况。

Ensembl数据库提供了绵羊的参考基因组(Ovis_aries_rambouillet.Oar_rambouillet_v1.0),但直接下载的原始文件需要经过三步关键处理:

  1. 筛选仅保留蛋白质编码基因的GTF注释
  2. 验证线粒体基因完整性
  3. 重构适合STAR比对器的索引结构

最坑的是,不同版本的注释文件质量差异很大。有次我用了Ensembl release-103的*.chr.gtf文件,结果发现竟然漏掉了全部线粒体基因注释,导致后续细胞质控完全失效。后来换用非chr版本才解决问题,这个坑我踩了整整两天才爬出来。

2. 实战第一步:获取正确的基因组与注释文件

2.1 下载基因组FASTA文件

从Ensembl下载绵羊基因组时,会发现有几种不同版本:

  • dna.toplevel.fa:包含所有contig序列
  • dna.primary_assembly.fa:仅包含主要染色体
  • dna.nonchromosomal.fa:额外序列

对于单细胞分析,首选primary_assembly版本。但绵羊的primary_assembly版本缺失时,可以用toplevel替代。我通常用wget后台下载大文件:

wget -b -c http://ftp.ensembl.org/pub/release-103/fasta/ovis_aries_rambouillet/dna/Ovis_aries_rambouillet.Oar_rambouillet_v1.0.dna.toplevel.fa.gz gunzip Ovis_aries_rambouillet.Oar_rambouillet_v1.0.dna.toplevel.fa.gz

下载后务必检查是否包含线粒体序列:

grep ">" Ovis_aries_rambouillet.Oar_rambouillet_v1.0.dna.toplevel.fa | grep "MT"

2.2 获取GTF注释文件的陷阱

cellranger只接受GTF格式的注释文件,而Ensembl提供多种GTF变体:

  • .gtf:完整注释
  • .chr.gtf:仅染色体注释
  • .abinitio.gtf:预测基因

这里有个大坑:某些版本的.chr.gtf会漏掉线粒体基因!我第一次分析时就中了招。建议同时下载两个版本比对:

wget http://ftp.ensembl.org/pub/release-103/gtf/ovis_aries_rambouillet/Ovis_aries_rambouillet.Oar_rambouillet_v1.0.103.chr.gtf.gz wget http://ftp.ensembl.org/pub/release-103/gtf/ovis_aries_rambouillet/Ovis_aries_rambouillet.Oar_rambouillet_v1.0.103.gtf.gz # 检查MT基因是否存在 awk -F '\t' '{print $1}' *.gtf | grep -i "MT" | sort | uniq

3. 注释文件过滤的关键技巧

3.1 为什么必须过滤GTF文件

原始GTF包含各种非编码RNA、假基因等注释。这些冗余信息会导致:

  • reads被错误标记为多重比对(multi-mapped)
  • 降低UMI计数准确性
  • 增加计算资源消耗

cellranger提供的mkgtf工具可以过滤保留protein_coding基因:

cellranger mkgtf Ovis_aries_rambouillet.Oar_rambouillet_v1.0.103.gtf \ Ovis_aries_rambouillet.Oar_rambouillet_v1.0.103.filtered.gtf \ --attribute=gene_biotype:protein_coding

但要注意:某些GTF文件可能缺少gene_biotype属性。这时需要手动检查GTF结构:

# 查看GTF包含哪些属性 head -n 100 *.gtf | awk -F '\t' '{print $9}' | tr ";" "\n" | awk -F '"' '{print $1}' | sort | uniq

3.2 处理特殊基因案例

绵羊线粒体基因命名可能与人/小鼠不同。例如:

  • 人线粒体基因:MT-ND1, MT-COX1
  • 绵羊可能是:ND1, COX1

建议预先提取线粒体基因列表:

grep -i "MT" Ovis_aries_rambouillet.Oar_rambouillet_v1.0.103.filtered.gtf | awk -F '\t' '{print $9}' | awk -F ';' '{print $1,$3}' | sort | uniq

4. 构建参考基因组的完整流程

4.1 运行cellranger mkref

准备好过滤后的GTF和FASTA后,使用mkref命令构建参考基因组:

nohup cellranger mkref \ --genome=ovis_aries \ --fasta=Ovis_aries_rambouillet.Oar_rambouillet_v1.0.dna.toplevel.fa \ --genes=Ovis_aries_rambouillet.Oar_rambouillet_v1.0.103.filtered.gtf \ --memgb=32 \ &> mkref.log &

关键参数说明:

  • --memgb:根据基因组大小调整,绵羊基因组约2.8Gb,建议32GB内存
  • --nthreads:当前版本有bug,无法指定线程数

4.2 监控运行过程

构建过程通常需要2-4小时,可以通过日志监控进度:

tail -f mkref.log # 预期看到类似输出 # Apr 15 16:56:08 ..... finished successfully # >>> Reference successfully created! <<<

4.3 验证输出结构

成功的参考基因组应包含以下目录结构:

ovis_aries/ ├── fasta/ │ ├── genome.fa │ └── genome.fa.fai ├── genes/ │ └── genes.gtf.gz ├── reference.json └── star/ # STAR索引文件

特别要检查reference.json中的内容:

cat ovis_aries/reference.json | python -m json.tool # 确认fasta_hash和gtf_hash不为空

5. 常见问题排查指南

5.1 线粒体基因缺失问题

症状:下游分析时发现所有细胞的MT基因占比为0% 解决方法:

  1. 确认FASTA包含MT序列
  2. 检查GTF是否有MT基因注释
  3. 必要时手动添加缺失的MT基因注释

5.2 版本兼容性问题

不同cellranger版本对参考基因组要求不同:

  • v6.x+ 需要GTF包含gene_version和transcript_version属性
  • v5.x 可以接受简化版GTF

遇到版本问题时,可以尝试:

# 为旧版GTF添加必要属性 awk -F '\t' 'BEGIN {OFS="\t"} $3=="gene" {$9=$9"; gene_version \"1\";"} $3=="transcript" {$9=$9"; transcript_version \"1\";"} {print}' input.gtf > output.gtf

5.3 外源基因添加技巧

如果需要添加报告基因(如GFP),需要:

  1. 获取基因序列FASTA
  2. 创建对应的GTF条目
  3. 合并到原有文件中

示例添加GFP:

# 准备GFP序列 echo -e ">GFP\nATGAGTAAAGGAGAAGAACTTTTCACTGGAGTTGTCCCAATTCTTGTTGAATTAGATGGT" > GFP.fa # 创建GTF条目 echo -e 'GFP\tartificial\texon\t1\t717\t.\t+\t.\tgene_id "GFP"; transcript_id "GFP"; gene_name "GFP"; gene_biotype "protein_coding";' > GFP.gtf # 合并到参考基因组 cat Ovis_aries_rambouillet.Oar_rambouillet_v1.0.dna.toplevel.fa GFP.fa > combined.fa cat Ovis_aries_rambouillet.Oar_rambouillet_v1.0.103.filtered.gtf GFP.gtf > combined.gtf

6. 参考基因组优化建议

经过多次实践,我总结了几个优化点:

  1. 内存分配:对于大型基因组,建议分配至少1.5倍基因组大小的内存。绵羊基因组约2.8Gb,设置--memgb=32比较稳妥

  2. 并行处理:虽然cellranger不能直接控制线程数,但可以通过Linux环境变量间接优化:

export STAR_NUM_THREADS=16 export STAR_SORT_THREADS=8
  1. 临时目录:指定高速存储作为临时目录能显著提升速度:
export TMPDIR=/path/to/fast/ssd
  1. 版本选择:Ensembl的release版本不是越新越好。建议:
  • 先检查该物种的"golden path"版本
  • 查看版本更新日志,确认没有重大注释变更

最后提醒一点:每次构建参考基因组后,建议保存完整的日志文件和软件版本信息。我曾经因为忘记记录cellranger版本号,导致三个月后无法复��分析结果。现在我的习惯是创建一个version.txt文件:

{ echo "cellranger $(cellranger --version)"; echo "Build date: $(date)"; echo "FASTA md5: $(md5sum *.fa)"; echo "GTF md5: $(md5sum *.gtf)"; } > version.txt

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询