From 9f565a4253959cde4208b218aca28c777364b5cf Mon Sep 17 00:00:00 2001
From: "Hartung, Michael" <michael.hartung@uni-hamburg.de>
Date: Thu, 14 Jul 2022 15:53:22 +0200
Subject: [PATCH] remove self edges

---
 .../components/analysis-panel/analysis-panel.component.ts   | 6 ++++++
 .../license-agreement/license-agreement.component.ts        | 1 -
 src/app/config.ts                                           | 2 ++
 src/app/main-network.ts                                     | 6 ++++++
 src/app/pages/explorer-page/explorer-page.component.ts      | 3 ---
 src/index.html                                              | 4 +++-
 6 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/app/components/analysis-panel/analysis-panel.component.ts b/src/app/components/analysis-panel/analysis-panel.component.ts
index af9499ae..3e9f514f 100644
--- a/src/app/components/analysis-panel/analysis-panel.component.ts
+++ b/src/app/components/analysis-panel/analysis-panel.component.ts
@@ -574,6 +574,12 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit
       // option to use scores[node] as gradient, but sccores are very small
       nodes.push(NetworkSettings.getNodeStyle(nodeDetails as Node, config, false, false, 1))
     }
+
+    // remove self-edges/loops
+    if (!config.selfReferences) {
+      network.edges = network.edges.filter(el => el.from !== el.to)
+    }
+
     for (const edge of network.edges) {
       edges.push(mapCustomEdge(edge, this.myConfig));
     }
diff --git a/src/app/components/license-agreement/license-agreement.component.ts b/src/app/components/license-agreement/license-agreement.component.ts
index b00ad922..1304dd9d 100644
--- a/src/app/components/license-agreement/license-agreement.component.ts
+++ b/src/app/components/license-agreement/license-agreement.component.ts
@@ -17,7 +17,6 @@ export class LicenseAgreementComponent implements OnInit {
   constructor(public drugstoneConfig: DrugstoneConfigService, public netex: NetexControllerService) { }
 
   public getAgreed() {
-    console.log(sessionStorage.getItem(this.licenseStorageKey) === 'true')
     return sessionStorage.getItem(this.licenseStorageKey) === 'true';
   }
 
diff --git a/src/app/config.ts b/src/app/config.ts
index 34de2334..8529a7f1 100644
--- a/src/app/config.ts
+++ b/src/app/config.ts
@@ -66,6 +66,7 @@ export interface IConfig {
   showLegendEdges: boolean;
   nodeGroups: { [key: string]: NodeGroup };
   edgeGroups: { [key: string]: EdgeGroup };
+  selfReferences: boolean;
   interactionDrugProtein: InteractionDrugProteinDB;
   interactionProteinProtein: InteractionProteinProteinDB;
   indicationDrugDisorder: IndicationDrugDisorderDB;
@@ -123,6 +124,7 @@ export const defaultConfig: IConfig = {
   autofillEdges: true,
   physicsOn: false,
   useNedrexLicensed: true,
+  selfReferences: false,
   nodeGroups: {
     // all NodeGroups but the default group must be set, if not provided by the user, they will be taken from here
     // IMPORTANT: node color must be hexacode!
diff --git a/src/app/main-network.ts b/src/app/main-network.ts
index d00b1769..9cc79089 100644
--- a/src/app/main-network.ts
+++ b/src/app/main-network.ts
@@ -51,7 +51,13 @@ export class ProteinNetwork {
       nodes.push(mapCustomNode(protein, config));
     }
 
+    // remove self-edges/loops
+    if (!config.selfReferences) {
+      this.edges = this.edges.filter(el => el.from !== el.to)
+    }
+
     for (const edge of this.edges) {
+      console.log(edge)
       edges.push(mapCustomEdge(edge, config));
     }
 
diff --git a/src/app/pages/explorer-page/explorer-page.component.ts b/src/app/pages/explorer-page/explorer-page.component.ts
index a65af8fe..ecd333c4 100644
--- a/src/app/pages/explorer-page/explorer-page.component.ts
+++ b/src/app/pages/explorer-page/explorer-page.component.ts
@@ -6,7 +6,6 @@ import {
   Input,
   OnInit,
   Output,
-  ViewChild,
 } from '@angular/core';
 import {
   getWrapperFromNode,
@@ -23,11 +22,9 @@ import { defaultConfig, EdgeGroup, NodeGroup } from '../../config';
 import { NetexControllerService } from 'src/app/services/netex-controller/netex-controller.service';
 import { removeDuplicateObjectsFromList } from '../../utils';
 import * as merge from 'lodash/fp/merge';
-import { AnalysisPanelComponent } from 'src/app/components/analysis-panel/analysis-panel.component';
 import * as JSON5 from 'json5';
 import { DrugstoneConfigService } from 'src/app/services/drugstone-config/drugstone-config.service';
 import { NetworkHandlerService } from 'src/app/services/network-handler/network-handler.service';
-import { NetworkComponent } from 'src/app/components/network/network.component';
 
 
 declare var vis: any;
diff --git a/src/index.html b/src/index.html
index 7094e66b..668db0dd 100644
--- a/src/index.html
+++ b/src/index.html
@@ -71,7 +71,9 @@
               "identifier":"symbol","title":"Drugst.one network","sidebarPos":"right","showOverview":true,"nodeShadow":false,"edgeShadow":false,"showLegend":true,
               "showFooter":true, "showSimpleAnalysis":true,"showAdvAnalysis":true,"showSelection":true,
               "autofillEdges":false,"physicsOn":true}'
-   network='{"nodes": [{"type": "gene", "id": "ZNF235", "group": "proteinCoding", "shape": "circle", "label": "ZNF235", "x": 45.1427, "y": 183.494915, "value": 43}, {"type": "gene", "color": {"background": "#116466", "border": "#000000"}, "font": {"color": "#000000"}, "border_width": 2, "shape": "square", "id": "CEACAM16", "border_width_selected": 0, "shadow": false, "group": "proteinCoding", "label": "CEACAM16", "x": -257.39927, "y": 500, "value": 39, "scaling.min": 2, "scaling.max": 54, "physics": false}]}'>
+   network='{"nodes": [{"type": "gene", "id": "ZNF235", "group": "proteinCoding", "shape": "circle", "label": "ZNF235", "x": 45.1427, "y": 183.494915, "value": 43}, {"type": "gene", "color": {"background": "#116466", "border": "#000000"}, "font": {"color": "#000000"}, "border_width": 2, "shape": "square", "id": "CEACAM16", "border_width_selected": 0, "shadow": false, "group": "proteinCoding", "label": "CEACAM16", "x": -257.39927, "y": 500, "value": 39, "scaling.min": 2, "scaling.max": 54, "physics": false}],
+   "edges":[{"from":"ZNF235","to":"ZNF235"}]
+  }'>
 </drugst-one>
 </div>
 
-- 
GitLab