Python 我正试图反转一个fasta DNA序列

Python 我正试图反转一个fasta DNA序列,python,reverse,fasta,dna-sequence,complement,Python,Reverse,Fasta,Dna Sequence,Complement,我一直在尝试反向补充fasta DNA序列。这是我的密码: fastafile=open('sequence (3).fasta','r') entries=[] reverse="" sequence=['A','T','G','C','N'] for line in fastafile: if not line.startswith('>'): line = line.split() entries.append(line) print entr

我一直在尝试反向补充fasta DNA序列。这是我的密码:

fastafile=open('sequence (3).fasta','r')
entries=[]
reverse=""
sequence=['A','T','G','C','N']
for line in fastafile:
    if not line.startswith('>'):
        line = line.split()
        entries.append(line)
print entries
for index in range(0,len(entries[::-1])):
    if index !=sequence:
        print "this is not a valid nucleotide"
        break
    else:
        if index=='A':
            reverse+='T'
        elif index=='T':
            reverse+='A'
        elif index=='C':
            reverse+='G'
        elif index=='G':
            reverse+ 'C'
        elif index=='N':
            reverse+='N'
print reverse
每次我得到输出,这都不是一个有效的核苷酸,即使我打印的条目显示它有顺序的条目。这是我打印条目时的输出示例

[['GCTCCCCTGAGGTTCGGCACCCACACTCCCTTCCCAGGAGCTCGCGATGCAAGAGCCACAGTCAGAGCTC'], ['AATATCGACCCCCCTCTGAGCCAGGAGACATTTTCAGAATTGTGGAACCTGCTTCCTGAAAACAATGTTC'], ['TGTCTTCGGAGCTGTGCCCAGCAGTGGATGAGCTGCTGCTCCCAGAGAGCGTCGTGAACTGGCTAGACGA']
我如何克服这个问题?我只想补充一点,大约2个月前我才开始认真地使用python编程,所以我仍在学习和改进。
谢谢大家!

您的循环语句是:

for index in range(0,len(entries[::-1])):
这将迭代条目的长度,即,
0、1、2、3、…,len(条目)

如果执行
if索引!=sequence
您实际上是在将整数与列表进行比较,如果3!=['A','C','T','G']。我想你会发现这毫无意义。你可能想做的是看看序列中的核苷酸是否是有效的核苷酸,因此它在
序列
列表中。您可以这样做:

if entries[::-1][index] in sequence # Will be true if the nucleotide at entries[::-1][index] is inside sequence
让我说两件事:

  • 首先,您不必将范围设置为
    len(条目[:-1])
    ,它与
    len(条目)

  • 第二,也是更重要的,有一个专门为生物信息学构建的实际模块。它被称为。它具有特殊的对象和功能。例如,您的问题可以通过以下方式解决:

-


输出:
CTATCGGGGCACCCTTTCAGCGCCCATTACATGGCCAT
感谢您的帮助。我对大多数biopython模块不太熟悉,但seq要求我输入一串核苷酸序列,在我的例子中,我希望使用文件中的fasta序列作为输入。
from Bio.Seq import Seq

dna = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG")
print dna.reverse_complement()