cytoscape.js 选择(外部提供的)数组中的所有节点

pau*_*non 4 cytoscape.js

这很好用:

cy.filter("node[name='KRAS']").select()

我将如何执行以下操作?(在伪代码中,其中 %in% [如果存在] 将测试集合成员资格):

cy.filter("node[name %in% ['KRAS', 'TP53', 'PDGFRA']]).select()

谢谢!

  • 保罗

max*_*anz 5

正如您所怀疑的那样,最好对导致呈现的调用进行批处理(如eles.select())——它将样式表应用程序和通知批处理到呈现器以加快处理速度。

至于您的选择器,请记住将选择器连接在一起是逻辑 AND,而用逗号分隔选择器是逻辑 OR。所以,你的结果是:

cy.filter('node[foo = "bar"], node[foo = "baz"], node[foo = "bat"]').select();
Run Code Online (Sandbox Code Playgroud)

如果图形是静态的或不经常变化的,你也可以做一些缓存。通过分解每个选择器的公共部分,整体过滤变得更便宜——即在你的情况下,如果它们都是节点,只需过滤每个特定选择器的节点集:

var nodes = cy.filter('node'); // a cached copy of nodes

// each time you want to filter
nodes.filter('[foo = "bar], [foo = "baz"], [foo = "bat"]').select();
Run Code Online (Sandbox Code Playgroud)

请注意filter()在这种情况下第二次调用将如何更快,因为它仅对图的一个子集进行操作。