ソースを参照

assymbly-symmetry: filter C1, export AssemblySymmetry3D

Alexander Rose 5 年 前
コミット
e966c112ab

+ 4 - 2
src/mol-model-props/rcsb/assembly-symmetry.ts

@@ -37,6 +37,7 @@ export namespace AssemblySymmetry {
         const mmcif = structure.models[0].sourceData.data.db
         if (!mmcif.pdbx_struct_assembly.details.isDefined) return false
         const id = structure.units[0].conformation.operator.assembly.id
+        if (id === '' || id === 'deposited') return true
         const indices = Column.indicesOf(mmcif.pdbx_struct_assembly.id, e => e === id)
         if (indices.length !== 1) return false
         const details = mmcif.pdbx_struct_assembly.details.value(indices[0])
@@ -48,7 +49,7 @@ export namespace AssemblySymmetry {
 
         const client = new GraphQLClient(props.serverUrl, ctx.fetch)
         const variables: AssemblySymmetryQueryVariables = {
-            assembly_id: structure.units[0].conformation.operator.assembly.id,
+            assembly_id: structure.units[0].conformation.operator.assembly.id || 'deposited',
             entry_id: structure.units[0].model.entryId
         }
         const result = await client.request<AssemblySymmetryQuery>(ctx.runtime, query, variables)
@@ -56,7 +57,8 @@ export namespace AssemblySymmetry {
         if (!result.assembly?.rcsb_struct_symmetry) {
             throw new Error('missing fields')
         }
-        return result.assembly.rcsb_struct_symmetry as AssemblySymmetryValue
+        const symmetry = result.assembly.rcsb_struct_symmetry as AssemblySymmetryValue
+        return symmetry.filter(s => s.symbol !== 'C1')
     }
 }
 

+ 2 - 0
src/mol-plugin/behavior/dynamic/custom-props/rcsb/assembly-symmetry.ts

@@ -61,6 +61,8 @@ const InitAssemblySymmetry3D = StateAction.build({
     await state.updateTree(tree).runInContext(ctx);
 }));
 
+export { AssemblySymmetry3D }
+
 type AssemblySymmetry3D = typeof AssemblySymmetry3D
 const AssemblySymmetry3D = PluginStateTransform.BuiltIn({
     name: 'rcsb-assembly-symmetry-3d',