molstar
Version:
A comprehensive macromolecular library.
57 lines (56 loc) • 2.37 kB
JavaScript
/**
* 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;
}
}
}
}
;