From 64f0930c1740411e430bf1a552872954f1ae18a0 Mon Sep 17 00:00:00 2001
From: Michael Hartung <michi@Michaels-MacBook-Pro.local>
Date: Mon, 12 Jul 2021 20:32:48 +0200
Subject: [PATCH] fix analysis network default style

---
 .../analysis-panel.component.ts               | 24 ++++++++-----------
 src/app/interfaces.ts                         | 11 +++++----
 2 files changed, 16 insertions(+), 19 deletions(-)

diff --git a/src/app/components/analysis-panel/analysis-panel.component.ts b/src/app/components/analysis-panel/analysis-panel.component.ts
index 58746d63..a62795cf 100644
--- a/src/app/components/analysis-panel/analysis-panel.component.ts
+++ b/src/app/components/analysis-panel/analysis-panel.component.ts
@@ -18,9 +18,9 @@ import {
   getNodeIdsFromPDI,
   getNodeIdsFromPPI,
   getProteinNodeId,
-  getWrapperFromCustom,
   getWrapperFromDrug,
   getWrapperFromNode,
+  getWrapperFromProtein,
   Node,
   Task,
   Tissue,
@@ -214,7 +214,6 @@ export class AnalysisPanelComponent implements OnInit, OnChanges {
           if (nodeIds.length > 0) {
             const nodeId = nodeIds[0];
             const node = this.nodeData.nodes.get(nodeId);
-            console.log(node)
             if (node.nodeType === 'drug' || node.netexId === undefined || !node.netexId.startsWith('p')) {
               return;
             }
@@ -391,7 +390,6 @@ export class AnalysisPanelComponent implements OnInit, OnChanges {
    * For the third case, fall back to a default case which can also be set by user.
    */
   public inferNodeGroup(wrapper: Wrapper): string {
-    console.log(wrapper);
     if (wrapper.data.group !== undefined) {
       return wrapper.data.group;
     } else if (wrapper.data.netexId !== undefined && wrapper.data.netexId.startsWith('d')) {
@@ -432,9 +430,6 @@ export class AnalysisPanelComponent implements OnInit, OnChanges {
 
     // add drugGroup and foundNodesGroup for added nodes
     // these groups can be overwritten by the user
-    console.log("result")
-    console.log(result)
-
     const nodes = [];
     const edges = [];
 
@@ -451,22 +446,23 @@ export class AnalysisPanelComponent implements OnInit, OnChanges {
     const wrappers: { [key: string]: Wrapper } = {};
 
     for (const node of network.nodes) {
-      if (nodeTypes[node] === 'protein') {
+      // convert id to netex Id if exists
+      const nodeDetails = details[node];
+      if (nodeDetails.netexId && nodeDetails.netexId.startsWith('p')) {
         // node is protein from database, has been mapped on init to backend protein from backend
         // or was found during analysis
-        this.proteins.push(details[node]);
-        wrappers[node] = getWrapperFromNode(details[node]);
-      } else if (nodeTypes[node] === 'drug') {
+        this.proteins.push(nodeDetails);
+        wrappers[node] = getWrapperFromProtein(nodeDetails as Node);
+      } else if (nodeDetails.netexId && nodeDetails.netexId.startsWith('d')) {
         // node is drug, was found during analysis
-        wrappers[node] = getWrapperFromDrug(details[node]);
+        wrappers[node] = getWrapperFromDrug(nodeDetails as Drug);
       } else {
         // node is custom input from user, could not be mapped to backend protein
-        wrappers[node] = getWrapperFromCustom(details[node]);
+        wrappers[node] = getWrapperFromNode(nodeDetails as Node);
       }
       // IMPORTANT we set seeds to "selected" and not to seeds. The user should be inspired to run 
       // further analysis and the button function can be used to highlight seeds
-      // option to use details[node] as gradient, but sccores are very small
-      console.log(details[node])
+      // option to use scores[node] as gradient, but sccores are very small
       nodes.push(NetworkSettings.getNodeStyle(wrappers[node].data as Node, config, false, isSeed[node], 1))
     }
     for (const edge of network.edges) {
diff --git a/src/app/interfaces.ts b/src/app/interfaces.ts
index ac8dee3c..69fcc9a3 100644
--- a/src/app/interfaces.ts
+++ b/src/app/interfaces.ts
@@ -140,14 +140,15 @@ export function getId(gene: Node) {
   return `${gene.id}`;
 }
 
-export function getWrapperFromCustom(gene: Node): Wrapper {
+export function getWrapperFromProtein(gene: Node): Wrapper {
   /**
    * Constructs wrapper interface for gene
    */
-  // if gene.label is undefined, set it to id
+  // if node does not have property group, it was found by the analysis
+  gene.group = gene.group ? gene.group : 'foundNode';
   gene.label = gene.label ? gene.label : gene.id
   return {
-    id: getNodeId(gene),
+    id: getNetworkId(gene),
     data: gene,
   };
 }
@@ -156,8 +157,8 @@ export function getWrapperFromNode(gene: Node): Wrapper {
   /**
    * Constructs wrapper interface for gene
    */
-  // if node does not have property group, it was found by the analysis
-  gene.group = gene.group ? gene.group : 'foundNode';
+  // if node does not have property group, it was custom node from user
+  gene.group = gene.group ? gene.group : 'default';
   gene.label = gene.label ? gene.label : gene.id
   return {
     id: getNetworkId(gene),
-- 
GitLab