我的任务是在字典中作为值存储的序列中查找CGG的多个重复(下面作为示例名为"dict“)。行中的重复数应该是5或更高。例如:CGGCGGCGGCGGCGG和更高版本。让我们称之为重复:“串联”。一旦我找到这样的串联,我将不得不计算有多少“CGG”是为特定的串联。这是那个例子的字典。
dict={ind_1:"ACGGCGAGCGCGGGCGGCGGCGGTGACGGAGGCGCCCGTGCCAGGGGGCGTGCGGCAGCG**CGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGG**GCCTCGAGCGCCCGCAGCCCACCTCTCGGGGGCGGGCTCCCGGCGCTAGCAGGGCTGAAGAGAAGATGGAGGAGCTGGTGGTGGAAGTGCGGGGCTCCAATGGCGCTTTCTACAAGGTACTTGGCTCTAGGGCAGGCCCCATCTTCGCCCT",
ind_10:"ACGGCGAGCGCGGGCGGCGGCGGTGACGGAGGCGCCCGTGCCAGGGGGCGTGCGGCAGCGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGAGCGCCCGCAGCCCACCTCTCGGGGGCGGGCTCCCGGCGCTAGCAGGGCTGAAGAGAAGATGGAGGAGCTGGTGGTGGAAGTGCGGGGCTCCAATGGCGCTTTCTACAAGGTACTTGGCTCTAGGGCAGGCCCCATCTTCGCCCT"}例如,在第一个键(ind_1)的值中,只有一个串联(在Bold中),因为它包含一个重复的CGG,即5或更高。在这个串联中,它应该有47“CGG”在这个串联。这意味着,一旦我找到一个连续有5个重复CGG的串联,我需要在这个特定的串联中计算CGG的数目
我试过这个代码:
dict_results = {}
for key,value in dict.items():
tandem = 0
if value.count("CGGCGGCGGCGGCGGCGG"):
tandem = value.count("CGG")
dict_results[key] = tandem但是对于第一个值(ind_1),它说我有58个重复。它计算的是序列中CGG的所有,而不是特定序列中的一个(其中有47个)。
我的目标是在迭代完成后有47个重复。
我也尝试过一个门槛:
fragile_x_test_results = {}
for key,value in fragile_x_test.items():
tandem = 0
if value.count("CGG") > 5:
tandem = value.count("CGG")
fragile_x_test_results[key] = tandem但还是没有运气。我得到了58个而不是47个重复的CGG
发布于 2020-09-10 22:37:54
这可以通过使用.index()测试字符串中是否存在n*"CGG“并减少n (int)的值来完成。例如,在长度为20的字符串中,您测试是否存在6*"CGG“:如果是,请记住它,然后在没有此6*"CGG”的情况下创建子字符串,然后使用5*"CGG“等.
下面的函数工作在这个逻辑上,并且能够检测字符串中是否有多个相同长度的串列:
def tandem_search(pattern,string):
st=string
result=[]
for i in range(len(dic['ind_1'])//3+1,5,-1):
while True:
try:
j=st.index(i*pattern)
result.append(i)
st=st[:j]+st[j+i*3:]
except:
break
return(result)通过它,我得到了以下结果:
tandem_search("CGG",dic['ind_1']) = [47]
tandem_search("CGG",dic['ind_10']) = [70]https://stackoverflow.com/questions/63836847
复制相似问题