Back in December PNAS published a paper from Oliveira et al. called “Evolutionary limits to cooperation in microbial communities” . My research interests lie right at the intersection of evolution and cooperation so I was fascinated by the idea that evolution imposes limits on cooperation. In this paper, Oliveira et al. examine the evolutionary dynamics of a community of microbes that can exchange a number of valuable secretions between different strains. This experimental setup enables the evolution of cooperation if one genotype focuses on producing one secretion and shares that secretion with a different strain while also gaining access to that other strain’s secretions. Ultimately, however, they found that cooperation only evolved under specific and limited conditions because of the fitness decrease that occurs when an individual isn’t close enough to receive secretions from another strain.
Because I enjoy reading papers that are not in my immediate specialty, I frequently track the interesting information I learn in both the background literature review section as well as the main results of the study. In this feature, I discuss those bits of information that I found relevant to my interests and just generally cool.
I flip-flop between Python, R, and D3 for my data visualizations depending on what exactly I’m doing. My default, though, is definitely Python. One of the most well-established data visualization libraries in Python is Matplotlib. If you dig deep enough in it, you can find a wide variety of features beyond standard graphs. One of the less well-documented of these features is the animation library. The
FuncAnimation class in particular is quite powerful, allowing you to programmatically generate the frames for your animation and compile them together. Jake VanderPlas has a great tutorial on using
FuncAnimation which I’m not going to try to duplicate. Here, I’m just going to focus on a small but critical aspect of using
FuncAnimation that is glossed over elsewhere: blitting.
Here’s how critical blitting is: My first attempted Matplotlib animation took around an hour to render. That wasn’t going to work. Thanks to blitting, I can now render the same animation in under a minute.
I recently read a cool paper from GECCO 2012 called “Spatial Co-Evolution: Quicker, Fitter and Less Bloated”  by Robin Harper. This paper explores some benefits of the Spatial Co-evolution in Age-Layered Planes (SCALP) algorithm, originally described by Harper in a previous paper (paywall) . In SCALP, the population lives in a three-dimensional grid of cells. Each cell is inhabited by both a solver (the “host”) and a test case (the “parasite”). Solvers try to find the right answer for each test case that is either next to or below them. They gain fitness by more closely approximating the desired answer. Test cases, on the other hand, gain fitness by being hard to get right – fitter test cases are those for which solvers have higher error.
That explains the “spatial co-evolution” part of the algorithm, but what about the age-layered planes? That’s what the z-axis in the three-dimensional grid controls. Just like in Hornby’s ALPS algorithm , the age of the lineage controls which XY plane a given solver or test case lives on. As lineages get older, their members move up. The bottom layer is periodically randomly restarted. This ensures that diversity keeps getting added to the population, and that new solutions aren’t immediately wiped out by well established ones.
As many of us are starting the winter semester, it seemed an opportune time to discuss surviving not just the winter weather (here’s hoping Michigan’s winter isn’t as bad as last year!), but the rather mentally and emotionally trying process that is graduate school. I’m currently in my third year at MSU and am just finishing up classes, so these tips are only guaranteed to be even partially relevant for your first few years, but hopefully they continue to help me and you in our final years as well!
We hope that you’re taking at least a bit of a break from pipetting and typing sometime last week or this week. In the mean time, here’s a pretty graph to add to the flashing lights:
Genome lengths of all organisms at each time point in a run of Avida with limited resources.
Missed the beginning? Parts 1, 2, 3, 4, 5, and 6.
Scrooge awoke with a start. He was in his own bed. And seemingly alive! What a relief! He bounced out of bed and ran to his window. Looking down, he saw a student walking by on the street outside and called down to her “You there! What day is it?”
“It’s Christmas day, sir!” the student called back, looking a bit perplexed.
Missed the beginning? Parts 1, 2, 3, 4, and 5.
A final chime sounded. Steam poured from the radiator, swirling through the air until it congealed into a dark hooded figure: The Spirit of Christmas Future. As Scrooge stared at the figure in trepidation, it silently raised a robed arm and gestured forward. Scrooge followed its direction, and found himself in the faculty lounge of his department. A group of professors were chatting.
Missed the beginning? Parts 1, 2, 3, and 4.
The scene before Scrooge and the Spirit of Christmas Present shifted. Now, they were in an ornately decorated room with lively music playing and a large Christmas dinner laid out on the table. The house belonged to Fred Hollowell, and was filled with his collaborators, friends, and all of their families. As Scrooge looked on, he was struck by vibrancy of the conversations and the diversity of people having them. The scientists in the room were not immediately identifiable by their appearance; men and women of a wide variety of ethnicities were represented, and conversation among groups seemed to zig-zag back and forth between seemingly unrelated topics, many of which seemed to have nothing to do with science at all.
Missed the beginning? Parts 1, 2, and 3.
Another bell tolled and Scrooge found himself in the company of a new spirit. The Spirit of Christmas Present laughed heartily and guided Scrooge out the door and into a warmly-lit apartment. Cheap folding chairs placed around a stark wooden table made up the extent of the kitchen furnishings, but the four eldest Cratchit children sat cheerily around them, laughing and decorating Christmas cookies. Bob Cratchit’s wife had filled the small kitchen with festive dishes, many seasoned with herbs from the window garden that she and the kids had made out of old soda bottles. Just then, Bob Cratchit opened the door, Tiny Tim riding on his shoulders, crutch in hand. Bob was joyously greeted by the rest of the family, the other kids lifting Tim off of his shoulders and carrying him to the table. “And did little Tim behave himself at the Graduate Employees Union meeting?” asked Bob’s wife.
Missed the beginning? Read Part 1 and 2.
As the two children ran excitedly towards a waiting car, the Spirit of Christmas Past placed her hand on Scrooge’s shoulder and led him onward. They arrived in a bright lab space adorned with colorful garlands and all sorts of multicultural holiday decorations. Students, including a slightly older Scrooge, were chatting as they pipetted. Shortly, Professor Fezziwig skipped in. “Yo ho, there! No more work tonight! It’s Christmas Eve! Clear all this nonsense away, all of you, we must make room. Life is too short for all work and no play.”