Data Analysis: Molecular Predators-Prey Ecosystem Experiment

In this report, we try to analyse the data from the experience "Molecular Predators-Prey Ecosystem Experiment" cuducted at the ENS Lyon during the 2017 Winter school Molecular programing: from theory to wet lab nano-scale computation.

Data pre-processing

First we load python packages.

In [1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.style
import matplotlib.lines as mlines

%matplotlib inline
matplotlib.style.use('ggplot')

Then we load the data.

In [2]:
data = pd.read_csv("exp.csv")

After that we treat the data: we separate the experiment in different tables.

In [3]:
letters = 'ABCDEFGHIJKL'
results = {
    (letters[j], 3.5-0.5*i): data.loc[data['Well'] == letters[i] + str(j+1)]
    for i in range(8) for j in range(12)
}

1) Evolution plots

Let's define beautiful colors:

In [4]:
red = "firebrick"
blue = "steelblue"

Then we plot the data in a 8x12 matrix (or see the attached file fig1.svg). The order is the same as the table in the TP sheet.

In [5]:
f, ax = plt.subplots(8, 12, sharex='col', sharey='row', figsize=(32,24))

for j, L in enumerate(letters):
    for i, g in enumerate(g / 2 for g in range(7,-1,-1)):
        fam = results[L, g].plot(x='Cycle', y='FAM', style='-', ax = ax[i][j], color=red)
        joe = results[L, g].plot(x='Cycle', y='JOE', style='-', ax = ax[i][j], color=blue)
        ax[i][j].legend().remove()
        ax[i][j].axis('auto')

red_line = mlines.Line2D([], [], color=red, markersize=15, label='FAM')
blue_line = mlines.Line2D([], [], color=blue, markersize=15, label='JOE')

handles = [red_line,blue_line]
labels = [h.get_label() for h in handles] 

f.legend(handles=handles, labels=labels)

f.savefig("fig1.svg")

2) Trajectories

We plot the different trajectories using the same matrix (see fig3.svg):

In [6]:
f, ax = plt.subplots(8, 12, sharex='col', sharey='row', figsize=(32,24))


for j, L in enumerate(letters):
    for i, g in enumerate(g / 2 for g in range(7,-1,-1)):
        fam = results[L, g].plot(x='FAM', y='JOE', style='-', ax = ax[i][j], color=red)
        ax[i][j].legend().remove()
        ax[i][j].axis('auto')

red_line = mlines.Line2D([], [], color=red,markersize=15, label='Trajectory')

handles = [red_line]
labels = [h.get_label() for h in handles] 

f.legend(handles=handles, labels=labels)

f.savefig("fig2.svg")

3) Who are the preys ?

Let's concentrate on some specific experiment: the one conducted by group E with grass quantity 2.5 uL.

In [7]:
f, ax = plt.subplots()

fam = results['E', 2.5].plot(x='Cycle', y='FAM', style='-', ax = ax, color=red)
joe = results['E', 2.5].plot(x='Cycle', y='JOE', style='-', ax = ax, color=blue)

red_line = mlines.Line2D([], [], color=red, markersize=15, label='FAM')
blue_line = mlines.Line2D([], [], color=blue, markersize=15, label='JOE')

handles = [red_line,blue_line]
labels = [h.get_label() for h in handles] 

f.legend(handles=handles, labels=labels)

f.savefig("fig3.svg")

We can clearly see that JOE (blue plot) grows first, and reach its maximum before FAM (red plot). It means that preys are JOE, and predators are FAM*.