GTFound

GTFound 是用于二等位基因型填补的单倍型模型。给定目标样本已观测的等位基因、同位点对齐的参考单倍型、基因组位置及 LD 矩阵,模型预测缺失位置为 REF(0)或 ALT(1)的概率。本仓库提供模型权重、推理代码,以及从 VCF 准备输入和导出 VCF 的命令行工具。

  • 作者:Wang Qiyu
  • 机构:哈尔滨工业大学(深圳)(HITSZ)
  • 训练数据:千人基因组项目(1000 Genomes Project),GRCh38
  • 输入单位:一个位置对应参考面板中的一个变异记录,不对应一个碱基
  • 模型配置:12 层、12 个注意力头、隐藏维度 768;默认每窗 1024 个面板位点,重叠 128 个位点
  • 许可:MIT

模型用于研究用途。仓库未附带参考面板、目标基因型或可直接用于临床解释的校准结果;使用者需要自行准备并核对数据。

目录结构

GTFound/
├── .gitattributes           # 权重文件规则
├── .gitignore               # 忽略生成文件
├── README.md                 # 模型介绍与使用入口
├── VCF_PIPELINE.md           # VCF 对齐、LD、窗口和输出细节
├── model.safetensors         # 模型权重
├── SHA256SUMS                # 权重校验值
├── config.json               # 模型结构配置
├── vocab.txt                 # 固定词表
├── pyproject.toml            # 安装配置及 gtfound 命令
├── requirements.txt          # Python 依赖
├── gtfound/
│   ├── __init__.py
│   ├── cli.py                # prepare-vcf / infer / export-vcf
│   ├── vcf_pipeline.py       # VCF、PLINK LD 与窗口处理
│   ├── inference.py          # 加载权重和推理接口
│   ├── modeling_gtfound.py   # 模型主体
│   ├── layers_gtfound.py     # 注意力和模型层
│   ├── heads_gtfound.py      # 输出头
│   └── vocab_gtfound.py      # 词表读取
├── LICENSE
├── THIRD_PARTY_NOTICES.md
└── third_party/
    └── ESM_LICENSE          # 第三方许可证

安装

要求 Python 3.10+、PyTorch 2.x。VCF 准备阶段还需单独安装 PLINK 1.9,并使 plink 位于 PATH;也可以在准备命令中用 --plink-bin 指定可执行文件。PLINK 不随仓库分发。

python -m pip install -U huggingface_hub
hf download unknow1024/GTFound --local-dir GTFound
cd GTFound
sha256sum -c SHA256SUMS
python -m pip install -e .
gtfound --help
plink --version

权重校验应显示 model.safetensors: OK。pip install -e . 让命令直接读取当前目录中的权重;若使用普通的 pip install .,运行 gtfound infer 时需用 --model-dir 指向下载后的模型目录。本模型使用原生 PyTorch 代码,不能直接用 Transformers 的 AutoModel.from_pretrained 加载。

VCF 输入要求

下面的完整流程一次处理一个目标样本的一条染色体。命令中的文件名、样本名 SAMPLE_001 和染色体名 chr1 都是示例,请替换为自己的数据;示例路径相对于当前 GTFound 目录。

文件 要求
目标 VCF 包含目标样本的二倍体 GT。已观测杂合位点须分相,例如 `0
参考 VCF 包含待填补的二等位面板位点,按位置排序;参与计算的样本应有完整的 0/1 二倍体 GT,杂合位点须分相。默认取 8 条近邻参考单倍型,至少需要 4 名合格参考样本。
两者共同 使用同一 GRCh38 坐标及一致的 CHROM/POS/REF/ALT。请先完成多等位拆分、indel 规范化、REF/ALT 核对、分相和质量控制。chr1 与 1 不视为相同名称。

目标样本若也存在于参考 VCF,工具会按样本名将它从参考选择和 LD 计算中排除。工具不会自动识别其他重复个体,也不会自动检查 VCF 的组装版本。面板外位点不能由本模型填补;本流程要求二倍体,未处理的单倍体 GT 不适用。

完整使用流程:VCF → VCF

1. 生成张量和 LD

gtfound prepare-vcf \
  --target-vcf target.phased.vcf.gz \
  --reference-vcf reference.phased.vcf.gz \
  --sample SAMPLE_001 \
  --chrom chr1 \
  --output-dir work_chr1

work_chr1 必须不存在或为空。程序为两条目标单倍型生成窗口,按已观测位点选择最近的参考单倍型,并用 PLINK 1.9 的 --r2 square gz yes-really 逐窗生成 LD。若 plink 不在 PATH,在命令末尾添加 --plink-bin 并提供 PLINK 可执行文件路径。默认窗口为 1024 个面板位点、重叠 128 个位点;这里的位点数不是碱基长度。

先检查 work_chr1/manifest.json,尤其是 site_count、unmatched_target_variants、skipped_* 和 windows_without_observed_sites。如需减少单个张量分片占用的内存,可在准备命令中加 --windows-per-shard 2。详细的位点筛选、PLINK 调用与窗口映射见 VCF 数据处理手册。

2. 对全部分片运行模型

mkdir -p work_chr1/predictions
for input in work_chr1/input_*.pt; do
  name=$(basename "$input")
  gtfound infer \
    --input "$input" \
    --output "work_chr1/predictions/${name/input_/pred_}" \
    --device cuda:0 \
    --batch-size 1
done

3. 导出填补后的 VCF

gtfound export-vcf \
  --prepared-dir work_chr1 \
  --predictions-dir work_chr1/predictions \
  --output-vcf SAMPLE_001.chr1.imputed.vcf.gz

输出文件不能已存在。程序保留目标原本已观测的 GT;对缺失等位基因,先平均重叠窗口的 ALT 概率,再按 0.5 判定 0/1。

输出是新的单样本、面板位点 VCF,FORMAT 只有 GT;它不会复制原目标 VCF 的其他 INFO/FORMAT、FILTER 或面板外变异。.vcf.gz 为 BGZF 压缩;如需索引,可运行 bcftools index -t SAMPLE_001.chr1.imputed.vcf.gz。每个样本、每条染色体分别使用自己的工作目录和输出文件。

已有张量时直接推理

已有自行对齐的输入张量时,可直接运行:

gtfound infer --input input.pt --output output.pt --device cuda:0 --batch-size 1

input.pt 是 torch.save 保存的字典,包含:

键 形状 内容
tokens [N,L] 目标单倍型;0=REF,1=ALT,5=待填补的 [MASK]。
references [N,R,L] 与目标逐位对齐的 0/1 参考单倍型。
positions [N,L] 或 [L] GRCh38 位置。
ld_bias [N,L,L] 与相同位点顺序对应的浮点 LD 注意力偏置。

output.pt 包含 probabilities [N,L,2]、mask [N,L] 和 imputed_tokens [N,L]。Python 调用直接使用 from gtfound.inference import load_gtfound, predict。probabilities 的最后一维依次是 0、1 的条件 softmax 概率。

适用边界与许可

权重与代码按 MIT 许可证发布。第三方代码声明见 THIRD_PARTY_NOTICES.md。参考面板和目标 VCF 不在本仓库中,请遵守各自的数据使用条款。

Downloads last month
26
Safetensors
Model size
0.2B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support