Monday, May 5, 2014

Modeling a worm. Thoughts on the OpenWorm project.

On Saturday April 19, 2014, a group, OpenWorm, of which I am a member, launched a Kickstarter campaign in an attempt to further scientific advancement. The goal of OpenWorm is to model a millimetre-sized soil-dwelling nematode worm, specifically the Caenorhabditis Elegans or C. elegans for short. More specifically, the goal is to model the worm as accurately as possible. In a sense this goal is almost essentially impossible to complete, at least in the foreseeable future, as the idea is to constantly integrate new knowledge into the model. The model might be considered complete when digitally we can model a worm from conception to death, from genes and proteins to muscle contractions, sleeping, and mating. Hopefully along the way we'll learn a lot, not only about the worm, but about neuroscience and ourselves.

In about a month I will have been with the group for a year. Given the Kickstarter campaign it seemed like a nice time to reflect on my experiences with the project and my perspectives on what the group is doing. I should also mention that OpenWorm has a core team of individuals who have shown a high level of commitment to the project, of which I am a part. That being said these are my personal opinions and are not necessarily indicative of the core team as whole.

Part 1: My background

My educational background is in biomedical and electrical engineering, specifically with a focus on a field known as neural engineering. Roughly speaking, the goal of neural engineering is to design devices that interface with the nervous system. Perhaps the most well known example of one of these devices is the artificial cardiac pacemaker, an implanted device which electrically stimulates neurons to make sure the heart beats appropriately. More recent clinical devices include the cochlear implant, used to restore hearing by electrically stimulating auditory neurons, and a technique known as deep brain stimulation, which is used to treat many things, reduction in tremor in Parkinson's patients being one of those.

Like many other fields, neural engineering uses models. A model, by my definition, is a simplification of a system that attempts to capture and help us understand some aspect of the system. As a tangible example, meteorologists form a model of how weather patterns form and travel in order to predict local weather. A car designer might model a car and the way it interacts with wind in order to minimize drag and improve gas efficiency. A neural engineer might model electrical stimulation of nervous tissue to try and determine appropriate stimulation patterns to maximize therapeutic benefit.

Models can be used to help us understand phenomena and to make predictions. During graduate school I was running a set of experiments in which I was getting "unusual results." The specifics aren't important in this case but I decided to turn to modeling to try and understand what was going on.

My experience with modeling was quite challenging. I also found it quite fun. It got me asking questions:
- What do we know about this?
- How do we know that?
- Why might this interpretation not be correct?

One of the best summaries came from my current postdoctoral adviser, Dr. Warren Grill, who said something to the effect of, "It helps you realize what you know, and more importantly, what you don't know."

Part 2: Welcome to OpenWorm

I think I first heard about OpenWorm in some popular press post (perhaps a link through Slashdot?). Following further discussions at a scientific retreat I decided to look into the project for myself.

The most noticeable thing about looking at the group's website was the sense of inclusiveness. Anyone of any skill level was welcome to join, the project had lots to do and you could learn "on the job." Similarly, instead of professing to have THE solution as to how to model the worm it was open to suggestions.

Modeling the worm sounded like fun. At a high level I thought participation in the group my expand my skills in computational modeling. In the short term I thought it would be a fun way to learn Python. Given this positive environment I decided to join. I joined the discussion board and started browsing through the open GitHub issues for something to work on.

Part 3: Experiences with OpenWorm

The main project that I have been working on with OpenWorm involves setting up tests for determining whether or not our modeled worms have similar movement patterns as compared to real worms. The starting point for this work is a set of worm videos from Bill Schafer's lab at the MRC (Britain's NIH). In addition to having numerous videos of worms, the Schafer lab has also written Matlab code which parses these videos to look for quantitative features of the worm. As an example, one feature involves counting how far the worm is at any given point from a given location. This feature roughly characterizes not only how mobile each worm is but also how the worm likes to stray from where it has been. Given a set of features computed on real worms and on a simulated worm you might imagine comparing those features between the two to determine the quality of the simulation.

Thus far my work has consisted largely of translating the MRC feature processing code into Python. The first step in this process involved rewriting the original code in Matlab in a manner which I felt was more conducive to translation to Python. Having access to the Matlab debugger allowed me to understand what was actually going on before I translated the code to Python.

Using Python allows anyone to contribute to updates, not just those with a Matlab license, which can be quite expensive for those without a university license. (NOTE: Due to popular demand Matlab just started a home license which starts at $150 however this does not include toolboxes, which the MRC code uses, and is hardly friendly for someone looking to dabble with the code.) Once this processing pipeline is finished we will begin the exciting work of writing code that attempts to compare real to fake worms.

Although I have lots more thoughts to share on my specific project it isn't so crucial to this post. Rather I'd like to share some of my experiences with the project.

At the beginning I had a lot to learn about C. elegans. I quickly learned that these were not the type of worms you might find digging in the dirt (they're MUCH smaller). The amount of scientific effort that had gone into understanding these worms was incredible. I was also impressed by the genetic work of the worm and the large extent to which the genes in the worm are the same as those in people. This work led to the 2002 Nobel prize in Physiology or Medicine. The discovery of RNA interference the worm also led to a Nobel prize in 2006. This project has given me a much better appreciation for working on "basic" organisms to try and advance our understanding of ourselves.

The OpenWorm project is also a very international project. Although I had worked on group projects before, I had never been a part of a group in which the members were not colocated. Face-to-face in person meetings are largely non-existent and instead we've relied heavily on video-chatting using Google Hangouts. Impromptu discussions about code that are possible when working next to someone are rare, especially since collaborators’ free hours can be significantly different. That being said I think these experiences are largely shared by other people working collaboratively on open source projects. One thing that likely differentiates OpenWorm from other open source projects is the large diversity of the people involved: worm researchers; biologists; computer scientists; biomedical engineers; and regular 9-5 er's who want to spend some of their free time in helping to improve our ability to model biology. At times this had led to challenges in understanding but for the most part I think it strengthens the group.

At this point I think I finally have a good grasp of Python. In addition the project has also exposed me to numerous other projects and modeling approaches; some of which I think will even help my own research.

In general it has been a very rewarding experience.

Part 4: Current progress and future work

We have recently submitted a perspectives paper which will go into more detail as to what has been accomplished. I thought it would be relevant to briefly explain some of the things the project has already done and where we are going in an attempt to make the project a little bit more concrete for the reader.

This also not a comprehensive list but rather some of the first things that come to mind.
1) Created a worm browser for helping to understand the anatomical layout of the worm
2) Created a representation of the worm's neurons in a markup language, NeuroML, that allows for easy usage with neuron simulators.
3) Created a fluid dynamics simulation of the worm swimming, controlled by "muscle signals"
4) Created an online system for visualizing the results of simulations called Gepetto.

Future work will involve improving upon Gepetto and the fluid dynamics simulation environment. In addition we are currently working on linking neuron activation to muscle contraction. Finally given a few more free nights in which I can do a bit of coding we'll soon have a system in which the movement of a simulated worm can be input and we'll tell you whether or not we think it is "real."

All of the generated code is open source (link to our GitHub page) and we encourage people to help out!

Part 5: General thoughts on OpenWorm and the Kickstarter initiative

Finally we get to the main reason I wanted to write this article now. On April 19 of 2014, two weeks ago as I write this, OpenWorm launched a Kickstarter initiative. The goal of this initiative is to further our ability to model the worm. More details can be found on our Kickstarter page. Rather than going too much into detail of the specifics of the Kickstarter campaign I wanted to have a chance to share some of my general thoughts related to it and the project.

Traditionally scientific research is done in a university or corporate setting. OpenWorm is exploring the ability to perform real scientific research in a largely online community environment. We are just starting to publish scientific papers about the project and I expect we will be able to publish many more as time progresses (i.e. not a one and done kind of thing).

Currently everyone working on this project is a volunteer. The OpenWorm group has not and is currently not paying anyone to work on the project. With the Kickstarter campaign we are looking at raising our first round of funding in which we would actually be paying someone to help move the project forward. I'm excited about the prospect of having someone work on the project full time as I think that will really help the project to make meaningful progress. I am also quite confident that the volunteer nature of the project will continue even if we have someone getting paid. That being said this is definitely a test for us. Will we want to hire more people to work full time on the project? Will we start offering some sort of small reimbursement rate to all people for work performed? At this point there are many unknowns but one thing is certain in my mind, we will want to continue to maintain the open and nurturing environment that first got me interested and working on this project.

Next, I think it is helpful to consider the motivation for modeling a worm. I was unaware of when I first began this project, there has been a large amount of scientific effort invested in understanding the worm, specifically the C. elegans. This effort started in large part because of the relative simplicity of the C. elegans and the desire of people to fully understand how an organism functions. At the same time the C. elegans has interesting behaviors common to all multi-cellular organisms. It avoids predators, eats, mates, sleeps, and goes for long walks on the beach (or might if it actually lived on the beach). We know where all of its cells, including neurons, are in its body, and how they form from precursors cells. According to ye olde Wikipedia, us humans have roughly 85 billion neurons in our bodies. The worm has only 302 and we still don't understand how it functions. By modeling a worm not only do we hope to understand the worm but we hope to learn a little bit more about ourselves. Practically speaking, I think we are learning a lot about how to model a biological system that will help us in modeling more complex systems.

At this point hopefully you are convinced that modeling the worm sounds like a decent idea. I must confess we were not the first ones to have this idea. One of which I am aware was published a paper in 1998 about their efforts although it is not clear to me that much more progress was made (for more details see here).

Given the significant amount of previous work on modeling the worm, I think it is fair to ask what makes it likely that OpenWorm will be successful and have a positive impact. Note, this is not asking whether or not the Kickstarter campaign will be successful, and although I think a successful campaign will help, I don't think it will make or break OpenWorm's success. The secret to OpenWorm is you ... or could be you, and me, and everyone else that works on the project. Unlike the previous worm projects, I think OpenWorm is much more inclusive and anyone can work on it, especially given current social technology (GitHub, Google Hangouts). Getting multiple people involved will be critical to its success. The distributed nature of the project I think also helps in opening up labs to collaborating with our group. I see our group as a sort of glue, taking bits and pieces from everybody in an attempt to create a holistic model of the whole worm.

Part 6: Concluding thoughts

I've been meaning to write for a while now about my experiences and thoughts of the OpenWorm project. Given the Kickstarter initiative it seemed useful to write this now. I have yet to contribute to the campaign but I'm looking forward to contributing and getting some of the "swag" that the team has created; thanks Matteo Farinella! I encourage you to check out the Kickstarter campaign yourself and to consider contributing. Also consider contributing some time to the OpenWorm project itself and know that I've found it to be a very rewarding experience.

Many thanks to Michael Currie and Shreejoy Tripathy for helping to edit this post.

No comments:

Post a Comment