From 5a40f9574b4644940dd9068a096fa8b44276d262 Mon Sep 17 00:00:00 2001
From: Julian Matschinske <ge93nar@mytum.de>
Date: Tue, 14 Apr 2020 13:36:42 +0200
Subject: [PATCH] Extend frontend with option to exclude viral non seed baits

---
 .../analysis-window.component.html            |  7 +++++
 .../launch-analysis.component.html            | 28 +++++++++++++++++++
 .../launch-analysis.component.ts              | 11 ++++++--
 3 files changed, 44 insertions(+), 2 deletions(-)

diff --git a/src/app/components/analysis-window/analysis-window.component.html b/src/app/components/analysis-window/analysis-window.component.html
index c589a593..6c42eac0 100644
--- a/src/app/components/analysis-window/analysis-window.component.html
+++ b/src/app/components/analysis-window/analysis-window.component.html
@@ -59,6 +59,13 @@
                   <i *ngIf="!task.info.parameters.includeNonApprovedDrugs" class="fa fa-times"></i>
                 </td>
               </tr>
+              <tr *ngIf="task.info.parameters.ignoreNonSeedBaits !== undefined && task.info.target === 'drug-target'">
+                <td>Include non-seed viral proteins</td>
+                <td>
+                  <i *ngIf="!task.info.parameters.ignoreNonSeedBaits" class="fa fa-check"></i>
+                  <i *ngIf="task.info.parameters.ignoreNonSeedBaits" class="fa fa-times"></i>
+                </td>
+              </tr>
               <tr *ngIf="task.info.parameters.resultSize">
                 <td>Result Size</td>
                 <td>{{task.info.parameters.resultSize}}</td>
diff --git a/src/app/components/launch-analysis/launch-analysis.component.html b/src/app/components/launch-analysis/launch-analysis.component.html
index f4d81847..036a7041 100644
--- a/src/app/components/launch-analysis/launch-analysis.component.html
+++ b/src/app/components/launch-analysis/launch-analysis.component.html
@@ -70,6 +70,13 @@
                    required>
           </div>
         </div>
+        <div class="field" *ngIf="target === 'drug-target'">
+          <label class="label">Include non-seed viral proteins</label>
+          <app-toggle textOn="Include" textOff="Ignore"
+                      tooltipOn="Include viral proteins that are not seeds."
+                      tooltipOff="Exclude viral proteins that are not seeds."
+                      [(value)]="trustrankIncludeViralNonSeeds"></app-toggle>
+        </div>
         <div class="field">
           <label class="label" for="trustrank-rs">Result Size</label>
           <div class="control">
@@ -97,6 +104,13 @@
                       tooltipOff="Exclude non-approved drugs from the result."
                       [(value)]="closenessIncludeNonApprovedDrugs"></app-toggle>
         </div>
+        <div class="field" *ngIf="target === 'drug-target'">
+          <label class="label">Include non-seed viral proteins</label>
+          <app-toggle textOn="Include" textOff="Ignore"
+                      tooltipOn="Include viral proteins that are not seeds."
+                      tooltipOff="Exclude viral proteins that are not seeds."
+                      [(value)]="closenessIncludeViralNonSeeds"></app-toggle>
+        </div>
         <div class="field">
           <label class="label" for="closeness-rs">Result Size</label>
           <div class="control">
@@ -118,6 +132,13 @@
                       tooltipOff="Exclude non-approved drugs from the result."
                       [(value)]="degreeIncludeNonApprovedDrugs"></app-toggle>
         </div>
+        <div class="field" *ngIf="target === 'drug-target'">
+          <label class="label">Include non-seed viral proteins</label>
+          <app-toggle textOn="Include" textOff="Ignore"
+                      tooltipOn="Include viral proteins that are not seeds."
+                      tooltipOff="Exclude viral proteins that are not seeds."
+                      [(value)]="degreeIncludeViralNonSeeds"></app-toggle>
+        </div>
         <div class="field">
           <label class="label" for="degree-rs">Result Size</label>
           <div class="control">
@@ -190,6 +211,13 @@
             </div>
           </div>
         </div>
+        <div class="field" *ngIf="target === 'drug-target'">
+          <label class="label">Include non-seed viral proteins</label>
+          <app-toggle textOn="Include" textOff="Ignore"
+                      tooltipOn="Include viral proteins that are not seeds."
+                      tooltipOff="Exclude viral proteins that are not seeds."
+                      [(value)]="multisteinerIncludeViralNonSeeds"></app-toggle>
+        </div>
       </div>
     </section>
 
diff --git a/src/app/components/launch-analysis/launch-analysis.component.ts b/src/app/components/launch-analysis/launch-analysis.component.ts
index ed3aaace..c3575198 100644
--- a/src/app/components/launch-analysis/launch-analysis.component.ts
+++ b/src/app/components/launch-analysis/launch-analysis.component.ts
@@ -33,16 +33,19 @@ export class LaunchAnalysisComponent implements OnInit, OnChanges {
   // Trustrank Parameters
   public trustrankIncludeIndirectDrugs = false;
   public trustrankIncludeNonApprovedDrugs = false;
+  public trustrankIncludeViralNonSeeds = true;
   public trustrankDampingFactor = 0.85;
   public trustrankResultSize = 20;
 
   // Closeness Parameters
   public closenessIncludeIndirectDrugs = false;
   public closenessIncludeNonApprovedDrugs = false;
+  public closenessIncludeViralNonSeeds = true;
   public closenessResultSize = 20;
 
   // Degree Parameters
   public degreeIncludeNonApprovedDrugs = false;
+  public degreeIncludeViralNonSeeds = true;
   public degreeResultSize = 20;
 
   // Keypathwayminer Parameters
@@ -51,6 +54,7 @@ export class LaunchAnalysisComponent implements OnInit, OnChanges {
   // Multisteiner Parameters
   public multisteinerNumTrees = 5;
   public multisteinerTolerance = 10;
+  public multisteinerIncludeViralNonSeeds = true;
 
   public hasBaits;
 
@@ -91,16 +95,18 @@ export class LaunchAnalysisComponent implements OnInit, OnChanges {
       parameters.damping_factor = this.trustrankDampingFactor;
       parameters.include_indirect_drugs = this.trustrankIncludeIndirectDrugs;
       parameters.include_non_approved_drugs = this.trustrankIncludeNonApprovedDrugs;
+      parameters.ignore_non_seed_baits = !this.trustrankIncludeViralNonSeeds;
       parameters.result_size = this.trustrankResultSize;
     } else if (this.algorithm === 'closeness') {
       parameters.strain_or_drugs = this.target === 'drug' ? 'drugs' : this.dataset;
       parameters.include_indirect_drugs = this.closenessIncludeIndirectDrugs;
       parameters.include_non_approved_drugs = this.closenessIncludeNonApprovedDrugs;
+      parameters.ignore_non_seed_baits = !this.closenessIncludeViralNonSeeds;
       parameters.result_size = this.closenessResultSize;
     } else if (this.algorithm === 'degree') {
       parameters.strain_or_drugs = this.target === 'drug' ? 'drugs' : this.dataset;
-      parameters.include_indirect_drugs = this.closenessIncludeIndirectDrugs;
-      parameters.include_non_approved_drugs = this.closenessIncludeNonApprovedDrugs;
+      parameters.include_non_approved_drugs = this.degreeIncludeNonApprovedDrugs;
+      parameters.ignore_non_seed_baits = !this.degreeIncludeViralNonSeeds;
       parameters.result_size = this.closenessResultSize;
     } else if (this.algorithm === 'keypathwayminer') {
       parameters.k = this.keypathwayminerK;
@@ -108,6 +114,7 @@ export class LaunchAnalysisComponent implements OnInit, OnChanges {
       parameters.strain_or_drugs = this.dataset;
       parameters.num_trees = this.multisteinerNumTrees;
       parameters.tolerance = this.multisteinerTolerance;
+      parameters.ignore_non_seed_baits = !this.multisteinerIncludeViralNonSeeds;
     }
 
     await this.analysis.startAnalysis(this.algorithm, this.target, parameters);
-- 
GitLab