gpt4 book ai didi

python - 获取一组 SNP 的所有可能基因型组合的方法

转载 作者:太空宇宙 更新时间:2023-11-03 13:27:31 27 4
gpt4 key购买 nike

我现在有一组大约 20 个 SNP,我想为其获取所有可能的基因型组合。例如,让我们从三个 SNP 及其等位基因开始。

SNP      A1         A2
SNP1 A T
SNP2 C G
SNP3 T A

我想首先生成这三个 SNP 的所有可能基因型排列/组合的列表,例如:

SNP1 SNP2 SNP3
AA CC TT
AA CC TA
AA CC AA
AA CG TT
AA CG TA
AA CG AA
AA GG TT
AA GG TA
AA GG AA
...

依此类推,我预计有 3^3 = 27 种可能的组合。

从这里开始,我希望将其扩展到我的全部 ~20 个 SNP 组。在 Python 甚至 R 中,执行此操作的好方法是什么?

最佳答案

我们可以使用标准 itertools 模块中的两个函数来生成组合。我们使用 combinations_with_replacement从 SNP 构建 3 对。

from itertools import combinations_with_replacement

def pairs(alleles):
return [u + v for u, v in combinations_with_replacement(alleles, 2)]

print(pairs('TA'))

输出

['TT', 'TA', 'AA']

然后我们使用product从 SNP 列表构建所有组合。

from itertools import combinations_with_replacement, product

def pairs(alleles):
return [u + v for u, v in combinations_with_replacement(alleles, 2)]

all_snps = ('AT', 'CG', 'TA')

for t in product(*[pairs(snp) for snp in all_snps]):
print(t)

输出

('AA', 'CC', 'TT')
('AA', 'CC', 'TA')
('AA', 'CC', 'AA')
('AA', 'CG', 'TT')
('AA', 'CG', 'TA')
('AA', 'CG', 'AA')
('AA', 'GG', 'TT')
('AA', 'GG', 'TA')
('AA', 'GG', 'AA')
('AT', 'CC', 'TT')
('AT', 'CC', 'TA')
('AT', 'CC', 'AA')
('AT', 'CG', 'TT')
('AT', 'CG', 'TA')
('AT', 'CG', 'AA')
('AT', 'GG', 'TT')
('AT', 'GG', 'TA')
('AT', 'GG', 'AA')
('TT', 'CC', 'TT')
('TT', 'CC', 'TA')
('TT', 'CC', 'AA')
('TT', 'CG', 'TT')
('TT', 'CG', 'TA')
('TT', 'CG', 'AA')
('TT', 'GG', 'TT')
('TT', 'GG', 'TA')
('TT', 'GG', 'AA')

关于python - 获取一组 SNP 的所有可能基因型组合的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52619313/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com