diff --git a/package-lock.json b/package-lock.json index 574466fb80e296362a8edd3ffa07466f61cfabde..5dd7cdfdd0103d81974786acc11356f597f66b03 100644 Binary files a/package-lock.json and b/package-lock.json differ diff --git a/package.json b/package.json index dc1072fccf3d5e5ff122a92708bdab6b51c44cc7..e706caab0381acd0cb43054be2d954f257ac6905 100644 --- a/package.json +++ b/package.json @@ -135,6 +135,7 @@ "webpack-cli": "^4.10.0" }, "dependencies": { + "util" : "*", "parsimmon": "^1.6.2", "semver": "^5.4.1", "ciftools.js": "github:dsehnal/CIFTools.js#34cd913", diff --git a/src/mol-plugin-state/helpers/structure-component.ts b/src/mol-plugin-state/helpers/structure-component.ts index 6ddaac6b1c0c4f131985c9f23f36254ef8d4a1bb..76888cf9b72cbe28e17ab262458d77eb59f8d384 100644 --- a/src/mol-plugin-state/helpers/structure-component.ts +++ b/src/mol-plugin-state/helpers/structure-component.ts @@ -40,7 +40,7 @@ export const StructureComponentParams = () => ({ static: PD.Text<StaticStructureComponentType>('polymer'), expression: PD.Value<Expression>(MolScriptBuilder.struct.generator.all), bundle: PD.Value<StructureElement.Bundle>(StructureElement.Bundle.Empty), - script: PD.Script({ language: 'mol-script', expression: '(sel.atom.all)' }), + script: PD.Script({ language: 'pymol', expression: 'all' }), }, { isHidden: true }), nullIfEmpty: PD.Optional(PD.Boolean(true, { isHidden: true })), label: PD.Text('', { isHidden: true }) @@ -167,4 +167,4 @@ export function updateStructureComponent(a: Structure, b: SO.Molecule.Structure, } return updated ? StateTransformer.UpdateResult.Updated : StateTransformer.UpdateResult.Unchanged; -} \ No newline at end of file +} diff --git a/src/mol-plugin-state/transforms/model.ts b/src/mol-plugin-state/transforms/model.ts index e9b356ddcd6fca4c285926139203ce8411fb68b6..5d317d4803edf97e0e9c0e561ebfbc320e52ffaa 100644 --- a/src/mol-plugin-state/transforms/model.ts +++ b/src/mol-plugin-state/transforms/model.ts @@ -786,7 +786,7 @@ const StructureSelectionFromScript = PluginStateTransform.BuiltIn({ from: SO.Molecule.Structure, to: SO.Molecule.Structure, params: () => ({ - script: PD.Script({ language: 'mol-script', expression: '(sel.atom.atom-groups :residue-test (= atom.resname ALA))' }), + script: PD.Script({ language: 'pymol', expression: 'chain A' }), label: PD.Optional(PD.Text('')) }) })({ @@ -1079,4 +1079,4 @@ const ShapeFromPly = PluginStateTransform.BuiltIn({ return new SO.Shape.Provider(shape, props); }); } -}); \ No newline at end of file +}); diff --git a/src/mol-plugin-state/transforms/representation.ts b/src/mol-plugin-state/transforms/representation.ts index 32c564437b540369c43419285eb68e579a24a925..1194eb09dcb6569b92a579d3e26449d3e552d1cd 100644 --- a/src/mol-plugin-state/transforms/representation.ts +++ b/src/mol-plugin-state/transforms/representation.ts @@ -315,12 +315,12 @@ const OverpaintStructureRepresentation3DFromScript = PluginStateTransform.BuiltI to: SO.Molecule.Structure.Representation3DState, params: () => ({ layers: PD.ObjectList({ - script: PD.Script(Script('(sel.atom.all)', 'mol-script')), + script: PD.Script(Script('all', 'pymol')), color: PD.Color(ColorNames.blueviolet), clear: PD.Boolean(false) }, e => `${e.clear ? 'Clear' : Color.toRgbString(e.color)}`, { defaultValue: [{ - script: Script('(sel.atom.all)', 'mol-script'), + script: Script('all','pymol'), color: ColorNames.blueviolet, clear: false }] @@ -430,11 +430,11 @@ const TransparencyStructureRepresentation3DFromScript = PluginStateTransform.Bui to: SO.Molecule.Structure.Representation3DState, params: () => ({ layers: PD.ObjectList({ - script: PD.Script(Script('(sel.atom.all)', 'mol-script')), + script: PD.Script(Script('all','pymol')), value: PD.Numeric(0.5, { min: 0, max: 1, step: 0.01 }, { label: 'Transparency' }), }, e => `Transparency (${e.value})`, { defaultValue: [{ - script: Script('(sel.atom.all)', 'mol-script'), + script: Script('all','pymol'), value: 0.5, }] }) @@ -541,12 +541,12 @@ const SubstanceStructureRepresentation3DFromScript = PluginStateTransform.BuiltI to: SO.Molecule.Structure.Representation3DState, params: () => ({ layers: PD.ObjectList({ - script: PD.Script(Script('(sel.atom.all)', 'mol-script')), + script: PD.Script(Script('all','pymol')), material: Material.getParam(), clear: PD.Boolean(false) }, e => `${e.clear ? 'Clear' : Material.toString(e.material)}`, { defaultValue: [{ - script: Script('(sel.atom.all)', 'mol-script'), + script: Script('all','pymol'), material: Material({ roughness: 1 }), clear: false }] @@ -656,11 +656,11 @@ const ClippingStructureRepresentation3DFromScript = PluginStateTransform.BuiltIn to: SO.Molecule.Structure.Representation3DState, params: () => ({ layers: PD.ObjectList({ - script: PD.Script(Script('(sel.atom.all)', 'mol-script')), + script: PD.Script(Script('all','pymol')), groups: PD.Converted((g: Clipping.Groups) => Clipping.Groups.toNames(g), n => Clipping.Groups.fromNames(n), PD.MultiSelect(ObjectKeys(Clipping.Groups.Names), PD.objectToOptions(Clipping.Groups.Names))), }, e => `${Clipping.Groups.toNames(e.groups).length} group(s)`, { defaultValue: [{ - script: Script('(sel.atom.all)', 'mol-script'), + script: Script('all','pymol'), groups: Clipping.Groups.Flag.None, }] }), @@ -1165,4 +1165,4 @@ const StructureSelectionsPlane3D = PluginStateTransform.BuiltIn({ return StateTransformer.UpdateResult.Updated; }); }, -}); \ No newline at end of file +}); diff --git a/src/mol-script/script.ts b/src/mol-script/script.ts index 756861c6a62a118da82c2347023f3854f8480e8c..d03734186a493cb2e4b9cb155ee254af4ca4ce0c 100644 --- a/src/mol-script/script.ts +++ b/src/mol-script/script.ts @@ -4,8 +4,9 @@ * @author Alexander Rose <alexander.rose@weirdbyte.de> */ -import { transpileMolScript } from './script/mol-script/symbols'; -import { parseMolScript } from './language/parser'; +//import { transpileMolScript } from './script/mol-script/symbols'; +//import { parseMolScript } from './language/parser'; +import { parse } from './transpile'; import { Expression } from './language/expression'; import { StructureElement, QueryContext, StructureSelection, Structure, QueryFn, QueryContextOptions } from '../mol-model/structure'; import { compile } from './runtime/query/compiler'; @@ -20,7 +21,7 @@ function Script(expression: string, language: Script.Language): Script { } namespace Script { - export type Language = 'mol-script' + export type Language = 'pymol' export function is(x: any): x is Script { return !!x && typeof (x as Script).expression === 'string' && !!(x as Script).language; @@ -32,10 +33,16 @@ namespace Script { export function toExpression(script: Script): Expression { switch (script.language) { - case 'mol-script': - const parsed = parseMolScript(script.expression); - if (parsed.length === 0) throw new Error('No query'); - return transpileMolScript(parsed[0]); +// case 'mol-script': +// const parsed = parseMolScript(script.expression); +// if (parsed.length === 0) throw new Error('No query'); +// return transpileMolScript(parsed[0]); + + case 'pymol': + const parsed = parse("pymol",script.expression); +// if (parsed.length === 0) throw new Error('No query'); + //return transpileMolScript(parsed); + return parsed as Expression; } throw new Error('unsupported script language'); } @@ -56,4 +63,4 @@ namespace Script { const query = compile<StructureSelection>(e); return query(new QueryContext(structure, options)); } -} \ No newline at end of file +} diff --git a/src/mol-script/transpile.ts b/src/mol-script/transpile.ts index 7b94709a14b3ac32f99e838de772489ad1e335bd..d02a0a8d2e04b614a0447ac304b942662dba4ee7 100644 --- a/src/mol-script/transpile.ts +++ b/src/mol-script/transpile.ts @@ -5,13 +5,13 @@ import _transpiler from './transpilers/all' const transpiler: {[index: string]: Transpiler} = _transpiler -const util = require('util') +//const util = require('util') -function parse(lang: string, str: string) { +export function parse(lang: string, str: string) { try { const query = transpiler[lang](str); console.log(str); - console.log(util.inspect(query, {depth: 20, color: true})); + //console.log(util.inspect(query, {depth: 20, color: true})); console.log('\n'); return query; //compile(query) @@ -28,4 +28,5 @@ if (lang && str) { parse(lang, str); } -default export parse; +//export default parse; +