molstar
Version:
A comprehensive macromolecular library.
130 lines • 5.47 kB
JavaScript
/**
* 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
;