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