擅长:python、mysql、java
<p>如果您要直接在集合中键入,它可以正常工作:</p>
<pre><code>geneset_mutable = set(['YGR243W', 'OR', 'YGL080W', 'AND', 'YHR162W'])
>>> "OR" in geneset_mutable
True
</code></pre>
<p>我的结论是<code>model.reactions[2915].genes</code>并没有返回字符串,它返回的基因的repr看起来像“OR”,但却是不同类型的对象(与您的查询不匹配)。你知道吗</p>
<p>这很容易确认,只需运行如下测试:</p>
<pre><code>for gene in geneset:
if repr(gene) == 'OR':
print repr(gene)
print type(gene)
print gene == 'OR'
</code></pre>
<p>解决方法是创建一个<em>基因</em>对象,该对象可以与集合中的成员完全匹配。如何做到这一点取决于模型的实现方式,但应该如下所示:</p>
<pre><code>>>> geneset = model.reactions[2915].genes
>>> Gene('OR') in geneset
True
</code></pre>
<p>希望这能让你重新走上基因分析的道路:-)</p>