Несколько сетей интегрированы в одну сеть в Cytoscape

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
230
1

Ответы 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);

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

Другие вопросы по теме