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