擅长:python、mysql、java
<p>你的解释有一个困难。在</p>
<p>首先是一个有向图,其中每条边代表一个连接X=>;Y,其中X是施主,Y是受主。表<code>atoms</code>是该图的SQL表示。在</p>
<p>你似乎想要的是一些无方向的东西。所以X-Y连接意味着X和Y通过水分子(当然也可以是其他物种)连接,但X和Y可以是供体或受体。由于这个原因,您的上一个表有一个歧义(您注意到),因此一些链接可能会出现在任何一个地方。在我看来,这意味着你最后一列中的列标题<code>donor_id</code>和{<cd3>}没有你解释过的任何含义。当然,这可能是我的困惑。在</p>
<p>如果您想要的是一个包含所有6个链接的表,每个链接都是一行,但是不要太担心跟踪捐赠者/接受者的内容,那么在sqlite3中,这对我很有用:</p>
<pre><code> create temporary view hoh_view as
select donor_id as id, atoms.id as hoh_id from contacts, atoms
where acceptor_id=atoms.id and atoms.amino='HOH'
union select acceptor_id as id, atoms.id as hoh_id from contacts, atoms
where donor_id=atoms.id and atoms.amino='HOH';
select a.id, b.id from hoh_view as a, hoh_view as b
where a.id > b.id and a.hoh_id=b.hoh_id;
</code></pre>
<p>我用了一个临时的视角让事情更清楚。如果愿意,可以将所有这些都放入一个大查询中,方法是将对<code>hoh_view</code>的每个引用替换为第一个查询。我觉得有点恶心,也许有办法把它整理一下。在</p>
<p>如果你想跟踪供体/受体的关系,你需要解释当两个氨基酸都是受体或供体时(即例子中的最后两行),你是如何决定怎么做的。在</p>
<p>如果这不符合你的要求,也许我可以把它修好。在</p>