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

cytoscape.js选择(外部提供的)阵列中的所有节点,cytoscape.js,Cytoscape.js,这很有效: cy.filter(“节点[name='KRAS']”)。选择() 我将如何执行以下操作?(在伪代码中,%[如果存在]中的%in将测试集合成员资格): cy.filter(“节点[名称%in%['KRAS','TP53','PDGFRA']])。选择() 谢谢 保罗 正如您所怀疑的,最好对导致呈现的调用进行批处理(如eles.select())——它将样式表应用程序和通知批处理到呈现程序,以加快处理速度 至于选择器,请记住,将选择器连接在一起是逻辑AND,用逗号分隔选择器是逻辑OR

这很有效:

cy.filter(“节点[name='KRAS']”)。选择()

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

cy.filter(“节点[名称%in%['KRAS','TP53','PDGFRA']])。选择()

谢谢

  • 保罗

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

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

cy.filter('node[foo = "bar"], node[foo = "baz"], node[foo = "bat"]').select();
如果图形是静态的或不经常更改,您也可以进行一些缓存。通过分解每个选择器的公共部分,整体筛选会变得更便宜——即,在您的情况下,如果它们都是节点,只需为每个特定选择器筛选节点集:

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();

注意第二个
过滤器()是如何
在这种情况下,调用会更快,因为它只在图的一个子集上运行。

根据R中的计算,有时我有100个节点要选择。如果我循环通过那么多节点,在每个节点上调用filter&select,大约需要8秒。我希望针对一组节点na进行一次筛选和选择的调用mes,会快得多。