我是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个氨基酸。
不需要完整答案,可能只是一点点暗示。
先谢谢你。
答案 0 :(得分:0)
看起来您只在匹配的氨基酸的坐标处放置x和y-ticks。但是你使用的是所有的氨基酸字母。
您是否想要所有标签(在适当的位置)或仅找到匹配的标签并不完全清楚。所以你可以根据你的需要做一个这两件事:
仅将标签放在匹配项的位置:在这种情况下,您需要更改Sekwencja
1和2的定义:
Sekwencja1 = [a[i] for i in x1]
Sekwencja2 = [b[j] for j in y1]
在所有内容上添加标签:在这种情况下,您需要在设置标记时使用range(30)
代替x1
和y1
:
plt.xticks([range(30)], Sekwencja1,'ko')
plt.yticks([range(30)], Sekwencja2,'wo')