De Bruijn图形代码Python 3

时间:2017-09-29 01:03:20

标签: python

这是课堂作业。我是编码的新手,并建议使用Python,因为它更容易处理。分配的关键是取一个kmers列表并组装超弦,在这种情况下是DNA核苷酸并组装DNA序列。我们需要使用欧拉路径(算法),我仍然没有想到这一点。现在我正在努力,一个人试图将我的kmer列表加载到Python(还没有想出来)并构建de Bruijn图。注意:我没有加载kmers列表,因为我还没有弄清楚如何做到这一点。这只是我输入的随机DNA串。

这是我的代码:

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行     nodes,edges = de_bruijn_ize(“CCGGTTAAACGTC”,3)                                                ^ SyntaxError:标识符

中的无效字符

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

我取得了一些进展。我已设法用以下内容打开我的kmer文件: 是的,我已经成功实现了这一目标:

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 AACA AACG AAGG ACAC ACAG ACGC ACGG ACTG AGCA AGGA AGGC ATCA ATTC CAAG CACA CACG CAGG CATC 西基 CGGT CGTA CGTG CTAA CTCT CTGG CTTA GACT GCAT GCGT GCTC GCTT GGAC GGCA GGCT GGGT GGTG GGTT GTAT GTGC GTGG GTTT TAAA TAAC 花边 氯乙酸 TCAC TCGT TCTA 睾丸生殖细胞肿瘤 TGGC TGGG TTAA TTCA TTCG TTTC TTTT 组() [] 但其余的没有实施。我想我几乎可以在这里工作(也许我只是在这里充满希望)但我只需要一些帮助。

3 个答案:

答案 0 :(得分:0)

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

替换:

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

with:

nodes, edges = de_bruijn_ize("CCGGTTAAACGTC", 3)

答案 1 :(得分:0)

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

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

是其他一些奇怪的角色,用以下代替:

    nodes, edges = de_bruijn_ize("CCGGTTAAACGTC", 3)

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

答案 2 :(得分:0)

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)