我正在为基因组数据编写一个转换矩阵计算器。我有两个SNP列表:previousState
和currentState
。我还有一个在文件uniqueSNPs
中找到的独特核苷酸的列表。
我正在尝试将此嵌套的for循环转换为R:
for (i in 1 : nstate)
{
totalNucleotides = sum(previousState == uniqueSNPs[i])
for (j in 1 : nstate)
{
matches = sum(previousState == uniqueSNPs[i] &
previousState == uniqueSNPs[j])
tran.mat[i, j] = matches / totalNucleotides
}
}
其中nstate
只是uniqueSNPs
的长度。
除了Python中matches
的计算外,我所有的事情都摆平了。到目前为止,我的方法:
for i in range(0, len(uniqueSNPs)):
totalNucleotides = previousState.count(uniqueSNPs[i])
for j in range(0, len(uniqueSNPs)):
matches = sum((previousState == uniqueSNPs[i]) &
(currentState == uniqueSNPs[j]))
mat[i,j] = matches / totalNucleotides
但是,在计算matches
的行上出现错误,提示
TypeError: 'bool' object is not iterable
。
我想知道是否有一种方法可以在Python中以简洁高效的方式编写此行代码?我是Python编程的新手,所以我没有发现任何不错的技巧。
谢谢!