UNPKG

molstar

Version:

A comprehensive macromolecular library.

130 lines 5.47 kB
"use strict"; /** * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.bundleGenerator = exports.bundleElementImpl = exports.spheres = exports.atomicHet = exports.water = exports.atomicSequence = exports.defaultBondTest = void 0; var int_1 = require("../../../../mol-data/int"); var element_1 = require("../../../../mol-model/structure/structure/element"); var structure_1 = require("../../structure"); var structure_2 = require("../../structure/structure"); var selection_1 = require("../selection"); var types_1 = require("../../model/types"); var bundle_1 = require("../../structure/element/bundle"); function defaultBondTest(ctx) { return types_1.BondType.isCovalent(ctx.atomicBond.type); } exports.defaultBondTest = defaultBondTest; function atomicSequence() { return function query_atomicSequence(ctx) { var inputStructure = ctx.inputStructure; var l = element_1.StructureElement.Location.create(inputStructure); var units = []; for (var _i = 0, _a = inputStructure.units; _i < _a.length; _i++) { var unit = _a[_i]; if (unit.kind !== 0 /* Atomic */) continue; l.unit = unit; var elements = unit.elements; l.element = elements[0]; if (structure_1.StructureProperties.entity.type(l) !== 'polymer') continue; var residuesIt = int_1.Segmentation.transientSegments(unit.model.atomicHierarchy.residueAtomSegments, elements); var residueCount = 0; while (residuesIt.hasNext) { residueCount++; residuesIt.move(); } if (residueCount < 8) continue; units.push(unit); } return selection_1.StructureSelection.Singletons(inputStructure, structure_2.Structure.create(units, { parent: inputStructure })); }; } exports.atomicSequence = atomicSequence; function water() { return function query_water(ctx) { var inputStructure = ctx.inputStructure; var l = element_1.StructureElement.Location.create(inputStructure); var units = []; for (var _i = 0, _a = inputStructure.units; _i < _a.length; _i++) { var unit = _a[_i]; if (unit.kind !== 0 /* Atomic */) continue; l.unit = unit; var elements = unit.elements; l.element = elements[0]; if (structure_1.StructureProperties.entity.type(l) !== 'water') continue; units.push(unit); } return selection_1.StructureSelection.Singletons(inputStructure, structure_2.Structure.create(units, { parent: inputStructure })); }; } exports.water = water; function atomicHet() { return function query_atomicHet(ctx) { var inputStructure = ctx.inputStructure; var l = element_1.StructureElement.Location.create(inputStructure); var units = []; for (var _i = 0, _a = inputStructure.units; _i < _a.length; _i++) { var unit = _a[_i]; if (unit.kind !== 0 /* Atomic */) continue; l.unit = unit; var elements = unit.elements; l.element = elements[0]; if (structure_1.StructureProperties.entity.type(l) === 'water') continue; if (structure_1.StructureProperties.entity.type(l) === 'polymer') { var residuesIt = int_1.Segmentation.transientSegments(unit.model.atomicHierarchy.residueAtomSegments, elements); var residueCount = 0; while (residuesIt.hasNext) { residueCount++; residuesIt.move(); } if (residueCount >= 8) continue; } units.push(unit); } return selection_1.StructureSelection.Singletons(inputStructure, structure_2.Structure.create(units, { parent: inputStructure })); }; } exports.atomicHet = atomicHet; function spheres() { return function query_spheres(ctx) { var inputStructure = ctx.inputStructure; var units = []; for (var _i = 0, _a = inputStructure.units; _i < _a.length; _i++) { var unit = _a[_i]; if (unit.kind !== 1 /* Spheres */) continue; units.push(unit); } return selection_1.StructureSelection.Singletons(inputStructure, structure_2.Structure.create(units, { parent: inputStructure })); }; } exports.spheres = spheres; function bundleElementImpl(groupedUnits, ranges, set) { return { groupedUnits: groupedUnits, ranges: ranges, set: set }; } exports.bundleElementImpl = bundleElementImpl; function bundleGenerator(elements) { return function query_bundleGenerator(ctx) { var bundle = { hash: ctx.inputStructure.hashCode, elements: elements }; return selection_1.StructureSelection.Sequence(ctx.inputStructure, [bundle_1.Bundle.toStructure(bundle, ctx.inputStructure)]); }; } exports.bundleGenerator = bundleGenerator; //# sourceMappingURL=internal.js.map