diff --git a/src/apps/basic-wrapper/index.ts b/src/apps/basic-wrapper/index.ts index a2c5b3a7cfe6538a69928acd5ab840ec87441a32..b6f89f8488e4a448bbdadd07f79ab6c01148d571 100644 --- a/src/apps/basic-wrapper/index.ts +++ b/src/apps/basic-wrapper/index.ts @@ -19,7 +19,8 @@ import { StaticSuperpositionTestData, buildStaticSuperposition, dynamicSuperposi import { PDBeStructureQualityReport } from '../../mol-plugin/behavior/dynamic/custom-props'; import { CustomToastMessage } from './controls'; import { EmptyLoci } from '../../mol-model/loci'; -import { StructureSelection, StructureQuery } from '../../mol-model/structure'; +import { StructureSelection } from '../../mol-model/structure'; +import { Script } from '../../mol-script/script'; require('mol-plugin/skin/light.scss') type SupportedFormats = 'cif' | 'pdb' @@ -149,7 +150,7 @@ class BasicWrapper { highlightOn: () => { const seq_id = 7; const data = (this.plugin.state.dataState.select('asm')[0].obj as PluginStateObject.Molecule.Structure).data; - const sel = StructureQuery.runExpr(Q => Q.struct.generator.atomGroups({ + const sel = Script.getStructureSelection(Q => Q.struct.generator.atomGroups({ 'residue-test': Q.core.rel.eq([Q.struct.atomProperty.macromolecular.label_seq_id(), seq_id]), 'group-by': Q.struct.atomProperty.macromolecular.residueKey() }), data); diff --git a/src/mol-model/structure/query/query.ts b/src/mol-model/structure/query/query.ts index 99ea408473b6a6e66bba8c2e13e75b90d8e66066..a126749a8702af003a5611071f2c4b1c2a1b18d3 100644 --- a/src/mol-model/structure/query/query.ts +++ b/src/mol-model/structure/query/query.ts @@ -7,21 +7,12 @@ import { Structure } from '../structure' import { StructureSelection } from './selection' import { QueryContext, QueryFn, QueryContextOptions } from './context'; -import Expression from '../../../mol-script/language/expression'; -import { compile } from '../../../mol-script/runtime/query/compiler'; -import { MolScriptBuilder } from '../../../mol-script/language/builder'; interface StructureQuery extends QueryFn<StructureSelection> { } namespace StructureQuery { export function run(query: StructureQuery, structure: Structure, options?: QueryContextOptions) { return query(new QueryContext(structure, options)); } - - export function runExpr(expr: Expression | ((builder: typeof MolScriptBuilder) => Expression), structure: Structure, options?: QueryContextOptions) { - const e = typeof expr === 'function' ? expr(MolScriptBuilder) : expr; - const query = compile<StructureSelection>(e); - return query(new QueryContext(structure, options)); - } } export { StructureQuery } \ No newline at end of file diff --git a/src/mol-script/script.ts b/src/mol-script/script.ts index 653a68f89556c47f88083c031c1ddfad421af1b4..0248a96a1b1693396be600b252389f70a79dd21a 100644 --- a/src/mol-script/script.ts +++ b/src/mol-script/script.ts @@ -7,8 +7,9 @@ import { transpileMolScript } from './script/mol-script/symbols'; import { parseMolScript } from './language/parser'; import Expression from './language/expression'; -import { StructureElement, QueryContext, StructureSelection, Structure, QueryFn } from '../mol-model/structure'; +import { StructureElement, QueryContext, StructureSelection, Structure, QueryFn, QueryContextOptions } from '../mol-model/structure'; import { compile } from './runtime/query/compiler'; +import { MolScriptBuilder } from './language/builder'; export { Script } @@ -45,4 +46,10 @@ namespace Script { const result = query(new QueryContext(structure)) return StructureSelection.toLociWithSourceUnits(result) } + + export function getStructureSelection(expr: Expression | ((builder: typeof MolScriptBuilder) => Expression), structure: Structure, options?: QueryContextOptions) { + const e = typeof expr === 'function' ? expr(MolScriptBuilder) : expr; + const query = compile<StructureSelection>(e); + return query(new QueryContext(structure, options)); + } } \ No newline at end of file