Chemistry Asked on December 12, 2021
Is there any software that I can provide bond lengths, bond angles and torsion dihedrals of a molecule and generate an output file in the format of cartesian coordinates or zmatrix?
Example:
I would have input similar to the one below (which i provide all bond lengths, bond angles and torsion dihedrals of a molecule)
BOND LENGTHS
2 1 Si O2 1.63
3 1 Si O2 1.63
...
BOND ANGLES
2 1 3 Si O2 Si 148,482
1 2 4 O2 Si C3 107,426
...
TORSION ANGLES
3 1 2 4 -161,552
3 1 2 8 -41,721
...
And I would like to have an output like this:
My idea is to vary some of this information and generate several Gaussian software inputs to calculate energy points at specific bond lengths, for example, without having to manually edit the molecule structure in this software.
I know that Open Babel software can do something like that, but I don’t know what type of input to use.
This is not the answer to your question, but it is a comment about an approach to the aims, based on the comments. If coding is an option, RDKit is a good option, specifically adding constraints (restraints) to the ForceField and optimising. Given a molecule:
from rdkit import Chem
from rdkit.Chem import AllChem
acetate = Chem.MolFromSmiles('CC(=O)C')
Normally the 3D conformer is generated with:
AllChem.EmbedMolecule(acetate)
And it stops there. However, then you can manually control the force field —either UFF (more elements) or MMFF (classic choice).
ff = AllChem.UFFGetMoleculeForceField(mol)
ff.Initialize()
print(ff.Minimize()) # this tells you if it failed.
Within this, you can add constraints, such as:
ff.AddDistanceConstraint(0, 1, 2., 2.1, 1_000_000_000)
Note that the weight needs to be set absurdly high for absurd lengths. To check it work you could do:
dm = Chem.Get3DDistanceMatrix(acetate) print(f'{dm[0,1]} Å. {ff.CalcEnergy()} kcal/mol')
Answered by Matteo Ferla on December 12, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP