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