UNPKG

molstar

Version:

A comprehensive macromolecular library.

47 lines 1.92 kB
"use strict"; /** * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.getCoarseRanges = void 0; var int_1 = require("../../../../../mol-data/int"); var sorted_ranges_1 = require("../../../../../mol-data/int/sorted-ranges"); // TODO assumes all coarse elements are part of a polymer // TODO add gaps at the ends of the chains by comparing to the polymer sequence data function getCoarseRanges(data, chemicalComponentMap) { var polymerRanges = []; var gapRanges = []; var chainIt = int_1.Segmentation.transientSegments(data.chainElementSegments, int_1.Interval.ofBounds(0, data.count)); var seq_id_begin = data.seq_id_begin, seq_id_end = data.seq_id_end; while (chainIt.hasNext) { var _a = chainIt.move(), start = _a.start, end = _a.end; var startIndex = -1; var prevSeqEnd = -1; for (var i = start; i < end; ++i) { var seqEnd = seq_id_end.value(i); if (i === start) { startIndex = i; prevSeqEnd = seq_id_end.value(i); } else { if (seq_id_begin.value(i) - prevSeqEnd > 1) { polymerRanges.push(startIndex, i - 1); gapRanges.push(i - 1, i); startIndex = i; } } if (i === end - 1) { polymerRanges.push(startIndex, i); } prevSeqEnd = seqEnd; } } return { polymerRanges: sorted_ranges_1.SortedRanges.ofSortedRanges(polymerRanges), gapRanges: sorted_ranges_1.SortedRanges.ofSortedRanges(gapRanges) }; } exports.getCoarseRanges = getCoarseRanges; //# sourceMappingURL=coarse-ranges.js.map