Below is a list of several ongoing projects in my lab. Note that not all projects are necessarily active or current. They all represent interest research of mine and work in these areas depends on the availability of funding, time, and “able bodies”.
Note that I do not do research on machine learning, statistics, or graphics, though I use tools from these fields on occasion. My primary interests relate algorithms for processing strings (pairwise alignment, and multiple alignment of DNA or protein sequences) and graphs (uncovering interesting patterns in assembly graphs). I am also very interested in graph drawing and in software testing for bioinformatics/scientific applications.
Some of these projects provide opportunities undergraduate research.

Metagenomics sequence analysis
I am broadly interested in figuring out how to extract information from the DNA sequencing data as well as other data derived from the microbial communities that inhabit the earth. I am particularly interested in characterizing the genomic variation that occurs within microbial communities with the eventual goal of exploring the impact of this variation on the functions of the community, including impact on human and/or animal health for host-related microbial communities.
Research in this space includes the development of sequence assembly, sequence indexing, and sequence search algorithms, analyses of assembly graphs, and various statistical approaches for estimating and comparing sequence abundance across samples.
Mobile element analysis
An important process that induces genomic variation between closely-related microbes is the acquisition and loss of mobile genetic elements. These can include prophages – viruses that insert themselves, together with a “payload”, within the genome of bacteria; and plasmids – self-replicating segments of DNA that can move between bacterial species. I am interested in learning more about how these elements move between organisms and how their movement allows bacteria to adapt to new environments.


Pathogen detection
Current diagnostic approaches largely focus on one or a few organisms at a time. DNA sequencing has the potential to change this landscape, allowing one to determine whether any of a broad range of pathogens are found in a sample. Furthermore, DNA sequencing could reveal what medication is most effective against the pathogens found in the sample, or even identify the presence of novel/unexpected pathogens (such as the SARS-CoV2 virus that caused the COVID pandemic).
In this space I am particularly interested in understanding how to improve the accuracy and reliability of pathogen detection approaches, particularly when the pathogen is only found at low abundance. I am also interested in the prediction of clinically-relevant traits, such as antibiotic resistance, from sequencing data. This research involves both development of new approaches for searching biological databases, and developing a better understanding of the structure of the databases themselves, as well as an understanding of the structure of the sequencing data (related to the topics discussed above).
Robustness of bioinformatics tools to database errors
The computational tools used to analyze biological data, whether it is in the context of pathogen detection, or determining the function of a gene, all rely on reference data frequently stored in public databases and knowledgebases. While the maintainers of such databases attempt to ensure the quality of data, errors do occur and can propagate through databases and analysis pipelines. I am interested in learning how such errors interact with the various algorithms used for data analysis, particularly in the context of the increased use of AI and machine learning. A better understanding of error propagation can allow us to determine which algorithms are most robust to data errors, or to identify the data entries that are most “influential” on algorithm output, thus justifying the relatively high cost of careful validation. Furthermore, I am interested in how errors can be introduced by the software pipelines processing the data, as well as learning what happens when analysis software is fed data that itself was generated computationally.
