Ver Fonte

re-add using _struct_asym cat in getStructAsymMap

- needed for ihm model support
Alexander Rose há 3 anos atrás
pai
commit
fc52e29c92

+ 1 - 2
src/mol-model-formats/structure/basic/parser.ts

@@ -114,8 +114,7 @@ function createIntegrativeModel(data: BasicData, ihm: CoarseData, properties: Co
     if (ihm.model_name) label.push(ihm.model_name);
     if (ihm.model_group_name) label.push(ihm.model_group_name);
 
-    // TODO: should this contain anything from coarse hierarchy?
-    const structAsymMap = getStructAsymMap(atomic.hierarchy);
+    const structAsymMap = getStructAsymMap(atomic.hierarchy, data);
 
     return {
         id: UUID.create22(),

+ 16 - 1
src/mol-model-formats/structure/basic/properties.ts

@@ -109,7 +109,7 @@ const getUniqueComponentNames = memoize1((data: BasicData) => {
 });
 
 
-export function getStructAsymMap(atomic: AtomicHierarchy): Model['properties']['structAsymMap'] {
+export function getStructAsymMap(atomic: AtomicHierarchy, data?: BasicData): Model['properties']['structAsymMap'] {
     const map = new Map<string, StructAsym>();
 
     const { auth_asym_id, label_asym_id, label_entity_id } = atomic.chains;
@@ -119,5 +119,20 @@ export function getStructAsymMap(atomic: AtomicHierarchy): Model['properties']['
         map.set(id, { id, auth_id: auth_asym_id.value(i), entity_id: label_entity_id.value(i) });
     }
 
+    // to get asym mapping for coarse/ihm data
+    if (data?.struct_asym._rowCount) {
+        const { id, entity_id } = data.struct_asym;
+        for (let i = 0, il = id.rowCount; i < il; ++i) {
+            const _id = id.value(i);
+            if (!map.has(_id)) {
+                map.set(_id, {
+                    id: _id,
+                    auth_id: '',
+                    entity_id: entity_id.value(i)
+                });
+            }
+        }
+    }
+
     return map;
 }