重测序关系矩阵构建方式汇总
样本间亲缘关系矩阵(kinship matrix)和同源性矩阵(IBS matrix)构建的方式
1. 可以使用plink的–make-rel计算个体之间的亲缘关系(强调个体之间的遗传相似性)
/opt/software/plink --bfile vcf_bfile--make-rel --out relatedness_matrix # 得到亲缘关系距离矩阵:
# relatedness_matrix.rel
2. kinship
# 利用tassel计算
run_pipeline.pl -Xmx1536m-Xms512m -SortGenotypeFilePlugin -inputFile 你的vcf文件 -outputFile outvcf -fileType VCF
run_pipeline.pl-Xmx1536m -Xms512m -importGuess outvcf -KinshipPlugin -methodCentered_IBS -endPlugin -export tassel_kinship.txt -exportType SqrMatrix
# 利用gcta计算
使用 --make-grm-alg 1 或 --make-grm 0
gcta --make-grm --make-grm-alg 1 --out snp.gcta --bfile vcf_bfile snp --autosome-num 90
3. IBS
/opt/software/plink --bfile vcf_bfile --make-bed --out IBS_matrix --maf 0.05 --recode --double-id --allow-extra-chr --chr-set 90 --distance square ibs
要计算遗传距离,使用1-ibs
群体关系矩阵如何构建?
转换方法:平均IBS(个体对间均值)
计算所有个体两两之间的IBS均值,反映群体内遗传相似性。
#算法示例
import numpy as npdef pairwise_ibs(genotype_matrix):n_individuals = genotype_matrix.shape[0]ibs_matrix = np.zeros((n_individuals, n_individuals))for i in range(n_individuals):for j in range(i+1, n_individuals):ibs_sum = 0for snp in range(genotype_matrix.shape[1]):ibs_sum += calculate_ibs(genotype_matrix[i, snp, 0], genotype_matrix[i, snp, 1],genotype_matrix[j, snp, 0], genotype_matrix[j, snp, 1])ibs_matrix[i, j] = ibs_sum / genotype_matrix.shape[1]ibs_matrix[j, i] = ibs_matrix[i, j] # 对称矩阵return ibs_matrix# 示例基因型矩阵(个体数×SNP数×2等位基因)
genotype_data = np.array([[['A', 'A'], ['G', 'G']], # 个体1[['A', 'G'], ['G', 'G']], # 个体2[['T', 'T'], ['A', 'G']] # 个体3
])
ibs_matrix = pairwise_ibs(genotype_data)
print("群体IBS矩阵:\n", ibs_matrix)