Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

better "extras" passing in Molecule for EFP #124

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

loriab
Copy link
Collaborator

@loriab loriab commented Sep 3, 2019

  • the enable_qm=True isn't changing anything -- molparse parses QM aspects of the molecule string (enable_efp=False by default)
  • the missing_enabled_return_qm='minimal' bit is changing from the default (error) to (minimal). this can't do much at present as other things prevent an empty QM models.Molecule for the case of efp-only.
        What to do when an enabled domain is of zero-length? Respectively, return
        a fully valid but empty molrec, return empty dictionary, or throw error.
  • Q: can we have a blank QM mol without throwing all QCA into consternation? The structure I'm working with for pure-efp is:
{
    'symbols': [],
    'geometry': [],
    'extras': {
        'efp_molecule': {
            'symbols': [...],  # filled in by pylibefp
            'geometry': [...],  # filled in by pylibefp
            'extras': {
                 'fragment_files': [...],  # filled in by user
                 'hint_types': [...],  # "
                 'geom_hints': [...],  # "
            }
        }
    }
}

@codecov
Copy link

codecov bot commented Sep 3, 2019

Codecov Report

Merging #124 into master will decrease coverage by 0.02%.
The diff coverage is 85.71%.

@dgasmith
Copy link
Collaborator

dgasmith commented Sep 3, 2019

What does symbols and geometry look like for EFP? Can we fake it for a normal molecule?

A blank molecule should be doable, I think we only need to change the geometry validation.

@loriab
Copy link
Collaborator Author

loriab commented Sep 3, 2019

whole thing would look something like the below.

  • outer QM mol that's empty,
  • inner EFP mol at extras['efp_molecule']. initially this is blank except for extras. then the "viz" stuff gets filled in by pylibefp
  • inner EFP mol hint at extras['efp_moleule']['extras'] with the fragment files/hint types/etc from molecule string parsing.
 'molecule': {'atom_labels': [],
              'atomic_numbers': [],
              'comment': None,
              'connectivity': None,
              'extras': {'efp_molecule': {'atom_labels': ['_a01o1', '_a02h2', '_a03h3', '_a01n1', '_a02h2', '_a03h3',
                                                          '_a04h4'],
                                          'atomic_numbers': [8, 1, 1, 7, 1, 1, 1],
                                          'extras': {
                                              'fragment_files': ['h2o', 'nh3'],
                                              'geom_hints': [[0.0, 0.0, 0.0, 0.9999999999999999, 2.0, 3.0],
                                                             [9.448630627289141, 0.0, 0.0,  -1.2831853071795865, 2.0, 1.7168146928204135]],
                                              'hint_types': ['xyzabc', 'xyzabc']},
                                          'fix_com': True,
                                          'fix_orientation': True,
                                          'fragment_charges': [0.0, 0.0],
                                          'fragment_multiplicities': [1, 1],
                                          'fragments': [[0, 1, 2], [3, 4, 5, 6]],
                                          'geometry': [-0.0503736105282197, 0.012369110219231472, -0.10722207022473358,
                                                       1.0902316861775359, 1.1318285479113874, 0.6683354255568168,
                                                       -0.2907661375796682, -1.3281352526203078, 1.0333562001803236,
                                                       9.552730766438794, 0.030794165669223276, 0.049682979512153634,
                                                       9.691237188655489, -1.638423923013062, -0.8215271575362131,
                                                       9.011093357817636, 1.3130720013294976, -1.2258061929618227,
                                                       8.197157987609838, -0.10251289104030502, 1.3570206358616195],
                                          'mass_numbers': [-1, -1, -1, -1, -1, -1, -1],
                                          'masses': [15.99491, 1.007825, 1.007825, 14.00307, 1.007825, 1.007825,
                                                     1.007825],
                                          'molecular_charge': 0.0,
                                          'molecular_multiplicity': 1,
                                          'name': 'H5NO',
                                          'provenance': {'creator': 'PylibEFP',
                                                         'routine': 'to_dict',
                                                         'version': '0.6.dev5'},
                                          'real': [True, True, True, True, True, True, True],
                                          'schema_name': 'qcschema_molecule',
                                          'schema_version': 2,
                                          'symbols': ['O', 'H', 'H', 'N', 'H', 'H', 'H'],
                                          'validated': True}},
              'fix_com': True,
              'fix_orientation': True,
              'fix_symmetry': 'c1',
              'fragment_charges': [0.0],
              'fragment_multiplicities': [1],
              'fragments': [[]],
              'geometry': [],
              'id': None,
              'identifiers': None,
              'mass_numbers': [],
              'masses': [],
              'molecular_charge': 0.0,
              'molecular_multiplicity': 1,
              'name': '',
              'provenance': {'creator': 'QCElemental',
                             'routine': 'qcelemental.molparse.from_string',
                             'version': 'v0.7.0+1.g35bbd94.dirty'},
              'real': [],
              'schema_name': 'qcschema_molecule',
              'schema_version': 2,
              'symbols': [],
              'validated': True},

@dgasmith
Copy link
Collaborator

dgasmith commented Sep 3, 2019

Looks pretty close to a QM molecule can we pass it in to the canonical constructor with validation off?

@loriab
Copy link
Collaborator Author

loriab commented Sep 3, 2019

Actually, I think latest commit will do the trick wrt empty QM mol. I had put the "minimal" in the wrong place before and hadn't revisited until you ok'd the empty Mol.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants