diff --git a/src/app/components/analysis-panel/analysis-panel.component.ts b/src/app/components/analysis-panel/analysis-panel.component.ts index 26c8b639ee101f4ce4a67a9fe592531a1678540a..a3ba26f0942cccf04f104548175bcb0031295787 100644 --- a/src/app/components/analysis-panel/analysis-panel.component.ts +++ b/src/app/components/analysis-panel/analysis-panel.component.ts @@ -33,6 +33,7 @@ import {LegendService} from 'src/app/services/legend-service/legend-service.serv import {LoadingScreenService} from 'src/app/services/loading-screen/loading-screen.service'; import {version} from '../../../version'; import {downloadCSV} from 'src/app/utils'; +import {Observable} from 'rxjs'; declare var vis: any; @@ -101,6 +102,7 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit public loading = false; + constructor(public legendService: LegendService, public networkHandler: NetworkHandlerService, public drugstoneConfig: DrugstoneConfigService, private http: HttpClient, public analysis: AnalysisService, public netex: NetexControllerService, public loadingScreen: LoadingScreenService) { try { this.versionString = version; @@ -113,6 +115,10 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit ngAfterViewInit() { this.networkHandler.setActiveNetwork('analysis'); + this.networkHandler.activeNetwork.subscribeSelection(() => { + this.refresh(); + } + ); } async ngOnChanges(changes: SimpleChanges) { @@ -127,7 +133,7 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit this.resetEmitter.emit(true); } - private setNetworkListeners(){ + private setNetworkListeners() { this.networkHandler.activeNetwork.networkInternal.on('dragEnd', (properties) => { const node_ids = this.networkHandler.activeNetwork.networkInternal.getSelectedNodes(); if (node_ids.length === 0 || !this.networkHandler.shiftDown) { @@ -460,7 +466,6 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit }); }); }).then(nodes => { - this.tableDrugs = nodes.filter(e => e.drugstoneId && e.drugstoneType === 'drug'); this.tableDrugs.forEach((r) => { r.rawScore = r.score; @@ -493,6 +498,7 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit this.setNetworkListeners(); this.emitVisibleItems(true); }).then(() => { + this.loadingScreen.stateUpdate(false); if (!['quick', 'super', 'connect', 'connectSelected'].includes(this.task.info.algorithm)) { return; } @@ -501,7 +507,6 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit }); }).catch(console.error); }); - this.loadingScreen.stateUpdate(false); }); } } @@ -614,7 +619,7 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit // add drugGroup and foundNodesGroup for added nodes // these groups can be overwritten by the user - const nodes = []; + let nodes = []; let edges = []; const attributes = result.nodeAttributes || {}; @@ -648,6 +653,7 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit // node is drug, was found during analysis nodeDetails.type = 'Drug'; nodeDetails.group = 'foundDrug'; + } else { // node is custom input from user, could not be mapped to backend protein nodeDetails.group = nodeDetails.group ? nodeDetails.group : 'default'; @@ -661,10 +667,30 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit } } const uniqEdges = []; + const skippedDrugIds = new Set<string>(); + const drugEdgeTypes = new Set<string>(); for (const edge of network.edges) { const e = mapCustomEdge(edge, this.drugstoneConfig.currentConfig(), this.drugstoneConfig); + const isDrugEdge = e.to[0] === 'd' && e.to[1] === 'r'; e.from = e.from[0] === 'p' && nodeIdMap[e.from] ? nodeIdMap[e.from] : e.from; e.to = e.to[0] === 'p' && nodeIdMap[e.to] ? nodeIdMap[e.to] : e.to; + if (isDrugEdge) { + skippedDrugIds.add(e.to); + if (edge.actions) { + edge.actions.forEach(a => drugEdgeTypes.add(a)); + } + if (edge.actions && this.networkHandler.activeNetwork.getSelectedDrugTargetType() && !edge.actions.includes(this.networkHandler.activeNetwork.getSelectedDrugTargetType())) { + continue; + } + const label = edge.actions && edge.actions.length > 0 ? edge.actions.join(',') : undefined; + skippedDrugIds.delete(e.to); + if (label) { + e.label = label; + } + } + + this.networkHandler.activeNetwork.setDrugTargetTypes(Array.from(drugEdgeTypes)); + const hash = e.from + '_' + e.to; if (uniqEdges.indexOf(hash) === -1) { uniqEdges.push(hash); @@ -675,6 +701,9 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit if (!this.drugstoneConfig.currentConfig().selfReferences) { edges = edges.filter(el => el.from !== el.to); } + nodes = nodes.filter(n => !(n.drugstoneId && skippedDrugIds.has(n.drugstoneId))); + // if (this.networkHandler.activeNetwork.selectedDrugTargetType) { + // } return { nodes, edges, diff --git a/src/app/components/network/network-menu/network-menu.component.html b/src/app/components/network/network-menu/network-menu.component.html index cf04a2a70b9f986f6e026d37e6353c7ec5adaa3a..1568447f2f0b71fdf56c2faad713136eb887708b 100644 --- a/src/app/components/network/network-menu/network-menu.component.html +++ b/src/app/components/network/network-menu/network-menu.component.html @@ -61,7 +61,7 @@ [ngClass]="{ 'text-normal': drugstoneConfig.smallStyle }" - >Screenshot</span + >Screenshot</span > </button> </div> @@ -112,14 +112,14 @@ [ngClass]="{ 'text-small': drugstoneConfig.smallStyle }" - >Tissue</span + >Tissue</span > <span *ngIf="networkHandler.activeNetwork.selectedTissue" [ngClass]="{ 'text-small': drugstoneConfig.smallStyle }" - >{{ networkHandler.activeNetwork.selectedTissue.name }}</span + >{{ networkHandler.activeNetwork.selectedTissue.name }}</span > <app-fa-solid-icon icon="angle-down" @@ -182,7 +182,93 @@ networkHandler.activeNetwork.updateAdjacentDrugs($event, true) " ></app-toggle-inplace> +<!-- <div class="row is-full m-1" *ngIf="networkHandler.activeNetwork.showsAdjacentDrugs() || networkHandler.activeNetwork.hasDrugsLoaded()">--> +<!-- <div--> +<!-- class="dropdown network-footer-toolbar-element"--> +<!-- [class.is-active]="networkHandler.activeNetwork.drugTargetSelectionExpanded"--> +<!-- [ngClass]="{--> +<!-- 'inner-dropdown': !networkHandler.networkSidebarOpen--> +<!-- }"--> +<!-- >--> +<!-- <div class="dropdown-trigger">--> +<!-- <button--> +<!-- (click)="--> +<!-- networkHandler.activeNetwork.drugTargetSelectionExpanded =--> +<!-- !networkHandler.activeNetwork.drugTargetSelectionExpanded--> +<!-- "--> +<!-- class="button is-rounded"--> +<!-- [disabled]="networkHandler.activeNetwork.getDrugTargetTypes().length === 0"--> +<!-- [class.is-primary]="networkHandler.activeNetwork.getSelectedDrugTargetType()"--> +<!-- aria-haspopup="true"--> +<!-- aria-controls="dropdown-menu"--> +<!-- pTooltip="Filter drug-target edges by drug action annotation."--> +<!-- [tooltipStyleClass]="'drgstn drgstn-tooltip drgstn-tooltip-left'"--> +<!-- tooltipPosition="left"--> +<!-- [ngClass]="{--> +<!-- 'is-small': drugstoneConfig.smallStyle--> +<!-- }"--> +<!-- >--> +<!-- <app-fa-solid-icon icon="crosshairs"></app-fa-solid-icon>--> + +<!-- <span--> +<!-- *ngIf="!networkHandler.activeNetwork.getSelectedDrugTargetType()"--> +<!-- [ngClass]="{--> +<!-- 'text-small': drugstoneConfig.smallStyle--> +<!-- }"--> +<!-- >Actions</span--> +<!-- >--> +<!-- <span--> +<!-- *ngIf="networkHandler.activeNetwork.getSelectedDrugTargetType()"--> +<!-- [ngClass]="{--> +<!-- 'text-small': drugstoneConfig.smallStyle--> +<!-- }"--> +<!-- >{{ networkHandler.activeNetwork.getSelectedDrugTargetType() }}</span--> +<!-- >--> +<!-- <app-fa-solid-icon--> +<!-- icon="angle-down"--> +<!-- classString="is-small last-item-in-button"--> +<!-- *ngIf="networkHandler.activeNetwork.drugTargetSelectionExpanded"--> +<!-- ></app-fa-solid-icon>--> +<!-- <app-fa-solid-icon--> +<!-- icon="angle-left"--> +<!-- classString="is-small last-item-in-button"--> +<!-- *ngIf="!networkHandler.activeNetwork.drugTargetSelectionExpanded"--> +<!-- ></app-fa-solid-icon>--> +<!-- </button>--> +<!-- </div>--> +<!-- <div class="dropdown-menu" id="drug-dropdown-menu" role="menu">--> +<!-- <div class="dropdown-content tissue-dropdown">--> +<!-- <div class="scroll-area">--> +<!-- <a--> +<!-- (click)="networkHandler.activeNetwork.updateAdjacentDrugSelection(null,true)"--> +<!-- [class.is-active]="--> +<!-- !networkHandler.activeNetwork.getSelectedDrugTargetType()--> +<!-- "--> +<!-- [ngClass]="{'text-small': drugstoneConfig.smallStyle}"--> +<!-- class="dropdown-item"--> +<!-- >--> +<!-- None--> +<!-- </a>--> +<!-- <a--> +<!-- *ngFor="--> +<!-- let drugTargetType of networkHandler.activeNetwork.getDrugTargetTypes()--> +<!-- "--> +<!-- (click)="networkHandler.activeNetwork.updateAdjacentDrugSelection(drugTargetType, true)"--> +<!-- [class.is-active]="--> +<!-- networkHandler.activeNetwork.getSelectedDrugTargetType() && networkHandler.activeNetwork.getSelectedDrugTargetType() === drugTargetType--> +<!-- "--> +<!-- [ngClass]="{'text-small': drugstoneConfig.smallStyle}"--> +<!-- class="dropdown-item"--> +<!-- >--> +<!-- {{ drugTargetType }}--> +<!-- </a>--> +<!-- </div>--> +<!-- </div>--> +<!-- </div>--> +<!-- </div>--> +<!-- </div>--> </div> + <div class="row is-full m-1" *ngIf=" diff --git a/src/app/components/network/network.component.ts b/src/app/components/network/network.component.ts index 66c2bbe61aea7a12ba2335f489d00f48cc3a4975..3f2d8264fffd09aec2ce3e651860302f1894e2e6 100644 --- a/src/app/components/network/network.component.ts +++ b/src/app/components/network/network.component.ts @@ -23,6 +23,7 @@ import {NetworkHandlerService} from 'src/app/services/network-handler/network-ha import {LegendService} from 'src/app/services/legend-service/legend-service.service'; import {LoadingScreenService} from 'src/app/services/loading-screen/loading-screen.service'; import {version} from '../../../version'; +import {Subject} from 'rxjs'; @Component({ selector: 'app-network', @@ -60,6 +61,12 @@ export class NetworkComponent implements OnInit { public adjacentDrugs = false; + public selectedDrugTargetType = new Subject<string | null>(); + public selectedDrugTargetTypeLast: string | null = null; + public selectedDrugTargetType$ = this.selectedDrugTargetType.asObservable(); + public drugTargetTypes: string[] = []; + public drugTargetTypesWithoutAdj: string[] = []; + public adjacentDisordersProtein = false; public adjacentDisordersDrug = false; public adjacentDrugList: Node[] = []; @@ -77,8 +84,10 @@ export class NetworkComponent implements OnInit { public currentViewEdges: NodeInteraction[]; public expressionExpanded = false; + public drugTargetSelectionExpanded = false; public selectedTissue: Tissue | null = null; + // change this to true to have sidebar open per default // public networkSidebarOpen = false; @@ -130,6 +139,37 @@ export class NetworkComponent implements OnInit { return {edges: this.inputNetwork.edges, nodes}; } + public getDrugTargetTypes() { + return this.drugTargetTypes; + } + + public subscribeSelection(callback) { + this.selectedDrugTargetType$.subscribe(() => { + callback(); + }); + } + + public setDrugTargetTypes(drugTargetTypes: string[], adj = false) { + if (adj) { + this.drugTargetTypesWithoutAdj = [...drugTargetTypes]; + drugTargetTypes.filter(type => !this.drugTargetTypes.includes(type)).forEach((type) => { + this.drugTargetTypes.push(type); + }); + } else { + this.drugTargetTypes = drugTargetTypes; + } + } + + // TODO create method to get selected drug target type as string instead of subject or observable + public setSelectedDrugTargetType(value: string | null) { + this.selectedDrugTargetTypeLast = value; + this.selectedDrugTargetType.next(value); + } + + public getSelectedDrugTargetType() { + return this.selectedDrugTargetTypeLast; + } + resetInputNetwork() { const nodes = this.inputNetwork.nodes; nodes.forEach(n => { @@ -333,6 +373,38 @@ export class NetworkComponent implements OnInit { }); } + public updateAdjacentDrugSelection(event, stabil: boolean) { + this.networkHandler.activeNetwork.drugTargetSelectionExpanded = false; + if (event === this.getSelectedDrugTargetType()) { + return; + } + this.setSelectedDrugTargetType(event); + if (this.networkHandler.activeNetwork.showsAdjacentDrugs()) { + this.updateAdjacentDrugs(false, false).then(() => { + // if (this.networkHandler.activeNetwork.hasDrugsLoaded()) { + // this.updateFoundDrugs(stabil).then(() => { + this.updateAdjacentDrugs(true, stabil); + // }); + // } else { + // this.updateAdjacentDrugs(true, stabil); + // } + }); + } + // else { + // this.updateFoundDrugs(stabil); + // } + } + + public showsAdjacentDrugs(): boolean { + return this.adjacentDrugs; + } + + public updateFoundDrugs(stabl: boolean): Promise<any> { + return new Promise<boolean>(async (resolve, reject) => { + + }); + } + public updateAdjacentDrugs(bool: boolean, stabl: boolean): Promise<any> { return new Promise<boolean>(async (resolve, reject) => { this.loadingScreen.stateUpdate(true); @@ -345,12 +417,21 @@ export class NetworkComponent implements OnInit { const proteinMap = this.getProteinMap(); this.netex.adjacentDrugs(this.drugstoneConfig.config.interactionDrugProtein, this.drugstoneConfig.config.licensedDatasets, this.nodeData.nodes.get()).then(response => { const existingDrugIDs = this.nodeData.nodes.get().filter(n => n.drugstoneId && n.drugstoneType === 'drug').map(n => n.drugstoneId); + const availableDrugTargetTypes = new Set<string>(); for (const interaction of response.pdis) { + if (interaction.actions) { + for (const action of interaction.actions) { + availableDrugTargetTypes.add(action); + } + } + if (this.networkHandler.activeNetwork.getSelectedDrugTargetType() && interaction.actions && !interaction.actions.includes(this.networkHandler.activeNetwork.getSelectedDrugTargetType())) { + continue; + } + const label = interaction.actions && interaction.actions.length > 0 ? interaction.actions.join(',') : undefined; const edge = mapCustomEdge({ from: interaction.protein, to: interaction.drug }, this.drugstoneConfig.currentConfig(), this.drugstoneConfig); - if (proteinMap[edge.from]) { proteinMap[edge.from].forEach(from => { if (addedEdge[from] && addedEdge[from].indexOf(edge.to) !== -1) { @@ -359,6 +440,9 @@ export class NetworkComponent implements OnInit { const e = JSON.parse(JSON.stringify(edge)); e.from = from; e.to = edge.to; + if (label) { + e.label = label; + } this.adjacentDrugEdgesList.push(e); if (!addedEdge[from]) { addedEdge[from] = [edge.to]; @@ -367,11 +451,16 @@ export class NetworkComponent implements OnInit { } }); } + this.networkHandler.activeNetwork.setDrugTargetTypes(Array.from(availableDrugTargetTypes), true); } + const addedDrugs = new Set<string>(); + Object.values(addedEdge).forEach(targets => { // @ts-ignore + targets.forEach(t => addedDrugs.add(t)); + }); for (const drug of response.drugs) { drug.group = 'foundDrug'; drug.id = getDrugNodeId(drug); - if (!existingDrugIDs.includes(drug.drugstoneId)) { + if (!existingDrugIDs.includes(drug.drugstoneId) && addedDrugs.has(drug.drugstoneId)) { existingDrugIDs.push(drug.drugstoneId); this.adjacentDrugList.push(mapCustomNode(drug, this.drugstoneConfig.currentConfig(), this.drugstoneConfig)); } @@ -633,7 +722,7 @@ export class NetworkComponent implements OnInit { public hasDrugsLoaded(): boolean { if (this.nodeData && this.nodeData.nodes) { for (const node of this.nodeData.nodes.get()) { - if (node.drugstoneType && node.drugstoneId === 'drug') { + if (node.drugstoneType && node.drugstoneType === 'drug') { return true; } } diff --git a/src/index.html b/src/index.html index c25ff9799af8d2b4f27f96f27f8a8dc57b35ef78..29e12e9ebccb0a3ac048fbb4acab489dd983e7d6 100644 --- a/src/index.html +++ b/src/index.html @@ -115,8 +115,8 @@ menu<br> <!-- task-id="ks38WxeCSdbXk2cajKACinnUnCHWbf4I" --> <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": "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"}]}'> + config='{"customEdges":{"default":true, "selectable":false},"licensedDatasets": true, "showAdvAnalysisContent":["drug-search", "enrichment-gprofiler", "enrichment-digest", "search-ndex"],"identifier":"symbol","showSimpleAnalysis":true, "title":"ROBUST output network", "taskDrugName": "Drug Search", "showLegendNodes": true, "showLegendEdges": true, "showSidebar": "left", "showOverview": true, "legendPos": "left", "legendClass": "legend", "showQuery": true, "showItemSelector": true,"showSimpleAnalysis": true,"showAdvAnalysis": true,"showSelection": true,"showTasks": true,"showNetworkMenu": "right","showLegend": true,"showNetworkMenuButtonExpression": true, "showNetworkMenuButtonScreenshot": true,"showNetworkMenuButtonExportGraphml": true,"showNetworkMenuButtonAdjacentDrugs": true,"showNetworkMenuButtonCenter": true,"showConnectGenes": true,"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": "KDR", "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>