From 4e99fb73bccdb3e30ce239cad681327a9f538709 Mon Sep 17 00:00:00 2001
From: AndiMajore <andi.majore@googlemail.com>
Date: Thu, 13 Apr 2023 16:40:36 +0200
Subject: [PATCH] filtering duplicate node IDs when loading networks

---
 .../explorer-page/explorer-page.component.ts  | 21 +++++++++++++++++--
 src/index.html                                |  2 +-
 src/version.ts                                |  2 +-
 3 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/src/app/pages/explorer-page/explorer-page.component.ts b/src/app/pages/explorer-page/explorer-page.component.ts
index 441f3721..23834610 100644
--- a/src/app/pages/explorer-page/explorer-page.component.ts
+++ b/src/app/pages/explorer-page/explorer-page.component.ts
@@ -25,6 +25,7 @@ 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 {LegendService} from '../../services/legend-service/legend-service.service';
+import {ToastService} from '../../services/toast/toast.service';
 
 
 declare var vis: any;
@@ -47,7 +48,7 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit {
   @Input()
   public id: undefined | string;
 
-  @ViewChild('analysis') analysisElement
+  @ViewChild('analysis') analysisElement;
 
   public reset() {
     // const analysisNetwork = this.networkHandler.networks['analysis'];
@@ -212,7 +213,9 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit {
     public drugstoneConfig: DrugstoneConfigService,
     public netex: NetexControllerService,
     public networkHandler: NetworkHandlerService,
-    public legendService: LegendService) {
+    public legendService: LegendService,
+    public toast: ToastService,
+  ) {
 
     this.showDetails = false;
     this.analysis.subscribeList(async (items, selected) => {
@@ -429,6 +432,20 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit {
         edges = edges.filter(el => el.from !== el.to);
       }
 
+      const duplicateNodeIds = [];
+      const uniqueNodeIds = [];
+      const uniqueNodes = [];
+      nodes.forEach(node => {
+        if (uniqueNodeIds.includes(node.id)) {
+          duplicateNodeIds.push(node.id);
+        } else {
+          uniqueNodeIds.push(node.id);
+          uniqueNodes.push(node);
+        }
+      });
+      this.toast.setNewToast({message: 'Duplicate node ids removed: ' + duplicateNodeIds.join(', '), type: 'warning'});
+      nodes = uniqueNodes;
+
       this.nodeData.nodes = new vis.DataSet(nodes);
       this.nodeData.edges = new vis.DataSet(edges);
 
diff --git a/src/index.html b/src/index.html
index dbef3b20..c25ff979 100644
--- a/src/index.html
+++ b/src/index.html
@@ -116,7 +116,7 @@ menu<br>
   <drugst-one id="netexp1"
               groups='{"nodeGroups":{"important":{"type":"gene","color":"#ff881f","font":{"color":"#000000"},"groupName":"Seed","shape":"star"},"gene":{"type":"gene","color":"#4da300","font":{"color":"#f0f0f0"},"groupName":"Discovered target","shape":"circle"},"foundDrug":{"type":"drug","color":"#F12590","font":{"color":"#000000"},"groupName":"Drug","shape":"diamond"}},"edgeGroups":{"default":{"color":"#000000","groupName":"default edge"}}}'
               config='{"customEdges":{"default":true, "selectable":false}, "showAdvAnalysisContent":["drug-search", "enrichment-gprofiler", "enrichment-digest", "search-ndex"],"identifier":"symbol","title":"ROBUST output network", "taskDrugName": "Drug Search", "showLegendNodes": true, "showLegendEdges": true, "showSidebar": "left", "showOverview": true, "legendPos": "left", "legendClass": "legend", "showQuery": true, "showItemSelector": true,"showSimpleAnalysis": false,"showAdvAnalysis": true,"showSelection": true,"showTasks": true,"showNetworkMenu": "right","showLegend": true,"showNetworkMenuButtonExpression": true, "showNetworkMenuButtonScreenshot": true,"showNetworkMenuButtonExportGraphml": true,"showNetworkMenuButtonAdjacentDrugs": true,"showNetworkMenuButtonCenter": true,"showConnectGenes": false,"networkMenuButtonAdjacentDrugsLabel": "Drugs","showNetworkMenuButtonAdjacentDisordersProteins": true,"networkMenuButtonAdjacentDisordersProteinsLabel": "Disorders (protein)","showNetworkMenuButtonAdjacentDisordersDrugs": true,"networkMenuButtonAdjacentDisordersDrugsLabel": "Disorders (drug)","showNetworkMenuButtonAnimation": true,"networkMenuButtonAnimationLabel": "Animation", "autofillEdges": false, "physicsOn": false,"useNedrexLicenced": true,"selfReferences": false, "interactionDrugProtein": "NeDRex", "indicationDrugDisorder": "NeDRex","nodeShadow": true,"edgeShadow": true, "algorithms": {"drug": ["trustrank", "closeness", "degree", "proximity"], "drug-target": ["trustrank", "multisteiner", "keypathwayminer", "degree", "closeness", "betweenness"]}, "associatedProteinDisorder": "NeDRex",                                "nodeGroups":{"important":{"type":"gene","color":"#ff881f","font":{"color":"#000000"},"groupName":"Seed","shape":"star"},"gene":{"type":"gene","color":"#4da300","font":{"color":"#f0f0f0"},"groupName":"Discovered target","shape":"circle"},"foundDrug":{"type":"drug","color":"#F12590","font":{"color":"#000000"},"groupName":"Drug","shape":"diamond"}},"edgeGroups":{"default":{"color":"#000000","groupName":"default edge"}}}'
-              network='{"nodes": [{"id": "DEFA1", "group": "gene"}, {"id": "CST6", "group": "gene"}, {"id": "IGFBP2", "group": "gene"}, {"id": "TNFSF8", "group": "gene"}, {"id": "COPRS", "group": "gene"}, {"id": "AGT", "group": "important"}, {"id": "IL6", "group": "important"}, {"id": "A2M", "group": "gene"}, {"id": "NLRP3", "group": "important"}, {"id": "TLR4", "group": "important"}, {"id": "TNFSF9", "group": "gene"}, {"id": "RPL18", "group": "gene"}, {"id": "F5", "group": "gene"}, {"id": "IVL", "group": "gene"}, {"id": "IL6R", "group": "gene"}, {"id": "CPB2", "group": "gene"}, {"id": "CCDC8", "group": "gene"}, {"id": "SERPINB6", "group": "gene"}, {"id": "MBL2", "group": "important"}, {"id": "IL1B", "group": "important"}, {"id": "HIST1H3E", "group": "gene"}, {"id": "IL24", "group": "gene"}, {"id": "GSDMB", "group": "gene"}, {"id": "NOTCH2", "group": "gene"}, {"id": "F2", "group": "important"}, {"id": "CCR5", "group": "important"}, {"id": "SERPINB8", "group": "gene"}, {"id": "KRT1", "group": "gene"}, {"id": "IL1RN", "group": "important"}, {"id": "PLAT", "group": "gene"}, {"id": "URB1", "group": "gene"}, {"id": "FCF1", "group": "gene"}, {"id": "ACE", "group": "important"}, {"id": "THBS3", "group": "gene"}, {"id": "CALML3", "group": "gene"}, {"id": "PSMA5", "group": "gene"}, {"id": "NDUFA3", "group": "gene"}, {"id": "PARK2", "group": "gene"}, {"id": "FANCB", "group": "gene"}, {"id": "SERPINB2", "group": "gene"}, {"id": "KLRG2", "group": "gene"}, {"id": "FAM19A3", "group": "gene"}, {"id": "CRYZL1", "group": "gene"}, {"id": "HEATR1", "group": "gene"}, {"id": "IGHG2", "group": "gene"}, {"id": "C17orf70", "group": "gene"}, {"id": "TINAG", "group": "gene"}, {"id": "RSPRY1", "group": "gene"}, {"id": "TMPRSS11A", "group": "gene"}, {"id": "SLC18A1", "group": "gene"}, {"id": "PSMD1", "group": "gene"}, {"id": "PCDHB15", "group": "gene"}, {"id": "TSR3", "group": "gene"}, {"id": "FGL1", "group": "gene"}, {"id": "C7orf60", "group": "gene"}, {"id": "SSR3", "group": "gene"}, {"id": "REN", "group": "gene"}, {"id": "MYH14", "group": "gene"}, {"id": "TBCK", "group": "gene"}, {"id": "DARS", "group": "gene"}, {"id": "C16orf70", "group": "gene"}, {"id": "DQX1", "group": "gene"}, {"id": "RPL30", "group": "gene"}, {"id": "FBXO30", "group": "gene"}, {"id": "EPPK1", "group": "gene"}, {"id": "LAMA1", "group": "gene"}, {"id": "AP4E1", "group": "gene"}, {"id": "AP4S1", "group": "gene"}, {"id": "HIST1H1B", "group": "gene"}, {"id": "AFP", "group": "gene"}], "edges": [{"from": "DEFA1", "to": "PLAT", "group": "default"}, {"from": "DEFA1", "to": "IGFBP2", "group": "default"}, {"from": "CST6", "to": "FCF1", "group": "default"}, {"from": "CST6", "to": "NOTCH2", "group": "default"}, {"from": "IGFBP2", "to": "GSDMB", "group": "default"}, {"from": "TNFSF8", "to": "F5", "group": "default"}, {"from": "TNFSF8", "to": "TNFSF9", "group": "default"}, {"from": "COPRS", "to": "HIST1H3E", "group": "default"}, {"from": "COPRS", "to": "IL6R", "group": "default"}, {"from": "AGT", "to": "ACE", "group": "default"}, {"from": "AGT", "to": "GSDMB", "group": "default"}, {"from": "AGT", "to": "NDUFA3", "group": "default"}, {"from": "AGT", "to": "REN", "group": "default"}, {"from": "IL6", "to": "IL6R", "group": "default"}, {"from": "A2M", "to": "IL1B", "group": "default"}, {"from": "A2M", "to": "CPB2", "group": "default"}, {"from": "NLRP3", "to": "URB1", "group": "default"}, {"from": "NLRP3", "to": "HIST1H1B", "group": "default"}, {"from": "TLR4", "to": "TNFSF9", "group": "default"}, {"from": "TNFSF9", "to": "KLRG2", "group": "default"}, {"from": "RPL18", "to": "FCF1", "group": "default"}, {"from": "RPL18", "to": "URB1", "group": "default"}, {"from": "F5", "to": "F2", "group": "default"}, {"from": "F5", "to": "CCDC8", "group": "default"}, {"from": "F5", "to": "KLRG2", "group": "default"}, {"from": "IVL", "to": "FCF1", "group": "default"}, {"from": "IVL", "to": "KRT1", "group": "default"}, {"from": "IL6R", "to": "FANCB", "group": "default"}, {"from": "IL6R", "to": "CRYZL1", "group": "default"}, {"from": "IL6R", "to": "C17orf70", "group": "default"}, {"from": "IL6R", "to": "TBCK", "group": "default"}, {"from": "CPB2", "to": "F2", "group": "default"}, {"from": "CPB2", "to": "TINAG", "group": "default"}, {"from": "CCDC8", "to": "HEATR1", "group": "default"}, {"from": "CCDC8", "to": "PSMD1", "group": "default"}, {"from": "CCDC8", "to": "DARS", "group": "default"}, {"from": "SERPINB6", "to": "F2", "group": "default"}, {"from": "SERPINB6", "to": "SERPINB8", "group": "default"}, {"from": "SERPINB6", "to": "TMPRSS11A", "group": "default"}, {"from": "SERPINB6", "to": "C16orf70", "group": "default"}, {"from": "MBL2", "to": "KRT1", "group": "default"}, {"from": "IL24", "to": "NOTCH2", "group": "default"}, {"from": "IL24", "to": "CCR5", "group": "default"}, {"from": "F2", "to": "PLAT", "group": "default"}, {"from": "CCR5", "to": "PSMA5", "group": "default"}, {"from": "CCR5", "to": "AFP", "group": "default"}, {"from": "SERPINB8", "to": "FCF1", "group": "default"}, {"from": "IL1RN", "to": "FCF1", "group": "default"}, {"from": "PLAT", "to": "SERPINB2", "group": "default"}, {"from": "PLAT", "to": "FGL1", "group": "default"}, {"from": "PLAT", "to": "LAMA1", "group": "default"}, {"from": "FCF1", "to": "CALML3", "group": "default"}, {"from": "FCF1", "to": "SERPINB2", "group": "default"}, {"from": "FCF1", "to": "IGHG2", "group": "default"}, {"from": "FCF1", "to": "MYH14", "group": "default"}, {"from": "FCF1", "to": "RPL30", "group": "default"}, {"from": "FCF1", "to": "EPPK1", "group": "default"}, {"from": "THBS3", "to": "NDUFA3", "group": "default"}, {"from": "THBS3", "to": "FANCB", "group": "default"}, {"from": "CALML3", "to": "PARK2", "group": "default"}, {"from": "PSMA5", "to": "PARK2", "group": "default"}, {"from": "PSMA5", "to": "HEATR1", "group": "default"}, {"from": "PSMA5", "to": "PSMD1", "group": "default"}, {"from": "PSMA5", "to": "DARS", "group": "default"}, {"from": "NDUFA3", "to": "SLC18A1", "group": "default"}, {"from": "NDUFA3", "to": "DQX1", "group": "default"}, {"from": "FAM19A3", "to": "CRYZL1", "group": "default"}, {"from": "RSPRY1", "to": "TMPRSS11A", "group": "default"}, {"from": "RSPRY1", "to": "SLC18A1", "group": "default"}, {"from": "PCDHB15", "to": "SSR3", "group": "default"}, {"from": "PCDHB15", "to": "TBCK", "group": "default"}, {"from": "TSR3", "to": "FGL1", "group": "default"}, {"from": "TSR3", "to": "C7orf60", "group": "default"}, {"from": "C7orf60", "to": "REN", "group": "default"}, {"from": "SSR3", "to": "MYH14", "group": "default"}, {"from": "C16orf70", "to": "FBXO30", "group": "default"}, {"from": "DQX1", "to": "FBXO30", "group": "default"}, {"from": "LAMA1", "to": "AP4E1", "group": "default"}, {"from": "AP4E1", "to": "AP4S1", "group": "default"}, {"from": "AP4S1", "to": "AFP", "group": "default"}]}'>
+              network='{"nodes": [{"id": "DEFA1", "group": "gene"},{"id": "DEFA1", "group": "gene"}, {"id": "CST6", "group": "gene"}, {"id": "IGFBP2", "group": "gene"}, {"id": "TNFSF8", "group": "gene"}, {"id": "COPRS", "group": "gene"}, {"id": "AGT", "group": "important"}, {"id": "IL6", "group": "important"}, {"id": "A2M", "group": "gene"}, {"id": "NLRP3", "group": "important"}, {"id": "TLR4", "group": "important"}, {"id": "TNFSF9", "group": "gene"}, {"id": "RPL18", "group": "gene"}, {"id": "F5", "group": "gene"}, {"id": "IVL", "group": "gene"}, {"id": "IL6R", "group": "gene"}, {"id": "CPB2", "group": "gene"}, {"id": "CCDC8", "group": "gene"}, {"id": "SERPINB6", "group": "gene"}, {"id": "MBL2", "group": "important"}, {"id": "IL1B", "group": "important"}, {"id": "HIST1H3E", "group": "gene"}, {"id": "IL24", "group": "gene"}, {"id": "GSDMB", "group": "gene"}, {"id": "NOTCH2", "group": "gene"}, {"id": "F2", "group": "important"}, {"id": "CCR5", "group": "important"}, {"id": "SERPINB8", "group": "gene"}, {"id": "KRT1", "group": "gene"}, {"id": "IL1RN", "group": "important"}, {"id": "PLAT", "group": "gene"}, {"id": "URB1", "group": "gene"}, {"id": "FCF1", "group": "gene"}, {"id": "ACE", "group": "important"}, {"id": "THBS3", "group": "gene"}, {"id": "CALML3", "group": "gene"}, {"id": "PSMA5", "group": "gene"}, {"id": "NDUFA3", "group": "gene"}, {"id": "PARK2", "group": "gene"}, {"id": "FANCB", "group": "gene"}, {"id": "SERPINB2", "group": "gene"}, {"id": "KLRG2", "group": "gene"}, {"id": "FAM19A3", "group": "gene"}, {"id": "CRYZL1", "group": "gene"}, {"id": "HEATR1", "group": "gene"}, {"id": "IGHG2", "group": "gene"}, {"id": "C17orf70", "group": "gene"}, {"id": "TINAG", "group": "gene"}, {"id": "RSPRY1", "group": "gene"}, {"id": "TMPRSS11A", "group": "gene"}, {"id": "SLC18A1", "group": "gene"}, {"id": "PSMD1", "group": "gene"}, {"id": "PCDHB15", "group": "gene"}, {"id": "TSR3", "group": "gene"}, {"id": "FGL1", "group": "gene"}, {"id": "C7orf60", "group": "gene"}, {"id": "SSR3", "group": "gene"}, {"id": "REN", "group": "gene"}, {"id": "MYH14", "group": "gene"}, {"id": "TBCK", "group": "gene"}, {"id": "DARS", "group": "gene"}, {"id": "C16orf70", "group": "gene"}, {"id": "DQX1", "group": "gene"}, {"id": "RPL30", "group": "gene"}, {"id": "FBXO30", "group": "gene"}, {"id": "EPPK1", "group": "gene"}, {"id": "LAMA1", "group": "gene"}, {"id": "AP4E1", "group": "gene"}, {"id": "AP4S1", "group": "gene"}, {"id": "HIST1H1B", "group": "gene"}, {"id": "AFP", "group": "gene"}], "edges": [{"from": "DEFA1", "to": "PLAT", "group": "default"}, {"from": "DEFA1", "to": "IGFBP2", "group": "default"}, {"from": "CST6", "to": "FCF1", "group": "default"}, {"from": "CST6", "to": "NOTCH2", "group": "default"}, {"from": "IGFBP2", "to": "GSDMB", "group": "default"}, {"from": "TNFSF8", "to": "F5", "group": "default"}, {"from": "TNFSF8", "to": "TNFSF9", "group": "default"}, {"from": "COPRS", "to": "HIST1H3E", "group": "default"}, {"from": "COPRS", "to": "IL6R", "group": "default"}, {"from": "AGT", "to": "ACE", "group": "default"}, {"from": "AGT", "to": "GSDMB", "group": "default"}, {"from": "AGT", "to": "NDUFA3", "group": "default"}, {"from": "AGT", "to": "REN", "group": "default"}, {"from": "IL6", "to": "IL6R", "group": "default"}, {"from": "A2M", "to": "IL1B", "group": "default"}, {"from": "A2M", "to": "CPB2", "group": "default"}, {"from": "NLRP3", "to": "URB1", "group": "default"}, {"from": "NLRP3", "to": "HIST1H1B", "group": "default"}, {"from": "TLR4", "to": "TNFSF9", "group": "default"}, {"from": "TNFSF9", "to": "KLRG2", "group": "default"}, {"from": "RPL18", "to": "FCF1", "group": "default"}, {"from": "RPL18", "to": "URB1", "group": "default"}, {"from": "F5", "to": "F2", "group": "default"}, {"from": "F5", "to": "CCDC8", "group": "default"}, {"from": "F5", "to": "KLRG2", "group": "default"}, {"from": "IVL", "to": "FCF1", "group": "default"}, {"from": "IVL", "to": "KRT1", "group": "default"}, {"from": "IL6R", "to": "FANCB", "group": "default"}, {"from": "IL6R", "to": "CRYZL1", "group": "default"}, {"from": "IL6R", "to": "C17orf70", "group": "default"}, {"from": "IL6R", "to": "TBCK", "group": "default"}, {"from": "CPB2", "to": "F2", "group": "default"}, {"from": "CPB2", "to": "TINAG", "group": "default"}, {"from": "CCDC8", "to": "HEATR1", "group": "default"}, {"from": "CCDC8", "to": "PSMD1", "group": "default"}, {"from": "CCDC8", "to": "DARS", "group": "default"}, {"from": "SERPINB6", "to": "F2", "group": "default"}, {"from": "SERPINB6", "to": "SERPINB8", "group": "default"}, {"from": "SERPINB6", "to": "TMPRSS11A", "group": "default"}, {"from": "SERPINB6", "to": "C16orf70", "group": "default"}, {"from": "MBL2", "to": "KRT1", "group": "default"}, {"from": "IL24", "to": "NOTCH2", "group": "default"}, {"from": "IL24", "to": "CCR5", "group": "default"}, {"from": "F2", "to": "PLAT", "group": "default"}, {"from": "CCR5", "to": "PSMA5", "group": "default"}, {"from": "CCR5", "to": "AFP", "group": "default"}, {"from": "SERPINB8", "to": "FCF1", "group": "default"}, {"from": "IL1RN", "to": "FCF1", "group": "default"}, {"from": "PLAT", "to": "SERPINB2", "group": "default"}, {"from": "PLAT", "to": "FGL1", "group": "default"}, {"from": "PLAT", "to": "LAMA1", "group": "default"}, {"from": "FCF1", "to": "CALML3", "group": "default"}, {"from": "FCF1", "to": "SERPINB2", "group": "default"}, {"from": "FCF1", "to": "IGHG2", "group": "default"}, {"from": "FCF1", "to": "MYH14", "group": "default"}, {"from": "FCF1", "to": "RPL30", "group": "default"}, {"from": "FCF1", "to": "EPPK1", "group": "default"}, {"from": "THBS3", "to": "NDUFA3", "group": "default"}, {"from": "THBS3", "to": "FANCB", "group": "default"}, {"from": "CALML3", "to": "PARK2", "group": "default"}, {"from": "PSMA5", "to": "PARK2", "group": "default"}, {"from": "PSMA5", "to": "HEATR1", "group": "default"}, {"from": "PSMA5", "to": "PSMD1", "group": "default"}, {"from": "PSMA5", "to": "DARS", "group": "default"}, {"from": "NDUFA3", "to": "SLC18A1", "group": "default"}, {"from": "NDUFA3", "to": "DQX1", "group": "default"}, {"from": "FAM19A3", "to": "CRYZL1", "group": "default"}, {"from": "RSPRY1", "to": "TMPRSS11A", "group": "default"}, {"from": "RSPRY1", "to": "SLC18A1", "group": "default"}, {"from": "PCDHB15", "to": "SSR3", "group": "default"}, {"from": "PCDHB15", "to": "TBCK", "group": "default"}, {"from": "TSR3", "to": "FGL1", "group": "default"}, {"from": "TSR3", "to": "C7orf60", "group": "default"}, {"from": "C7orf60", "to": "REN", "group": "default"}, {"from": "SSR3", "to": "MYH14", "group": "default"}, {"from": "C16orf70", "to": "FBXO30", "group": "default"}, {"from": "DQX1", "to": "FBXO30", "group": "default"}, {"from": "LAMA1", "to": "AP4E1", "group": "default"}, {"from": "AP4E1", "to": "AP4S1", "group": "default"}, {"from": "AP4S1", "to": "AFP", "group": "default"}]}'>
   </drugst-one>
 
 
diff --git a/src/version.ts b/src/version.ts
index b8eb2903..cb13b55d 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const version = 'v1.1.16-rc9';
+export const version = 'v1.1.16-rc10';
-- 
GitLab