Accurate 3D Modeling of User Inputted Molecules Computer Systems Lab: Ben Parr Period 6
Goal Create program to let users easily and intuitively create simple molecules Water (H 2 O) Benzene (C 6 H 6 ) Nicotine (C 10 H 14 N 2 ) Have the program position the atoms correctly Easy viewing for a better understanding of the geometry of molecules
Background Understanding the geometry of molecules is extremely helpful Buying molecule modeling sets for every student in an introductory chemistry is too costly Some software similar to my project is also costly No real feasible option for beginner chemistry students
Nelder Mead Algorithm Used to “Auto-Position Atoms” Uses a simplex with N+1 vertices N = 3*number of atoms Each vertex represents a model Minimizes an energy function Ends when it reaches a tolerance
Energy Function Calculates energy of a vertex of the simplex (model) 3 factors affect energy Distance between every non-bonded pair of atoms (maximize) Distance between bonded atoms (get as close to defined value) Bond angles (maximize) Does not take polarity into account
Current State All graphics and user interface implemented and work correctly All components of the Nelder Mead Algorithm are programmed Energy function Original simplex Actual algorithm Very simple molecules position correctly Larger the molecule, the more incorrect the auto- positioning
Auto-Positioning for CO 2
Auto-Positioning for Propyne: C 3 H 4
Auto-Positioning of Benzene: C 6 H 6
If I had More Time... Create a better original simplex Currently using mostly random numbers Works, but could be changed to better suit the problem Account for polarity Lone pair electrons Current program won’t position atoms of water (H 2 O) correctly Refine Nelder Mead algorithm to work better for larger molecules