From 17a440ad9c4078ffaf04f45b5be0e2b6ae6742b4 Mon Sep 17 00:00:00 2001 From: David Sehnal <david.sehnal@gmail.com> Date: Wed, 16 Oct 2019 20:46:25 +0200 Subject: [PATCH] moved StructureQuery.runExpr to Script.getStructureSelection to fix cyclic dep --- src/apps/basic-wrapper/index.ts | 5 +++-- src/mol-model/structure/query/query.ts | 9 --------- src/mol-script/script.ts | 9 ++++++++- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/apps/basic-wrapper/index.ts b/src/apps/basic-wrapper/index.ts index a2c5b3a7c..b6f89f848 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 99ea40847..a126749a8 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 653a68f89..0248a96a1 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 -- GitLab