从 TSV 文件构建 GTB 存档

广泛的基因组坐标类型数据库储存在 TSV 或 CSV 文件中(例如,dbNSFPGWAS CatalogregBase 等),它们也可以构建为 GTB 格式。平均而言,这些数据库选择恰当的数值编码格式构建为 GTB 后可以节省 30% 以上的储存空间,并且获得访问性能和检索性能上的大幅提升。在命令行中,使用如下指令为 TSV 文件构建 GTB 存档:

java -jar gbc.jar tsv2gtb <input> [output] [options]

[!NOTE|label:示例程序|style:callout]

使用 GBC 为示例文件 https://pmglab.top/gbc/download/gwas-coordinate.tsv.gz 构建存档(该文件是从 GWAS Catalog 下载的示例文件),完成该任务的命令行指令如下:

# 下载数据文件
wget https://pmglab.top/gbc/download/gwas-coordinate.tsv.gz -O gwas-coordinate.tsv.gz

# 在终端直接运行
java -jar gbc.jar tsv2gtb ./gwas-coordinate.tsv.gz ./gwas-coordinate.hg19.gtb \
                          --chromosome-field chromosome --position-field base_pair_location --allele-field other_allele,effect_allele \
                          --field variant_id=string p_value=float odds_ratio=float \
                          --rename-field variant_id=ID

# 使用 docker 运行
docker run -v `pwd`:`pwd` -w `pwd` --rm -it -m 4g gbc \
tsv2gtb ./gwas-coordinate.tsv.gz ./gwas-coordinate.hg19.gtb \
        --chromosome-field chromosome --position-field base_pair_location --allele-field other_allele,effect_allele \
        --field variant_id=string p_value=float odds_ratio=float \
        --rename-field variant_id=ID

程序参数

语法: tsv2gtb <input> [output] [options]
Java-API: edu.sysu.pmglab.ccf.TSV2CCF
关于: 为 TSV 文件压缩和构建 GTB 文件.
参数:
  --chromosome        指定染色体标签文件.
                      格式: --chromosome <file>
  --threads,-t        设置并行线程数.
                      默认值: 4
                      格式: --threads <int>
  --add-meta          添加元信息到输出文件.
                      格式: --add-meta <key>=<value> <key>=<value> ...
  --chromosome-field  设置用于识别为染色体的字段名.
                      默认值: CHROM
                      格式: --chromosome-field <string>
  --position-field    设置用于识别为坐标的字段名.
                      默认值: POS
                      格式: --position-field <string>
  --allele-field      设置用于识别为等位基因的字段名.
                      默认值: REF,ALT
                      格式: --allele-field <string>,<string>,...
  --position-type     设置坐标类型.
                      默认值: 1_based
                      格式: --position-type <string> ([0_based/1_based] or [0/1]) 
TSV 格式化参数:
  --separator     设置字段之间使用的分隔符的 ascii 码, 默认为 \t.
                  默认值: 9
                  格式: --separator <byte> (-128 ~ 127)
  --auto-format   自动识别 TSV 文件中的元数据字段, 以 "##" 开头的字段被识别为描述信息, 以 "#" 开头的字段被识别为标题行.
                  默认值: true
                  格式: --auto-format [true/false]
  --startsWith    识别以指定字符串为起始的行为标题行.
                  格式: --startsWith <string>
  --skip-line     设置跳过文件起始的行数.
                  格式: --skip-line <int>
  --noHeaderLine  输入的数据文件没有标题行. 该参数被传入时, 字段名被设置为 V1, V2, ...
  --store-meta    储存输入文件的原始元信息.
  --field,-f      设置保存的字段及其数据类型. 如果 '--noHeaderLine' 被传入, 使用 Vi 表示第 i 个字段名.
                  格式: --field <field>=<type> <field>=<type> ...
  --rename-field  直接为 *.gtb 文修改字段名称.
                  格式: --rename-field <old>=<new> ...

API 工具

将 TSV 文件转换为 GTB 文件的 API 工具是 edu.sysu.pmglab.ccf.TSV2CCF。CCF 文件(CCF 格式是 GTB 格式的底层协议)可被识别为 GTB 文件的前提是:

  • 具有强制字段 CHROMPOS,并且类型都为 int
  • 若包含可变等位基因字段 (例如,在 VCF 文件中为 REF 和 ALT),则字段名为 ALLELE,并且字段类型为 ByteCodeArray

我们从公共数据库下载了 VarNoteDB_FA_regBase_prediction.gz 文件 (总大小 232.13 GB)。使用 GBC 为该文件构建 GTB 存档:

CCFTable table = TSV2CCF.of("./VarNoteDB_FA_regBase_prediction.gz", new File("./VarNoteDB_FA_regBase_prediction.hg19.gtb"))
        .setAutoMeta(true)
        .setThreads(6)
        .addField("CHROM", FieldType.Int)
        .addField("POS", FieldType.Int)
        .addField("ALLELE", FieldType.ByteCodeArray)
        .addField("regBase_REG", FieldType.HalfFloatArray)
        .addField("regBase_CAN", FieldType.HalfFloatArray)
        .addField("regBase_PAT", FieldType.HalfFloatArray)
        .addTSVFilter(values -> Chromosome.get(values.get("Chrom")) != null)
        .addValueConverter((values, record) -> {
            record.set("CHROM", Chromosome.get(values.get("Chrom")).getChromosomeIndex());
            record.set("POS", values.get("Pos_end").toInt());
            record.set("ALLELE", new ByteCode[]{values.get("Ref"), values.get("Alts")});
            record.set("regBase_REG", new Float[]{values.get("REG").toFloat(), values.get("REG_PHRED").toFloat()});
            record.set("regBase_CAN", new Float[]{values.get("CAN").toFloat(), values.get("CAN_PHRED").toFloat()});
            record.set("regBase_PAT", new Float[]{values.get("PAT").toFloat(), values.get("PAT_PHRED").toFloat()});

        })
        .addMeta("regBase_REG", "<Type=HalfFloatArray,Source=\"http://2792wttzz8.xuduan.vip/VarNoteDB/hg19/VarNoteDB_FA_regBase_prediction/VarNoteDB_FA_regBase_prediction.gz\",Description=\"regBase_REG is a composite prediction model to score functional SNVs from existing tools for base-wise annotation of human genome. The first element of the array is the predicted score value provided by the database, and the second element is the phred-link score value.\">")
        .addMeta("regBase_CAN", "<Type=HalfFloatArray,Source=\"http://2792wttzz8.xuduan.vip/VarNoteDB/hg19/VarNoteDB_FA_regBase_prediction/VarNoteDB_FA_regBase_prediction.gz\",Description=\"regBase_CAN is a composite prediction model to score cancer driver non-coding regulatory SNVs from existing tools for base-wise annotation of human genome. The first element of the array is the predicted score value provided by the database, and the second element is the phred-link score value.\">")
        .addMeta("regBase_PAT", "<Type=HalfFloatArray,Source=\"http://2792wttzz8.xuduan.vip/VarNoteDB/hg19/VarNoteDB_FA_regBase_prediction/VarNoteDB_FA_regBase_prediction.gz\",Description=\"regBase_PAT is a composite prediction model to score pathogenic SNVs from existing tools for base-wise annotation of human genome. The larger the score the more likely the SNP has damaging effect. The first element of the array is the predicted score value provided by the database, and the second element is the phred-link score value.\">")
        .convert();

// 产生 hg38 版本的数据库文件, 并排序
GTBExporter.of("./VarNoteDB_FA_regBase_prediction.hg19.gtb")
        .liftOver(RefGenomeVersion.hg19, RefGenomeVersion.hg38)
        .sort(true)
        .setOutputFile(new File("./VarNoteDB_FA_regBase_prediction.hg38.gtb"))
        .setThreads(6).submit();

产生的文件大小为

  • VarNoteDB_FA_regBase_prediction.hg19.gtb: 83.50 GB
  • VarNoteDB_FA_regBase_prediction.hg38.gtb: 83.45 GB
Copyright ©张柳彬 all right reserved文档修订时间: 2023-04-18 21:48:49

results matching ""

    No results matching ""