Skip to content
Snippets Groups Projects
Commit e0b0db4e authored by Lukas Pravda's avatar Lukas Pravda
Browse files

Improve residue-level view

Binding partners are placed along the vector of one of the bonds from the atom they are bound to.
parent 7e5cc4f3
No related branches found
No related tags found
No related merge requests found
Pipeline #12258 passed with stages
in 15 seconds
# RELEASE 0.1 - 28 January 2019
First release for public testing.
## Features
* Bound molecule interactions view
* Residue-level interactions view
* Schematic view of glycans ([SNFG](https://www.ncbi.nlm.nih.gov/glycans/snfg.html)).
* Download interactions in `JSON` format.
* Save image in `SVG` format.
* Basic help and controls.
......@@ -111,9 +111,10 @@ declare class Depiction {
labels: any;
constructor();
load(id: string): Promise<this>;
getInitalAtomPosition(atomName: string): number[];
getInitalAtomPosition(atomNames: string[]): number[];
appendBondVisualsTo(root: any): void;
appendTextsTo(root: any): void;
sortMap(map: Map<string, number>): Map<string, number>;
}
declare class Atom {
name: string;
......
......@@ -29,10 +29,10 @@ var Models;
if (['SER', 'SEP', 'THR', 'ASN', 'GLN', 'TPO'].includes(this.label_comp_id)) {
return 'polar';
}
if (['ALA', 'VAL', 'ILE', 'LEU', 'MET', 'MSE'].includes(this.label_comp_id)) {
if (['ALA', 'VAL', 'ILE', 'LEU', 'MET', 'PRO', 'MSE'].includes(this.label_comp_id)) {
return 'aliphatic';
}
if (['TRP', 'TYR', 'PHE', 'HIS', 'PRO'].includes(this.label_comp_id)) {
if (['TRP', 'TYR', 'PHE', 'HIS'].includes(this.label_comp_id)) {
return 'aromatic';
}
return 'others';
......@@ -338,10 +338,23 @@ class Depiction {
return this;
});
}
getInitalAtomPosition(atomName) {
let thisAtom = this.atoms.find(x => x.name === atomName);
getInitalAtomPosition(atomNames) {
if (this.atoms.length === 1) {
return [this.atoms[0].x, this.atoms[0].y];
}
// ideally we want to find an atom which is part just a single bond to get nice initial position.
// If there is no such atom any will do
let searchStruct = new Map();
this.bonds.forEach(x => {
searchStruct.set(x.bgn.name, searchStruct.get(x.bgn.name) === undefined ? 1 : searchStruct.get(x.bgn.name) + 1);
searchStruct.set(x.end.name, searchStruct.get(x.end.name) === undefined ? 1 : searchStruct.get(x.end.name) + 1);
});
searchStruct = this.sortMap(searchStruct); // ascending order so we hit the those with less partners sooner.
let thisAtomName = [...searchStruct.keys()].find(x => atomNames.findIndex(y => y === x) !== -1);
let thisAtom = this.atoms.find(x => x.name === thisAtomName);
let bond = this.bonds.find(x => x.containsAtom(thisAtom));
let otherAtom = bond.getOtherAtom(thisAtom);
// to place the residue node a bond apart from the bondin atom
let v = [otherAtom.x - (2 * (otherAtom.x - thisAtom.x)), otherAtom.y - 2 * ((otherAtom.y - thisAtom.y))];
return v;
}
......@@ -370,6 +383,19 @@ class Depiction {
}
});
}
sortMap(map) {
let vals = [...map.values()].sort();
let newMap = new Map();
vals.forEach(x => {
map.forEach((value, key) => {
if (x === value) {
newMap.set(key, x);
return;
}
});
});
return newMap;
}
}
class Atom {
constructor(item) {
......@@ -588,8 +614,8 @@ class Visualization {
visuals.nodes.forEach(x => {
if (!(x instanceof Models.ResidueNode))
return;
let lnk = visuals.links.find(y => y.source.equals(x));
let position = depiction.getInitalAtomPosition(lnk.target.atomName);
let lnks = visuals.links.filter(y => y.source.equals(x)).map(x => x.target.atomName);
let position = depiction.getInitalAtomPosition(lnks);
x.x = position[0] + Math.random() * 50;
x.y = position[1] + Math.random() * 50;
});
......
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/models.ts","../src/glycans.ts","../src/depictions.ts","../src/visualization.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/models.ts","../src/glycans.ts","../src/depictions.ts","../src/visualization.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
......@@ -186,7 +186,7 @@ namespace Models {
["hydrophobic", new Array<string>("hydrophobic")],
["aromatic", new Array<string>("aromatic")],
["metal", new Array<string>("metal_complex")],
["clashes", new Array<string>("clash", "vdw_clash")],
["clashes", new Array<string>("clash", "vdw_clash")],
["proximal", new Array<string>("proximal")],
]);
let contacts = this.getTypes();
......@@ -240,7 +240,7 @@ namespace Models {
["hydrophobic", new Array<string>("hydrophobic")],
["aromatic", new Array<string>("aromatic")],
["metal", new Array<string>("metal_complex")],
["clashes", new Array<string>("clash", "vdw_clash")]
["clashes", new Array<string>("clash", "vdw_clash")]
]);
......@@ -296,9 +296,9 @@ namespace Models {
let relevantContacts = this.contacts
.filter(x => (x.partnerA.residue.equals(r) || x.partnerB.residue.equals(r)) && !x.isBoundMoleculePart); //
relevantContacts.forEach(x => {
let atomNode: AtomNode = undefined;
let residueNode: ResidueNode = undefined;
......
......@@ -25,15 +25,29 @@ class Depiction {
return this;
}
public getInitalAtomPosition(atomName: string) {
let thisAtom = this.atoms.find(x => x.name === atomName);
public getInitalAtomPosition(atomNames: string[]) {
if (this.atoms.length === 1) {
return [this.atoms[0].x, this.atoms[0].y]
}
// ideally we want to find an atom which is part just a single bond to get nice initial position.
// If there is no such atom any will do
let searchStruct = new Map<string, number>();
this.bonds.forEach(x => {
searchStruct.set(x.bgn.name, searchStruct.get(x.bgn.name) === undefined ? 1 : searchStruct.get(x.bgn.name) + 1);
searchStruct.set(x.end.name, searchStruct.get(x.end.name) === undefined ? 1 : searchStruct.get(x.end.name) + 1);
});
searchStruct = this.sortMap(searchStruct); // ascending order so we hit the those with less partners sooner.
let thisAtomName = [...searchStruct.keys()].find(x => atomNames.findIndex(y => y === x) !== -1)
let thisAtom = this.atoms.find(x => x.name === thisAtomName);
let bond = this.bonds.find(x => x.containsAtom(thisAtom));
let otherAtom = bond.getOtherAtom(thisAtom);
let v = [otherAtom.x - (2* (otherAtom.x - thisAtom.x)) , otherAtom.y - 2*((otherAtom.y - thisAtom.y))];
return v;
let otherAtom = bond.getOtherAtom(thisAtom);
// to place the residue node a bond apart from the bondin atom
let v = [otherAtom.x - (2 * (otherAtom.x - thisAtom.x)), otherAtom.y - 2 * ((otherAtom.y - thisAtom.y))];
return v;
}
......@@ -63,6 +77,22 @@ class Depiction {
}
});
}
public sortMap(map: Map<string, number>) {
let vals = [...map.values()].sort();
let newMap = new Map<string, number>();
vals.forEach(x => {
map.forEach((value, key) => {
if (x === value) {
newMap.set(key, x);
return;
}
})
});
return newMap;
}
}
......@@ -95,11 +125,11 @@ class Bond {
public getOtherAtom(other: Atom) {
if (!this.bgn.equals(other) && !this.end.equals(other)) throw new Error(`Atom ${other.name} is not a part of the bond.`);
return this.bgn.equals(other) ? this.end : this.bgn;
}
public containsAtom(other: Atom) {
public containsAtom(other: Atom) {
return this.bgn.equals(other) || this.end.equals(other);
}
}
......
......@@ -15,7 +15,7 @@ class Visualization {
private nodes: any;
private links: any
// #endregion
// #region ui properties
private screenshotBtn: d3.Selection<d3.BaseType, {}, HTMLElement, any>;
private centerBtn: d3.Selection<d3.BaseType, {}, HTMLElement, any>;
......@@ -28,7 +28,7 @@ class Visualization {
// #region data properties
private pdbId: string;
private glycanMapper: GlycanMapper;
private selectedBindingSite: Models.BindingSite;
private selectedBindingSite: Models.BindingSite;
// #endregion
// #region handlers
......@@ -72,10 +72,10 @@ class Visualization {
.append('svg')
.attr('xmlns', 'http://www.w3.org/2000/svg')
.attr('width', () => this.width)
.attr('height', () => this.height);
.attr('height', () => this.height);
this.visualization = this.svg.append('g').attr('id', 'vis-root');
this.glycanMapper = new GlycanMapper('het_mapping.json', 'glycans.xml');
this.visualization = this.svg.append('g').attr('id', 'vis-root');
this.glycanMapper = new GlycanMapper('het_mapping.json', 'glycans.xml');
}
......@@ -89,14 +89,14 @@ class Visualization {
d3.json(`${this.pdbId}.json`)
.catch(e => { throw e; })
.then((data: any) => {
this.selectedBindingSite = new Models.BindingSite(data.boundMolecules[i]);
.then((data: any) => {
this.selectedBindingSite = new Models.BindingSite(data.boundMolecules[i]);
this.setupScene();
});
}
private saveSvg(ctx: Visualization) {
private saveSvg(ctx: Visualization) {
d3.text('svgstyles.css').then(x => {
let svgToDl = d3.select('#int-canvas');
svgToDl.select('svg')
......@@ -116,11 +116,11 @@ class Visualization {
});
}
private downloadInteractionsData(ctx: Visualization): void {
let downloadLink = document.createElement('a');
let dataBlob = new Blob([JSON.stringify(ctx.selectedBindingSite.rawData, null, 4)], { type: 'application/json' });
let dataBlob = new Blob([JSON.stringify(ctx.selectedBindingSite.rawData, null, 4)], { type: 'application/json' });
downloadLink.href = URL.createObjectURL(dataBlob);
downloadLink.download = `${ctx.pdbId}_interactions_data.json`;
......@@ -160,9 +160,9 @@ class Visualization {
//https://stackoverflow.com/questions/40722344/understanding-d3-with-an-example-mouseover-mouseup-with-multiple-arguments
private nodeMouseOver(x: Models.ResidueNode, i: number, g: any) {
private nodeMouseOver(x: Models.ResidueNode, i: number, g: any) {
x.scale = 1.5;
d3.select(g[i])
.attr('transform', () => `translate(${x.x},${x.y}) scale(${x.scale})`)
......@@ -186,19 +186,19 @@ class Visualization {
// #region Labels
private resize(ctx: Visualization, isBoundMolecule: boolean) {
private resize(ctx: Visualization, isBoundMolecule: boolean) {
ctx.width = document.getElementById('int-canvas').clientWidth;
ctx.height = window.innerHeight;
ctx.svg.attr('width', ctx.width).attr('height', ctx.height);
if (isBoundMolecule) {
ctx.simulation.force('center', d3.forceCenter(ctx.width / 2, ctx.height / 2))
.restart();
} else {
} else {
ctx.simulation.restart();
}
ctx.zoom_handler(ctx.svg);
}
......@@ -234,12 +234,12 @@ class Visualization {
this.nodeMouseOut(n, i, g);
this.showLabel(n);
let depiction = await new Depiction().load(n.residue.label_comp_id);
let depiction = await new Depiction().load(n.residue.label_comp_id);
let xShift = (this.width / 2) - (depiction.x / 2);
let yShift = (this.height / 2) - (depiction.y / 2);
let visuals = this.selectedBindingSite.getResidueInteractions(n.residue, depiction.atoms);
let visuals = this.selectedBindingSite.getResidueInteractions(n.residue, depiction.atoms);
this.visualization = this.svg.append('g')
.attr('id', 'vis-root')
......@@ -256,36 +256,36 @@ class Visualization {
this.tooltip.transition()
.duration(500)
.style('opacity', 0);
});
});
depiction.appendBondVisualsTo(this.visualization);
depiction.appendTextsTo(this.visualization);
depiction.appendTextsTo(this.visualization);
visuals.nodes.forEach(x => {
if (!(x instanceof Models.ResidueNode)) return;
let lnk = visuals.links.find(y => y.source.equals(x));
let position = depiction.getInitalAtomPosition(lnk.target.atomName);
let lnks = visuals.links.filter(y => y.source.equals(x)).map(x => x.target.atomName);
let position = depiction.getInitalAtomPosition(lnks);
x.x = position[0] + Math.random() * 50;
x.y = position[1]+ Math.random() * 50;
x.y = position[1] + Math.random() * 50;
});
//# region copy-paste
//setup nodes
this.nodes = this.visualization.append('g')
.selectAll()
.data(visuals.nodes)
.enter().append('g');
this.nodes.filter(x => x instanceof Models.ResidueNode)
.enter().append('g');
this.nodes.filter(x => x instanceof Models.ResidueNode)
.attr('class', (e: Models.ResidueNode) => `svg-node svg-${e.residue.getResidueType()}-res`)
.on('mouseover', (x: Models.ResidueNode, i: number, g: any) => this.nodeMouseOver(x, i, g))
.on('mouseout', (x: Models.ResidueNode, i: number, g: any) => context.nodeMouseOut(x, i, g));
// draw glycans
this.nodes.filter(x => x instanceof Models.ResidueNode)
.filter((x: Models.ResidueNode) => this.glycanMapper.mapping.has(x.residue.label_comp_id))
......@@ -296,7 +296,7 @@ class Visualization {
.filter(x => x instanceof Models.ResidueNode)
.filter(x => !this.glycanMapper.mapping.has(x.residue.label_comp_id))
.append('circle')
.attr('r', '25');
.attr('r', '25');
this.nodes
.filter(x => x instanceof Models.ResidueNode)
......@@ -313,28 +313,28 @@ class Visualization {
.text(labels[i]);
}
});
// let forceLink = d3.forceLink()
// .links(visuals.links)
// .distance(150)
// .strength(0.5);
// let forceLink = d3.forceLink()
// .links(visuals.links)
// .distance(150)
// .strength(0.5);
//let charge = d3.forceManyBody().strength(-1000).distanceMin(50).distanceMax(150);
let collision = d3.forceCollide().radius(50)
//let center = d3.forceCenter(xShift, yShift);
this.simulation = d3.forceSimulation(visuals.nodes)
// .force('link', forceLink)
// .force('charge', charge) //strength
// .force('link', forceLink)
// .force('charge', charge) //strength
.force('collision', collision)
// .force('center', center)
.on('tick', () => this.simulationStep(this));
// .force('center', center)
.on('tick', () => this.simulationStep(this));
this.drag_handler(this.nodes);
this.zoom_handler(this.svg);
//#endregion
d3.select(window).on('resize', () => this.resize(context, false));
d3.select(window).on('resize', () => this.resize(context, false));
}
......@@ -367,9 +367,9 @@ class Visualization {
let pivot = visuals.nodes.filter((x: Models.ResidueNode) => x.residue.isLigand)[0];
this.selectLigand(pivot, 0, this.nodes);
}
this.nodes.filter((n: Models.ResidueNode) =>
this.glycanMapper.mapping.has(n.residue.label_comp_id))
.html((e: Models.ResidueNode) => this.glycanMapper.getGlycanImage(e.residue.label_comp_id));
......@@ -400,7 +400,7 @@ class Visualization {
let charge = d3.forceManyBody().strength(-1000).distanceMin(55).distanceMax(250);
let collision = d3.forceCollide(45);
let center = d3.forceCenter(this.width / 2, this.height / 2);
this.simulation = d3.forceSimulation(visuals.nodes)
.force('link', forceLink)
.force('charge', charge) //strength
......@@ -410,10 +410,10 @@ class Visualization {
this.drag_handler(this.nodes);
this.zoom_handler(this.svg);
d3.select(window).on('resize', () => this.resize(context, true));
d3.select(window).on('resize', () => this.resize(context, true));
}
private simulationStep(ctx: Visualization) {
ctx.nodes.attr('transform', (d) => `translate(${d.x},${d.y}) scale(${d.scale})`);
ctx.links.attr('x1', (x: any) => x.source.x)
......@@ -422,10 +422,10 @@ class Visualization {
.attr('y2', (x: any) => x.target.y);
}
private centerScene(ctx: Visualization){
private centerScene(ctx: Visualization) {
if (ctx.nodes.length === 0)
return;
return;
// Get the bounding box
let minX: any = d3.min(ctx.nodes.data().map((x) => x.x));
let minY: any = d3.min(ctx.nodes.data().map((x) => x.y));
......@@ -433,7 +433,7 @@ class Visualization {
let maxX: any = d3.max(ctx.nodes.data().map((x) => x.x));
let maxY: any = d3.max(ctx.nodes.data().map((x) => x.y));
// The width and the height of the graph
let molWidth = maxX - minX;
let molHeight = maxY - minY;
......@@ -458,8 +458,8 @@ class Visualization {
// do the actual moving
ctx.visualization.attr("transform", `translate(${x_trans}, ${y_trans}) scale(${min_ratio})`);
// tell the zoomer what we did so that next we zoom, it uses the
// transformation we entered here
// tell the zoomer what we did so that next we zoom, it uses the
// transformation we entered here
//ctx.zoom_handler.(ctx.svg, x_trans, y_trans);
//ctx.zoom_handler.scaleTo(ctx.svg, min_ratio);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment