Graphviz 带点旋转子图

Graphviz 带点旋转子图,graphviz,bioinformatics,dot,dna-sequence,subgraph,Graphviz,Bioinformatics,Dot,Dna Sequence,Subgraph,我试图用graphviz表示一个双向图结构。假设我有3个节点,分别对应于DNA片段。我想表示每个节点内部的一些结构,但也要表示节点之间的关系,比如说A+->B->C+。也就是说,A中的正链之后是B中的负链,然后是C中的正链。我能想到的最好办法是: digraph G { subgraph cluster_A { Aa0 -> Ab0 Ab1 -> Aa1 {rank=same; Aa0 Aa1} {rank=same; Ab0 Ab1} }

我试图用graphviz表示一个双向图结构。假设我有3个节点,分别对应于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
标签对应于正/负股线。我得到的是:

我的主要问题是:有没有可能告诉
dot
自由旋转单个子图,同时保持其内部结构完整?在本例中,我希望将
B
倒置。如果这是不可能的,是否有任何黑客可以做到这一点?比如引入隐藏节点,在节点/边上放置权重?我对graphviz/dot不太熟悉,也不知道它能做什么


为了澄清这一点,我想在每个集群中表示更多的结构(除了
5'
3'
结束),并且该结构应该在集群中保持一致。但我事先不知道每个簇的最佳方向,我想让
dot
计算它。

外观顺序的微小变化

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
}

对不起,我不清楚。我对这个图表不感兴趣。我试图可视化一个汇编程序的输出,它可以生成,比如说,100个这样的集群。我试图避免自己计算它们的相对方向,我希望得到
dot
来为我这样做。对于dot布局引擎,在定义簇之后,簇没有旋转。但是,如果您之前知道旋转,则可以以正确的方向定义簇。如果您不能预先进行定向,您可以尝试使用neato布局引擎而不是dot。最后,您可以使用自己选择的编程语言对点文件进行一些处理。甚至还有内置的脚本语言gvpr。