从 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());
Copyright ©张柳彬 all right reserved文档修订时间: 2023-04-18 21:34:18

results matching ""

    No results matching ""