UNPKG

@rcsb/rcsb-saguaro-app

Version:
78 lines 3.97 kB
import { __awaiter } from "tslib"; import { SequenceReference } from "@rcsb/rcsb-api-tools/lib/RcsbGraphQL/Types/Borrego/GqlTypes"; import { SequenceTrackTitleFactory } from "../TrackTitleFactoryImpl/SequenceTrackTitleFactory"; import { TrackUtils } from "./Helper/TrackUtils"; import { Assertions } from "../../../../RcsbUtils/Helpers/Assertions"; var assertDefined = Assertions.assertDefined; import { TagDelimiter } from "@rcsb/rcsb-api-tools/lib/RcsbUtils/TagDelimiter"; export class SequenceTrackFactory { constructor(entityInstanceTranslator, trackTitleFactory) { this.entityInstanceTranslator = undefined; this.entityInstanceTranslator = entityInstanceTranslator; this.trackTitleFactory = trackTitleFactory !== null && trackTitleFactory !== void 0 ? trackTitleFactory : new SequenceTrackTitleFactory(entityInstanceTranslator); } getTrack(alignmentQueryContext, querySequence) { return __awaiter(this, void 0, void 0, function* () { var _a, _b; const queryId = (_a = alignmentQueryContext.queryId) !== null && _a !== void 0 ? _a : alignmentQueryContext.groupId; assertDefined(queryId); return { trackId: "mainSequenceTrack_" + ((_b = alignmentQueryContext.queryId) !== null && _b !== void 0 ? _b : alignmentQueryContext.groupId), displayType: "sequence" /* RcsbFvDisplayTypes.SEQUENCE */, trackColor: "#F9F9F9", displayColor: "#000000", rowTitle: yield this.trackTitleFactory.getTrackTitle(alignmentQueryContext), rowPrefix: yield this.trackTitleFactory.getTrackTitlePrefix(alignmentQueryContext), titleFlagColor: yield this.trackTitleFactory.getTrackTitleFlagColor(alignmentQueryContext), nonEmptyDisplay: true, overlap: true, trackData: this.buildSequenceData({ sequence: querySequence, begin: 1, oriBegin: undefined, queryId, targetId: "", from: alignmentQueryContext.from, to: undefined }, "from") }; }); } buildSequenceData(config, source) { const sequenceData = new Array(); const id = source === "from" ? config.queryId : config.targetId; config.sequence.split("").forEach((s, i) => { const c = config[source]; if (!c) return; const o = { begin: (config.begin + i), oriBegin: typeof config.oriBegin === "number" ? config.oriBegin + i : undefined, sourceId: id, source: TrackUtils.transformSourceFromTarget(id, c), provenanceName: TrackUtils.getProvenanceConfigFormTarget(id, c).name, provenanceColor: TrackUtils.getProvenanceConfigFormTarget(id, c).color, label: s, name: `RES ${s}` }; sequenceData.push(this.addAuthorResIds(o, { from: config.from, to: config.to, queryId: config.queryId, targetId: config.targetId })); }); return sequenceData; } //TODO this method can be defined in a helper addAuthorResIds(e, alignmentContext) { let o = e; if (this.entityInstanceTranslator != null) { this.entityInstanceTranslator.addAuthorResIds(o, alignmentContext); } if (alignmentContext.to == SequenceReference.PdbInstance && o.sourceId != null && this.entityInstanceTranslator != null) o.sourceId = o.sourceId.split(TagDelimiter.instance)[0] + TagDelimiter.instance + this.entityInstanceTranslator.translateAsymToAuth(o.sourceId.split(TagDelimiter.instance)[1]); return o; } } //# sourceMappingURL=SequenceTrackFactory.js.map