pyplot中的氨基酸序列(两个序列中的相同区域)

时间:2016-03-02 17:06:47

标签: python python-2.7

我是python的初学者,需要你的帮助:) 我必须比较两个序列,当两个序列的氨基酸相似时(无论它位于何处)程序应该作为点放入图中。

例如:如果我们有两个序列

X = [ 'M', 'N', 'K', 'M']

Y = [ 'M', 'K', 'M']

程序应勾选位置(1,1)(因为2 M),(1,3)(相同),(3,2)(因为2 K),(4,1)和( 4,1)

完成后,如果序列更大,它应该是这样的:

http://wrzucaj.net/images/2016/03/02/853cd842715edd881296c804502d475b.png

但我卡住了,我作品的效果看起来像那样:

http://wrzucaj.net/images/2016/03/02/005862962dea7e3a6eb24f3449704ef5.png

在左侧和底部,应该显示被其他氨基酸覆盖的序列,我不知道为什么。

导入

import wx
import matplotlib.pyplot as plt

这就是程序的样子:

def pajplot(evt):
   Ktory1=Lista.GetSelection()
   Ktory2=Listaa.GetSelection()
   a=Sekwencje[Ktory1][3]
   b=Sekwencje[Ktory2][3]
   x1=[]
   y1=[]
   x2=[]
   y2=[]
   for i in range(30):
       for j in range(30):
           if a[i]==b[j]:
               x1.append(i)
               y1.append(j)
           else:
               x2.append(i)
               y2.append(j)
   Sekwencja1=[]
   Sekwencja2=[]
   for i in range(30):
       Sekwencja1.append(a[i])
   for j in range(30):
       Sekwencja2.append(b[j])
   plt.plot(x1 ,y1, 'ko')
   plt.plot(x2 ,y2, 'wo')
   plt.xticks(x1, Sekwencja1,'ko')
   plt.yticks(y1, Sekwencja2,'wo')
   plt.show()

Sekwencje是列表,里面有名字等列表,序列在4处。我试着在开始时制作30个氨基酸。

不需要完整答案,可能只是一点点暗示。

先谢谢你。

1 个答案:

答案 0 :(得分:0)

看起来您只在匹配的氨基酸的坐标处放置x和y-ticks。但是你使用的是所有的氨基酸字母。

您是否想要所有标签(在适当的位置)或仅找到匹配的标签并不完全清楚。所以你可以根据你的需要做一个这两件事:

仅将标签放在匹配项的位置:在这种情况下,您需要更改Sekwencja 1和2的定义:

Sekwencja1 = [a[i] for i in x1]
Sekwencja2 = [b[j] for j in y1]

在所有内容上添加标签:在这种情况下,您需要在设置标记时使用range(30)代替x1y1

plt.xticks([range(30)], Sekwencja1,'ko')
plt.yticks([range(30)], Sekwencja2,'wo')