1

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

4

1 回答 1

0

您可以从使用 L 的 initializin 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,
       }
     }
    ],
 });

之后你可以添加所有的边,但是你必须添加一个属性来告诉哪些物种是边。此外,您必须将 deactivated 属性赋予所有节点。

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

然后选择正确的。

于 2018-03-19T08:01:10.743 回答