zadorlab / KinBot

Automated reaction pathway search for gas-phase molecules
Other
45 stars 15 forks source link

Conformer search using high level theory #76

Closed wangdu817 closed 6 months ago

wangdu817 commented 6 months ago

Dear developers, For some molecules with many hindered rotors, the conformer search at the L1 level seems not reliable so that the rotation will restart several times during HIR scan. maybe it is better to do the conformer search at a high level? OR providing an option for rotor scan at a different level.

Moreover, when I tried to use semiempirical method for pre-optimization of large molecules, I found there are some bugs. For example, variable "self.ssemi_empconf" is not defined in "optimize.py". and the number of variables is not equal to the return of the "self.species.semi_emp_confs.check_conformers" function. After fixing these problems, the semiempirical optimization still can not run correctly without further messages.

Regards

juditzador commented 6 months ago

Hi! Thanks for reporting this. Regarding the level of theory: You could, in principle, make L1 = L2, or at least up the L1 level to be closer to L2. Of course, then you have to start from scratch the whole thing. Another possibility is that it's not in fact the level that causes this, but the grid (conf_grid). The default is 3 (120 degrees) per rotor, but for oxygenates, with lots of possible H-bonding and other interactions, usually one should do a grid of 6 (60 degrees) - you also need to start from scratch if you change this parameter. This might be more important than the level, but both ideas increase the computational cost. In general, I don't think that there is a perfect conformational search short of doing a dense grid at the desired level. The rotor scan should be made at L2, however, because if you do a different level, then the projection of the frequencies will be incorrect. You can also investigate how big the difference was for the various "lowest E" structures. It could be very small. In this case, it is really hard to say which is the true lowest energy conformer. Note that sometimes structures flip-flop between lowest E conformers if there is a problem with the DFT calculations, it's rare, but can happen. Finally, you can always stop the restart of the rotors by setting rotation_restart to 0 or a small value.

Regarding semiempirical: we have not used this feature ourselves in a while, so it's possible that it is out of sync with the rest of the code. We'll try to fix it, but this is not going to solve the problem necessarily, because that method is even less accurate than L1.

wangdu817 commented 6 months ago

@juditzador Thank you professor! every time I learn a lot from your reply. My idea was first to do a dense conformer search at the Semi level to narrow down the low-energy conformers then use L2 to choose the lowest one. I will first try to increase the conf_grid as you suggested.