From 7f6059103ba1e00a2b3dd44536e49938bcf1cfdd Mon Sep 17 00:00:00 2001
From: AndiMajore <andi.majore@googlemail.com>
Date: Fri, 4 Nov 2022 21:01:17 +0100
Subject: [PATCH] added tissue based tmp normalization

---
 .../components/info-tile/info-tile.component.html  |  4 ++--
 src/app/components/network/network.component.ts    | 14 ++++++++++----
 .../netex-controller/netex-controller.service.ts   |  7 +++++++
 3 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/src/app/components/info-tile/info-tile.component.html b/src/app/components/info-tile/info-tile.component.html
index 9b1cf0a4..5906f7e2 100644
--- a/src/app/components/info-tile/info-tile.component.html
+++ b/src/app/components/info-tile/info-tile.component.html
@@ -72,11 +72,11 @@
       *ngIf="getExpressionScore() != null"
       [ngClass]="{ 'text-normal': drugstoneConfig.smallStyle }"
     >
-      <b><span>Expression:</span></b>
+      <b><span>Median tissue expression (TPM):</span></b>
       <span class="is-capitalized"> {{ getExpressionScore() | number }}</span>
       <span
         class="icon has-text-info"
-        pTooltip="Tissue expression data is provided by the GTEx project. Unit is transcript per million."
+        pTooltip="Median expression data is provided by the GTEx project. Unit is TPM (transcript per million)."
         [tooltipStyleClass]="'drgstn drgstn-tooltip drgstn-tooltip-left'"
         tooltipPosition="left"
       >
diff --git a/src/app/components/network/network.component.ts b/src/app/components/network/network.component.ts
index fbd90923..5487e379 100644
--- a/src/app/components/network/network.component.ts
+++ b/src/app/components/network/network.component.ts
@@ -426,7 +426,7 @@ export class NetworkComponent implements OnInit {
           proteinNodes.push(element);
         }
       });
-      this.netex.tissueExpressionGenes(this.selectedTissue, proteinNodes).subscribe((response) => {
+      this.netex.tissueExpressionGenes(this.selectedTissue, proteinNodes).subscribe(async (response) => {
           this.expressionMap = response;
           const updatedNodes = [];
           this.nodeRenderer = pieChartContextRenderer;
@@ -443,7 +443,13 @@ export class NetworkComponent implements OnInit {
               });
             }
           });
-          const maxExpr = Math.max(...Object.values(this.expressionMap));
+          let maxExpr = 1_000_000;
+          await this.netex.maxTissueExpression(this.selectedTissue).then(response => {
+            maxExpr = response.max;
+          }).catch(err => {
+            console.error(err);
+            maxExpr = Math.max(...Object.values(this.expressionMap));
+          });
           const exprMap = {};
           for (const [drugstoneId, expressionlvl] of Object.entries(this.expressionMap)) {
             networkIdMapping[drugstoneId].forEach(networkId => {
@@ -501,7 +507,7 @@ export class NetworkComponent implements OnInit {
   }
 
   public getGradient(nodeId: string) {
-    return (Object.keys(this.gradientMap).length && this.gradientMap[nodeId] != null)  ? this.gradientMap[nodeId] : 1.0;
+    return (Object.keys(this.gradientMap).length && this.gradientMap[nodeId] != null) ? this.gradientMap[nodeId] : 1.0;
   }
 
   /**
@@ -542,7 +548,7 @@ export class NetworkComponent implements OnInit {
           this.nodeRenderer
         )
       ),
-      updatedNodes.push(node);
+        updatedNodes.push(node);
     }
     this.nodeData.nodes.update(updatedNodes);
     this.loadingScreen.stateUpdate(false);
diff --git a/src/app/services/netex-controller/netex-controller.service.ts b/src/app/services/netex-controller/netex-controller.service.ts
index f4aa4e37..e54280e5 100644
--- a/src/app/services/netex-controller/netex-controller.service.ts
+++ b/src/app/services/netex-controller/netex-controller.service.ts
@@ -47,6 +47,13 @@ export class NetexControllerService {
     return this.http.post('https://api.digest-validation.net/set', payload).toPromise();
   }
 
+  public maxTissueExpression(tissue: Tissue): Promise<any> {
+    const params = new HttpParams()
+      .set('tissue', tissue.drugstoneId);
+    return this.http.get(environment.backend + 'tissue_max_expression/', {params}).toPromise();
+  }
+
+
   public tissueExpressionGenes(tissue: Tissue, nodes: Node[]): Observable<any> {
     /**
      * Returns the expression in the given tissue for given nodes and cancerNodes
-- 
GitLab