From 09db0abadb10237a453e1dad290ed4509be2654e Mon Sep 17 00:00:00 2001 From: Sebastian Bittrich <bittrich@hs-mittweida.de> Date: Mon, 25 Mar 2019 10:28:57 -0700 Subject: [PATCH] adds turns and bends as dedicated secondary structure elements --- .../model/properties/seconday-structure.ts | 15 ++++++++++++--- .../properties/utils/secondary-structure.ts | 17 +++++++++++++++-- src/tests/browser/render-structure.ts | 2 +- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/mol-model/structure/model/properties/seconday-structure.ts b/src/mol-model/structure/model/properties/seconday-structure.ts index bbadc038b..802bdb325 100644 --- a/src/mol-model/structure/model/properties/seconday-structure.ts +++ b/src/mol-model/structure/model/properties/seconday-structure.ts @@ -19,11 +19,20 @@ interface SecondaryStructure { } namespace SecondaryStructure { - export type Element = None | Helix | Sheet + export type Element = None | Bend | Turn | Helix | Sheet export interface None { - kind: 'none', - flags?: SecondaryStructureType // TODO should this level of detail be added to non-defined secondary structure elements? + kind: 'none' + } + + export interface Bend { + kind: 'bend', + flags: SecondaryStructureType + } + + export interface Turn { + kind: 'turn', + flags: SecondaryStructureType } export interface Helix { diff --git a/src/mol-model/structure/model/properties/utils/secondary-structure.ts b/src/mol-model/structure/model/properties/utils/secondary-structure.ts index ff1ba9b4e..655649b57 100644 --- a/src/mol-model/structure/model/properties/utils/secondary-structure.ts +++ b/src/mol-model/structure/model/properties/utils/secondary-structure.ts @@ -211,11 +211,20 @@ function createElement(kind: string, flag: DSSPType.Flag, getResidueFlag: (f: DS kind: 'sheet', flags: getResidueFlag(flag) } as SecondaryStructure.Sheet - } else { + } else if (kind === 'turn') { + return { + kind: 'turn', + flags: getResidueFlag(flag) + } + } else if (kind === 'bend') { return { - kind: 'none', + kind: 'bend', flags: getResidueFlag(flag) } + } else { + return { + kind: 'none' + } } } @@ -224,6 +233,10 @@ function mapToKind(assignment: SecondaryStructureType.Flag) { return 'helix' } else if (assignment === SecondaryStructureType.SecondaryStructureDssp.B || assignment === SecondaryStructureType.SecondaryStructureDssp.E) { return 'sheet' + } else if (assignment === SecondaryStructureType.SecondaryStructureDssp.T) { + return 'turn' + } else if (assignment === SecondaryStructureType.SecondaryStructureDssp.S) { + return 'bend' } else { return 'none' } diff --git a/src/tests/browser/render-structure.ts b/src/tests/browser/render-structure.ts index 1436e7517..927e24c14 100644 --- a/src/tests/browser/render-structure.ts +++ b/src/tests/browser/render-structure.ts @@ -62,7 +62,7 @@ function getCartoonRepr() { } async function init() { - const cif = await downloadFromPdb('3j3q') + const cif = await downloadFromPdb('1acj') const models = await getModels(cif) console.time('computeModelDSSP') const secondaryStructure = computeModelDSSP(models[0].atomicHierarchy, -- GitLab