I am no longer taking Summer MAP applications.
I want to be in your lab!
Awesome, I’m excited to hear of your interest! To best prepare for doing summer research with me, please read this page thoroughly, skim the blog posts on the DevoLab site (our parent lab), and read at least the introductions of my dissertation. These will give you a solid grasp of what my research involves and what projects I’m looking to get students involved with. If you’re even more excited after reading these materials, check my calendar (linked on Classes) and email me a time you’d like to meet and talk further.
The SymbuLab is a combination of Symbulation, our main software, and Lab, the thing this is.
Symbulation is an open-source, agent-based, artificial life and evolution software. Looking up each of those phrases will be a good starting place for learning more about what we do, but in short:
- Work with biologists to understand their systems at an abstract level
- Code up software that implements the necessary pieces of our hypothesis
- Run repeated experiments over a larger range of parameters and longer time than is easily done in the biological system
- Use those results to make inferences about what conditions would be sufficient for the evolution and maintenance of the behavior in the biological system, but no guarantees!
Symbulation is specifically aimed at modeling the relationship between symbionts (parasites/commensalists/mutualists) and their hosts. Symbiont is the term for all of these, mutualist is the term for mutually-beneficial relationships despite what media likes to say. Parasites and mutualists are actually on a spectrum and how you define they relationship can vary greatly with the environment. For example, there is a bacteria that helps plants by getting nitrogen from the soil and exchanging it for sugar from the plant. When nitrogen-rich fertilizer is added to the soil, the plants no longer need these bacteria, but the bacteria are pretty invested in the relationship continuing and generally become parasitic. There are lots and lots of ideas of how mutualism and parasitism could have evolved, but a lot of complications that have made it difficult to test those ideas in biological systems. Symbulation is the answer to this problem. The long-term goal of Symbulation is to be able to accurately model an individual human gut microbiome; in working toward this goal, many other symbiont systems will be able to be modeled as well with varying settings.
Evolution? Isn’t this a computer science lab?
Why yes it is, though we are definitely firmly interdisciplinary and publish in both fields. Evolution is simply a heuristic algorithm. Given:
- Inheritable traits (like DNA or computer code)
- Variation in a population (of ants or computer objects through mutations)
- Competition for survival (through limited resources or space, etc.)
- Sufficient time for generations of the organism
you’ll get evolution. It is logically impossible not to get evolution if all four of those elements are in a system.
You may have heard of Genetic Algorithms (if not, feel free to Google) and wonder if this is similar. The answer is yes, artificial life is very similar to genetic algorithms/evolutionary computation and can be a subfield though not necessarily. GA/EC are usually used to try to solve an engineering or mathematical problem, where the organisms represent possible solutions and their ‘reproduction’ is determined by how well they solve the problem. Artificial life (or ALife) is the other side of the coin: using evolution in a computer to better understand the biological systems that first inspired this field.
Okay but what would I actually DO?
In my lab, you’ll be doing an even mixture of software development of a large open-source project, reading and consulting biologists to catch up on the biology, running and analyzing big data experiments, and writing up your results. Symbulation is written in a customized version of C++ (Empirical) that heavily uses template meta-programming (google it if you want your mind blown) to make using the tools very simple. If you aren’t making deep changes to Empirical, the software is designed so that biologists with an interest can customize a large range of things to run their own experience without much C++ knowledge. To work in my lab, some knowledge of C++ would be good, but not necessary, depending on what project you want to work on. I use R for my data analysis and am happy to get you up to speed with the pieces I use. Finally, I use Python for most of my scripting for prototypes. Having some knowledge of biology and evolution would be great, but I can get you up to speed with those aspects; you just need to bring the excitement.
What are these projects you mentioned?
Empirical software and therefore Symbulation were designed to be excruciatingly modular. You will never be touching the main Empirical codebase; instead you will design your own module that plugs into the existing code but does not interfere with others use of it. This can be annoying at times, but it is vital to avoid bloat in this large software project. It also means, however, that each student that works with me can work on their own project of whatever size is appropriate and basically in any order. Any of these projects would definitely lead to findings that could be submitted to the ALife conference (a peer-reviewed conference) and/or many different journals. Each project would also contribute to the over all relevance of Symbulation because the features could be combined and used by future scientists to study ever more complicated systems (and therefore more and more similar to DNA-based systems).
I have a list of project ideas on the whiteboard in my office that you are welcome to come look at, but here are some to get you started. You probably won’t recognize some of these words, so reading up a bit on the biological concept would be important to know if it is interesting to you.
- Multi-infection – currently Symbulation only allows one symbiont to infect a host, which is unusual in the natural world.
- Add physics – by default the organisms in Symbulation don’t move. There is a physics engine already coded into Empirical that allows circular organisms to bounce around in their environment and displays this world in real-time in a browser (Evoke as example). By implementing symbionts into the physics world, we could develop a useful educational and outreach tool as well as eventually allowing organisms to purposefully move (not this project though!).
- Superhost immune system – to make matters more complicated, many symbiont/host pairs actually live inside another organism (such as viruses that infect bacteria that live in your gut). This extra ‘trophic level’ is likely to hugely influence evolution of symbionts.
- Seroconversion – when viruses infect bacteria (the viruses are called bacteriaphage or phage for short), sometimes they incorporate into the bacteria’s genome and sometimes when they do that they change what markers the bacteria has on the outside of its cell. These markers are what other phage and immune cells use to identify and infect the bacteria, so the virus is in a way helping hide the bacterial host. This is called seroconversion and we have a biology lab at Michigan State University interested in doing parallel wet-lab experiments with us on this subject.
- Multiple symbiont species – up to this point, we’ve been talking about one symbiont species that infects one host species. However, many different bacteria and viruses can infect you and every other organism on the planet. How these species interact when trying to share a host is a huge and complicated box that would be excellent to explore.
- Quorum Sensing – bacteria lead much more complicated lives than we historically thought and quorum sensing is one of the main communication methods they use. As soon as we’re talking about multi-infection and multiple symbiont species, we can introduce quorum sensing mechanics to allow the organisms to communicate in basic ways.
- Internal vs. External – Quorum sensing involves the release of a small molecule and that molecule can stay inside of the host and therefore mostly be between symbionts and possibly the host, or it can escape the cell and allow the hosts to communicate as well.
- Parasitic manipulation – there is a class of parasites that not only steal resources from the host but also change the host’s behavior to better suit their needs. If you are interested in AI, this can be a neural networks based project since Empirical can support ANNs.
- Art-generating ANN – this project isn’t related to Symbulation but something that I’d love to try. Neural networks are at the point where generation of new content is the current challenge. There have already been networks that were able to produce pieces of art that so closely mimicked a famous artist that experts couldn’t tell the different. I want to stretch this to new heights with much more complicated pieces and goals.
- Stardew Valley evolution mod – this is an educational project. Many of you probably are aware of the push-back against evolution education in the United States and this project will work toward showing people that evolution isn’t scary or complicated. Stardew Valley is a farming simulation game that allows for heavy modification. I would like to create a mod that uses the existing animal and plant characteristics as a basis for evolution. The goal would be making the game both more fun and getting players to think about the evolutionary consequences of their actions. For example, if they always catch the largest fish, the fish population will evolve to be smaller over time. This project would be in C# as that is what Stardew Valley mods use and would be integrated with existing pixel art.
If any of these or other questions along the same lines interest you, please email or stop by when I’m in the office and we can chat! Talking to me sooner rather than later is a good way of making sure I have a spot for you :).