By lihaoen, 30 June, 2025
Forums

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分段分析")