Skip to content
Snippets Groups Projects
Select Git revision
  • e099ac514a38a9a2d365c01671d9c8654036162c
  • master default protected
  • rednatco-v2
  • base-pairs-ladder
  • rednatco
  • test
  • ntc-tube-uniform-color
  • ntc-tube-missing-atoms
  • restore-vertex-array-per-program
  • watlas2
  • dnatco_new
  • cleanup-old-nodejs
  • webmmb
  • fix_auth_seq_id
  • update_deps
  • ext_dev
  • ntc_balls
  • nci-2
  • plugin
  • bugfix-0.4.5
  • nci
  • v0.5.0-dev.1
  • v0.4.5
  • v0.4.4
  • v0.4.3
  • v0.4.2
  • v0.4.1
  • v0.4.0
  • v0.3.12
  • v0.3.11
  • v0.3.10
  • v0.3.9
  • v0.3.8
  • v0.3.7
  • v0.3.6
  • v0.3.5
  • v0.3.4
  • v0.3.3
  • v0.3.2
  • v0.3.1
  • v0.3.0
41 results

operators.ts

Blame
  • operators.ts 1.41 KiB
    /*
     * Copyright (c) 2017-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
     * @author Koya Sakuma <koya.sakuma.work@gmail.com>
     * Adapted from MolQL project
     */
    
    
    import * as P from '../../../mol-util/monadic-parser';
    import * as h from '../helper';
    import { MolScriptBuilder } from '../../../mol-script/language/builder';
    const B = MolScriptBuilder;
    import { OperatorList } from '../types';
    // import { Expression } from '../../language/expression';
    
    
    export const operators: OperatorList = [
        {
            '@desc': 'Selects atoms that are not included in s1.',
            '@examples': ['not ARG'],
            name: 'not',
            type: h.prefix,
            rule: P.MonadicParser.alt(P.MonadicParser.regex(/NOT/i).skip(P.MonadicParser.whitespace), P.MonadicParser.string('!').skip(P.MonadicParser.optWhitespace)),
            map: (op, selection) => h.invertExpr(selection),
        },
        {
            '@desc': 'Selects atoms included in both s1 and s2.',
            '@examples': ['ASP and .CA'],
            name: 'and',
            type: h.binaryLeft,
            rule: h.infixOp(/AND|&/i),
            map: (op, selection, by) => B.struct.modifier.intersectBy({ 0: selection, by })
        },
        {
            '@desc': 'Selects atoms included in either s1 or s2.',
            '@examples': ['ASP or GLU'],
            name: 'or',
            type: h.binaryLeft,
            rule: h.infixOp(/OR|\|/i),
            map: (op, s1, s2) => B.struct.combinator.merge([s1, s2])
        }
    ];