Несколько сетей объединены в одну сеть в Cytoscape

У меня есть список генов (назовем его L), и я хочу увидеть, как они по-разному работают у трех разных видов (человека, рыбок данио и трески). Конечно, у трех видов не все гены из списка, кроме того, взаимодействия между генами у трех видов различны. Во-первых, я ищу гены в этом списке по геномам 3 видов, чтобы получить 3 списка генов для 3 видов (назовем их l1, l2, l3). Затем я поместил 3 списка генов в STRING соответственно. Итак, теперь у меня есть 3 сети (назовем их n1, n2, n3), каждая сеть для каждого вида.

С этими 3 сетями и 4 списками я прихожу в Cytoscape. Я хочу визуализировать 3 сети вместе. Итак, фон - это все узлы из L. Когда я говорю, давайте посмотрим на человека, сеть n1 (включая оба узла из l1 и границы между ними) будет подсвечена (другие гены из двух других видов оставаться там, не двигаясь, но исчезнув как фон). То же самое проделайте и с рыбками данио и треской. Сделав это, можно увидеть, как гены работают по-разному у трех видов.

Так можно ли это сделать в Cytoscape? Заранее спасибо.


person XiaokangZH    schedule 16.03.2018    source источник


Ответы (1)


Вы можете начать с инициализации цитокейпа с L:

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

а затем выберите нужные.

person Stephan T.    schedule 19.03.2018