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,
   };
 }