DNA 序列点图
DNA sequence Dotplots
我目前正在编写一个脚本来在给定两个序列时创建点图。到目前为止,我可以得到一个可爱的 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 中获取了两个具有所有可能组合的数组,我希望重叠会相当简单,return 等高线图可能基本上就是这样显示了上面的点图,但更漂亮。 Matplot 是一项要求,顺便说一句,标准化等等。
由于它们的字符串格式,我无法对 meshgrids(我知道)做任何事情,所以我被卡住了。
任何帮助将不胜感激!!如果需要,我还会 post 一些实际代码。
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()
输出:
我目前正在编写一个脚本来在给定两个序列时创建点图。到目前为止,我可以得到一个可爱的 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 中获取了两个具有所有可能组合的数组,我希望重叠会相当简单,return 等高线图可能基本上就是这样显示了上面的点图,但更漂亮。 Matplot 是一项要求,顺便说一句,标准化等等。 由于它们的字符串格式,我无法对 meshgrids(我知道)做任何事情,所以我被卡住了。
任何帮助将不胜感激!!如果需要,我还会 post 一些实际代码。
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()
输出: