UC San Diego undergraduate computer engineering student Cheng Ye is the first author of a Bioinformatics paper describing a phylogenetic software tool that is capable of handling the vast amounts of SARS-CoV-2 data. Ye was awarded the Electrical and Computer Engineering Best Undergraduate Research Award for his work in Professor Yatish Turakhia's lab.
Learn more about how Ye got involved in research and the project he worked on in this Q&A:
How did you decide to get involved in research as an undergraduate?Ye, left, receives the ECE Best Undergraduate
Research Award from his advisor, Professor
Turakhia, at right.
I like open-ended questions, and to try new ideas, so I got involved in research.
You got involved in research thanks to the ECE Summer Research Internship Program (SRIP). How did SRIP help you personally?
One alternative way of finding a faculty to do research with without a wonderful program like SRIP is to read their publications and email them directly. However, (1) I won't know whether they have the time to mentor an undergrad, and (2) I won't know what project I will be working on. SRIP streamlines the search process by providing a directory of faculty seeking students and the available projects.
What year are you, and do you have any goals/plans for after you complete your undergrad?
I am a senior. I am not sure whether I want to be a research software engineer or a digital circuit designer building hardware accelerators, so I am going for the BS/MS program to have more experience with digital circuit design, and procrastinating the decision.
What were you working on before you were assigned the tree optimizer project?
I was initially assigned to work on accelerating sequence alignment on GPU, but I thought the SARS-COV-2 phylogeny project might be more exciting, and it indeed was. By the way, the pandemic is a rare opportunity to make some impact quickly, though I am not saying I want another pandemic. Actually, the SARS-COV-2 phylogeny project is the first project I worked on with Prof. Yatish Turakhia. I did some variant calling in my second year, and some neuroscience in my first year in other labs.
How does the matOptimize parallel software work?
It can both scale up (multiple threads) and scale-out (multiple hosts). The state of art software for Tree Analysis using New Technology (TNT) can only scale-out, so it has to duplicate the internal data structure on all processes, even on the same host, so it needs a beyond practical memory to CPU ratio. matOptimize exploits multi-core CPUs more effectively, by allowing all threads running on the same CPU to share the same immutable internal data structure, which is also more compact than the one used in TNT. Therefore, it has a more practical memory to CPU ratio. It can also leverage message passing interface (MPI) to scale-out.
What are some of the challenges you faced when creating this software?
Understanding why optimization is necessary. Thanks Prof. Yatish for providing several examples in the early stage of the project to unblock me. And the parallelization. Heuristic phylogenetic tree optimization is based on applying small changes to the tree, and the effect of a change may impact whether other changes are desirable, so it is difficult to parallelize. TNT can parallelize by either optimizing a small part of tree independently on the different processes (divide and conquer), which cannot discover all beneficial changes, or having each process explore the entire tree independently, and broadcast the best tree found to other processes, and continue the process on the best tree found, similar to an ant colony. I appreciate Prof. Yatish and Prof. Russell Corbett-Detig’s insight that beneficial changes are rare, the effect of a change is local and their suggestion of finding all beneficial moves simultaneously and independently, then apply all the non-conflicting changes simultaneously. Their help and inspiration from IQ-TREE, which is another tree optimization software, make parallelization possible.
Any advice to students who think they may want to try research as an undergraduate?
Unfortunately, I don't feel qualified to answer this question. However, I can talk about what I wish I had done. First, have an idea of what I wanted to get out of the research experience, and don't forget about it. In my case, I am getting more experience with designing hardware accelerators, but with the particular problem of phylogenetic inference at hand, improving the algorithm and parallelizing across conventional hardware is a more effective solution than optimizing the implementation to death on a particular hardware platform.
I chose to improve and parallelize the algorithm and learned how to use Intel TBB and MPI along the way (and got something that exceeds my expectation). I wish I could have found a better way of accommodating both my goal and the most effective approach to the project at hand. However, it can be difficult to see what is the best approach to the project, before being significantly involved, and what is more difficult is to wrap up a project and move on.
Secondly, communicate. A few unnecessary initial iterations of matOptimize were redundant because I felt I understood what was needed, but I didn't, but I jumped right into implementation too soon.