https://kdocs.cn/l/cePZ746MKmP0
1. 转换VCF到PLINK格式
plink --vcf $VCF_FILE --make-bed --out temp_plink
2. 获取所有染色体列表
CHROMS=$(awk '{print $1}' temp_plink.bim | sort -nu)
3. 对每个染色体计算LD
for CHR in $CHROMS; do
echo "计算染色体 $CHR 的LD..."
# 提取特定染色体
plink --bfile temp_plink --chr $CHR --make-bed --out temp_chr$CHR
# 计算LD (r²),窗口大小为50kb,步长为5kb,r²阈值为0.1
plink --bfile temp_chr$CHR --r2 dprime with-freqs inter-chr \
--ld-window-kb 50 \
--ld-window 50 \
--ld-window-r2 0.1 \
--out ${OUTPUT_PREFIX}_chr$CHR
# 清理临时文件
rm temp_chr$CHR.*
done
4. 合并结果(可选)
cat ${OUTPUT_PREFIX}_chr*.ld > ${OUTPUT_PREFIX}_all_chr.ld
5. 查看结果文件前20行
plink --bfile your_data \
--window 500 \ # 窗口内SNP数量(或用--window-kb指定kb数)
--window-step 250 \ # 滑动步长(SNP数或kb)
--window-size 50000 # 窗口最大物理长度(50kb)
--ld-window-r2 0.2 # 仅计算r²>0.2的SNP对(可选)
--out ld_window # 输出前缀
使用 R 语言ggplot2
绘制区段 LD 分布折线图:
r
library(ggplot2)
df <- read.table("ld_window.window", header=T)
ggplot(df, aes(x=BP_END, y=MEAN_R2)) +
geom_line() +
labs(x="染色体位置", y="平均r²", title="染色体1 LD分段分析")