使用点

时间:2015-10-20 17:29:16

标签: graphviz bioinformatics dot dna-sequence subgraph

我正在尝试使用graphviz表示双向图结构。假设我有3个节点ABC,对应于DNA片段。我想在每个节点中表示一些结构,但也表示节点之间的关系,可以说是A+ -> B- -> C+。也就是说,A中的正链后跟B中的负链,然后是C中的正链。我能想到的最好的是:

digraph G {
  subgraph cluster_A {
    Aa0 -> Ab0
    Ab1 -> Aa1
    {rank=same; Aa0 Aa1}
    {rank=same; Ab0 Ab1}
  }
  subgraph cluster_B {
    Ba0 -> Bb0
    Bb1 -> Ba1
    {rank=same; Ba0 Ba1}
    {rank=same; Bb0 Bb1}
  }
  subgraph cluster_C {
    Ca0 -> Cb0
    Cb1 -> Ca1
    {rank=same; Ca0 Ca1}
    {rank=same; Cb0 Cb1}
  }
  Ab0 -> Bb1
  Bb0 -> Ab1
  Ba1 -> Ca0
  Ca1 -> Ba0
}

此处,a / b标签对应5' / 3'个结尾,0 / 1标签对应正面/负股。我得到的是: enter image description here

我的主要问题是:是否有可能告诉dot自由旋转各个子图,同时保持其内部结构完好无损?在这个例子中,我希望B能够颠倒过来。如果不可能,是否有任何黑客可以做到这一点?就像引入隐藏节点一样,在节点/边上放置权重?我对graphviz / dot并不熟悉,我不确切知道它能做什么。

为了澄清,我希望在每个集群内部表示更多结构(除了5'3'之外),并且该结构在集群内应该是一致的。但我不知道每个群集的最佳方向,我想让dot计算出来。

1 个答案:

答案 0 :(得分:0)

出现顺序的微小变化

digraph G {
  subgraph cluster_A {
    Aa0 -> Ab0
    Ab1 -> Aa1
    {rank=same; Aa0 Aa1}
    {rank=same; Ab0 Ab1}
  }
  subgraph cluster_B {
    Bb1 -> Ba1
    Ba0 -> Bb0
    {rank=same; Ba0 Ba1}
    {rank=same; Bb0 Bb1}
  }
  subgraph cluster_C {
    Ca0 -> Cb0
    Cb1 -> Ca1
    {rank=same; Ca0 Ca1}
    {rank=same; Cb0 Cb1}
  }
  Ab0 -> Bb1
  Bb0 -> Ab1
  Ba1 -> Ca0
  Ca1 -> Ba0
}