Skip to content

e3fp for diatomic molecules #58

@FanwangM

Description

@FanwangM

Thanks for making this nice tool for the community.

I got problems with computing the e3fp fingerprints for diatomic molecules, such as H2, O2 and CO. Here is the corresponding error information

from e3fp.pipeline import confs_from_smiles, fprints_from_mol

# configurations
confgen_params = {"max_energy_diff": 20.0, "first": 3}
fprint_params = {"bits": 4096, "radius_multiplier": 1.5, "rdkit_invariants": True}

# build molecular conformer
mol = confs_from_smiles("[HH]", "h2_gas", confgen_params=confgen_params)
# compute the fingerprint
fprints = fprints_from_mol(mol, fprint_params=fprint_params)
RDKit WARNING: [19:42:12] WARNING: not removing hydrogen atom without neighbors
2021-08-16 19:42:12,640|INFO|Generating conformers for h2_gas.
2021-08-16 19:42:12,662|INFO|Generated 1 conformers for h2_gas.
2021-08-16 19:42:12,664|INFO|Generating fingerprints for h2_gas.
2021-08-16 19:42:12,666|ERROR|Error generating fingerprints for h2_gas.
Traceback (most recent call last):
  File "/home/legend/softs/miniconda3/envs/chem_py37/lib/python3.7/site-packages/e3fp/fingerprint/generate.py", line 188, in fprints_dict_from_mol
    fingerprinter.run(conf, mol)
  File "/home/legend/softs/miniconda3/envs/chem_py37/lib/python3.7/site-packages/e3fp/fingerprint/fprinter.py", line 181, in run
    self.initialize_conformer(conf)
  File "/home/legend/softs/miniconda3/envs/chem_py37/lib/python3.7/site-packages/e3fp/fingerprint/fprinter.py", line 262, in initialize_conformer
    bound_atoms_dict=self.bound_atoms_dict,
  File "/home/legend/softs/miniconda3/envs/chem_py37/lib/python3.7/site-packages/e3fp/fingerprint/fprinter.py", line 547, in __init__
    self.distance_matrix = array_ops.make_distance_matrix(atom_coords)
  File "/home/legend/softs/miniconda3/envs/chem_py37/lib/python3.7/site-packages/e3fp/fingerprint/array_ops.py", line 57, in make_distance_matrix
    return squareform(pdist(coords))
  File "/home/legend/softs/miniconda3/envs/chem_py37/lib/python3.7/site-packages/scipy/spatial/distance.py", line 2018, in pdist
    raise ValueError('A 2-dimensional array must be passed.')
ValueError: A 2-dimensional array must be passed.
-------------------------------------------------------------------
ValueError                        Traceback (most recent call last)
<ipython-input-14-99e54f4a484f> in <module>
      8 mol = confs_from_smiles("[HH]", "h2_gas", confgen_params=confgen_params)
      9 # compute the fingerprint
---> 10 fprints = fprints_from_mol(mol, fprint_params=fprint_params)

~/softs/miniconda3/envs/chem_py37/lib/python3.7/site-packages/e3fp/pipeline.py in fprints_from_mol(mol, fprint_params, save)
     57     fprints_dict = fprints_dict_from_mol(mol, save=save, **fprint_params)
     58     level = fprint_params.get("level", -1)
---> 59     fprints_list = fprints_from_fprints_dict(fprints_dict, level=level)
     60     return fprints_list
     61 

~/softs/miniconda3/envs/chem_py37/lib/python3.7/site-packages/e3fp/pipeline.py in fprints_from_fprints_dict(fprints_dict, level)
     48     """Get fingerprint at `level` from dict of level to fingerprint."""
     49     fprints_list = fprints_dict.get(
---> 50         level, fprints_dict[max(fprints_dict.keys())]
     51     )
     52     return fprints_list

ValueError: max() arg is an empty sequence

Do we have a fix for this? Thank you!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions