2

我有一对编码 DNA 序列,我希望通过Python执行成对密码子比对,我已经“完成了一半”这个过程。

至今..

  • Biopython我使用package从 genbank 中检索了成对的直系同源 DNA 序列。
  • 我将直系同源对翻译成肽序列,然后使用EMBOSS Needle程序对齐它们。

我希望..

  • 将肽序列的缺口转移到原始 DNA 序列中。

问题

我将不胜感激有关程序/代码(从 Python 调用)的建议,这些程序/代码可以将比对的肽序列对中的缺口转移到相应核苷酸序列对的密码子上。或者可以从头开始执行成对密码子比对的程序/代码。

在此处输入图像描述

4

4 回答 4

2

您需要做的就是将核苷酸序列分成三联体。每个氨基酸是一个三联体,每个空位是三个空位。所以在伪代码中:

for x in range(0, len(aminoacid)):
    if x != "-":
       print nucleotide[3x:3x+3]
    else:
       print "---"
于 2013-12-31T01:49:25.430 回答
1

您可以通过添加缺少的字符将肽映射到核苷酸:

codons = str.maketrans({'M' : 'ATG',
                        'R' : 'CGT',
                        ...,
                        '-' : '---'}) # Your missing character

peptide = 'M-R'
result = peptide.translate(codons)

然后翻译完整的序列。

于 2013-12-30T17:15:57.863 回答
1

我知道你三年前问过这个问题,但这篇文章是我在谷歌搜索“密码子对齐 python”中找到的第一件事。因此,我想为所有可能偶然发现仍在寻找库来执行此操作的人做出回应。

您可以为此使用库 PyCogent。

他们在他们的网站上解释得很好:http: //pycogent.org/examples/align_codons_to_protein.html

于 2017-01-13T11:48:59.163 回答
0

最后我做了自己的Python函数,觉得不妨分享一下。

它需要一个有缺口的比对肽序列和相应的未比对的核苷酸序列,并给出一个比对的核苷酸序列

功能

def gapsFromPeptide( peptide_seq, nucleotide_seq ):
    """ Transfers gaps from aligned peptide seq into codon partitioned nucleotide seq (codon alignment) 
          - peptide_seq is an aligned peptide sequence with gaps that need to be transferred to nucleotide seq
          - nucleotide_seq is an un-aligned dna sequence whose codons translate to peptide seq"""
    def chunks(l, n):
        """ Yield successive n-sized chunks from l."""
        for i in xrange(0, len(l), n):
            yield l[i:i+n]
    codons = [codon for codon in chunks(nucleotide_seq,3)]  #splits nucleotides into codons (triplets) 
    gappedCodons = []
    codonCount = 0
    for aa in peptide_seq:  #adds '---' gaps to nucleotide seq corresponding to peptide
        if aa!='-':
            gappedCodons.append(codons[codonCount])
            codonCount += 1
        else:
            gappedCodons.append('---')
    return(''.join(gappedCodons))

用法

>>> unaligned_dna_seq = 'ATGATGATG'
>>> aligned_peptide_seq = 'M-MM'
>>> aligned_dna_seq = gapsFromPeptide(aligned_peptide_seq, unaligned_dna_seq)
>>> print(aligned_dna_seq)

    ATG---ATGATG
于 2014-01-02T17:08:33.987 回答