From feb93b44cb4c659f4ebeceeeb4c21cdc65773f91 Mon Sep 17 00:00:00 2001 From: Alexander Rose <alexander.rose@weirdbyte.de> Date: Wed, 13 Feb 2019 13:59:21 -0800 Subject: [PATCH] added StructureSymmetryFromModel --- src/mol-plugin/index.ts | 1 + src/mol-plugin/state/actions/basic.ts | 2 +- src/mol-plugin/state/transforms/model.ts | 26 ++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/mol-plugin/index.ts b/src/mol-plugin/index.ts index ba07c78ce..54e7e1590 100644 --- a/src/mol-plugin/index.ts +++ b/src/mol-plugin/index.ts @@ -31,6 +31,7 @@ export const DefaultPluginSpec: PluginSpec = { PluginSpec.Action(StateTransforms.Data.ParseCif), PluginSpec.Action(StateTransforms.Data.ParseCcp4), PluginSpec.Action(StateTransforms.Model.StructureAssemblyFromModel), + PluginSpec.Action(StateTransforms.Model.StructureSymmetryFromModel), PluginSpec.Action(StateTransforms.Model.StructureFromModel), PluginSpec.Action(StateTransforms.Model.ModelFromTrajectory), PluginSpec.Action(StateTransforms.Model.VolumeFromCcp4), diff --git a/src/mol-plugin/state/actions/basic.ts b/src/mol-plugin/state/actions/basic.ts index d54a87b9a..68bef84e3 100644 --- a/src/mol-plugin/state/actions/basic.ts +++ b/src/mol-plugin/state/actions/basic.ts @@ -14,7 +14,7 @@ import { ParamDefinition as PD } from 'mol-util/param-definition'; import { PluginStateObject } from '../objects'; import { StateTransforms } from '../transforms'; import { Download } from '../transforms/data'; -import { StructureRepresentation3DHelpers, VolumeRepresentation3DHelpers } from '../transforms/representation'; +import { StructureRepresentation3DHelpers } from '../transforms/representation'; import { getFileInfo, FileInput } from 'mol-util/file-info'; import { Task } from 'mol-task'; diff --git a/src/mol-plugin/state/transforms/model.ts b/src/mol-plugin/state/transforms/model.ts index 958e2ef90..66e8fff91 100644 --- a/src/mol-plugin/state/transforms/model.ts +++ b/src/mol-plugin/state/transforms/model.ts @@ -134,6 +134,32 @@ const StructureAssemblyFromModel = PluginStateTransform.BuiltIn({ } }); +export { StructureSymmetryFromModel } +type StructureSymmetryFromModel = typeof StructureSymmetryFromModel +const StructureSymmetryFromModel = PluginStateTransform.BuiltIn({ + name: 'structure-symmetry-from-model', + display: { name: 'Structure Symmetry', description: 'Create a molecular structure symmetry.' }, + from: SO.Molecule.Model, + to: SO.Molecule.Structure, + params(a) { + return { + ijkMin: PD.Vec3(Vec3.create(-1, -1, -1), { label: 'Min IJK', fieldLabels: { x: 'I', y: 'J', z: 'K' } }), + ijkMax: PD.Vec3(Vec3.create(1, 1, 1), { label: 'Max IJK', fieldLabels: { x: 'I', y: 'J', z: 'K' } }) + } + } +})({ + apply({ a, params }, plugin: PluginContext) { + return Task.create('Build Symmetry', async ctx => { + const { ijkMin, ijkMax } = params + const model = a.data; + const base = Structure.ofModel(model); + const s = await StructureSymmetry.buildSymmetryRange(base, ijkMin, ijkMax).runInContext(ctx); + const props = { label: `Symmetry [${ijkMin}] to [${ijkMax}]`, description: structureDesc(s) }; + return new SO.Molecule.Structure(s, props); + }) + } +}); + export { StructureSelection } type StructureSelection = typeof StructureSelection const StructureSelection = PluginStateTransform.BuiltIn({ -- GitLab