Select Git revision
analysis-panel.component.html
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
analysis-panel.component.html 12.77 KiB
<div *ngIf="token">
<div class="card analysis">
<header class="card-header">
<p class="card-header-title">
<span class="icon">
<i class="fas fa-flask" aria-hidden="true"></i>
</span>
Analysis Results
</p>
<a (click)="close()" class="card-header-icon" aria-label="close">
<span class="icon">
<i class="fas fa-times" aria-hidden="true"></i>
</span>
</a>
</header>
<div class="card-content" [class.network-view-settings]="tab === 'network'">
<div class="tabs is-centered tabs-header">
<ul>
<li [class.is-active]="tab === 'table'"><a (click)="tab = 'table'">Table</a></li>
<li [class.is-active]="tab === 'network'"><a (click)="tab = 'network'">Network</a></li>
<li [class.is-active]="tab === 'meta'"><a (click)="tab = 'meta'">Parameters</a></li>
</ul>
</div>
<div class="tab-content meta" *ngIf="task && task.info.done" [class.is-visible]="tab === 'meta'">
<div *ngIf="task">
<p *ngIf="task.info.algorithm !== 'quick' && task.info.algorithm !== 'super'">
Algorithm: <strong class="has-text-normal">{{algorithmNames[task.info.algorithm]}}</strong>
</p>
<div>
<table class="table is-narrow">
<tbody>
<tr *ngIf="task.info.parameters.resultSize !== undefined">
<td>Result Size</td>
<td>{{task.info.parameters.resultSize}}</td>
</tr>
<tr *ngIf="task.info.parameters.k !== undefined">
<td>K</td>
<td>{{task.info.parameters.k}}</td>
</tr>
<tr *ngIf="task.info.parameters.numTrees !== undefined">
<td>Number of trees</td>
<td>{{task.info.parameters.numTrees}}</td>
</tr>
<tr *ngIf="task.info.parameters.tolerance !== undefined">
<td>Tolerance</td>
<td>{{task.info.parameters.tolerance}}</td>
</tr>
<tr *ngIf="task.info.parameters.dampingFactor !== undefined">
<td>Damping Factor</td>
<td>{{task.info.parameters.dampingFactor}}</td>
</tr>
<tr *ngIf="task.info.parameters.maxDeg !== undefined">
<td>Maximum Degree</td>
<td>{{task.info.parameters.maxDeg}}</td>
</tr>
<tr *ngIf="task.info.parameters.hubPenalty !== undefined">
<td>Hub Penality</td>
<td>{{task.info.parameters.hubPenalty}}</td>
</tr>
<tr *ngIf="task.info.parameters.includeIndirectDrugs !== undefined && task.info.target === 'drug'">
<td>Include indirect drugs</td>
<td>
<i *ngIf="task.info.parameters.includeIndirectDrugs" class="fa fa-check"></i>
<i *ngIf="!task.info.parameters.includeIndirectDrugs" class="fa fa-times"></i>
</td>
</tr>
<tr *ngIf="task.info.parameters.includeNonApprovedDrugs !== undefined && task.info.target === 'drug'">
<td>Include non-approved drugs</td>
<td>
<i *ngIf="task.info.parameters.includeNonApprovedDrugs" class="fa fa-check"></i>
<i *ngIf="!task.info.parameters.includeNonApprovedDrugs" class="fa fa-times"></i>
</td>
</tr>
</tbody>
</table>
</div>
<div *ngIf="task.info.algorithm === 'quick' || task.info.algorithm === 'super'">
<p>
Algorithm: <strong>{{algorithmNames['multisteiner']}}</strong>
</p>
<table class="table is-narrow">
<tbody>
<tr>
<td>Number of Trees</td>
<td>1</td>
</tr>
<tr>
<td>Tolerance</td>
<td>0</td>
</tr>
<tr>
<td>Hub Penality</td>
<td>1</td>
</tr>
</tbody>
</table>
<p>
Algorithm: <strong>{{algorithmNames['closeness']}}</strong>
</p>
<table class="table is-narrow">
<tbody>
<tr>
<td>Include indirect drugs</td>
<td>
<i class="fa fa-times"></i>
</td>
</tr>
<tr>
<td>Include non-approved drugs</td>
<td>
<i class="fa fa-check"></i>
</td>
</tr>
<tr>
<td>Hub Penality</td>
<td>1</td>
</tr>
<tr>
<td>Result Size</td>
<td>10</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="tab-content" *ngIf="task && task.info.done" [class.is-visible]="tab === 'network'">
<div class="card-image canvas-content" #networkWithLegend>
<div *ngIf="myConfig.showLegend">
<app-network-legend [config]="myConfig" [context]="legendContext"></app-network-legend>
</div>
<div class="parent fullheight">
<div class="center image1 fullheight" #network>
<button class="button is-loading center" alt="loading...">Loading</button>
</div>
</div>
</div>
<footer *ngIf="myConfig.showFooter" class="card-footer toolbar network-footer-toolbar">
<ng-container *ngIf="myConfig.showFooterButtonScreenshot">
<button class="button is-primary is-rounded has-tooltip"
pTooltip="Take a screenshot of the current network." tooltipPosition="top" (click)="toImage()">
<span class="icon">
<i class="fas fa-camera" aria-hidden="true"></i>
</span>
<span [ngClass]="{'text-normal':smallStyle}">
Screenshot
</span>
</button>
</ng-container>
<div class="field">
<p class="control footer-buttons">
<a [href]="graphmlLink()" class="button is-success is-rounded has-tooltip"
pTooltip="Export this network as .graphml file." tooltipPosition="top">
<span class="icon">
<i class="fas fa-download" aria-hidden="true"></i>
</span>
<span [ngClass]="{'text-normal':smallStyle}">
Export as .graphml
</span>
</a>
</p>
</div>
<!-- <div class="field">-->
<!-- <p class="control footer-buttons">-->
<!-- <button class="button is-danger is-rounded has-tooltip" data-tooltip="Delete the current analysis."-->
<!-- (click)="analysis.removeTask(token); close()">-->
<!-- <span class="icon">-->
<!-- <i class="fas fa-trash" aria-hidden="true"></i>-->
<!-- </span>-->
<!-- <span>-->
<!-- Delete Analysis-->
<!-- </span>-->
<!-- </button>-->
<!-- </p>-->
<!-- </div>-->
<div class="footer-buttons dropdown is-up" [class.is-active]="expressionExpanded">
<div class="dropdown-trigger">
<button (click)="expressionExpanded=!expressionExpanded"
class="button is-rounded is-primary" [class.is-outlined]="!selectedTissue"
aria-haspopup="true" aria-controls="dropdown-menu" [ngClass]="{'button-small':smallStyle}"
pTooltip="Tissue expression data is provided by the GTEx project." tooltipPosition="top"
>
<div [ngClass]="{'text-small':smallStyle}">
<span *ngIf="!selectedTissue">Tissue</span>
<span *ngIf="selectedTissue">{{selectedTissue.name}}</span>
<span class="icon is-small">
<i class="fas"
[class.fa-angle-up]="expressionExpanded"
[class.fa-angle-left]="!expressionExpanded" aria-hidden="true"></i>
</span>
</div>
</button>
</div>
<div class="dropdown-menu" id="dropdown-menu" role="menu">
<div class="dropdown-content tissue-dropdown" [ngClass]="{'button-small':smallStyle}">
<div class="scroll-area" [ngClass]="{'text-small':smallStyle}">
<a (click)="selectTissue(null)"
[class.is-active]="!selectedTissue"
class="dropdown-item">
None
</a>
<a *ngFor="let tissue of analysis.getTissues()"
(click)="selectTissue(tissue)"
[class.is-active]="selectedTissue && tissue.netexId === selectedTissue.netexId"
class="dropdown-item">
{{tissue.name}}
</a>
</div>
</div>
</div>
</div>
<app-toggle class="footer-buttons" textOn="Seeds On" textOff="Off"
tooltipOn="Highlight seed nodes ON."
tooltipOff="Highlight seed nodes OFF."
[smallStyle]="smallStyle"
[value]="highlightSeeds" (valueChange)="updateHighlightSeeds($event)"></app-toggle>
<app-toggle *ngIf="task.info.target === 'drug-target'" class="footer-buttons" textOn="Drugs On" textOff="Off"
tooltipOn="Display adjacent drugs ON."
tooltipOff="Display adjacent drugs OFF."
[smallStyle]="smallStyle"
[value]="adjacentDrugs" (valueChange)="updateAdjacentDrugs($event)"></app-toggle>
<app-toggle class="footer-buttons" textOn="Animation On" textOff="Off"
tooltipOn="Enable the network animation."
tooltipOff="Disable the network animation and freeze nodes."
[smallStyle]="smallStyle"
[value]="physicsEnabled" (valueChange)="updatePhysicsEnabled($event)"></app-toggle>
</footer>
</div>
<div class="content tab-content scrollable table-tab" *ngIf="task && task.info.done" [class.is-visible]="tab === 'table'">
<div class="field has-addons" *ngIf="tableHasScores && task.info.algorithm !== 'proximity'">
<p class="control">
<button class="button is-rounded has-tooltip" pTooltip="Normalize the scores" tooltipPosition="top"
[class.is-primary]="tableNormalize" (click)="toggleNormalization(true)">
<span class="icon is-small">
<i class="fa fa-ruler-vertical"></i>
</span>
<span>Normalization On</span>
</button>
</p>
<p class="control">
<button class="button is-rounded has-tooltip" pTooltip="Disable normalization of the scores." tooltipPosition="top"
[class.is-primary]="!tableNormalize" (click)="toggleNormalization(false)">
<span>Off</span>
</button>
</p>
</div>
<div *ngIf="tableDrugs.length === 0 && task.info.target === 'drug'">
<i>No drugs have been found.</i>
</div>
<div *ngIf="tableDrugs.length > 0" class="table-header">
<h4 class="is-4">
<span class="icon"><i class="fa fa-capsules"></i></span>
<span>Drugs</span>
</h4>
<a [href]="downloadLink('drugs')" class="button is-primary is-outlined is-pulled-right is-small">
<span class="icon"><i class="fa fa-download"></i></span>
<span>Download</span>
</a>
</div>
<app-drug-table [tableDrugs]="tableDrugs" [tableDrugScoreTooltip]="tableDrugScoreTooltip" [tableHasScores]="tableHasScores"></app-drug-table>
<div *ngIf="tableProteins.length > 0" class="table-header">
<h4 class="is-4">
<span class="icon"><i class="fa fa-dna"></i></span>
<span>Proteins</span>
</h4>
<a [href]="downloadLink('proteins')" class="button is-primary is-outlined is-pulled-right is-small">
<span class="icon"><i class="fa fa-download"></i></span>
<span>Download</span>
</a>
</div>
<app-prot-table [tableHasScores]="tableHasScores" [tableProteins]="tableProteins" [tableProteinScoreTooltip]="tableDrugScoreTooltip" [tableProteinSelection]="tableProteinSelection" [tableSelectedProteins]="tableSelectedProteins"></app-prot-table>
</div>
</div>
</div>
</div>