UNPKG

@rcsb/rcsb-saguaro-app

Version:
93 lines 3.91 kB
import { SequenceReference, AnnotationReference } from "@rcsb/rcsb-api-tools/lib/RcsbGraphQL/Types/Borrego/GqlTypes"; import { TagDelimiter } from "@rcsb/rcsb-api-tools/lib/RcsbUtils/TagDelimiter"; export class PolymerEntityInstanceTranslate { constructor(data) { this.instanceAsymToAuth = new Map(); this.instanceAuthToAsym = new Map(); this.instanceAsymToEntity = new Map(); this.entityToAsym = new Map(); this.instanceAuthResIds = new Map(); this.INDEX_NAME = "auth"; this.rawData = data; data.forEach(d => { var _a; this.instanceAsymToAuth.set(d.asymId, d.authId); this.instanceAuthToAsym.set(d.authId, d.asymId); this.instanceAuthResIds.set(d.asymId, d.authResId); this.instanceAsymToEntity.set(d.asymId, d.entityId); if (!this.entityToAsym.has(d.entityId)) this.entityToAsym.set(d.entityId, new Set()); (_a = this.entityToAsym.get(d.entityId)) === null || _a === void 0 ? void 0 : _a.add(d.asymId); }); } getData() { return this.rawData; } translateEntityToAsym(id) { const asymIds = this.entityToAsym.get(id); if (asymIds) return Array.from(asymIds); } translateAsymToEntity(id) { return this.instanceAsymToEntity.get(id); } translateAsymToAuth(id) { return this.instanceAsymToAuth.get(id); } translateAuthToAsym(id) { return this.instanceAuthToAsym.get(id); } translateAuthResId(asymId, index) { const autReaIds = this.instanceAuthResIds.get(asymId); if (!autReaIds) return undefined; else if (index > autReaIds.length) return undefined; else if (autReaIds[index - 1]) return undefined; else return autReaIds[index - 1]; } addAuthorResIds(e, alignmentContext) { let o = e; if (alignmentContext.from === SequenceReference.PdbInstance && alignmentContext.to) { const asymId = alignmentContext.queryId.split(TagDelimiter.instance)[1]; this.helperAddAuthorResIds(o, alignmentContext.from, alignmentContext.to, asymId); o.indexName = this.INDEX_NAME; } else if (alignmentContext.to === SequenceReference.PdbInstance && alignmentContext.from) { const asymId = alignmentContext.targetId.split(TagDelimiter.instance)[1]; this.helperAddAuthorResIds(o, alignmentContext.from, alignmentContext.to, asymId); o.indexName = this.INDEX_NAME; } return o; } helperAddAuthorResIds(e, reference, source, asymId) { let out = e; const authResIds = this.instanceAuthResIds.get(asymId); if (!authResIds) return out; if (reference === SequenceReference.PdbInstance || (reference === SequenceReference.PdbEntity && source === AnnotationReference.PdbInstance)) { const x = authResIds[e.begin - 1]; if (typeof e.end === "number" && authResIds[e.end - 1] != x) { out.beginName = x; out.endName = authResIds[e.end - 1]; } else if (typeof e.end != "number" || authResIds[e.end - 1] == x) { out.beginName = x; } } else if (source === AnnotationReference.PdbInstance && e.oriBegin) { const x = authResIds[e.oriBegin - 1]; if (typeof e.oriEnd === "number" && authResIds[e.oriEnd - 1] != x) { out.oriBeginName = x; out.oriEndName = authResIds[e.oriEnd - 1]; } else if (typeof e.oriEnd != "number" || authResIds[e.oriEnd - 1] == x) { out.oriBeginName = x; } } return out; } } //# sourceMappingURL=PolymerEntityInstanceTranslate.js.map