Skip to content
Snippets Groups Projects
Commit ab3a699d authored by AndiMajore's avatar AndiMajore
Browse files

added add disorders by protein association to explorer

parent 36cf714a
Branches
Tags
No related merge requests found
......@@ -13,17 +13,19 @@ export class NetworkLegendComponent implements OnInit {
@Input() config: IConfig;
private contextNodeGroupsToDelete = {
'explorer': ['foundNode', 'foundDrug', 'seedNode', 'default'],
'adjacentDrugs': ['foundNode', 'seedNode', 'default'],
'drugTarget': ['foundDrug', 'seedNode', 'default'],
'drug': ['seedNode', 'default'],
'drugTargetAndSeeds': ['foundDrug', 'default'],
'drugAndSeeds': ['default']
'explorer': ['foundNode', 'foundDrug', 'seedNode', 'default', 'defaultDisorder'],
'adjacentDrugs': ['foundNode', 'seedNode', 'default', 'defaultDisorder'],
'adjacentDisorders': ['foundDrug', 'foundNode', 'seedNode', 'default'],
'drugTarget': ['foundDrug', 'seedNode', 'default', 'defaultDisorder'],
'drug': ['seedNode', 'default', 'defaultDisorder'],
'drugTargetAndSeeds': ['foundDrug', 'default', 'defaultDisorder'],
'drugAndSeeds': ['default', 'defaultDisorder']
}
private contextEdgeGroupsToDelete = {
'explorer': ['default'],
'adjacentDrugs': ['default'],
'adjacentDisorders': ['default'],
'drugTarget': ['default'],
'drug': ['default'],
'drugTargetAndSeeds': ['default'],
......
......@@ -155,6 +155,19 @@ export const defaultConfig: IConfig = {
shape: 'diamond',
type: 'default drug type',
},
defaultDisorder: {
groupName: 'Disorders',
color: {
border: '#ffa62f',
background: '#ffa62f',
highlight: {
border: '#ffa62f',
background: '#ffa62f'
},
},
shape: 'diamond',
type: 'default disorder type',
},
seedNode: {
groupName: 'Seed Nodes',
shape: 'triangle',
......
......@@ -6,6 +6,7 @@ export interface Node {
id: string;
type: string;
netexId?: string;
drugId?:string;
uniprotAc?: string;
ensg?: Array<string>;
group?: string;
......@@ -32,7 +33,7 @@ export interface Tissue {
}
export type legendContext = 'explorer' | 'adjacentDrugs' | 'drug' | 'drugTarget' |
'drugTargetAndSeeds' | 'drugAndSeeds';
'drugTargetAndSeeds' | 'drugAndSeeds' | 'adjacentDisorders';
/// netexId to expressionlvl
export type NodeAttributeMap = { string: number } | {};
......@@ -120,6 +121,12 @@ export function getDrugNodeId(drug: Drug) {
return drug.netexId
}
// export function getDisorderNodeId(disorder: Disorder) {
// /**
// * Returns backend_id of Drug object
// */
// return disorder.netexId
export function getNodeId(node: Node) {
/**
* Returns backend_id of Gene object
......
......@@ -299,7 +299,16 @@
[value]="adjacentDrugs"
(valueChange)="updateAdjacentDrugs($event)"
></app-toggle>
<app-toggle
class="footer-buttons network-footer-toolbar-element"
textOn="Disorders"
textOff="Off"
tooltipOn="Display adjacent disorders ON."
tooltipOff="Display adjacent disorders OFF."
[smallStyle]="smallStyle"
[value]="adjacentDisorders"
(valueChange)="updateAdjacentDisorders($event)"
></app-toggle>
<app-toggle
class="footer-buttons network-footer-toolbar-element"
textOn="Animation"
......
......@@ -152,9 +152,13 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit {
private dumpPositions = false;
public physicsEnabled = false;
public adjacentDrugs = false;
public adjacentDisorders = false;
public adjacentDrugList: Node[] = [];
public adjacentDrugEdgesList: Node[] = [];
public adjacentDisorderList: Node[] = [];
public adjacentDisorderEdgesList: Node[] = [];
public queryItems: Wrapper[] = [];
public showAnalysisDialog = false;
public showThresholdDialog = false;
......@@ -427,7 +431,6 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit {
}
}
});
this.networkInternal.on('click', (properties) => {
const nodeIds: Array<string> = properties.nodes;
if (nodeIds != null && nodeIds.length > 0) {
......@@ -485,6 +488,32 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit {
});
}
public updateAdjacentDisorders(bool: boolean){
this.adjacentDisorders = bool;
if (this.adjacentDisorders){
this.netex.adjacentDisorders(this.nodeData.nodes).subscribe(response => {
for (const interaction of response.pdis) {
const edge = {from: interaction.protein, to: interaction.disorder};
this.adjacentDisorderEdgesList.push(mapCustomEdge(edge, this.myConfig));
}
for (const disorder of response.disorders) {
disorder.group = 'defaultDisorder';
disorder.id = disorder.netexId;
this.adjacentDisorderList.push(mapCustomNode(disorder, this.myConfig))
}
this.nodeData.nodes.add(this.adjacentDisorderList);
this.nodeData.edges.add(this.adjacentDisorderEdgesList);
});
this.legendContext = 'adjacentDisorders';
}else {
this.nodeData.nodes.remove(this.adjacentDisorderList);
this.nodeData.edges.remove(this.adjacentDisorderEdgesList);
this.adjacentDisorderList = [];
this.adjacentDisorderEdgesList = [];
this.legendContext = 'explorer';
}
}
public updateAdjacentDrugs(bool: boolean) {
this.adjacentDrugs = bool;
if (this.adjacentDrugs) {
......
......@@ -11,7 +11,8 @@ import { InteractionDrugProteinDB, InteractionProteinProteinDB } from 'src/app/c
})
export class NetexControllerService {
constructor(private http: HttpClient) { }
constructor(private http: HttpClient) {
}
public async getTask(token): Promise<any> {
/**
......@@ -95,16 +96,27 @@ export class NetexControllerService {
return this.http.get(`${environment.backend}tissue_expression/`, {params});
}
public adjacentDisorders(nodes: Node[]): Observable<any> {
const genesBackendIds = nodes.map((node: Node) => node.netexId && !node.drugId ? node.netexId.slice(1) : undefined).filter(id => id != null);
const drugsBackendIds = nodes.map((node: Node) => node.drugId && node.netexId ? node.netexId.slice(1) : undefined).filter(id => id != null);
const params = {
proteins: genesBackendIds,
drugs: drugsBackendIds,
};
console.log(params)
return this.http.post<any>(`${environment.backend}adjacent_disorders/`, params);
}
public adjacentDrugs(pdiDataset: InteractionDrugProteinDB, nodes: Node[]): Observable<any> {
/**
* Returns the expression in the given tissue for given nodes and cancerNodes
*/
// slice prefix of netex id away for direct lookup in db, if node not mapped to db, replace by undefined
const genesBackendIds = nodes.map( (node: Node) => node.netexId ? node.netexId.slice(1) : undefined);
const genesBackendIds = nodes.map((node: Node) => node.netexId ? node.netexId.slice(1) : undefined).filter(id => id != null);
const params = {
pdi_dataset: pdiDataset,
proteins: genesBackendIds
}
};
return this.http.post<any>(`${environment.backend}adjacent_drugs/`, params);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment