@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
154 lines • 9.59 kB
JavaScript
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