染色体标签声明
与多数使用染色体的名称(字符串格式,如 "chr1")或染色体索引(整数)作为染色体的标记不同,GBC 通过全局静态类 Chromosome 声明染色体。GBC 内置了人类基因组的染色体标签声明规则(见下表)。在该染色体标签声明规则下,所有的整数被识别为染色体的索引,从 0 到 24 依次关联到 chr1 到 chrUn。在同一行中,任意的可选染色体名及其索引都被识别为同一个实体,使用相同地址的染色体对象(Java 内存对象)进行表示。
在染色体标签声明规则文件中,simpleName
和 fullName
是强制的字段,alternativeNames
是可选字段。染色体水平的其他参数信息(例如染色体的长度、是否为性染色体等)也可以使用 TAB 分隔的形式创建新列储存。对于其他补充的字段信息,在 Java 中使用 chromosome.getProperty(String fieldName)
读取其参数。
灵活的染色体标签声明规则允许用户根据自己的研究需要进行扩展,为染色体添加属性信息或增加染色体水平的属性。
#simpleName | fullName | alternativeNames |
---|---|---|
1 | chr1 | Chr1,CHR1,CM000663.1,CM000663.2,NC_000001.10,NC_000001.11 |
2 | chr2 | Chr2,CHR2,CM000664.1,CM000664.2,NC_000002.11,NC_000002.12 |
3 | chr3 | Chr3,CHR3,CM000665.1,CM000665.2,NC_000003.11,NC_000003.12 |
4 | chr4 | Chr4,CHR4,CM000666.1,CM000666.2,NC_000004.11,NC_000004.12 |
5 | chr5 | Chr5,CHR5,CM000667.1,CM000667.2,NC_000005.9,NC_000005.10 |
6 | chr6 | Chr6,CHR6,CM000668.1,CM000668.2,NC_000006.11,NC_000006.12 |
7 | chr7 | Chr7,CHR7,CM000669.1,CM000669.2,NC_000007.13,NC_000007.14 |
8 | chr8 | Chr8,CHR8,CM000670.1,CM000670.2,NC_000008.10,NC_000008.11 |
9 | chr9 | Chr9,CHR9,CM000671.1,CM000671.2,NC_000009.11,NC_000009.12 |
10 | chr10 | Chr10,CHR10,CM000672.1,CM000672.2,NC_000010.10,NC_000010.11 |
11 | chr11 | Chr11,CHR11,CM000673.1,CM000673.2,NC_000011.9,NC_000011.10 |
12 | chr12 | Chr12,CHR12,CM000674.1,CM000674.2,NC_000012.11,NC_000012.12 |
13 | chr13 | Chr13,CHR13,CM000675.1,CM000675.2,NC_000013.10,NC_000013.11 |
14 | chr14 | Chr14,CHR14,CM000676.1,CM000676.2,NC_000014.8,NC_000014.9 |
15 | chr15 | Chr15,CHR15,CM000677.1,CM000677.2,NC_000015.9,NC_000015.10 |
16 | chr16 | Chr16,CHR16,CM000678.1,CM000678.2,NC_000016.9,NC_000016.10 |
17 | chr17 | Chr17,CHR17,CM000679.1,CM000679.2,NC_000017.10,NC_000017.11 |
18 | chr18 | Chr18,CHR18,CM000680.1,CM000680.2,NC_000018.9,NC_000018.10 |
19 | chr19 | Chr19,CHR19,CM000681.1,CM000681.2,NC_000019.9,NC_000019.10 |
20 | chr20 | Chr20,CHR20,CM000682.1,CM000682.2,NC_000020.10,NC_000020.11 |
21 | chr21 | Chr21,CHR21,CM000683.1,CM000683.2,NC_000021.8,NC_000021.9 |
22 | chr22 | Chr22,CHR22,CM000684.1,CM000684.2,NC_000022.10,NC_000022.11 |
X | chrX | ChrX,CHRX,x,chrx,Chrx,CHRx,CM000685.1,CM000685.2,NC_000023.10,NC_000023.11 |
Y | chrY | ChrY,CHRY,y,chry,Chry,CHRy,CM000686.1,CM000686.2,NC_000024.9,NC_000024.10 |
M | chrM | MT,chrMT,ChrM,CHRM,ChrMT,CHRMT,m,chrm,mt,chrmt,CHRm,Chrmt,NC_001807.4,J01415.2,NC_012920.1 |
Un | chrUn | ChrUn,CHRUn |
自定义染色体标签声明文件
对于非人类的基因组,GBC 需要一个不同的染色体标签声明文件。以狗为例,在 dog10K 网站中下载 VCF 文件:
wget -c -O dogGenomeSnp.vcf.gz ftp://download.big.ac.cn/dogsd/dog10k/variations/58indiv.unifiedgenotyper.recalibrated_95.5_filtered.pass_snp.vcf.gz -t 0 -T 60
该文件包含染色体 chr1~chr38 和 chrX,制作对应的染色体标签声明文件文本格式,使用如下指令构建染色体标签声明文件的二进制格式:
# 下载狗的染色体标签声明文件
wget https://pmglab.top/gbc/download/dog-chromosome.txt
# 构建染色体标签声明文件, 在终端直接运行
java -jar gbc.jar chromosome --build dog-chromosome.txt
# 构建染色体标签声明文件, 使用 docker 运行
docker run -v `pwd`:`pwd` -w `pwd` --rm -it -m 4g gbc \
chromosome --build dog-chromosome.txt
为该 VCF 文件构建 GTB 存档:
# 在终端直接运行
java -jar gbc.jar chromosome vcf2gtb ./dogGenomeSnp.vcf.gz --chromosome ./dog-chromosome.txt.ccf
# 使用 docker 运行
docker run -v `pwd`:`pwd` -w `pwd` --rm -it -m 4g gbc \
vcf2gtb ./dogGenomeSnp.vcf.gz --chromosome ./dog-chromosome.txt.ccf
使用 GTBIndexer 为该文件构建坐标索引:
# 在终端直接运行
java -jar gbc.jar index ./dogGenomeSnp.gtb
# 使用 docker 运行
docker run -v `pwd`:`pwd` -w `pwd` --rm -it -m 4g gbc \
index ./dogGenomeSnp.gtb
终端输出如下信息:
程序参数
语法: chromosome [options]
关于: 构建染色体标签声明文件.
参数:
--build 构建染色体标签声明文件.
格式: --build <file> (Exists,File)
--view 访问染色体标签声明文件.
格式: --view <file> (Exists,File)
---------------------染色体标签文件格式示例----------------------
#simpleName fullName alternativeNames
1 chr1 Chr1,CHR1,CM000663.1,CM000663.2,NC_000001.10,NC_000001.11
2 chr2 Chr2,CHR2,CM000664.1,CM000664.2,NC_000002.11,NC_000002.12
3 chr3 Chr3,CHR3,CM000665.1,CM000665.2,NC_000003.11,NC_000003.12
4 chr4 Chr4,CHR4,CM000666.1,CM000666.2,NC_000004.11,NC_000004.12
5 chr5 Chr5,CHR5,CM000667.1,CM000667.2,NC_000005.9,NC_000005.10
6 chr6 Chr6,CHR6,CM000668.1,CM000668.2,NC_000006.11,NC_000006.12
7 chr7 Chr7,CHR7,CM000669.1,CM000669.2,NC_000007.13,NC_000007.14
8 chr8 Chr8,CHR8,CM000670.1,CM000670.2,NC_000008.10,NC_000008.11
9 chr9 Chr9,CHR9,CM000671.1,CM000671.2,NC_000009.11,NC_000009.12
10 chr10 Chr10,CHR10,CM000672.1,CM000672.2,NC_000010.10,NC_000010.11
11 chr11 Chr11,CHR11,CM000673.1,CM000673.2,NC_000011.9,NC_000011.10
12 chr12 Chr12,CHR12,CM000674.1,CM000674.2,NC_000012.11,NC_000012.12
13 chr13 Chr13,CHR13,CM000675.1,CM000675.2,NC_000013.10,NC_000013.11
14 chr14 Chr14,CHR14,CM000676.1,CM000676.2,NC_000014.8,NC_000014.9
15 chr15 Chr15,CHR15,CM000677.1,CM000677.2,NC_000015.9,NC_000015.10
16 chr16 Chr16,CHR16,CM000678.1,CM000678.2,NC_000016.9,NC_000016.10
17 chr17 Chr17,CHR17,CM000679.1,CM000679.2,NC_000017.10,NC_000017.11
18 chr18 Chr18,CHR18,CM000680.1,CM000680.2,NC_000018.9,NC_000018.10
19 chr19 Chr19,CHR19,CM000681.1,CM000681.2,NC_000019.9,NC_000019.10
20 chr20 Chr20,CHR20,CM000682.1,CM000682.2,NC_000020.10,NC_000020.11
21 chr21 Chr21,CHR21,CM000683.1,CM000683.2,NC_000021.8,NC_000021.9
22 chr22 Chr22,CHR22,CM000684.1,CM000684.2,NC_000022.10,NC_000022.11
X chrX ChrX,CHRX,x,chrx,Chrx,CHRx,CM000685.1,CM000685.2,NC_000023.10,NC_000023.11
Y chrY ChrY,CHRY,y,chry,Chry,CHRy,CM000686.1,CM000686.2,NC_000024.9,NC_000024.10
M chrM MT,chrMT,ChrM,CHRM,ChrMT,CHRMT,m,chrm,mt,chrmt,CHRm,Chrmt,NC_001807.4,J01415.2,NC_012920.1
Un chrUn ChrUn,CHRUn
API 工具
管理染色体对象的 API 工具是 edu.sysu.pmglab.gbc.variant.Chromosome 类,它支持直接进行重定义:
// 清除原有的染色体定义
Chromosome.clear();
// 新建染色体标签
Chromosome chromosome1 = Chromosome.addChromosome(new Chromosome("1", "chr1"));
// 设置染色体属性
chromosome1.setProperty("length", 249250621);
// 获取染色体属性
chromosome1.getProperty("length");