Explorar el Código

Merge pull request #11 from yakomaxa/molql_integration_PR

merge from molql_integration_PR
KoyaS hace 2 años
padre
commit
e3e982c051

+ 4 - 119
src/mol-model/structure/query/queries/atom-set.ts

@@ -8,98 +8,12 @@
  *
  * @author David Sehnal <david.sehnal@gmail.com>
  */
-/*
-import Environment from '../environment'
-import Expression from '../expression'
-import Context from '../context'
-import AtomSet from '../../data/atom-set'
-import AtomSelection from '../../data/atom-selection'
-import ElementAddress from '../../data/element-address'
-import { FastSet } from '../../../utils/collections'
-import { getAtomSetProperties } from './filters'
-*/
 
-import { StructureQuery} from '../query';
-import { StructureSelection } from '../selection';
-//import { getCurrentStructurePropertiesInternal, UnitTypeProperties } from './filters';
-import { getCurrentStructurePropertiesInternal} from './filters';
-import { QueryContext, QueryFn } from '../context';
-// import { none } from './generators';
-// import { HashSet } from '../../../../mol-data/generic';
-// import { Structure } from '../../structure';
-
-
-/*
-import { SetUtils } from '../../../../mol-util/set';
-import { Unit } from '../../structure';
-import { QueryContext, QueryFn, QueryPredicate } from '../context';
 import { StructureQuery } from '../query';
 import { StructureSelection } from '../selection';
-import { structureAreIntersecting } from '../utils/structure-set';
-import { Vec3 } from '../../../../mol-math/linear-algebra';
-import { checkStructureMaxRadiusDistance, checkStructureMinMaxDistance } from '../utils/structure-distance';
-import { Structure } from '../../structure/structure';
-import { StructureElement } from '../../structure/element';
-import { SortedArray } from '../../../../mol-data/int';
-*/
-/*
-export function pick(query: StructureQuery, pred: QueryPredicate): StructureQuery {
-    return ctx => {
-        const sel = query(ctx);
-        const ret = StructureSelection.LinearBuilder(ctx.inputStructure);
-        ctx.pushCurrentElement();
-        StructureSelection.forEach(sel, (s, i) => {
-            ctx.currentStructure = s;
-            if (pred(ctx)) ret.add(s);
-            if (i % 100) ctx.throwIfTimedOut();
-        });
-        ctx.popCurrentStructure();
-        return ret.getSelection();
-    };
-}
-
-export function pick(env: Environment, selection: Selection, pred: Expression<boolean>) {
-    const sel = selection(env);
-    const ret = AtomSelection.linearBuilder();
-
-    Environment.lockSlot(env, 'atomSet');
-    const { slots } = env;
-    for (const atomSet of AtomSelection.atomSets(sel)) {
-        slots.atomSet = atomSet;
-        if (pred(env)) ret.add(atomSet);
-    }
-    Environment.unlockSlot(env, 'atomSet');
-    return ret.getSelection();
-}
-
-*/
-
-
-
-
-// xport function merge(queries: ArrayLike<StructureQuery>): S
-
-// export function atomCount(env: Environment) {
-//    return AtomSet.count(env.slots.atomSet);
-// }
-
-// export function atomCount(query : StructureSelection) : StructureQuery {
-
-
+import { getCurrentStructureProperties } from './filters';
+import { QueryContext, QueryFn } from '../context';
 
-// export function atomCount(env: Environment) {
-//   return AtomSet.count(env.slots.atomSet);
-// }
-
-/*
-export function atomCount(ctx: QueryContext) {
-    return (ctx: QueryContext) => {
-        const all = StructureSelection.Singletons(ctx.inputStructure, ctx.inputStructure)
-        const x: number = StructureSelection.structureCount(all);
-        return x;
-    };
-}
-*/
 
 export function atomCount(ctx: QueryContext) {
     return (ctx: QueryContext) => {
@@ -109,19 +23,6 @@ export function atomCount(ctx: QueryContext) {
     };
 }
 
-
-// export function atomCount(ctx: QueryContext) {
-//    return (ctx: any) => {
-//        const x: number = StructureSelection.structureCount(ctx);
-//        return x;
-//    };
-// }
-
-// export function countQuery(env: Environment, query: Expression<AtomSelection>) {
-//    const sel = query(Environment(Context.ofAtomSet(env.context, env.slots.atomSet)))
-//    return AtomSelection.atomSets(sel).length;
-// }
-
 export function countQuery(ctx: QueryContext, query: StructureQuery) {
     return (ctx: QueryContext) => {
         const sel = query(ctx);
@@ -131,29 +32,13 @@ export function countQuery(ctx: QueryContext, query: StructureQuery) {
 }
 
 
-//export function propertySet(ctx: QueryContext, prop: UnitTypeProperties) {
+// export function propertySet(ctx: QueryContext, prop: UnitTypeProperties) {
 export function propertySet(ctx: QueryContext, prop: QueryFn<any>) {
     return (ctx: QueryContext) => {
         const set = new Set();
-        const x = getCurrentStructurePropertiesInternal(ctx, prop, set);
+        const x = getCurrentStructureProperties(ctx, prop, set);
         //	console.log(x)
         return x;
     };
 }
 
-/*
-unction getSelectionProperties(ctx: QueryContext, query: StructureQuery, props: UnitTypeProperties) {
-
-
-
-    const sel = query(ctx);
-    ctx.pushCurrentElement();
-    StructureSelection.forEach(sel, (s, i) => {
-	ctx.currentStructure = s;
-        getCurrentStructureProperties(ctx, props, set);
-
-        if (i % 10) ctx.throwIfTimedOut();
-    });
-    ctx.popCurrentElement();
-    return set;
-*/

+ 10 - 9
src/mol-model/structure/query/queries/filters.ts

@@ -6,7 +6,7 @@
 
 import { SetUtils } from '../../../../mol-util/set';
 import { Unit } from '../../structure';
-//import { QueryContext, QueryFn, QueryPredicate } from '../context';
+// import { QueryContext, QueryFn, QueryPredicate } from '../context';
 import { QueryContext, QueryFn } from '../context';
 import { StructureQuery } from '../query';
 import { StructureSelection } from '../selection';
@@ -17,7 +17,7 @@ import { Structure } from '../../structure/structure';
 import { StructureElement } from '../../structure/element';
 import { SortedArray } from '../../../../mol-data/int';
 
-//export function pick(query: StructureQuery, pred: QueryPredicate): StructureQuery {
+// export function pick(query: StructureQuery, pred: QueryPredicate): StructureQuery {
 export function pick(query: StructureQuery, pred: QueryFn<any>): StructureQuery {
     return ctx => {
         const sel = query(ctx);
@@ -52,8 +52,8 @@ export function first(query: StructureQuery): StructureQuery {
     };
 }
 
-export interface UnitTypeProperties { atomic?: QueryFn, coarse?: QueryFn }
-
+// export interface UnitTypeProperties { atomic?: QueryFn, coarse?: QueryFn }
+/*
 export function getCurrentStructureProperties(ctx: QueryContext, props: UnitTypeProperties, set: Set<any>) {
     const { units } = ctx.currentStructure;
     const l = ctx.pushCurrentElement();
@@ -78,8 +78,9 @@ export function getCurrentStructureProperties(ctx: QueryContext, props: UnitType
     ctx.popCurrentElement();
     return set;
 }
+*/
 
-export function getCurrentStructurePropertiesInternal(ctx: QueryContext, props: QueryFn<any>, set: Set<any>) {
+export function getCurrentStructureProperties(ctx: QueryContext, props: QueryFn<any>, set: Set<any>) {
     const { units } = ctx.currentStructure;
     const l = ctx.pushCurrentElement();
 
@@ -91,7 +92,7 @@ export function getCurrentStructurePropertiesInternal(ctx: QueryContext, props:
         const fn = props;
         //        if (Unit.isAtomic(unit)) fn = props.atomic;
         //        else fn = props.coarse;
-        //        if (!fn) continue;
+        if (!fn) continue;
 
         for (let j = 0, _j = elements.length; j < _j; j++) {
             l.element = elements[j];
@@ -111,7 +112,7 @@ function getSelectionProperties(ctx: QueryContext, query: StructureQuery, props:
     ctx.pushCurrentElement();
     StructureSelection.forEach(sel, (s, i) => {
         ctx.currentStructure = s;
-        getCurrentStructurePropertiesInternal(ctx, props, set);
+        getCurrentStructureProperties(ctx, props, set);
 
         if (i % 10) ctx.throwIfTimedOut();
     });
@@ -128,8 +129,8 @@ export function withSameAtomProperties(query: StructureQuery, propertySource: St
         ctx.pushCurrentStructure();
         StructureSelection.forEach(sel, (s, i) => {
             ctx.currentStructure = s;
-            const currentProps = getCurrentStructurePropertiesInternal(ctx, props, new Set());
-            if (SetUtils.isSuperset(currentProps, propSet)) {
+            const currentProps = getCurrentStructureProperties(ctx, props, new Set());
+            if (SetUtils.isSuperset(propSet, currentProps)) {
                 ret.add(s);
             }
 

+ 1 - 1
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: 'vmd', expression: 'all' }),
+        script: PD.Script({ language: 'pymol', expression: 'all' }),
         label: PD.Optional(PD.Text(''))
     })
 })({

+ 1 - 14
src/mol-script/runtime/query/table.ts

@@ -211,7 +211,7 @@ const symbols = [
     // ============= FILTERS ================
     D(MolScript.structureQuery.filter.pick, (ctx, xs) => Queries.filters.pick(xs[0] as any, xs['test'])(ctx)),
     D(MolScript.structureQuery.filter.first, (ctx, xs) => Queries.filters.first(xs[0] as any)(ctx)),
-    D(MolScript.structureQuery.filter.withSameAtomProperties, (ctx, xs) => Queries.filters.withSameAtomProperties(xs[0] as any, xs['source'] as any, xs['property'] as any)(ctx)),
+    D(MolScript.structureQuery.filter.withSameAtomProperties, (ctx, xs) => Queries.filters.withSameAtomProperties(xs[0] as any, xs['source'] as any, xs['property'])(ctx)),
     D(MolScript.structureQuery.filter.intersectedBy, (ctx, xs) => Queries.filters.areIntersectedBy(xs[0] as any, xs['by'] as any)(ctx)),
     D(MolScript.structureQuery.filter.within, (ctx, xs) => Queries.filters.within({
         query: xs[0] as any,
@@ -359,33 +359,20 @@ const symbols = [
 
     // ============= ATOM SET ================
 
-    //    D(MolScript.structureQuery.combinator.merge, (ctx, xs) => Queries.combinators.merge(xs as any)(ctx)),
     D(MolScript.structureQuery.atomSet.atomCount,
         function structureQuery_atomset_atomCount(ctx, xs) {
-            //	    console.log('From atomCount');
-            //	    console.log(Queries.atomset.atomCount(ctx)(ctx));
 	    return Queries.atomset.atomCount(ctx)(ctx);
         }),
 
-
     D(MolScript.structureQuery.atomSet.countQuery,
         function structureQuery_atomset_countQuery(ctx, xs) {
-            //	    console.log('From countQuery');
-            //	    console.log(Queries.atomset.countQuery(ctx, xs[0] as any)(ctx));
 	    return Queries.atomset.countQuery(ctx, xs[0] as any)(ctx);
         }),
 
-    //    env, v[0](env)
-
     D(MolScript.structureQuery.atomSet.propertySet,
         function structureQuery_atomset_propertySet(ctx, xs) {
 	  return Queries.atomset.propertySet(ctx, xs[0] as any)(ctx);
         }),
-    //    D(MolScript.structureQuery.filter.withSameAtomProperties, (ctx, xs) => Queries.filters.withSameAtomProperties(xs[0] as any, xs['source'] as any, xs['property'] as any)(ctx)),
-
-
-    //    Symbol(MolQL.structure.atomSet.propertySet)((env, v) => StructureRuntime.AtomSet.propertySet(env, v[0])),
-
 
     // ============= BOND PROPERTIES ================
     D(MolScript.structureQuery.bondProperty.order, (ctx, xs) => ctx.atomicBond.order),

+ 1 - 1
src/mol-script/transpilers/vmd/parser.ts

@@ -130,7 +130,7 @@ const lang = P.MonadicParser.createLanguage({
     Expression: function (r: any) {
         return P.MonadicParser.alt(
             r.RangeListProperty,
-	    r.NamedAtomProperties,
+            //	    r.NamedAtomProperties,
             r.ValueQuery,
             r.Keywords,
         );