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