Browse Source

follow naming conventions for mmCIF fields

Yana Rose 4 năm trước cách đây
mục cha
commit
92e75a4066

+ 17 - 11
src/viewer/helpers/preset.ts

@@ -73,7 +73,10 @@ function targetToLoci(target: Target, structure: Structure): StructureElement.Lo
     return StructureSelection.toLociWithSourceUnits(selection);
 }
 
-type Range = { asymId: string, beg?: number, end?: number }
+type Range = {
+    label_asym_id: string
+    label_seq_id?: { beg: number, end?: number }
+}
 
 type BaseProps = {
     assemblyId?: string
@@ -243,12 +246,11 @@ export const RcsbPreset = TrajectoryHierarchyPresetProvider({
                     const colorValue = repr.value;
                     const positions = repr.positions;
                     for (const range of positions) {
-                        if (!structure.data!.inheritedPropertyData.colors[range.asymId])
-                            structure.data!.inheritedPropertyData.colors[range.asymId] = new Map();
-                        const residues: number[] = (range.beg && range.end) ? toRange(range.beg, range.end) : [];
-                        if (range.beg && !range.end) residues.push(range.beg);
+                        if (!structure.data!.inheritedPropertyData.colors[range.label_asym_id])
+                            structure.data!.inheritedPropertyData.colors[range.label_asym_id] = new Map();
+                        const residues: number[] = (range.label_seq_id) ? toRange(range.label_seq_id.beg, range.label_seq_id.end) : [];
                         for (const num of residues) {
-                            structure.data!.inheritedPropertyData.colors[range.asymId].set(num, colorValue);
+                            structure.data!.inheritedPropertyData.colors[range.label_asym_id].set(num, colorValue);
                         }
                     }
                 }
@@ -336,8 +338,8 @@ export const RcsbPreset = TrajectoryHierarchyPresetProvider({
 
 export function createSelectionExpression(entryId: string, range?: Range): SelectionExpression[] {
     if (range) {
-        const residues: number[] = (range.beg && range.end) ? toRange(range.beg, range.end) : [];
-        const test = selectionTest(range.asymId, residues);
+        const residues: number[] = (range.label_seq_id) ? toRange(range.label_seq_id.beg, range.label_seq_id.end) : [];
+        const test = selectionTest(range.label_asym_id, residues);
         const label = labelFromProps(entryId, range);
         return [{
             expression: MS.struct.generator.atomGroups(test),
@@ -398,13 +400,17 @@ export const selectionTest = (asymId: string, residues: number[]) => {
     }
 };
 
-export const toRange = (start: number, end: number) => {
+export const toRange = (start: number, end?: number) => {
+    if (!end) return [start];
     const b = start < end ? start : end;
     const e = start < end ? end : start;
     return [...Array(e - b + 1)].map((_, i) => b + i);
 };
 
 const labelFromProps = (entryId: string, range: Range) => {
-    return entryId + (range.asymId ? `.${range.asymId}` : '') +
-        (range.beg && range.end ? `:${range.beg.toString()}-${range.end.toString()}` : '');
+
+    const residues: number[] = (range.label_seq_id) ? toRange(range.label_seq_id.beg, range.label_seq_id.end) : [];
+    return entryId + (range.label_asym_id ? `.${range.label_asym_id}` : '') +
+        (residues ? `:${residues[0].toString()}` : '') +
+        (residues && residues.length > 1 ? `-${residues[residues.length - 1].toString()}` : '');
 };

+ 6 - 6
src/viewer/helpers/superpose/flexible-structure.ts

@@ -31,20 +31,20 @@ const FlexibleStructureFromModel = PluginStateTransform.BuiltIn({
             const selectChains: string[] = [];
             const selectBlocks: Structure[][] = [];
             for (const p of selection) {
-                if (!selectChains.includes(p.asymId)) {
-                    selectChains.push(p.asymId);
+                if (!selectChains.includes(p.label_asym_id)) {
+                    selectChains.push(p.label_asym_id);
                     selectBlocks.push([]);
                 }
-                const residues: number[] = (p.beg && p.end) ? toRange(p.beg, p.end) : [];
-                const test = selectionTest(p.asymId, residues);
+                const residues: number[] = (p.label_seq_id) ? toRange(p.label_seq_id.beg, p.label_seq_id.end) : [];
+                const test = selectionTest(p.label_asym_id, residues);
                 const expression = MS.struct.generator.atomGroups(test);
                 const { selection: sele } = StructureQueryHelper.createAndRun(base.data, expression);
                 const s = StructureSelection.unionStructure(sele);
                 if (!p.matrix) {
-                    selectBlocks[selectChains.indexOf(p.asymId)].push(s);
+                    selectBlocks[selectChains.indexOf(p.label_asym_id)].push(s);
                 } else {
                     const ts = Structure.transform(s, p.matrix);
-                    selectBlocks[selectChains.indexOf(p.asymId)].push(ts);
+                    selectBlocks[selectChains.indexOf(p.label_asym_id)].push(ts);
                 }
             }