def _compute_partial_charges(cls, molecule: Molecule, method: str) -> unit.Quantity: """Call out to the toolkit's toolkit wrappers to generate partial charges""" molecule = copy.deepcopy(molecule) molecule.assign_partial_charges(method) return from_simtk(molecule.partial_charges)
def label_function(molecule: Molecule) -> Dict[str, torch.Tensor]: """Generates a set of train / val / test labels for a given molecule.""" from simtk import unit # Generate a set of ELF10 conformers. molecule.generate_conformers(n_conformers=800, rms_cutoff=0.05 * unit.angstrom) molecule.apply_elf_conformer_selection() partial_charges = [] for conformer in molecule.conformers: molecule.assign_partial_charges("am1-mulliken", use_conformers=[conformer]) partial_charges.append( molecule.partial_charges.value_in_unit(unit.elementary_charge)) return { "am1-charges": torch.from_numpy(numpy.mean(partial_charges, axis=0)).float() }