Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最佳对齐分数和序列的Python代码给出错误的结果_Python_Alignment_Sequence_Bioinformatics - Fatal编程技术网

最佳对齐分数和序列的Python代码给出错误的结果

最佳对齐分数和序列的Python代码给出错误的结果,python,alignment,sequence,bioinformatics,Python,Alignment,Sequence,Bioinformatics,这是我第一次编码,所以请务必理解我的代码非常混乱。我用了两种不同的方法来获得最佳分数和最佳顺序,不幸的是,我的两个答案都是错误的。在我的代码中,我包含了一种打开fasta文件的方法,但由于这似乎不起作用,我自己也只在代码中包含了序列 我的最佳分数是计算出来的,但由于某种原因没有打印出来——这也是错误的,我有208分,而我应该得到275分。我也没有得到一个正确的对齐分数回来。 这两个序列是 需要遵循划线对齐,11表示内部间隙,8表示5'端的端子间隙,7表示3'端的间隙,4表示不匹配,0表示匹配 我

这是我第一次编码,所以请务必理解我的代码非常混乱。我用了两种不同的方法来获得最佳分数和最佳顺序,不幸的是,我的两个答案都是错误的。在我的代码中,我包含了一种打开fasta文件的方法,但由于这似乎不起作用,我自己也只在代码中包含了序列

我的最佳分数是计算出来的,但由于某种原因没有打印出来——这也是错误的,我有208分,而我应该得到275分。我也没有得到一个正确的对齐分数回来。 这两个序列是 需要遵循划线对齐,11表示内部间隙,8表示5'端的端子间隙,7表示3'端的间隙,4表示不匹配,0表示匹配

我的文件位于[已删除链接]

     my_file = open("one.fasta","w")

 my_file.write (""">Testseq1
 TCTGGTGTCCTAGGCGTAGAGGAACCACACCAATCCATCCCGAACTCTGGTGGTTAAACTCTACTGCGGTGACGATACT""")

 sequenceone= open("one.fasta","r")

 line = sequenceone.readline()
 header = ""
 seqA = ""
 while line:
    line = line.rstrip("\n")
    if ">" in line:
    header = line 
else :
    seqA = seqA + line
line = sequenceone.readline()
my_file.close()

my_files = open("two.fasta","w")
my_files.write (""">Testseq2
TGGTGCGGTCATACCAGCGCTAATGCACCGGATCCCATCAGAACTCCGCAGTTAAGCGCGCTTGGGCCAGAACAGTACTGGGATGGGTGTCC""")
sequencetwo= open("two.fasta","r")

line = sequencetwo.readline()
header = ""
seqB = ""
while line:
    line = line.rstrip("\n")
     if ">" in line:
        header = line 
    else :
        seqB = seqB + line
    line = sequencetwo.readline()
    my_files.close()

alphabet = ["A","C","G","T"]
score = [[8,8,8,8,8],\
         [0,4,4,4,11],\
         [4,0,4,4,11],\
         [4,4,0,4,11],\
         [4,4,4,0,11],\
         [7,7,7,7,7]]


def Global(a,b):
    D = []
    for i in range(len(a)+1):
        D.append([0]* (len(b)+1))

    for i in range(len(a)+1):
        D[i][0] = D[i-1][0] + score[alphabet.index(a[i-1])][-1]
    for i in range(len(b)+1):
        D[0][i] = D[0][i-1] + score[-1][alphabet.index(b[i-1])]

    for i in range (1, len(a)+1):
        for j in range (1, len(b)+1):
            distHor = D[i][j-1] + score[-1][alphabet.index(b[j-1])]
            distVer = D[i-1][j] + score[alphabet.index(a[i-1])][-1]
            if a[i-1] == b[j-1]:
                distDiag = D[i-1][j-1]
            else:
                distDiag = D[i-1][j-1] + score[alphabet.index(a[i-1])][alphabet.index(b[j-1])]

            D[i][j] = min(distHor, distVer, distDiag)

    return D[-1][-1]

seqA = "TCTGGTGTCCTAGGCGTAGAGGAACCACACCAATCCATCCCGAACTCTGGTGGTTAAACTCTACTGCGGTGACGATACT"
seqB = "TGGTGCGGTCATACCAGCGCTAATGCACCGGATCCCATCAGAACTCCGCAGTTAAGCGCGCTTGGGCCAGAACAGTACTGGGATGGGTGTCC"
row = len(seqA)+1
column = len(seqB)+1
match = 0
mismatch = 4
gap = 11
align1=""
align2=""
matrix=[[[[None] for i in range (2)] for i in range(column)] for i in range(row)]
for i in range(column):
    matrix[0][i][0]=gap*i
    if(i>0):
        matrix[0][i][1]="hor"
for i in range(row):
    matrix[i][0][0]=gap*i
    if(i>0):
        matrix[i][0][1]="ver"

for i in range(1,row):
    for j in range(1,column):
        hor=matrix[i][j-1][0]+gap
        ver=matrix[i-1][j][0]+gap
        if (seqA[i-1]==seqB[j-1]):
            diag=matrix[i-1][j-1][0]+match
        else:
            diag=matrix[i-1][j-1][0]+mismatch
        var = {hor:"hor",ver:"ver",diag:"diag"}
        hvd=[hor,ver,diag]
        matrix[i][j][0]=max(hvd)
        matrix[i][j][1]=var.get(max(var))

k=row
l=column
while(True):
    if(l==1 and k==1):
        break
    else:
        if(matrix[k-1][l-1][1]=="ver"):
            align1+=seqA[k-2]
            align2+="-"
            k-=1
        elif(matrix[k-1][l-1][1]=="hor"):
            align1+="-"
            align2+=seqB[l-2]
            l-=1
        elif(matrix[k-1][l-1][1]=="diag"):
            align1+=seqA[k-2]
            align2+=seqB[l-2]
            k-=1
            l-=1

align1=align1[::-1]
align2=align2[::-1]
print (align1)
print (align2)
Global(seqA,seqB)

有人能告诉我我做错了什么吗?

链接好像断了。我建议您复制并粘贴代码,以提高可读性,而不是将其作为Google文档的链接发布。请在问题中内联包含说明问题的代码的最低版本,而不是作为指向外部站点的链接。我已将其更新为包含代码。对不起