从 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 文件的工具类是 BEDReaderSeekableBEDReader。前者用于直接读取 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 ""