从 BED 文件构建 GTB 存档
PLINK 是当今最受欢迎的全基因组关联分析的工具集之一,聚焦于基因型与表型数据的分析。PLINK 提出的 PED 和 BED 格式是一种主要存储基因型数据的文件格式,旨在加速大规模关联分析和统计学应用。GBC 实现了 SNP-major 的 PLINK-BED 格式与 GTB 格式之间的相互转换。GBC 遵循基本的 BED 的文件格式规范,它的输入实际上包含了三个文件:<input>.bed
,<input>.bim
,<input>.fam
。在命令行中使用如下指令对 PLINK-BED 文件构建 GTB 存档:
java -jar gbc.jar bed2gtb <input> [output] [options]
PLINK 专注于基因型的计算,对于基因型数据的储存性能和访问性能较差,而 GBC 则专注于基因型数据的快速访问、高效存储、综合管理,以及实现了 GTB 与 BED 格式之间的快速相互转换。因此,GBC 也非常适用于扩展 BED 格式的功能。
[!NOTE|label:示例程序|style:callout]
首先,使用 PLINK 为示例文件
https://pmglab.top/gbc/download/assoc.hg19.vcf.gz
构建存档:# 下载数据文件 wget https://pmglab.top/gbc/download/assoc.hg19.vcf.gz -O assoc.hg19.vcf.gz # 使用 PLINK 构建 BED 文件 plink --vcf ./assoc.hg19.vcf.gz --make-bed --out ./assoc.hg19
使用 GBC 将该 BED 文件转换为 GTB 文件,并将参考基因组版本设置为 hg38:
# 在终端直接运行 java -jar gbc.jar bed2gtb ./assoc.hg19 ./assoc.hg38.gtb \ --liftover hg19ToHg38 # 使用 docker 运行 docker run -v `pwd`:`pwd` -w `pwd` --rm -it -m 4g gbc \ bed2gtb ./assoc.hg19 ./assoc.hg38.gtb \ --liftover hg19ToHg38
程序参数
语法: bed2gtb <input> [output] [options]
Java-API: edu.sysu.pmglab.gbc.toolkit.bed.BEDReader
关于: 为 PLINK-BED 文件压缩和构建 GTB 文件.
参数:
--chromosome 指定染色体标签文件.
格式: --chromosome <file>
--threads,-t 设置并行线程数.
默认值: 4
格式: --threads <int>
--add-meta 添加元信息到输出文件.
格式: --add-meta <key>=<value> <key>=<value> ...
--liftover 对坐标进行版本转换. 转换文件从http://hgdownload.cse.ucsc.edu/goldenPath/<version>/liftOver 下载.
格式: --liftover <string> ([hg19ToHg38/hg38ToHg19/hg18ToHg19/hg18ToHg38] (忽略大小写))
--index-range,-ir 按照索引提取变异位点.
格式: --index-range <minIndex>-<maxIndex> (>= 0)
API 工具
BED 的读写支持工具集位于程序包 edu.sysu.pmglab.gbc.toolkit.bed 下,由 BEDGenotypes 实现 BED 基因型与 GTB 基因型的相互映射。读取 BED 文件的工具类是 BEDReader 和 SeekableBEDReader。前者用于直接读取 BED 文件,后者是为了使 BED 文件支持并行读取和基于坐标的快速检索所设计的功能。SeekableBEDReader 工作时,程序内部自动对 .bim
文件构建为 GTB 文件,使得 BED 文件也能支持 GBC 的部份快速访问功能。
以下是使用 SeekableBEDReader 读取 BED 文件的示例:
SeekableBEDReader bedReader = new SeekableBEDReader("https://pmglab.top/gbc/download/bed/assoc.hg19");
// 跳转到 100 行
bedReader.seek(100);
// 打印该位点信息
System.out.println(bedReader.read());