Hello! If you are reading this web-page, you are probably not too worried about me, but are probably more concerned about what I can do for you. Since this page is focused on research, I will discuss my experiences and how they will benefit your organization. My first professional experience that taught me true hard work and dedication was my experience in the military. For a research institution, my military experience has given me an enhanced ability to deal with people, and teamwork skills that will allow me to work efficiently with others. I would like to thank those in charge of this program for selecting me to participate in this program, and is my first step into the world of research. Furthermore, I would like to thank the National Science Foundation for giving this opportunity to Clemson, without it this program would not be possible. I hope to use this experience to pursue graduate school and would like to help the National Science Foundation achieve its goal of promoting scientific growth in the United States.
Traditional visualization tools for chemistry applications are both very powerful and very general. They can display a number of representations of the "balls and sticks" that represent atoms and chemical bonds. However, they focus on visualization methods that are applicable to all types of molecules. Many specialized types of molecules or materials would benefit from specialized visualization techniques that are not available in traditional chemistry software. Carbon-based materials are one such example. Carbon can form a variety of different structures, ranging from diamond to graphite or carbon nanotubes. Many of these structures, including graphene, nanotubes, fullerenes, and a range of other graphitic nanostructures, can be viewed as two-dimensional surfaces, and tools from geometry and topology can be used to describe the physical properties of these materials. This project will develop a simple structure viewer for two- and three-dimensional carbon-based nanostructures, which is able to visualize both chemical properties (bond order, bond length, hybridization, etc) and mathematical properties (surface curvature, Voronoi area, angle defects, etc) mapped onto an orientable molecular structure.
Most visualization tools used in chemistry are capable of visualizing basic properties such as bond distance, angle, etc, but lack the ability to visualize other more specific properties. The software developed as a result of this project measures chemical and mathematical properties that are exclusive to carbon-based molecules. Processing is a graphics-based programming language that uses Java syntax to build the software. The first step involved reading the file provided and developing a three-dimensional model. Next a Processing library was imported which allows the user to rotate and zoom in on the model. The final step was to develop a user interface which allows the user to select which properties he/she wants displayed, which will color the atoms, bonds, and rings based upon those properties. All of the properties being visualized are difficult to visualize without computer simulation making the use of color necessary. Future work will involve transferring the software to a language that is more well-known in the scientific community, such as Python, and making a more user-friendly graphical interface.
During the first week, the main goal was to familiarize myself with the Processing programming language, to read the file, and
develop a 2-dimensional model of the molecule. The first thing I did was go through some tutorials on Processing, which helped
familiarize me with the functions that the language uses, and get adjusted to the syntax. After becoming familiar with Processing,
I received some guidance in reading the file, and was able to store the coordinates of all of the atoms in the model. After that
we took the coordinates and drew an ellipse where each atom was placed. Below is a screen shot of the 2 dimensional model.
After developing the 2 dimensional model, the next task was to make it 3 dimensional. To do this, we had to change some of the code
within the functions that declared the size of the window, and change all of the ellipses to spheres. Once that was completed, we
programmed in the appropriate formula to determine the distance between the atoms. If the atoms were less than 2 units apart, then
there was a bond between them, which was indicated by a white line. After which, we started discussing the trigonometry behind the
camera placement and rotation. By the end of week two, we were beginning to rotate the camera around the molecular model. Below
is a screen shot of the 3 dimensional model with the bonds.
During week 3 we began to adjust the camera and work with the functionality. We were successfully able to get the mouse to rotate
the model, but the functionality was not very intuitive, so we began looking for alternative options. Eventually we came across a
library called proscene, which allowed us to smoothly rotate around the model and zoom in on the model. To rotate, the user simply
clicks the model and moves the mouse to rotate the model. To zoom, the user simply scrolls forward on the mouse wheel to zoom in
and down on the mouse wheel to zoom out. After getting the model to rotate, we used proscene to draw a reference plane and lines to
represent the x, y, and z axes. Below is a picture of the model with the new interface.
After we finding and implementing tools to manipulate the molecular model, we started to work on measuring the basic properties of
the molecule, such as bond length and coordination number. To measure bond length, we mapped the shortest bond length to the color
white and the longest bond length as the color red, with every other bond being some varying color between white and red. The longer
bonds had more red than white and the shorter bonds had more white than red. To measure coordination number, I simply assigned each
atom a bond number, and incremented that number each time a bond was drawn between that atom and another atom. All of the atoms with
three bonds are blue, and all of the atoms with two bonds are green.Below is the model with the new properties visualized.
Once we got the basic properties visualized we began to work at measuring the pi-Orbital Axis Vector. In order to do so, we had to take each bond, determine the length of the bond, and calculate what direction each atom was being pushed based upon the bond lengths associated with that atom. Then we used the right hand rule to determine the direction and magnitude of the vector to be visualized.
When trying to find the number of neighbors each atom has, I ran into numerous problems and ultimately decided to reconstruct the algorithm, which took a good portion of this week. At the end of the week, the changes made affected the basic properties that we measured before, which also needed to be fixed. We figured out what the program was going to have to accomplish to compute the vectors, but problems with the data structure made it difficult to properly calculate and display the vector. During this week, we also spent time preparing an abstract and poster for the XSEDE Conference in Atlanta, GA.
I would first like to thank the University of Texas - Austin for funding us to participate in this conference. I would also like to thank the National Science Foundation for funding the conference. This was the week I spent at the XSEDE Conference in Atlanta, GA. During this week, I made some minor progress in reconstructing the data structure. During the conference, I got a lot of insight on my project from scientists outside of the conference, and made a lot of contacts with scientists at other universities. The experience really allowed me to understand the applications of computing in science and engineering, which allowed me to see the importance of collaboration in research in the modern world. Furthermore, I made several contacts with graduate students, faculty, and staff at various universities about their research, graduate school, and opportunities for undergraduates. This experience was very helpful for me professionally, and allowed me to learn more about the atmosphere of conferences and how to communicate and network with other like-minded individuals.
During this week, I finalized the poster for the final presentation, and worked on finishing up visualizing the vectors and the ring size. Trying to visualize the last property has proven to be difficult up to this point due to the data structure. Some tweaking of the structure has allowed me to identify the neighbors for each atom, which in turn allowed me to set the first point of the line at the center of the neighboring atom rather than the atom at the index where the for loop is pointing. Overall, the goal of measuring all of the properties has not been accomplished due to difficulties involving the data structure used to read in the file.
Last updated: 07/21/2014