Hackster is hosting Hackster Holidays, Ep. 6: Livestream & Giveaway Drawing. Watch previous episodes or stream live on Monday!Stream Hackster Holidays, Ep. 6 on Monday!

A Toolkit for Engineering Microbial Interactions

Resources for genetically-engineering bacteria to construct microbial communities with defined ecological and structural relationships.

AdvancedWork in progress1,585
A Toolkit for Engineering Microbial Interactions

Things used in this project

Hardware components

K-12 Escherichia coli (strain MG1655)
×1
96-well flat-bottom plates
Sterile untreated plates
×1
Cell culture tubes
×1
M9 minimal growth media
Supplemented with 0.4% glucose, 100 mM MgSO4, and 10 mM CaCl2
×1
Anhydrotetracycline
×1
Microscope slides and coverslips
×1
D-Arabinose
×1
Antifade mounting solution
×1
L-Tryptophan
×1
L-Proline
×1
L-Methionine
×1
L-Isoleucine
×1

Software apps and online services

ImageJ
Python (matplotlib)

Hand tools and fabrication machines

Pipettes
Fluorescence microscope
Cell-culture incubator
Spectrophotometer / fluorescent plate reader
Autoclave (or microwave)

Story

Read more

Schematics

Ecological interactions

Schematic of the possible ecological interactions that can be engineered between 2 cell populations using our mutants and toxin plasmids.

Physical interactions

Schematic of the different physical interaction networks that can be built between two cell types, and the required cell-surface receptor-ligand pairs.

Protocol - Coculture growth curves

Growing auxotrophic (and wild-type) E coli strains as co-cultures

Protocol - Adhesion aggregation

Test for adhesive interactions by a simple clumping assay

Protocol - Auxotroph transformation

Introducing plasmids into non-competent auxotroph strains

Protocol - Fluorescence microscopy

Preparing slides of cells and imaging fluorescence

Code

Growth_curves_analysis

Python
Code for calculating growth curves from mixed cell cultures
#!/usr/bin/env python
# coding: utf-8

# In[1]:


import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import string
import itertools


# In[2]:


data=pd.read_csv("EXP0000.TXT", sep="\t", index_col=[0], header=None)


# In[3]:


data


# In[4]:


series = []
for x in range(1,11):
    series.append([string.ascii_uppercase[0]+str(x), string.ascii_uppercase[1]+str(x), string.ascii_uppercase[2]+str(x)])


# In[5]:


strains=["-W, G","-M, G","-P, G","-I, G","-W, R","-M, R","-P, R","-I, R","Pa, G","Pa, R"]


# In[6]:


fig = plt.figure(figsize=(20,10))
for x in range(len(series)):
    ax = fig.add_subplot(2, 5, x+1)
    plt.errorbar(data.loc["Time[s]"]/3600,data.loc[series[x]].mean(),yerr=data.loc[series[x]].std()/np.sqrt(3))
    fig.tight_layout(rect=[0, 0.03, 1, 0.95])
    plt.title("Strain "+strains[x])
    ax.set_ylabel('OD 600')
    ax.set_xlabel('Time (h)') 
    plt.ylim((0,0.2))
    
plt.suptitle('Monocultures')
plt.show()


# In[7]:


series_2=[]
for z in range(4):
    y=0
    for x in range(4):
        series_2.append([string.ascii_uppercase[z+3]+str(y+1), string.ascii_uppercase[z+3]+str(y+2), string.ascii_uppercase[z+3]+str(y+3)])
        y=y+3


# In[16]:


a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
c=list(itertools.product(b,a))
c


# In[30]:


fig2 = plt.figure(figsize=(20,14))
for x in range(len(series_2)):
    ax = fig2.add_subplot(4, 4, x+1)
    
    plt.errorbar(data.loc["Time[s]"]/3600,data.loc[series_2[x]].mean(),yerr=data.loc[series_2[x]].std()/np.sqrt(3))
    plt.errorbar(data.loc["Time[s]"]/3600,data.loc[series[c[x][0]-1]].mean(),yerr=data.loc[series[c[x][0]-1]].std()/np.sqrt(3))
    plt.errorbar(data.loc["Time[s]"]/3600,data.loc[series[c[x][1]-1]].mean(),yerr=data.loc[series[c[x][1]-1]].std()/np.sqrt(3))
    
    plt.legend([str(strains[c[x][0]-1]+"+"+strains[c[x][1]-1]), strains[c[x][0]-1], strains[c[x][1]-1]])
    fig2.tight_layout(rect=[0, 0.03, 1, 0.95])
    ax.set_ylabel('OD 600')
    ax.set_xlabel('Time (h)') 
    plt.ylim((0,0.2))
    plt.title("Strains "+strains[c[x][0]-1]+"+"+strains[c[x][1]-1])

plt.suptitle('Co-cultures')
plt.show()


# In[37]:


plt.errorbar(data.loc["Time[s]"]/3600,data.loc[["F7", "F8", "F9"]].mean(),yerr=data.loc[["F7", "F8", "F9"]].std()/np.sqrt(3))


# In[ ]:

Credits

Jarrod Shilts

Jarrod Shilts

2 projects • 3 followers
Anna Kuroshenkova

Anna Kuroshenkova

3 projects • 17 followers
Georgeos Hardo

Georgeos Hardo

1 project • 1 follower
Alex Baker

Alex Baker

1 project • 1 follower
Kavi Shah

Kavi Shah

1 project • 1 follower

Comments