我有一个基因列表(我们称之为L),我想看看它们在3种不同物种(人类,斑马鱼和鳕鱼)中的工作方式不同。当然,3个物种并没有列表中的所有基因,此外,基因之间的相互作用在3个物种中是不同的。首先,我在3个物种的基因组中搜索该列表中的基因,得到3个物种的3个基因列表(我们称之为l1,l2,l3)。然后我将3个基因列表分别放入STRING。所以现在我有3个网络(让我们称之为n1,n2,n3),每个物种的每个网络。
通过这3个网络和4个列表,我来到了Cytoscape。我想要想象的是一起展示3个网络。因此背景是来自L的所有节点。当我说,让我们看看人类,网络n1(包括来自l1的节点和它们之间的边缘)将被点亮(来自其他两个物种的其他基因)呆在那里没有移动,但作为背景消失了)。然后你也为斑马鱼和鳕鱼做同样的事情。通过这样做,人们可以看到基因在3个物种中的运作方式不同。
那么可以在Cytoscape中完成吗?提前谢谢。
答案 0 :(得分:0)
你可以用L:
开始初始化cytoscape// Initialize cytoscape
cy = window.cy = cytoscape({
container: $('#diagram'),
boxSelectionEnabled: false,
autounselectify: true,
layout: {
name: 'random'
},
elements: L,
style: [
{
selector: 'node',
style: {
'shape': 'data(faveShape)',
'content': 'data(DisplayName)',
'height': 'data(faveHeight)',
'width': 'data(faveWidth)',
'background-color': 'data(faveColor)',
'line-color': '#a8eae5',
'font-family': 'Segoe UI,Helvetica Neue,Helvetica,Arial, Verdana',
'font-size': '15px',
}
},
{
selector: 'edge',
style: {
'label': 'data(myLabel)',
'curve-style': 'bezier',
'width': 5,
'opacity': 0.5,
'line-color': '#a8eae5',
'font-size': '12px',
'target-arrow-shape': 'triangle',
'target-arrow-color': '#a8eae5'
}
},
{
selector: '.autorotate',
style: {
'edge-text-rotation': 'autorotate'
}
},
{
selector: 'edge.deactivate',
style: {
'opacity': 0.1,
}
},
{
selector: 'node.deactivated',
style: {
'opacity': 0.1,
}
}
],
});
之后你可以添加所有边缘,但是你必须添加一个属性来告诉边缘的物种。此外,您必须为所有节点提供已停用的属性。
cy.nodes().addClass('deactivated');
cy.add('All the edges you have'); // Write somthing like species : 1 for first species and so on
cy.ready(function () {
cy.edges().addClass('deactivate');
});
这样,你的所有节点都在图表上,它们都会褪色,你就拥有了所有的边缘。您现在可以定义按钮或其他内容并选择正确的组和边缘,并使用以下内容删除类:
cy.nodes("[species = '" + num + "']").removeClass(deactivated);
cy.edges("[species = '" + num + "']").removeClass(deactivate);
当您选择其他群组时,您可以随时说:
cy.nodes().addClass(deactivated);
cy.edges().addClass(deactivate);
然后选择正确的。