UNPKG

molstar

Version:

A comprehensive macromolecular library.

57 lines (56 loc) 2.37 kB
"use strict"; /** * Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> * @author Sebastian Bittrich <sebastian.bittrich@rcsb.org> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.assignSheets = assignSheets; const common_1 = require("./common"); function isHelixType(f) { return common_1.DSSPType.is(f, common_1.DSSPType.Flag.G) || common_1.DSSPType.is(f, common_1.DSSPType.Flag.H) || common_1.DSSPType.is(f, common_1.DSSPType.Flag.I); } /** * sheet=: set of one or more ladders connected by shared residues * * Type: E */ function assignSheets(ctx) { const { ladders, flags } = ctx; for (let ladderIndex = 0; ladderIndex < ladders.length; ladderIndex++) { const ladder = ladders[ladderIndex]; for (let lcount = ladder.firstStart; lcount <= ladder.firstEnd; lcount++) { const diff = ladder.firstStart - lcount; const l2count = ladder.secondStart - diff; if (ladder.firstStart !== ladder.firstEnd) { flags[lcount] |= common_1.DSSPType.Flag.E; flags[l2count] |= common_1.DSSPType.Flag.E; } else { if (!isHelixType(flags[lcount]) && common_1.DSSPType.is(flags[lcount], common_1.DSSPType.Flag.E)) { flags[lcount] |= common_1.DSSPType.Flag.B; } if (!isHelixType(flags[l2count]) && common_1.DSSPType.is(flags[l2count], common_1.DSSPType.Flag.E)) { flags[l2count] |= common_1.DSSPType.Flag.B; } } } if (ladder.nextLadder === 0) continue; const conladder = ladders[ladder.nextLadder]; for (let lcount = ladder.firstStart; lcount <= conladder.firstEnd; lcount++) { flags[lcount] |= common_1.DSSPType.Flag.E; } if (ladder.type === common_1.BridgeType.PARALLEL) { for (let lcount = ladder.secondStart; lcount <= conladder.secondEnd; lcount++) { flags[lcount] |= common_1.DSSPType.Flag.E; } } else { for (let lcount = conladder.secondEnd; lcount <= ladder.secondStart; lcount++) { flags[lcount] |= common_1.DSSPType.Flag.E; } } } }