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





Вы можете начать с инициализации цитокейпа с 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);
а затем выберите нужные.