在Cytoscape

时间:2018-03-16 14:50:11

标签: cytoscape ppi

我有一个基因列表(我们称之为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中完成吗?提前谢谢。

1 个答案:

答案 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);

然后选择正确的。