Skip to content
Snippets Groups Projects
Commit 472ee474 authored by Sebastian Bittrich's avatar Sebastian Bittrich
Browse files

respect for BioJava

parent 94155295
No related branches found
No related tags found
No related merge requests found
...@@ -33,6 +33,10 @@ interface AccessibleSurfaceAreaContext { ...@@ -33,6 +33,10 @@ interface AccessibleSurfaceAreaContext {
buried?: Uint8Array buried?: Uint8Array
} }
/**
* Adapts the BioJava implementation by Jose Duarte. That implementation is based on the publication by Shrake, A., and
* J. A. Rupley. "Environment and Exposure to Solvent of Protein Atoms. Lysozyme and Insulin." JMB (1973).
*/
function computeAccessibleSurfaceArea(unit: Unit.Atomic, params?: PD.Values<AccessibleSurfaceAreaComputationParams>): AccessibleSurfaceArea { function computeAccessibleSurfaceArea(unit: Unit.Atomic, params?: PD.Values<AccessibleSurfaceAreaComputationParams>): AccessibleSurfaceArea {
console.log(`computing accessible surface area for unit #${ unit.id + 1 }`); console.log(`computing accessible surface area for unit #${ unit.id + 1 }`);
...@@ -95,7 +99,7 @@ function computePerResidue(ctx: AccessibleSurfaceAreaContext) { // runs at rough ...@@ -95,7 +99,7 @@ function computePerResidue(ctx: AccessibleSurfaceAreaContext) { // runs at rough
// refine list by actual criterion // refine list by actual criterion
const cutoff = probeSize + probeSize + radii1; const cutoff = probeSize + probeSize + radii1;
const filteredIndicies = []; // TODO might be better to use IntArray here and reuse it - how to find safe upper limit of possible neighborhood count const filteredIndicies = []; // TODO might be better to use IntArray here and reuse it - how to find safe upper limit of possible neighborhood count - BioJava mentions 60 as relatively safe upper bound
for (let ni = 0; ni < count; ni++) { for (let ni = 0; ni < count; ni++) {
const _bI = indices[ni]; const _bI = indices[ni];
const bI = atoms[_bI]; const bI = atoms[_bI];
...@@ -180,7 +184,7 @@ function assignRadiusForHeavyAtoms(ctx: AccessibleSurfaceAreaContext) { ...@@ -180,7 +184,7 @@ function assignRadiusForHeavyAtoms(ctx: AccessibleSurfaceAreaContext) {
/** /**
* Gets the van der Waals radius of the given atom following the values defined by Chothia (1976) * Gets the van der Waals radius of the given atom following the values defined by Chothia (1976)
* J.Mol.Biol.105,1-14. NOTE: the vdw values defined by the paper assume no Hydrogens and thus "inflates" slightly * J.Mol.Biol.105,1-14. NOTE: the vdw values defined by the paper assume no Hydrogens and thus "inflates" slightly
* the heavy atoms to account for Hydrogens. Thus this method cannot be used in a structure that contains Hydrogens! * the heavy atoms to account for Hydrogens.
*/ */
function determineRadius(atomId: string, element: ElementSymbol, compId: string): number { function determineRadius(atomId: string, element: ElementSymbol, compId: string): number {
switch (element) { switch (element) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment