当给出两个序列时,我当前正在编写一个脚本来创建Dotplot。到目前为止,我可以获得一个可爱的lil点图。
The X axis is: >HeaderOfSeq1
X = ATCGTAGCTACGTACGT
The Y axis is: >HeaderOfSeq2
Y = ATGCGATCGTGCTAC
ATGCGATCGTGCTAC
===============|
\ \ \ |A
\ \ \ \ |T
\ \ \ \|C
\ \ \ \ |G
\ \ \ \ |T
\ \ \ |A
\ \ \ \ |G
\ \ \ \|C
\ \ \ \ |T
\ \ \ |A
\ \ \ \|C
\ \ \ \ |G
\ \ \ \ |T
\ \ \ |A
\ \ \ \|C
\ \ \ \ |G
\ \ \ \ |T
这是一个--ascii过滤器(不过滤/表示匹配的字母),它也是脚本的一部分。没有我想要做的就是将其转换为matplotlib图。
我有点卡在这一点上,我已经从np网格化到两个具有可能的组合的数组,我希望可以很容易地重叠并返回等高线图,也许本质上显示了上面的点图,但更漂亮。 Matplot是btw,标准化及所有其他方面的要求。
由于它们的字符串格式,我无法对网状网格做任何事情(无论如何我都知道),所以我被卡住了。
任何帮助将不胜感激!!如果需要,我还将发布一些实际代码。
最佳答案
IIUC,您可以执行以下操作:
X, Y = 'ATCGTAGCTACGTACGT', 'ATGCGATCGTGCTAC'
X, Y = np.array(list(X)), np.array(list(Y))
plt.imshow(X==Y[:,None]) # the magic happens here, contourf should work similarly
plt.xticks(np.arange(len(X)), X)
plt.yticks(np.arange(len(Y)), Y)
plt.show()
输出:
关于python - DNA序列点图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59270964/