首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >De Bruijn图形代码Python 3

De Bruijn图形代码Python 3
EN

Stack Overflow用户
提问于 2017-09-29 01:03:19
回答 3查看 5.5K关注 0票数 1

这是一次课堂作业。我对编码很陌生,有人建议我使用Python,因为它更容易处理。任务的重点是收集一个kmers列表,并组装超字符串,在这种情况下,DNA核苷酸并组装DNA序列。我们需要使用Euler路径(算法),这一点我还没有弄清楚。现在我正在研究,其中一个试图将我的kmer列表加载到Python (还没有弄清楚)并构建de图。注意:我没有加载kmers列表,因为我还没有弄清楚如何做到这一点。这只是我输入的一串随机DNA。

这是我的代码:

代码语言:javascript
复制
def de_bruijn_ize(st, k):
edges = []
nodes = set()
for i in range(len(st) - k + 1):
    edges.append((st[i:+k-1], st[i+1:i+k]))
    nodes.add(st[i:i+k-1])
    nodes.add(st[i+1:i+k])
return nodes, edges

nodes, edges = de_bruijn_ize(“CCGGTTAAACGTC”, 3)
print(nodes)
print(edges)

当我尝试运行它时,我会收到以下消息:

文件"practiceassembly.txt",第11行节点,边=de_bruijn_ize(“CCGGTTAAACGTC”,3) ^ SyntaxError:标识符中的无效字符

如有任何帮助/建议,将不胜感激。如果有人能为这类问题提供良好的资源,我也会非常感激的。

我取得了一些进展。我已经成功地打开了我的kmer文件如下:是的,我成功地做到了这一点:

代码语言:javascript
复制
f = open("kmers.txt")
print(f.read())
st = f.read()
def de_bruijn_ize(st, k):
edges = []
nodes = set()
for i in range(len(st) - k + 1):
    edges.append((st[i:+k-1], st[i+1:i+k]))
    nodes.add(st[i:i+k-1])
    nodes.add(st[i+1:i+k])
return nodes, edges

nodes, edges = de_bruijn_ize(st, 4)
print(nodes)
print(edges)

我拿到了我的名单:

AAAC、AACG、AACG、ACAC、ACGC、ACGG、ACTG、AGGA、ATCA、ATTC、CAAG、CACA、CACG、CGGT、CGGT、CGTA、CTCT、GCGT、GCTT、GCGT、GCTT、GGCT、GGTG、GTAT、GTAT、TAAC、TAAC、TCAC、TCAC、TCAC、TCAC、TGCT、TGGG、TTAA、TTCG、TTCG、TTAA、TTCG、TTTC、TTTT、TTTC []。我想我已经接近成功了(也许我只是对这里充满希望),但我只是需要一点帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-29 01:20:33

除了逻辑上的任何错误外,行中的引号:

代码语言:javascript
复制
    nodes, edges = de_bruijn_ize(“CCGGTTAAACGTC”, 3)

是其他奇怪的角色,代之以:

代码语言:javascript
复制
    nodes, edges = de_bruijn_ize("CCGGTTAAACGTC", 3)

这在python 3中是有效的,我很好奇这些引号是什么。

票数 0
EN

Stack Overflow用户

发布于 2017-09-29 01:19:52

使用的引号是不标准的(可能是来自pdf的复制粘贴?):

取代:

代码语言:javascript
复制
nodes, edges = de_bruijn_ize(“CCGGTTAAACGTC”, 3)

通过以下方式:

代码语言:javascript
复制
nodes, edges = de_bruijn_ize("CCGGTTAAACGTC", 3)
票数 0
EN

Stack Overflow用户

发布于 2020-09-12 09:29:25

代码语言:javascript
复制
def read(file):
    with open(file) as f:
        text = f.readline().rstrip()
        k = int(f.readline().rstrip())
    return text,k
def edges(str,num):
    i = 0
    edge_list = []
    while i +num <= len(str):
        sub = str[i:i+num]
        edge_list.append(sub)
        i+=1
    print(*edge_list)
def nodes(str,num):
    i = 0
    edge_list = []
    while i+num-1 <= len(str):
        sub = str[i:i+(num-1)]
        edge_list.append(sub)
        i+=1
    print(*edge_list)
text,k = read("L4.txt")
edges(text,k)
nodes(text,k)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46480309

复制
相关文章

相似问题

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