【问题标题】:DNA sequence DotplotsDNA 序列点图
【发布时间】:2020-04-03 20:38:44
【问题描述】:

我目前正在编写一个脚本来在给出两个序列时创建一个点图。到目前为止,我可以得到一个可爱的 lil dotplot。

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 是一个要求,标准化等等。 由于它们的字符串格式,我无法对网格网格(无论如何我都知道)做任何事情,所以我被卡住了。

任何帮助将不胜感激!如果需要,我也会发布一些实际代码。

【问题讨论】:

    标签: python python-3.x matplotlib genetics


    【解决方案1】:

    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()
    

    输出:

    【讨论】:

    • 太棒了,谢谢,就像一个魅力,看起来比我预期的要简单得多,所以这是一个奖励!
    猜你喜欢
    • 2013-12-20
    • 2013-09-17
    • 2018-03-20
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 2013-10-21
    相关资源
    最近更新 更多