【问题标题】:I am trying to reverse complement a fasta DNA sequence我正在尝试反向补充 fasta DNA 序列
【发布时间】:2017-02-19 08:28:04
【问题描述】:

我一直在尝试反向互补 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 编程,所以我仍在学习和改进。 谢谢!

【问题讨论】:

    标签: python reverse fasta dna-sequence complement


    【解决方案1】:

    你的循环语句是:

    for index in range(0,len(entries[::-1])):
    

    这将遍历条目的长度,即0, 1, 2, 3, ..., len(entries)

    当您执行if index != sequence 时,您实际上是在将整数与列表进行比较,例如if 3 != ['A', 'C', 'T', 'G']。我假设您可以看到这没有任何意义。您可能想要做的是查看序列中的核苷酸是否是有效核苷酸,因此它在sequence 列表中。你可以这样做:

    if entries[::-1][index] in sequence # Will be true if the nucleotide at entries[::-1][index] is inside sequence
    

    让我说两件事:

    • 第一个,范围不用len(entries[::-1]),和len(entries)一样

    • 其次,更重要的是,有一个专门为生物信息学构建的实际模块。它被称为Biopython。它具有特殊的对象和功能。例如,您的问题可以这样解决:

    -

    from Bio.Seq import Seq
    
    dna = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG")
    print dna.reverse_complement()
    

    输出: CTATCGGGCACCCTTTCAGCGGCCCATTACAATGGCCAT

    【讨论】:

    • 感谢您的帮助。我对大多数 biopython 模块并不熟悉,但 seq 要求我输入一串核苷酸序列,在我的情况下,我想使用文件中的 fasta 序列作为输入。
    猜你喜欢
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 2014-10-01
    • 2021-12-15
    • 1970-01-01
    相关资源
    最近更新 更多