Github开源生信云平台 DEMO
.bim
pandas-plink
先纠正一个关键点:.bim 里没有“基因分型数据”,它只包含 SNP注释信息。真正的基因型在:
.bed
.fam
👉 “从 .bim 里筛选常染色体 SNP,然后提取对应的基因型”
正确流程是:用 .bim 过滤 SNP → 再从 .bed/plink 输出 genotype
.bim 格式:
import pandas as pd bim = pd.read_csv("551S.bim", sep="\t", header=None) bim.columns = ["CHR", "SNP", "CM", "BP", "A1", "A2"] autosome = bim[bim["CHR"].isin(range(1, 23))]
.bim 里的 CHR 有时是字符串:
bim["CHR"] = bim["CHR"].astype(str).replace("X", "23") bim["CHR"] = pd.to_numeric(bim["CHR"], errors="coerce")
.bim 只是索引,不含基因型。
plink \ --bfile 551S \ --chr 1-22 \ --recode A \ --out autosome_genotype
输出:
autosome_genotype.raw
✔ 直接得到:
| FID | IID | SNP1 | SNP2 | ... |
plink --bfile 551S --chr 1-22 --recode vcf --out autosome
plink2 \ --bfile 551S \ --chr 1-22 \ --export A \ --out autosome
可以用:
from pandas_plink import read_plink1_bin (bim, fam, G) = read_plink1_bin("551S.bed")
然后筛选:
autosome = bim[bim.chromosome.isin(range(1, 23))] G_auto = G[:, bim.chromosome.isin(range(1, 23))]
❌ .bim = SNP信息(不是基因型)✅ 基因型在 .bed👉 必须通过 PLINK 或 pandas-plink 才能提取
直接说你的目标就行。