UNPKG

@rcsb/rcsb-saguaro-app

Version:
89 lines 4.83 kB
import { __awaiter } from "tslib"; import { RcsbFvEntity } from "../RcsbFvModule/RcsbFvEntity"; import { FieldName, OperationType, AnnotationReference, FeaturesType } from "@rcsb/rcsb-api-tools/lib/RcsbGraphQL/Types/Borrego/GqlTypes"; import { RcsbFvCoreBuilder } from "./RcsbFvCoreBuilder"; import { RcsbFvUniprotBuilder } from "./RcsbFvUniprotBuilder"; import { TagDelimiter } from "@rcsb/rcsb-api-tools/lib/RcsbUtils/TagDelimiter"; export class RcsbFvEntityBuilder { static buildEntitySummaryFv(elementFvId, elementSelectId, entityId, additionalConfig) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { const pdbId = TagDelimiter.parseEntity(entityId).entryId; const createSelectAndFvBuilder = (p) => __awaiter(this, void 0, void 0, function* () { const rcsbFvEntity = yield RcsbFvCoreBuilder.createFv({ elementId: elementFvId, fvModuleI: RcsbFvEntity, p: p, config: { entityId: entityId, elementSelectId: elementSelectId, additionalConfig: Object.assign(Object.assign({ rcsbContext: TagDelimiter.parseEntity(entityId) }, customAdditionalConfig()), additionalConfig), resolve: resolve } }); const targets = yield rcsbFvEntity.getTargets(); RcsbFvCoreBuilder.buildSelectButton(elementFvId, elementSelectId, [entityId].concat(targets).map(t => { return { label: t, onChange: () => __awaiter(this, void 0, void 0, function* () { if (t === entityId) { yield RcsbFvEntityBuilder.buildSingleEntitySummaryFv(elementFvId, entityId); } else { yield RcsbFvUniprotBuilder.buildUniprotEntityFv(elementFvId, t, entityId, Object.assign({ alignmentFilter: [entityId] }, customAdditionalConfig({ field: FieldName.TargetId, operation: OperationType.Contains, source: AnnotationReference.PdbInstance, values: [pdbId + TagDelimiter.instance] }))); } }) }; })); return rcsbFvEntity; }); const entryId = TagDelimiter.parseEntity(entityId).entryId; RcsbFvCoreBuilder.getPolymerEntityInstanceMapAndCustomBuildFv(entryId, createSelectAndFvBuilder); }); }); } static buildSingleEntitySummaryFv(elementId, entityId) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { const entryId = TagDelimiter.parseEntity(entityId).entryId; RcsbFvCoreBuilder.getPolymerEntityInstanceMapAndBuildFv(elementId, entryId, RcsbFvEntity, { entityId: entityId, additionalConfig: Object.assign({ rcsbContext: TagDelimiter.parseEntity(entityId) }, customAdditionalConfig()), resolve: resolve }); }); }); } static buildEntityFv(elementId, entityId, additionalConfig) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { const entryId = TagDelimiter.parseEntity(entityId).entryId; RcsbFvCoreBuilder.getPolymerEntityInstanceMapAndBuildFv(elementId, entryId, RcsbFvEntity, { entityId: entityId, additionalConfig: Object.assign({ rcsbContext: TagDelimiter.parseEntity(entityId) }, additionalConfig), resolve: resolve }); }); }); } } function customAdditionalConfig(f) { const filters = [{ field: FieldName.Type, operation: OperationType.Equals, source: AnnotationReference.PdbInstance, values: [FeaturesType.UnobservedResidueXyz, FeaturesType.UnobservedAtomXyz, FeaturesType.MaQaMetricLocalTypeOther, FeaturesType.MaQaMetricLocalTypePlddt] }]; if (f) filters.push(f); return { sources: [AnnotationReference.PdbEntity, AnnotationReference.PdbInstance], filters: filters }; } //# sourceMappingURL=RcsbFvEntityBuilder.js.map