UNPKG

molstar

Version:

A comprehensive macromolecular library.

65 lines 2.8 kB
/** * Copyright (c) 2019-2020 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ import { IntAdjacencyGraph } from '../../../mol-math/graph'; import { InteractionsIntraContacts, InteractionsInterContacts } from './common'; import { InterUnitGraph } from '../../../mol-math/graph/inter-unit-graph'; export { IntraContactsBuilder }; var IntraContactsBuilder; (function (IntraContactsBuilder) { function create(features, elementsCount) { var aIndices = []; var bIndices = []; var types = []; return { add: function (indexA, indexB, type) { aIndices[aIndices.length] = indexA; bIndices[bIndices.length] = indexB; types[types.length] = type; }, getContacts: function () { var builder = new IntAdjacencyGraph.EdgeBuilder(features.count, aIndices, bIndices); var type = new Int8Array(builder.slotCount); var flag = new Int8Array(builder.slotCount); for (var i = 0, _i = builder.edgeCount; i < _i; i++) { builder.addNextEdge(); builder.assignProperty(type, types[i]); } var graph = builder.createGraph({ type: type, flag: flag }); var elementsIndex; var contacts = Object.defineProperty(graph, 'elementsIndex', { get: function () { return elementsIndex || (elementsIndex = InteractionsIntraContacts.createElementsIndex(graph, features, elementsCount)); } }); return contacts; } }; } IntraContactsBuilder.create = create; })(IntraContactsBuilder || (IntraContactsBuilder = {})); export { InterContactsBuilder }; var InterContactsBuilder; (function (InterContactsBuilder) { function create() { var builder = new InterUnitGraph.Builder(); return { startUnitPair: function (unitA, unitB) { builder.startUnitPair(unitA.id, unitB.id); }, finishUnitPair: function () { builder.finishUnitPair(); }, add: function (indexA, indexB, type) { builder.add(indexA, indexB, { type: type, flag: 0 /* None */ }); }, getContacts: function (unitsFeatures) { return new InteractionsInterContacts(builder.getMap(), unitsFeatures); } }; } InterContactsBuilder.create = create; })(InterContactsBuilder || (InterContactsBuilder = {})); //# sourceMappingURL=contacts-builder.js.map