diff --git a/src/mol-model/structure/model/properties/seconday-structure.ts b/src/mol-model/structure/model/properties/seconday-structure.ts index bbadc038b15dd391c09fdae5debc08d021dcbd2d..802bdb325903ecbf9128fe84968225449b67f42c 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 ff1ba9b4e5c17da891056436f97ab83c84c8510c..655649b57ce55414c58c8b9f2210c09ab014b87d 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 1436e75178cbfb029e6301f5051d4754e1e80d0d..927e24c14132b9746c37f2d90b2764b6c47652ad 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,