UNPKG

@rcsb/rcsb-saguaro-app

Version:
154 lines 9.59 kB
import { __awaiter } from "tslib"; import { PolymerEntityInstanceTranslate } from "../RcsbUtils/Translators/PolymerEntityInstanceTranslate"; import { EntryAssemblyTranslate } from "../RcsbUtils/Translators/EntryAssemblyTranslate"; import { GroupPropertiesProvider } from "../RcsbUtils/Groups/GroupPropertiesProvider"; import { InterfaceInstanceTranslate } from "../RcsbUtils/Translators/InterfaceInstanceTranslate"; import { AssemblyInterfacesTranslate } from "../RcsbUtils/Translators/AssemblyInterfacesTranslate"; import { PolymerEntityInstancesCollector } from "../RcsbCollectTools/DataCollectors/PolymerEntityInstancesCollector"; import { EntryAssembliesCollector } from "../RcsbCollectTools/DataCollectors/EntryAssembliesCollector"; import { PolymerEntityChromosomeTranslate } from "../RcsbUtils/Translators/PolymerEntityChromosomeTranslate"; import { PolymerEntityChromosomeCollector } from "../RcsbCollectTools/DataCollectors/PolymerEntityChromosomeCollector"; import { GroupMemberCollector } from "../RcsbCollectTools/DataCollectors/GroupMemberCollector"; import { MultipleEntryPropertyCollector } from "../RcsbCollectTools/DataCollectors/MultipleEntryPropertyCollector"; import { Operator } from "../RcsbUtils/Helpers/Operator"; import { searchRequestProperty } from "../RcsbSeacrh/SearchRequestProperty"; import { sha1 } from "object-hash"; import { InterfaceInstanceCollector } from "../RcsbCollectTools/DataCollectors/InterfaceInstanceCollector"; import { AssemblyInterfacesCollector } from "../RcsbCollectTools/DataCollectors/AssemblyInterfacesCollector"; import { RcsbRequestTools as RRT } from "./RcsbRequestTools"; import { rcsbRequestClient } from "./RcsbRequestClient"; import { GraphQLRequest } from "@rcsb/rcsb-api-tools/lib/RcsbGraphQL/GraphQLRequest"; import { SearchRequest } from "@rcsb/rcsb-api-tools/lib/RcsbSearch/SearchRequest"; import { Assertions } from "../RcsbUtils/Helpers/Assertions"; var assertDefined = Assertions.assertDefined; import { MultiplePolymerEntityCollector } from "../RcsbCollectTools/DataCollectors/MultiplePolymerEntityCollector"; import { MultipleInstanceSequencesCollector } from "../RcsbCollectTools/DataCollectors/MultipleInstanceSequencesCollector"; import { TagDelimiter } from "@rcsb/rcsb-api-tools/lib/RcsbUtils/TagDelimiter"; class RcsbRequestContextManager { constructor() { this.polymerEntityToInstanceMap = new Map(); this.entryToAssemblyMap = new Map(); this.groupPropertyMap = new Map(); this.searchRequestMap = new Map(); this.interfaceToInstanceMap = new Map(); this.assemblyInterfacesMap = new Map(); this.entryPropertyMap = new Map(); this.entityPropertyMap = new Map(); this.instanceSequenceMap = new Map(); this.instanceCollector = new PolymerEntityInstancesCollector(); this.assemblyCollector = new EntryAssembliesCollector(); this.entityChrCollector = new PolymerEntityChromosomeCollector(); this.groupMemberCollector = new GroupMemberCollector(); this.multipleEntryPropertyCollector = new MultipleEntryPropertyCollector(); this.interfaceCollector = new InterfaceInstanceCollector(); this.assemblyInterfacesCollector = new AssemblyInterfacesCollector(); this.multipleEntityCollector = new MultiplePolymerEntityCollector(); this.multipleInstanceSequenceCollector = new MultipleInstanceSequencesCollector(); this.modelKey = EntryAssembliesCollector.modelKey; } getEntityProperties(entityIds) { return __awaiter(this, void 0, void 0, function* () { return RRT.getMultipleObjectProperties(entityIds, this.entityPropertyMap, this.multipleEntityCollector, "entity_ids", (e) => (e.entryId + TagDelimiter.entity + e.entityId)); }); } getEntryProperties(entryIds) { return __awaiter(this, void 0, void 0, function* () { return RRT.getMultipleObjectProperties(entryIds, this.entryPropertyMap, this.multipleEntryPropertyCollector, "entry_ids", (e) => (e.entryId)); }); } getInstanceSequences(instanceIds) { return __awaiter(this, void 0, void 0, function* () { return RRT.getMultipleObjectProperties(instanceIds, this.instanceSequenceMap, this.multipleInstanceSequenceCollector, "instance_ids", (e) => (e.rcsbId)); }); } getEntityToInstance(entryId) { return __awaiter(this, void 0, void 0, function* () { const key = entryId.toUpperCase(); return RRT.getSingleObjectData(key, this.polymerEntityToInstanceMap, () => __awaiter(this, void 0, void 0, function* () { return (new PolymerEntityInstanceTranslate(yield this.instanceCollector.collect({ entry_id: key }))); })); }); } getEntryToAssembly(entryId) { return __awaiter(this, void 0, void 0, function* () { return RRT.getSingleObjectData(entryId, this.entryToAssemblyMap, () => __awaiter(this, void 0, void 0, function* () { const result = yield this.assemblyCollector.collect({ entry_id: entryId }); const eti = this.polymerEntityToInstanceMap.get(entryId); const etit = result.get(this.modelKey); assertDefined(eti), assertDefined(etit); return new EntryAssemblyTranslate(result); })); }); } getEntityToChromosome(entityIds) { return __awaiter(this, void 0, void 0, function* () { const chrMap = yield this.entityChrCollector.collect(entityIds); return new PolymerEntityChromosomeTranslate(chrMap); }); } getGroupMemberProperties(groupQuery) { return __awaiter(this, void 0, void 0, function* () { const groupId = groupQuery.group_id.toUpperCase(); return RRT.getSingleObjectData(groupId, this.groupPropertyMap, () => __awaiter(this, void 0, void 0, function* () { const result = yield this.groupMemberCollector.collect(groupQuery); const entriesProperties = yield this.multipleEntryPropertyCollector.collect({ entry_ids: Operator.uniqueValues(result.map(r => r.entryId)) }); return new GroupPropertiesProvider({ entryProperties: entriesProperties }); })); }); } getSearchQuery(searchQuery) { return __awaiter(this, void 0, void 0, function* () { const key = sha1(searchQuery); return RRT.getSingleObjectData(key, this.searchRequestMap, () => __awaiter(this, void 0, void 0, function* () { return (yield searchRequestProperty.request(searchQuery)); })); }); } getSearchQueryFacets(query, facets, returnType, resultsContentType) { return __awaiter(this, void 0, void 0, function* () { const key = sha1(query) + "." + sha1(facets); return RRT.getSingleObjectData(key, this.searchRequestMap, () => __awaiter(this, void 0, void 0, function* () { return (yield searchRequestProperty.requestFacets(query, facets, returnType, resultsContentType)); })); }); } getInterfaceToInstance(interfaceId) { return __awaiter(this, void 0, void 0, function* () { var _a, _b; const key = interfaceId; const assemblyId = interfaceId.split(TagDelimiter.instance)[0]; if (this.interfaceToInstanceMap.get(key)) { const d = this.interfaceToInstanceMap.get(key); assertDefined(d); return d; } else { const assemblyInterfaces = yield this.getAssemblyInterfaces(assemblyId); const interfaceIds = assemblyInterfaces.getInterfaces(assemblyId); const result = interfaceIds ? yield this.interfaceCollector.collect({ interface_ids: interfaceIds }) : []; const translator = new InterfaceInstanceTranslate(result); if (((_a = assemblyInterfaces.getInterfaces(assemblyId)) === null || _a === void 0 ? void 0 : _a.length) == 0) { this.interfaceToInstanceMap.set(key, new Promise(resolve => resolve(translator))); } ((_b = assemblyInterfaces.getInterfaces(assemblyId)) !== null && _b !== void 0 ? _b : []).filter(id => !this.interfaceToInstanceMap.has(id)).forEach(id => { this.interfaceToInstanceMap.set(id, new Promise(resolve => resolve(translator))); }); return translator; } }); } getAssemblyInterfaces(assemblyId) { return __awaiter(this, void 0, void 0, function* () { return RRT.getSingleObjectData(assemblyId, this.assemblyInterfacesMap, () => __awaiter(this, void 0, void 0, function* () { return (new AssemblyInterfacesTranslate(yield this.assemblyInterfacesCollector.collect({ assembly_ids: [assemblyId] }))); })); }); } initializeBorregoClient(config) { var _a; rcsbRequestClient.borrego = new GraphQLRequest((_a = config.api) !== null && _a !== void 0 ? _a : "1d-coordinates", config.requestConfig); } initializeYosemiteClient(config) { var _a; rcsbRequestClient.yosemite = new GraphQLRequest((_a = config.api) !== null && _a !== void 0 ? _a : "data-api", config.requestConfig); } initializeArchesClient(config) { rcsbRequestClient.arches = new SearchRequest(config.uri, config.fetch, config.requestConfig); } } export const rcsbRequestCtxManager = new RcsbRequestContextManager(); //# sourceMappingURL=RcsbRequestContextManager.js.map