Browse Source

Merge pull request #377 from JonStargaryen/master

parse contour-level from emdb v3 header files
Alexander Rose 3 years ago
parent
commit
1e7a0159f0
1 changed files with 10 additions and 2 deletions
  1. 10 2
      src/mol-plugin/behavior/dynamic/volume-streaming/util.ts

+ 10 - 2
src/mol-plugin/behavior/dynamic/volume-streaming/util.ts

@@ -69,8 +69,16 @@ export async function getContourLevel(provider: 'emdb' | 'pdbe', plugin: PluginC
 export async function getContourLevelEmdb(plugin: PluginContext, taskCtx: RuntimeContext, emdbId: string) {
     const emdbHeaderServer = plugin.config.get(PluginConfig.VolumeStreaming.EmdbHeaderServer);
     const header = await plugin.fetch({ url: `${emdbHeaderServer}/${emdbId.toUpperCase()}/header/${emdbId.toLowerCase()}.xml`, type: 'xml' }).runInContext(taskCtx);
-    const map = header.getElementsByTagName('map')[0];
-    const contourLevel = parseFloat(map.getElementsByTagName('contourLevel')[0].textContent!);
+    const contours = header.getElementsByTagName('contour');
+
+    let primaryContour = contours[0];
+    for (let i = 1; i < contours.length; i++) {
+        if (contours[i].getAttribute('primary') === 'true') {
+            primaryContour = contours[i];
+            break;
+        }
+    }
+    const contourLevel = parseFloat(primaryContour.getElementsByTagName('level')[0].textContent!);
 
     return contourLevel;
 }