2017-06-15 69 views
0

我有幾個fasta蛋白質比對(~5000),我想識別多態性位置加上序列之間變化的氨基酸殘基。我試圖自己編寫代碼,但它非常困難(我是編程方面的新手),並且我查看了BioPython,但是我還沒有發現任何東西。我想是這樣的:如何從多個蛋白質比對中提取多態性位置?

蛋白質比對:

> sp1 MQGAAYMQAAAYYMQA 
> sp2 MQGAARMQGAAYYMQA 
> sp3 MQGAARMQGAAYYMQM 
> sp4 MQGAARMQGAAYYMQA 
> sp5 MQGAARMQAAAYYMQA 
     ^^ ^

在上面的例子中,排列有3個多態性位點(標有^)。第一位位於第六位,第二位位於第九位,第三位位於第16位。一個多態性位點的共同符號如下:R6Y,這意味着變化發生在從R到Y的第6個位置。變化的方向(R→Y或Y→R)取決於在那個位置最頻繁的信件。因此,在這種情況下,R具有最高的頻率,並且可以推斷出方向是R-> Y。如你所見,第六和第十六位有單個變化(不同的字母在頻率爲1)。但是,第9個位置有兩個序列(sp1和sp5)。我想兩個區分這兩種多態性。因此,在這種情況下,我想竟被輸出是這樣的:

輸出:

# Alignment #1 
# Single polymorphisms: 
#  R6Y: sp1 
#  A16M: sp3 

# Non-single polymorphisms: 
#  G9A: sp1, sp5 

我希望這有助於澄清(對不起,如果這是一個有點太長)。

任何建議非常感謝,謝謝!

+0

這沒有給你的問題提供足夠的上下文。 –

+0

因此,您想要查找與一個字符中最常見變體不同的序列,並且對於每個此類序列,要構建一個由最常見變體中的字符組成的字符串,它是基於1的索引,以及不同的字符在多晶型物? –

+0

您是否事先知道最常見的變體是什麼,或者您需要數它們才能找到它? –

回答

0

這裏有一個函數可以找到兩個等位基因之間的差異。第一個應該是由每個位置上最頻繁的字母組成的規範多態(在你的例子中爲MQGAARMQGAAYYMQA)。

def polymorphic_positions(allele1, allele2): 
    return [p[1][0] + str(p[0] + 1) + p[1][1] 
      for p in enumerate(zip(allele1, allele2)) 
      if p[1][0] != p[1][1]] 

例子:

>>> polymorphic_positions('MQGAARMQGAAYYMQA', 'MQGAARMQGAAYYMQM') 
['A16M'] 
>>> polymorphic_positions('MQGAARMQGAAYYMQA', 'MQGAARMQAAAYYMQA') 
['G9A'] 

這裏有一些參考:

+0

這非常有幫助!我將嘗試在許多多重蛋白質比對中迭代使用它。謝謝! – Santiago

+0

不客氣! –

相關問題