My Programming Projects
SCD Animation | MatStat | SHARPEN
SCD Animation
The SCD Animation Project, currently hosted at www.kiltflip.com, is a Flash-based web-application and community for facilitating learning the patterns of Scottish Dances. The main idea is for experienced dancers to implement animations of Scottish Country Dances (as though viewed from above) so that inexperienced dancers can learn to visualize the dances. Once all of the features are implemented it will be possible for dancers who have no prior computer animation experience to create animations using ideas that are familiar to them. Furthermore the dances created are "wiki-able" in the sense that users can freely modify available dances to produce new versions, and dances can be rolled back to previous versions if necessary.
The SCD Animation Project has been written in a combination of ActionScript 3.0 and Python 2.5. Python 2.5 is used with the django framework, which is used both for HTML rendering and interaction with the MySQL database. Although initiated as an independent project for the CS department language lab course, the SCD Animation Project has gone far beyond the scope of that course and is still under active development. The coding and design are my work, but weekly meetings with Caltech Instructor Donnie Pinkston provided guidance and support during the initial development phases. The currently available version is complete in the sense that entire dances can be created, edited, stored, and recalled. However, there are still a few features that will be available in future versions. Currently, animation is accomplished by setting keyframes for individual dancers or groups of dancers and performing linear interpolation between keyframes. In the future, the ability to draw Bézier splines and animate dancers or groups along the splines will be available. Finally, users will be able to create "Figures," which are generic sequences of animations which can then be applied to a particular set of dancers in many different dances.
MatStat back to top
MatStat is a program I wrote using Matlab to control a set of analog potentiostats we have around the lab. A potentiostat is an instrument that can apply a bias voltage between a working electrode and a reference electrode by sourcing a current between the working electrode and a counter electrode. In the process the instrument accurately measures the current sourced. These instruments are indispensable in electrochemistry.
MatStat uses Matlab's GUI capabilities an the DAQ toolbox to control a DAQ card that is interfaced with various analog potentiostats. The software can be operated in a number of modes—constant current or voltage, current or voltage scans, potential measurements, and triggered measurements. The triggered measurements allow the user to set the current or voltage scan properties on a controller box, and the software simply initiates and terminates the scan. This software has been used to produce data for peer-reviewed publications, and it is used routinely in the lab to collect data.
SHARPEN back to top
SHARPEN (Systematic Hierarchical Algorithms for Rotamers and Proteins on an Extended Network) is a library for rapidly prototyping algorithms for protein folding as well as the code necessary to distribute the execution of functions in that library over a large number of potentially heterogeneous computers. The public website for the SHARPEN project has more information on the aims and capabilities of the software. The project involves several Caltech undergraduates and graduate students and is headed by a postdoctoral scholar, Chris Snow, in the lab of Prof. Frances Arnold.
My main contribution to the project was the integration of the existing core libraries of SHARPEN with the Folding@Home project. Due to the generosity of the Pande lab at Stanford, SHARPEN will be distributed over ~30,000 computers on the Folding@Home network. Integration with Folding@Home mainly involved packaging our scientific core in a way that the existing Folding@Home client could correctly handle and developing a modified version of the Folding@Home data server in order to suit our needs. Standard Folding@Home scientific cores are compiled executables that read in a protein structure and then perform molecular dynamics trajectories on that structure for a set number of iterations. SHARPEN, on the other hand, sends nearly arbitrary python scripts as the work units, and the scientific core must then unpack, load, and run these scripts while remaining transparent to the client. We are currently finishing a paper detailing this process, and it will be submitted to a peer-reviewed journal, at which time the source code for SHARPEN will be made available to the public.