Weekly Updates
Week 1: Met with mentor to talk about possible projects. Did some background reading involving genome sequencing and genotyping. We decided to try to animate suffix tree algorithms and then maybe delve deeper into some algorithms and design. Set up my website, using html for the first time. More background reading and planning for the first presentation.
Week 2: This week I began implementing the naive algorithm for suffix tree construction. At the end of the week, I have a basic animation, but I still need to tweak the placement of nodes, especially when an edge is broken, and add more visual cues as to what is going on such as highlighting the matching path. I am slightly confused because my algorithm and animation work fine on my office computer but acted funny when I tried to run my algorithm on my laptop. After finishing this animation, I will implement the naive prefix tree algorithm.
Week 3: During this week, I worked on the naive suffix, naive prefix and Ukkonen algorithms. The first two turned out pretty nicely. Ukkonen's was rather tricky, but I did get all three implemented correctly. I met with Dr. Schliep to go over my implementations and he had some good ideas to approve the animation aspect. I will work on implementing these changes and making my code more understandable for the user the beginning of next week.
Week 4: This week I worked on improving my animation. One main thing I added was a text box that highlights what has been found and what is added. I also added in a button that allows the user to search for substrings once the suffix tree has been created. Now, I'm just continuing to tweak my animation so that it is easier for the user to see and trace.
Week 5: This week was very similar to last week. Worked on improving all three algorithms so that the information presented and animation steps are clear and there are no discontinuities. Talked about the idea of implementing Ukkonen's algorithm without any of the tricks as sort of an intermediate step for learning Ukkonen's linear time algorithm. I think this is a good idea because the algorithm does pack in a lot of small details that are difficult to catch in one go.
Week 6: Added a few more animations including the cubic version so that there is a more smooth transition from the cubic algorithm to the linear time algorithm and users can see how the tricks enable a speed up. Also updated the graph layout and how suffix links are highlighted and displayed. Started reading about weighted metric algorithms and suffix arrays.
Week 7: This week I started working on two new animations in slightly new directions. First, I implemented a suffix array animation that shows how to convert a suffix tree into a suffix array. Next, I implemented an animation that shows different uses of suffix trees including pattern matching with wild cards and mismatches as well as repeats. On Thursday, I gave my final presentation. Next up is finishing up all my animations and writing descriptions of them as well as working on my final report.
Week 8: Last week! Finalized all my animations. Wrote and edited my report. Talked to my mentor about possible publication routes and applying to graduate school