首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微卫星中CGG的计数

微卫星中CGG的计数
EN

Stack Overflow用户
提问于 2020-09-10 19:57:25
回答 1查看 41关注 0票数 0

我的任务是在字典中作为值存储的序列中查找CGG的多个重复(下面作为示例名为"dict“)。行中的重复数应该是5或更高。例如:CGGCGGCGGCGGCGG和更高版本。让我们称之为重复:“串联”。一旦我找到这样的串联,我将不得不计算有多少“CGG”是为特定的串联。这是那个例子的字典。

代码语言:javascript
复制
dict={ind_1:"ACGGCGAGCGCGGGCGGCGGCGGTGACGGAGGCGCCCGTGCCAGGGGGCGTGCGGCAGCG**CGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGG**GCCTCGAGCGCCCGCAGCCCACCTCTCGGGGGCGGGCTCCCGGCGCTAGCAGGGCTGAAGAGAAGATGGAGGAGCTGGTGGTGGAAGTGCGGGGCTCCAATGGCGCTTTCTACAAGGTACTTGGCTCTAGGGCAGGCCCCATCTTCGCCCT", 
ind_10:"ACGGCGAGCGCGGGCGGCGGCGGTGACGGAGGCGCCCGTGCCAGGGGGCGTGCGGCAGCGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGAGCGCCCGCAGCCCACCTCTCGGGGGCGGGCTCCCGGCGCTAGCAGGGCTGAAGAGAAGATGGAGGAGCTGGTGGTGGAAGTGCGGGGCTCCAATGGCGCTTTCTACAAGGTACTTGGCTCTAGGGCAGGCCCCATCTTCGCCCT"}

例如,在第一个键(ind_1)的值中,只有一个串联(在Bold中),因为它包含一个重复的CGG,即5或更高。在这个串联中,它应该有47“CGG”在这个串联。这意味着,一旦我找到一个连续有5个重复CGG的串联,我需要在这个特定的串联中计算CGG的数目

我试过这个代码:

代码语言:javascript
复制
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个重复。

我也尝试过一个门槛:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2020-09-10 22:37:54

这可以通过使用.index()测试字符串中是否存在n*"CGG“并减少n (int)的值来完成。例如,在长度为20的字符串中,您测试是否存在6*"CGG“:如果是,请记住它,然后在没有此6*"CGG”的情况下创建子字符串,然后使用5*"CGG“等.

下面的函数工作在这个逻辑上,并且能够检测字符串中是否有多个相同长度的串列:

代码语言:javascript
复制
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)

通过它,我得到了以下结果:

代码语言:javascript
复制
tandem_search("CGG",dic['ind_1']) = [47]
tandem_search("CGG",dic['ind_10']) = [70]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63836847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档