Source code for ipsuite.geometry.barycenter_coarse_grain
importnumpyasnpfromaseimportAtoms
[docs]defcoarse_grain_to_barycenter(molecules):coms=np.zeros(shape=(len(molecules),3))# TODO: use rdkit instead to identify identical moleculesidentifier={}atomic_numbers=[]forii,molinenumerate(molecules):com=np.mean(mol.positions,axis=0)coms[ii]=comtry:atomic_numbers.append(identifier[mol.get_chemical_formula()])exceptKeyError:identifier[mol.get_chemical_formula()]=len(identifier)+1atomic_numbers.append(identifier[mol.get_chemical_formula()])cg_positions=np.stack(coms,axis=0)cg_atoms=Atoms(atomic_numbers,positions=cg_positions,cell=molecules[0].cell)returncg_atoms