예제 #1
0
파일: key.py 프로젝트: avcopan/automol-old
class PARSE():
    """ InChIKey parser """
    _HASH1 = _UPPERCASE_LETTER * 14
    _HASH2 = _UPPERCASE_LETTER * 8
    _SVP = _UPPERCASE_LETTER * 2 + _escape('-') + _UPPERCASE_LETTER

    HASH1_KEY = 'hash1'
    HASH2_KEY = 'hash2'
    SVP_KEY = 'svp'
    PATTERN = (
        _STRING_START +
        _named_capturing(_HASH1, name=HASH1_KEY) + _escape('-') +
        _named_capturing(_HASH2, name=HASH2_KEY) +
        _named_capturing(_SVP, name=SVP_KEY) + _STRING_END)
예제 #2
0
    class NUMBERING():
        """ _ """
        LAYER_KEY = 'all'
        CONTENT_KEY = 'content'

        _START = _escape('/')
        _LAYER = (_escape('N:') +
                  _named_capturing(_NONSPACES_NONGREEDY, name=CONTENT_KEY))
        _END = _INCHI_SUBLAYER_END

        PATTERN = _START + _named_capturing(_LAYER, name=LAYER_KEY) + _END

        class NUMBER():
            """ _ """
            PATTERN = _UNSIGNED_INTEGER
예제 #3
0
def _index_save_ids(tbl):
    """ get the values of previously saved index keys
    """
    _pattern = (_STRING_START + 'i' + _capturing(_UNSIGNED_INTEGER) +
                _escape('_') + _STRING_END)
    keys = keys_(tbl)
    caps = tuple(_first_capture(_pattern, key) for key in keys)
    sids = tuple(int(cap) for cap in caps if cap is not None)
    return sids
예제 #4
0
    class _KEYxLAYER():
        LAYER_KEY = 'all'
        CONTENT_KEY = 'content'

        _START = _escape('/')
        _LAYER = key + _named_capturing(_NONSPACES_NONGREEDY,
                                        name=CONTENT_KEY)
        _END = _INCHI_SUBLAYER_END

        PATTERN = _START + _named_capturing(_LAYER, name=LAYER_KEY) + _END
예제 #5
0
    class FORMULA():
        """ _ """
        LAYER_KEY = 'all'
        CONTENT_KEY = 'content'

        _START = _escape('/')
        _LAYER = (_not_followed_by(_LOWERCASE_LETTER) +
                  _named_capturing(_NONSPACES_NONGREEDY,
                                   name=CONTENT_KEY))
        _END = _INCHI_SUBLAYER_END

        PATTERN = _START + _named_capturing(_LAYER, name=LAYER_KEY) + _END
예제 #6
0
    class PREFIX():
        """ _ """
        LAYER_KEY = 'all'
        CONTENT_KEY = 'content'

        _START = _STRING_START
        _LAYER = (_escape('InChI=') +
                  _named_capturing(_NONSPACES_NONGREEDY,
                                   name=CONTENT_KEY))
        _END = _INCHI_SUBLAYER_END

        PATTERN = _START + _named_capturing(_LAYER, name=LAYER_KEY) + _END
예제 #7
0
        class TERM():
            """ _ """
            KEY_KEY = 'key'
            VAL_KEY = 'val'

            PLUS_VAL = _STEREO_PLUS_VAL
            MINUS_VAL = _STEREO_MINUS_VAL
            UNKNOWN_VALS = (_STEREO_UNKNOWN_VAL, _STEREO_UNDEFINED_VAL)
            VALS = (MINUS_VAL, PLUS_VAL) + UNKNOWN_VALS

            _KEY = _UNSIGNED_INTEGER + _escape('-') + _UNSIGNED_INTEGER
            _VAL = _one_of_these(list(map(_escape, VALS)))
            PATTERN = (_named_capturing(_KEY, name=KEY_KEY) +
                       _named_capturing(_VAL, name=VAL_KEY))
예제 #8
0
""" functions operating on InChI-AuxInfo strings
"""
from autoparse.pattern import escape as _escape
from autoparse.pattern import one_or_more as _one_or_more
from autoparse.pattern import one_of_these as _one_of_these
from autoparse.pattern import named_capturing as _named_capturing
from autoparse.pattern import UNSIGNED_INTEGER as _UNSIGNED_INTEGER
from autoparse.pattern import NONSPACE as _NONSPACE
from autoparse.pattern import STRING_END as _STRING_END
from autoparse.find import first_named_capture as _first_named_capture
from autoparse.find import all_captures as _all_captures

_NONSPACES_NONGREEDY = _one_or_more(_NONSPACE, greedy=False)
_INCHI_SUBLAYER_END = _one_of_these([_escape('/'), _STRING_END])


class PARSE():
    """ InChI-AuxInfo format specifications """
    class NUMBERING():
        """ _ """
        LAYER_KEY = 'all'
        CONTENT_KEY = 'content'

        _START = _escape('/')
        _LAYER = (_escape('N:') +
                  _named_capturing(_NONSPACES_NONGREEDY, name=CONTENT_KEY))
        _END = _INCHI_SUBLAYER_END

        PATTERN = _START + _named_capturing(_LAYER, name=LAYER_KEY) + _END

        class NUMBER():