/** * Copyright (c) 2019-2020 Mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose */ import { CustomPropertyDescriptor } from '../../../../mol-model/structure'; import { IntAdjacencyGraph } from '../../../../mol-math/graph'; import { Column } from '../../../../mol-data/db'; import { FormatPropertyProvider } from '../../common/property'; export type IndexPairBonds = IntAdjacencyGraph }> function getGraph(indexA: ArrayLike, indexB: ArrayLike, _order: ArrayLike, count: number): IndexPairBonds { const builder = new IntAdjacencyGraph.EdgeBuilder(count, indexA, indexB); const order = new Int8Array(builder.slotCount); for (let i = 0, _i = builder.edgeCount; i < _i; i++) { builder.addNextEdge(); builder.assignProperty(order, _order[i]); } return builder.createGraph({ order }); } export namespace IndexPairBonds { export const Descriptor: CustomPropertyDescriptor = { name: 'index_pair_bonds', } export const Provider = FormatPropertyProvider.create(Descriptor) export type Data = { pairs: { indexA: Column, indexB: Column order: Column }, count: number } export function fromData(data: Data) { const { pairs, count } = data const indexA = pairs.indexA.toArray() const indexB = pairs.indexB.toArray() const order = pairs.order.toArray() return getGraph(indexA, indexB, order, count); } }