diff --git a/src/app/components/analysis-window/analysis-window.component.ts b/src/app/components/analysis-window/analysis-window.component.ts index 67937f07c1504515193a760c09cd9c21513dc4bc..2ae8f512e1ff986ef2483925deebb6e67efc01cc 100644 --- a/src/app/components/analysis-window/analysis-window.component.ts +++ b/src/app/components/analysis-window/analysis-window.component.ts @@ -14,7 +14,7 @@ import {environment} from '../../../environments/environment'; import {AnalysisService, algorithmNames} from '../../analysis.service'; import { Protein, Task, ViralProtein, Drug, Wrapper, WrapperType, - getWrapperFromProtein, getWrapperFromDrug, getWrapperFromViralProtein, getNodeIdsFromPDI + getWrapperFromProtein, getWrapperFromDrug, getWrapperFromViralProtein, getNodeIdsFromPDI, getNodeIdsFromPPI } from '../../interfaces'; import html2canvas from 'html2canvas'; import {toast} from 'bulma-toast'; @@ -242,17 +242,26 @@ export class AnalysisWindowComponent implements OnInit, OnChanges { const isSeed = attributes.isSeed || {}; const scores = attributes.scores || {}; const details = attributes.details || {}; + const wrappers: {[key: string]: Wrapper} = {}; for (const node of network.nodes) { if (nodeTypes[node] === 'host') { this.proteins.push(details[node]); + wrappers[node] = getWrapperFromProtein(details[node]); } else if (nodeTypes[node] === 'virus') { this.effects.push(details[node]); + wrappers[node] = getWrapperFromViralProtein(details[node]); + } else if (nodeTypes[node] === 'drug') { + wrappers[node] = getWrapperFromDrug(details[node]); } nodes.push(this.mapNode(this.inferNodeType(node), details[node], isSeed[node], scores[node])); } for (const edge of network.edges) { - edges.push(this.mapEdge(edge, 'protein-protein')); + edges.push(this.mapEdge(edge, 'protein-protein', wrappers)); + } + + for (const edge of network.edges) { + edges.push(this.mapEdge(edge, 'protein-protein', wrappers)); } @@ -292,15 +301,14 @@ export class AnalysisWindowComponent implements OnInit, OnChanges { return node; } - private mapEdge(edge: any, type: 'protein-protein' | 'to-drug'): any { + private mapEdge(edge: any, type: 'protein-protein' | 'to-drug', wrappers?: {[key: string]: Wrapper}): any { let edgeColor; if (type === 'protein-protein') { edgeColor = { color: NetworkSettings.getColor('edgeHostVirus'), - highlight: NetworkSettings.getColor('edgeHostVirusHighlight') + highlight: NetworkSettings.getColor('edgeHostVirusHighlight'), }; - const from = edge.from.startsWith('DB') ? `d_${edge.from}` : `p_${edge.from}`; - const to = edge.to.startsWith('DB') ? `d_${edge.to}` : `p_${edge.to}`; + const {from, to} = getNodeIdsFromPPI(edge, wrappers); return { from, to, color: edgeColor, @@ -308,7 +316,7 @@ export class AnalysisWindowComponent implements OnInit, OnChanges { } else if (type === 'to-drug') { edgeColor = { color: NetworkSettings.getColor('edgeHostDrug'), - highlight: NetworkSettings.getColor('edgeHostDrugHighlight') + highlight: NetworkSettings.getColor('edgeHostDrugHighlight'), }; const {from, to} = getNodeIdsFromPDI(edge); return { diff --git a/src/app/interfaces.ts b/src/app/interfaces.ts index 4062e89931d347e6caf2f0ede4967b4028fb9a3b..4399fbb1c74ed989c7210aa58f74222afc53fc7a 100644 --- a/src/app/interfaces.ts +++ b/src/app/interfaces.ts @@ -75,10 +75,10 @@ export function getNodeIdsFromPVI(pvi: ProteinViralInteraction) { }; } -export function getNodeIdsFromPPI(edge: NetworkEdge) { +export function getNodeIdsFromPPI(edge: NetworkEdge, wrappers: {[key: string]: Wrapper}) { return { - from: `p_${edge.from}`, - to: `p_${edge.to}`, + from: wrappers[edge.from].nodeId, + to: wrappers[edge.to].nodeId, }; }