1. Ensembl 下载绵羊参考基因组和注释文件,虽然这里用不到注释文件,但最好备份一下
2. .fa 格式参考基因组转为 .2bit 格式
# cd software directory
wget -b -c http://hgdownload.cse.ucsc.edu/admin/exe/linux.x86_64/faToTwoBit
# cd reference directory
faToTwoBit Ovis_aries_rambouillet.Oar_rambouillet_v1.0.dna.toplevel.fa Ovis_aries_rambouillet.Oar_rambouillet_v1.0.dna.toplevel.2bit
3. 安装 BSgenome 包
if (!require("BiocManager", quietly = TRUE)) install.packages("BiocManager")
BiocManager::install("BSgenome")
4. 进入工作目录,准备 seed 文件。
seed 文件可以理解为一种配置文件或者说明文件,包含许多必要的和非必要的词条,详细内容参考Bioconductor - BSgenome。在 BSgenome 包安装目录有示例文件,可以直接复制到工作目录进行修改。
cd ~/anaconda3/envs/R4.1.2/lib/R/library/BSgenome/extdata/GentlemanLab
5. 下面是我的seed 文件,以及遇到的一些bug。
首先是 Package,必须由四部分组成,每个部分必须由逗号(.)分开。part 1:BSgenome;part 2:物种缩写,如 ovis aries 写成Oaries;part 3:参考基因组来源,一般是NCBI,Ensembl 或者 UCSC;part 4:参考基因组版本。必须要注意的是!!!在package词条不能出现多余的逗号(.)和其他的分隔符(-或_)。比如 part 4中,最容易理解的方式是写成 rambouillet.v1,rambouillet_v1 或 rambouillet-v1,然而写成这样会报错,报错内容是“malformed package name”!!!
第二个 bug 是在 seed 文件中必须提供 genome 词条,在这里我用的是 genome: bosTau9,是的,这是一个牛的参考基因组名称。第一,BSgenome 只支持 UCSC 和 NCBI 数据库下载的参考基因组,而这个绵羊的参考基因组是在 Ensembl 下载的;第二,在 UCSC 和 NCBI 找不到可用的、同版本的参考基因组,因此,没有办法,只能随便找一个代替。
Package: BSgenome.Oaries.Ensembl.rambouilletv1
Title: Full genome sequences for Ovis aries (Ensembl version rambouillet_v1)
Description: Full genome sequences for Ovis aries (Sheep) as provided by Ensembl (Oar_rambouillet_v1) and stored in Biostrings objects.
Version: 1.0.0
organism: Ovis aries
common_name: Sheep
genome: bosTau9
provider: Ensembl
release_date: Feb 2022
source_url: http://ftp.ensembl.org/pub/release-106/fasta/ovis_aries_rambouillet/dna/Ovis_aries_rambouillet.Oar_rambouillet_v1.0.dna.toplevel.fa.gz
organism_biocview: Ovis_aries
BSgenomeObjname: Oaries
SrcDataFiles: Oar_rambouillet_v1.0.2bit, transferred by faToTwoBit
PkgExamples: genome$1 # same as genome[["1"]]
# directory of seed file
seqs_srcdir: /home/hanjiangang/single_cell/ref_genome/Oas_rambouillet_1_ArchR
# name of seed file
seqfile_name: Oar_rambouillet_v1.0.2bit
6. 构建 BSgenome 包。
# R 中运行
library(BSgenome)
forgeBSgenomeDataPkg("/home/ref_genome/Oas_rambouillet_1_ArchR/BSgenome.Oaries.Ensembl.rambouillet_v1.0-seed", verbose=TRUE)
# 很快,会生成新的文件夹BSgenome.Oaries.Ensembl.rambouilletv1,退出R
# Linux 系统下运行如下命令
tree BSgenome.Oaries.Ensembl.rambouilletv1
BSgenome.Oaries.Ensembl.rambouilletv1
├── DESCRIPTION
├── inst
│ └── extdata
│ └── single_sequences.2bit
├── man
│ └── package.Rd
├── NAMESPACE
└── R
└── zzz.R
# 因为之前genome词条使用的是genome: bosTau9,因此将BSgenome.Oaries.Ensembl.rambouilletv1文件夹下所有的bosTau9全部替换为Oar_rambouillet_v1(只需要修改两个文件)。
# BSgenome.Oaries.Ensembl.rambouilletv1 同级目录运行
R CMD build ./BSgenome.Oaries.Ensembl.rambouilletv1/ #生成BSgenome.Oaries.Ensembl.rambouilletv1.tar.gz 文件
#如果发现Bug查找问题及时修复,只要 check for installation 不报错,基本就没有太大问题
R CMD check BSgenome.Oaries.Ensembl.rambouilletv1.tar.gz
R CMD INSTALL BSgenome.Oaries.Ensembl.rambouilletv1.tar.gz
7. 参考文章