UNPKG

@rcsb/rcsb-saguaro-app

Version:
88 lines 5.26 kB
import { __awaiter } from "tslib"; import { AnnotationCollector } from "../../../../RcsbCollectTools/AnnotationCollector/AnnotationCollector"; import { SequenceReference, AnnotationReference } from "@rcsb/rcsb-api-tools/lib/RcsbGraphQL/Types/Borrego/GqlTypes"; import { filter, interfaceAnnotations } from "../../../../RcsbFvWeb/RcsbFvModule/RcsbFvInterface"; import * as rcm from "../../../../RcsbAnnotationConfig/RcsbResidueConfig.ac.json"; import { AnnotationBlockManager } from "../../../../RcsbFvWeb/RcsbFvFactories/RcsbFvBlockFactory/BlockManager/AnnotationBlockManager"; import { AnnotationTrackManagerFactory } from "../../../../RcsbFvWeb/RcsbFvFactories/RcsbFvBlockFactory/BlockManager/AnnotationTrackManager"; import { RcsbAnnotationConfig } from "../../../../RcsbAnnotationConfig/RcsbAnnotationConfig"; import { TrackBlockFactory } from "../ResidueChartFactories/TrackBlockFactoryImpl/TrackBlockFactory"; import { TrackDistributionFactory } from "../ResidueChartFactories/ResidueDistributionFactoryImpl/TrackDistributionFactory"; import { DistributionChartFactory } from "../ResidueChartFactories/DistributionChartFactoryImpl/DistributionChartFactory"; import { AlignmentCollector } from "../../../../RcsbCollectTools/AlignmentCollector/AlignmentCollector"; import { rcsbRequestCtxManager } from "../../../../RcsbRequest/RcsbRequestContextManager"; import { Helper } from "./Helper"; import { Assertions } from "../../../../RcsbUtils/Helpers/Assertions"; export var ResidueChartTools; (function (ResidueChartTools) { var assertDefined = Assertions.assertDefined; function getResidueDistribution(residueChart) { return __awaiter(this, void 0, void 0, function* () { switch (residueChart.granularity) { case "entry": return yield getEntryCharts(residueChart.rcsbId); case "assembly": return []; case "instance": return yield getInstanceCharts(residueChart.rcsbId); case "entity": return []; } }); } ResidueChartTools.getResidueDistribution = getResidueDistribution; function getEntryCharts(entryId) { return __awaiter(this, void 0, void 0, function* () { const instanceIds = (yield rcsbRequestCtxManager.getEntryProperties(entryId)).map(e => Array.from(e.entityToInstance.values()).flat()).flat(); let charts = []; for (const id of instanceIds) { charts = charts.concat(yield getInstanceCharts(id)); } return Helper.mergeCharts(charts); }); } function getInstanceCharts(instanceId) { return __awaiter(this, void 0, void 0, function* () { var _a, _b; const alignmentRequestContext = { queryId: instanceId, from: SequenceReference.PdbInstance, to: SequenceReference.PdbInstance }; const alignmentResponse = yield alignmentCollector.collect(alignmentRequestContext); const annotationsRequestContext = { queryId: instanceId, reference: SequenceReference.PdbInstance, sources: [AnnotationReference.PdbEntity, AnnotationReference.PdbInstance, AnnotationReference.Uniprot, AnnotationReference.PdbInterface], annotationGenerator: interfaceAnnotations, annotationFilter: filter }; return yield getCharts(annotationsRequestContext, yield annotationCollector.collect(annotationsRequestContext), (_b = (_a = alignmentResponse.query_sequence) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : -1); }); } function getCharts(annotationRequestContext, annotations, numberResidues) { return __awaiter(this, void 0, void 0, function* () { return processAnnotations({ annotations, annotationBlockManager: new AnnotationBlockManager(new AnnotationTrackManagerFactory(), new RcsbAnnotationConfig(rcm)), annotationRequestContext, trackBlockFactory: new TrackBlockFactory(), residueDistributionFactory: new TrackDistributionFactory(), distributionChartFactory: new DistributionChartFactory(), numberResidues }); }); } function processAnnotations(config) { return __awaiter(this, void 0, void 0, function* () { yield config.annotationBlockManager.setData(config.annotationRequestContext, config.annotations); return config.trackBlockFactory.getTrackBlocks(config.annotationBlockManager.getTracks()).map(block => (config.residueDistributionFactory.getDistribution(block.tracks, block.blockType, config.numberResidues))).map(distribution => { assertDefined(distribution); return config.distributionChartFactory.getChart(distribution); }); }); } const annotationCollector = new AnnotationCollector(); const alignmentCollector = new AlignmentCollector(); })(ResidueChartTools || (ResidueChartTools = {})); //# sourceMappingURL=ResidueChartTools.js.map