Ver Fonte

fix symmetry preset

Sebastian Bittrich há 3 anos atrás
pai
commit
919c93b5eb
1 ficheiros alterados com 13 adições e 1 exclusões
  1. 13 1
      src/viewer/helpers/preset.ts

+ 13 - 1
src/viewer/helpers/preset.ts

@@ -42,6 +42,11 @@ import {
     toRange
 } from './selection';
 import { RcsbSuperpositionRepresentationPreset } from './superpose/preset';
+import {
+    AssemblySymmetryDataProvider,
+    AssemblySymmetryProvider
+} from 'molstar/lib/extensions/rcsb/assembly-symmetry/prop';
+import { Task } from 'molstar/lib/mol-task';
 
 type BaseProps = {
     assemblyId?: string
@@ -229,7 +234,14 @@ export const RcsbPreset = TrajectoryHierarchyPresetProvider({
         } else if (p.kind === 'validation') {
             representation = await plugin.builders.structure.representation.applyPreset(structureProperties!, ValidationReportGeometryQualityPreset);
         } else if (p.kind === 'symmetry') {
-            representation = await plugin.builders.structure.representation.applyPreset<any>(structureProperties!, AssemblySymmetryPreset, { symmetryIndex: p.symmetryIndex });
+            if (!AssemblySymmetryDataProvider.get(structure!.obj!.data).value) {
+                await plugin.runTask(Task.create('Assembly Symmetry', async runtime => {
+                    const propCtx = { runtime, assetManager: plugin.managers.asset };
+                    await AssemblySymmetryDataProvider.attach(propCtx, structure!.obj!.data);
+                    await AssemblySymmetryProvider.attach(propCtx, structure!.obj!.data, { symmetryIndex: p.symmetryIndex });
+                }));
+            }
+            representation = await plugin.builders.structure.representation.applyPreset<any>(structureProperties!, AssemblySymmetryPreset);
 
             ViewerState(plugin).collapsed.next({
                 ...ViewerState(plugin).collapsed.value,