UNPKG

@rcsb/rcsb-saguaro-app

Version:
38 lines (37 loc) 1.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MultipleEntityInstanceTranslate = void 0; const PolymerEntityInstanceTranslate_1 = require("./PolymerEntityInstanceTranslate"); const Operator_1 = require("../Helpers/Operator"); const TagDelimiter_1 = require("@rcsb/rcsb-api-tools/lib/RcsbUtils/TagDelimiter"); class MultipleEntityInstanceTranslate { constructor() { this.entityInstanceTranslateMap = new Map(); } add(data) { const entryEntityInstanceMapList = new Map(); data.forEach(d => { var _a; const entityId = d.entryId + TagDelimiter_1.TagDelimiter.entity + d.entityId; if (!entryEntityInstanceMapList.has(entityId)) entryEntityInstanceMapList.set(entityId, new Array()); (_a = entryEntityInstanceMapList.get(entityId)) === null || _a === void 0 ? void 0 : _a.push(d); }); entryEntityInstanceMapList.forEach((v, entityId) => { this.entityInstanceTranslateMap.set(entityId, new PolymerEntityInstanceTranslate_1.PolymerEntityInstanceTranslate(v)); }); } getEntity(entityId) { return this.entityInstanceTranslateMap.get(entityId); } getEntities() { return Array.from(this.entityInstanceTranslateMap.keys()); } getEntries() { return Operator_1.Operator.uniqueValues(Array.from(this.entityInstanceTranslateMap.keys()).map(entityId => TagDelimiter_1.TagDelimiter.parseEntity(entityId).entryId)); } getInstances() { return Operator_1.Operator.uniqueValues(Array.from(this.entityInstanceTranslateMap.values()).map(peit => peit.getData()).flat().map(e => e.asymId)); } } exports.MultipleEntityInstanceTranslate = MultipleEntityInstanceTranslate;