UNPKG

@rcsb/rcsb-saguaro-app

Version:
72 lines 4.94 kB
import { __awaiter } from "tslib"; import { FieldName, GroupReference, OperationType, SequenceReference, AnnotationReference, FeaturesType } from "@rcsb/rcsb-api-tools/lib/RcsbGraphQL/Types/Borrego/GqlTypes"; import { RcsbFvAbstractModule } from "./RcsbFvAbstractModule"; import { rcsbClient } from "../../RcsbGraphQL/RcsbClient"; import { MsaAlignmentTrackFactory } from "../RcsbFvFactories/RcsbFvTrackFactory/TrackFactoryImpl/MsaAlignmentTrackFactory"; import { Assertions } from "../../RcsbUtils/Helpers/Assertions"; var assertDefined = Assertions.assertDefined; export class RcsbFvUniprotAlignment extends RcsbFvAbstractModule { protectedBuild() { return __awaiter(this, void 0, void 0, function* () { var _a, _b, _c, _d, _e, _f, _g, _h, _j; const buildConfig = this.buildConfig; assertDefined((_a = buildConfig.additionalConfig) === null || _a === void 0 ? void 0 : _a.page), assertDefined(buildConfig.upAcc); const alignmentRequestContext = { group: GroupReference.MatchingUniprotAccession, groupId: buildConfig.upAcc, filter: (_b = buildConfig.additionalConfig) === null || _b === void 0 ? void 0 : _b.alignmentFilter, page: (_c = buildConfig.additionalConfig) === null || _c === void 0 ? void 0 : _c.page, from: SequenceReference.Uniprot, to: SequenceReference.PdbEntity, dynamicDisplay: false, fitTitleWidth: true, excludeFirstRowLink: true, sequencePrefix: (_e = (_d = buildConfig.additionalConfig) === null || _d === void 0 ? void 0 : _d.sequencePrefix) !== null && _e !== void 0 ? _e : "", externalTrackBuilder: (_f = buildConfig.additionalConfig) === null || _f === void 0 ? void 0 : _f.externalTrackBuilder }; const alignmentResponse = yield this.alignmentCollector.collect(alignmentRequestContext, (_g = buildConfig.additionalConfig) === null || _g === void 0 ? void 0 : _g.alignmentFilter); const trackFactory = new MsaAlignmentTrackFactory(this.getPolymerEntityInstanceTranslator()); const alignmentFeatures = yield collectFeatures(buildConfig.upAcc); yield trackFactory.prepareFeatures(alignmentFeatures.map(af => { var _a; return (Object.assign(Object.assign({}, af), { feature: (_a = af.features) === null || _a === void 0 ? void 0 : _a.filter(f => (f === null || f === void 0 ? void 0 : f.type) == FeaturesType.UnobservedResidueXyz) })); }), alignmentFeatures.map(af => { var _a; return (Object.assign(Object.assign({}, af), { feature: (_a = af.features) === null || _a === void 0 ? void 0 : _a.filter(f => (f === null || f === void 0 ? void 0 : f.type) == FeaturesType.MaQaMetricLocalTypePlddt) })); })); yield this.buildAlignmentTracks(alignmentRequestContext, alignmentResponse, { alignmentTrackFactory: trackFactory }); const annotationsRequestContext = { queryId: buildConfig.upAcc, reference: SequenceReference.Uniprot, sources: [AnnotationReference.Uniprot], annotationProcessing: (_h = buildConfig.additionalConfig) === null || _h === void 0 ? void 0 : _h.annotationProcessing, externalTrackBuilder: (_j = buildConfig.additionalConfig) === null || _j === void 0 ? void 0 : _j.externalTrackBuilder }; const annotationsFeatures = yield this.annotationCollector.collect(annotationsRequestContext); yield this.buildAnnotationsTrack(annotationsRequestContext, annotationsFeatures); this.boardConfigData.length = yield this.alignmentCollector.getAlignmentLength(); this.boardConfigData.includeAxis = true; return void 0; }); } concatAlignmentAndAnnotationTracks() { var _a; const buildConfig = this.buildConfig; this.rowConfigData = !((_a = buildConfig.additionalConfig) === null || _a === void 0 ? void 0 : _a.hideAlignments) ? [this.referenceTrack].concat(this.annotationTracks).concat(this.alignmentTracks) : [this.referenceTrack].concat(this.annotationTracks); } } function collectFeatures(upAcc) { return __awaiter(this, void 0, void 0, function* () { return yield rcsbClient.requestRcsbPdbAnnotations({ queryId: upAcc, reference: SequenceReference.Uniprot, sources: [AnnotationReference.PdbInstance], filters: [{ source: AnnotationReference.PdbInstance, operation: OperationType.Equals, field: FieldName.Type, values: [FeaturesType.UnobservedResidueXyz, FeaturesType.MaQaMetricLocalTypePlddt] }] }); }); } //# sourceMappingURL=RcsbFvUniprotAlignment.js.map