molstar
Version:
A comprehensive macromolecular library.
63 lines (62 loc) • 3 kB
JavaScript
/**
* Copyright (c) 2019-2022 Mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
* @author David Sehnal <david.sehnal@gmail.com>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.IndexPairBonds = void 0;
var tslib_1 = require("tslib");
var graph_1 = require("../../../../mol-math/graph");
var property_1 = require("../../common/property");
function getGraph(indexA, indexB, props, count) {
var builder = new graph_1.IntAdjacencyGraph.EdgeBuilder(count, indexA, indexB);
var key = new Int32Array(builder.slotCount);
var order = new Int8Array(builder.slotCount);
var distance = new Array(builder.slotCount);
var flag = new Array(builder.slotCount);
for (var i = 0, _i = builder.edgeCount; i < _i; i++) {
builder.addNextEdge();
builder.assignProperty(key, props.key ? props.key[i] : -1);
builder.assignProperty(order, props.order ? props.order[i] : 1);
builder.assignProperty(distance, props.distance ? props.distance[i] : -1);
builder.assignProperty(flag, props.flag ? props.flag[i] : 1 /* BondType.Flag.Covalent */);
}
return builder.createGraph({ key: key, order: order, distance: distance, flag: flag });
}
var IndexPairBonds;
(function (IndexPairBonds) {
IndexPairBonds.Descriptor = {
name: 'index_pair_bonds',
};
IndexPairBonds.Provider = property_1.FormatPropertyProvider.create(IndexPairBonds.Descriptor, { asDynamic: true });
IndexPairBonds.DefaultProps = {
/**
* If negative, test using element-based threshold, otherwise distance in Angstrom.
*
* This option exists to handle bonds in periodic cells. For systems that are
* made from beads (as opposed to atomic elements), set to a specific distance.
*
* Note that `Data` has a `distance` field which allows specifying a distance
* for each bond individually which takes precedence over this option.
*/
maxDistance: -1
};
function fromData(data, props) {
if (props === void 0) { props = {}; }
var p = tslib_1.__assign(tslib_1.__assign({}, IndexPairBonds.DefaultProps), props);
var pairs = data.pairs, count = data.count;
var indexA = pairs.indexA.toArray();
var indexB = pairs.indexB.toArray();
var key = pairs.key && pairs.key.toArray();
var order = pairs.order && pairs.order.toArray();
var distance = pairs.distance && pairs.distance.toArray();
var flag = pairs.flag && pairs.flag.toArray();
return {
bonds: getGraph(indexA, indexB, { key: key, order: order, distance: distance, flag: flag }, count),
maxDistance: p.maxDistance
};
}
IndexPairBonds.fromData = fromData;
})(IndexPairBonds = exports.IndexPairBonds || (exports.IndexPairBonds = {}));
;