Skip to content
Snippets Groups Projects
Commit 5c505f38 authored by Mhaned Oubounyt's avatar Mhaned Oubounyt Committed by Julian Matschinske
Browse files

Analyses tabs

parent 86f45203
No related branches found
No related tags found
No related merge requests found
...@@ -40,7 +40,10 @@ export class AnalysisService { ...@@ -40,7 +40,10 @@ export class AnalysisService {
} }
resetSelection() { resetSelection() {
this.selectedProteins = new Map<string, Protein>(); const oldSelection = this.selectedProteins.values();
for (const protein of oldSelection) {
this.removeProtein(protein);
}
} }
inSelection(protein: Protein): boolean { inSelection(protein: Protein): boolean {
......
import {BrowserModule} from '@angular/platform-browser'; import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core'; import {NgModule} from '@angular/core';
import { NgSelectModule } from '@ng-select/ng-select'; import {NgSelectModule} from '@ng-select/ng-select';
import {CommonModule} from '@angular/common'; import {CommonModule} from '@angular/common';
import {FormsModule} from '@angular/forms'; import {FormsModule} from '@angular/forms';
...@@ -16,7 +16,8 @@ import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; ...@@ -16,7 +16,8 @@ import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {ProteinAnalysisComponent} from './components/protein-analysis/protein-analysis.component'; import {ProteinAnalysisComponent} from './components/protein-analysis/protein-analysis.component';
import {SelectDatasetComponent} from './components/select-dataset/select-dataset.component'; import {SelectDatasetComponent} from './components/select-dataset/select-dataset.component';
import {AnalysisWindowComponent} from './components/analysis-window/analysis-window.component'; import {AnalysisWindowComponent} from './components/analysis-window/analysis-window.component';
import { TaskListComponent } from './components/task-list/task-list.component'; import {TaskListComponent} from './components/task-list/task-list.component';
import {AnalysisService} from './analysis.service';
@NgModule({ @NgModule({
...@@ -40,7 +41,7 @@ import { TaskListComponent } from './components/task-list/task-list.component'; ...@@ -40,7 +41,7 @@ import { TaskListComponent } from './components/task-list/task-list.component';
HttpClientModule, HttpClientModule,
BrowserAnimationsModule, BrowserAnimationsModule,
], ],
providers: [], providers: [AnalysisService],
bootstrap: [AppComponent] bootstrap: [AppComponent]
}) })
......
...@@ -22,36 +22,42 @@ ...@@ -22,36 +22,42 @@
<footer class="card-footer"> <footer class="card-footer">
<div class="field has-addons"> <div class="field has-addons">
<p class="control"> <p class="control">
<button class="button is-rounded" (click)="toggleDrugs(true)"> <button class="button is-rounded" [class.is-primary]="showDrugs" (click)="toggleDrugs(true)">
<span class="icon is-small"> <span class="icon is-small">
<i class="fas fa-capsules"></i> <i class="fas fa-capsules"></i>
</span> </span>
<span>Drugs On</span> <span>Drugs On</span>
</button> </button>
</p> </p>
<p class="control"> <p class="control">
<button class="button is-rounded" (click)="toggleDrugs(false)"> <button class="button is-rounded" [class.is-primary]="!showDrugs" (click)="toggleDrugs(false)">
<span class="icon is-small"> <span>Off</span>
<i class="fas fa-times"></i>
</span>
<span>Drugs Off</span>
</button> </button>
</p> </p>
</div> </div>
<button class="card-footer-item button is-primary"> <button class="card-footer-item button is-primary" [disabled]="true">
<span class="icon"> <span class="icon">
<i class="fas fa-cloud-download-alt" aria-hidden="true"></i> <i class="fas fa-cloud-download-alt" aria-hidden="true"></i>
</span> <span>Export Results</span> </span>
<span>
Export Results
</span>
</button> </button>
<button class="card-footer-item button"> <button class="card-footer-item button" [disabled]="true">
<span class="icon"> <span class="icon">
<i class="fas fa-cloud-download-alt" aria-hidden="true"></i> <i class="fas fa-cloud-download-alt" aria-hidden="true"></i>
</span> <span>Save as PNG</span> </span>
<span>
Save as PNG
</span>
</button> </button>
<button class="card-footer-item button is-danger"> <button class="card-footer-item button is-danger" [disabled]="true">
<span class="icon"> <span class="icon">
<i class="fas fa-trash" aria-hidden="true"></i> <i class="fas fa-trash" aria-hidden="true"></i>
</span> <span>Delete Analysis</span> </span>
<span>
Delete Analysis
</span>
</button> </button>
</footer> </footer>
</div> </div>
......
...@@ -33,7 +33,7 @@ export class AnalysisWindowComponent implements OnInit, OnChanges { ...@@ -33,7 +33,7 @@ export class AnalysisWindowComponent implements OnInit, OnChanges {
private network: any; private network: any;
private nodeData: { nodes: any, edges: any } = {nodes: null, edges: null}; private nodeData: { nodes: any, edges: any } = {nodes: null, edges: null};
private drugNodes = []; private drugNodes = [];
private showDrugs = false; public showDrugs = false;
private result: any; private result: any;
constructor(private http: HttpClient, private analysis: AnalysisService) { constructor(private http: HttpClient, private analysis: AnalysisService) {
...@@ -55,6 +55,7 @@ export class AnalysisWindowComponent implements OnInit, OnChanges { ...@@ -55,6 +55,7 @@ export class AnalysisWindowComponent implements OnInit, OnChanges {
this.result = result; this.result = result;
this.networkEl.nativeElement.innerHTML = ''; this.networkEl.nativeElement.innerHTML = '';
this.network = null; this.network = null;
this.showDrugs = false;
this.nodeData = {nodes: null, edges: null}; this.nodeData = {nodes: null, edges: null};
this.createNetwork(result); this.createNetwork(result);
} }
...@@ -215,6 +216,7 @@ export class AnalysisWindowComponent implements OnInit, OnChanges { ...@@ -215,6 +216,7 @@ export class AnalysisWindowComponent implements OnInit, OnChanges {
nodes.push(this.mapProteinToNode(protein)); nodes.push(this.mapProteinToNode(protein));
} }
this.drugNodes = [];
for (const drug of result.drugs) { for (const drug of result.drugs) {
this.drugNodes.push(this.mapDrugToNode(drug)); this.drugNodes.push(this.mapDrugToNode(drug));
} }
......
...@@ -2,28 +2,66 @@ ...@@ -2,28 +2,66 @@
<div class="modal-background"></div> <div class="modal-background"></div>
<div class="modal-card"> <div class="modal-card">
<header class="modal-card-head"> <header class="modal-card-head">
<p class="modal-card-title">Launch Protein Analysis</p> <p class="modal-card-title">Launch Analysis</p>
<button class="delete" aria-label="close" (click)="close()"></button> <button (click)="close()" class="delete" aria-label="close"></button>
</header> </header>
<div class="modal-card-body"> <section class="modal-card-body">
<div class="tabs"> <div class="tabs is-toggle is-medium is-fullwidth">
<ul> <ul>
<li [class.is-active]="algorithm === 'dummy'"><a (click)="algorithm = 'dummy'">Dummy</a></li> <li [class.is-active]="algorithm === 'dummy'"><a (click)="algorithm = 'dummy'" class="is-boxed is-medium">Dummy</a>
<li [class.is-active]="algorithm === 'trustrank'"><a (click)="algorithm = 'trustrank'">Trustrank</a></li> </li>
<li [class.is-active]="algorithm === 'trustrank'"><a (click)="algorithm = 'trustrank'"
class="is-boxed is-medium">Trustrank</a></li>
<li [class.is-active]="algorithm === 'keypathwayminer'"><a (click)="algorithm = 'keypathwayminer'"
class="is-boxed is-medium">KeyPathwayMiner</a></li>
<li [class.is-active]="algorithm === 'multisteiner'"><a (click)="algorithm = 'multisteiner'"
class="is-boxed is-medium">Multi-Steiner</a></li>
</ul> </ul>
</div> </div>
<div *ngIf="algorithm === 'dummy'">
NO PARAMS <div *ngIf="algorithm==='trustrank'">
<div class="field">
<p class="control has-icons-left has-icons-right">
<label>Strain</label>
<input [(ngModel)]="trustrankStrain" class="input" type="text" placeholder="Strain" required>
</p>
<p class="control has-icons-left has-icons-right">
<label>Damping Factor</label>
<input [(ngModel)]="trustrankDampingFactor" class="input" type="number" placeholder="Damping factor"
min="0" max="1"
required>
</p>
<p class="control has-icons-left has-icons-right">
<label>Result Size</label>
<input [(ngModel)]="trustrankResultSize" class="input" type="number" placeholder="Result size" required>
</p>
</div>
</div> </div>
<div *ngIf="algorithm === 'trustrank'">
SHOW PARAMETERS HERE LATER <div *ngIf="algorithm==='keypathwayminer'">
<h1>Key Pathway Miner</h1>
</div> </div>
</div>
<div *ngIf="algorithm==='multisteiner'">
<h1>Multi-Steiner</h1>
<p class="control has-icons-left has-icons-right">
<label>Virus Strain</label>
<input [(ngModel)]="multisteinerStrain" class="input" type="text" placeholder="Virus Strain" required>
</p>
<p class="control has-icons-left has-icons-right">
<label>Number of Steiner trees to return</label>
<input [(ngModel)]="multisteinerNumTrees" class="input" type="number" min="1" max="25"
placeholder="Number of Steiner trees to return" required>
</p>
</div>
</section>
<footer class="modal-card-foot"> <footer class="modal-card-foot">
<button class="button is-success" (click)="startTask(); close()"> <button (click)="startTask(); close()" class="button is-success">Launch</button>
<span class="icon"><i class="fa fa-play"></i></span> <button (click)="close()" class="button">Close</button>
<span>Start</span>
</button>
</footer> </footer>
</div> </div>
</div> </div>
...@@ -13,12 +13,20 @@ export class ProteinAnalysisComponent implements OnInit { ...@@ -13,12 +13,20 @@ export class ProteinAnalysisComponent implements OnInit {
@Output() @Output()
public showChange = new EventEmitter<boolean>(); public showChange = new EventEmitter<boolean>();
public algorithm: 'dummy' | 'trustrank' = 'dummy'; public algorithm: 'dummy' | 'trustrank' | 'keypathwayminer' | 'multisteiner';
// Trustrank Parameters
public trustrankStrain = 'SARS_CoV2';
public trustrankDampingFactor = 0.85;
public trustrankResultSize = 20;
public trustrankNumThreads = 1;
public trustrankDatasets = [];
public trustrankIgnoredEdgeTypes = [];
// Multisteiner Parameters
public multisteinerStrain = 'SARS_CoV2';
public multisteinerNumTrees = 5;
public strain = 'SARS_CoV2';
public dampingFactor = 0.85;
public resultSize = 20;
private /*sic!*/ numThreads = 1;
constructor(public analysis: AnalysisService) { constructor(public analysis: AnalysisService) {
} }
...@@ -39,12 +47,18 @@ export class ProteinAnalysisComponent implements OnInit { ...@@ -39,12 +47,18 @@ export class ProteinAnalysisComponent implements OnInit {
if (this.algorithm === 'dummy') { if (this.algorithm === 'dummy') {
// No parameters for dummy // No parameters for dummy
} else if (this.algorithm === 'trustrank') { } else if (this.algorithm === 'trustrank') {
parameters.strain = this.strain; parameters.strain = this.trustrankStrain;
parameters.datasets = []; parameters.datasets = [];
parameters.ignored_edge_types = []; parameters.ignored_edge_types = [];
parameters.damping_factor = this.dampingFactor; parameters.damping_factor = this.trustrankDampingFactor;
parameters.result_size = this.resultSize; parameters.result_size = this.trustrankResultSize;
parameters.num_threads = this.numThreads; parameters.num_threads = this.trustrankNumThreads;
} else if (this.algorithm === 'keypathwayminer') {
// TODO
} else if (this.algorithm === 'multisteiner') {
parameters.strain = this.multisteinerStrain;
parameters.num_trees = this.multisteinerNumTrees;
} }
await this.analysis.startAnalysis(this.algorithm, parameters); await this.analysis.startAnalysis(this.algorithm, parameters);
......
...@@ -137,9 +137,6 @@ div.covex.explorer { ...@@ -137,9 +137,6 @@ div.covex.explorer {
width: calc(100% - 20px); width: calc(100% - 20px);
position: relative; position: relative;
margin-top: 0; margin-top: 0;
/* Just for looks*/
z-index: 30;
padding: 0;
} }
i.fas.is-success { i.fas.is-success {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment