In [65]:
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib
In [7]:
%matplotlib inline
In [54]:
curve = pd.read_csv('data/optical_density_curve.csv')
curve['dilution'] = 1 / curve['dilution']
curve
Out[54]:
In [83]:
slope, intercept, r_value, p_value, std_err = stats.linregress(curve.dilution, curve.A_630)
def model(x, y_int=intercept):
return slope * x + y_int
def model_dilution(y, y_int=intercept):
return (y - y_int) / slope
print(slope, intercept)
$y = 4.7063 \times y - 0.1000$
In [67]:
curve[['A_630', 'dilution']].plot('dilution')
Out[67]:
In [80]:
ods = pd.read_csv('data/optical_densities.csv')
ods['dilution'] = 1 / ods['dilution']
ods['isolate'] = ods['isolate'].astype('category')
ods_mean = ods[["isolate", "A_630"]].groupby("isolate").mean()
ods_mean
Out[80]:
In [93]:
dilution_required = list()
for i, row in ods_mean.iterrows():
diff = row.A_630 - model(0.2)
dilution_required.append(model_dilution(0.5, diff))
ods_mean["dilution_reqd"] = pd.Series(dilution_required, index=ods_mean.index)
In [94]:
ods_mean
Out[94]:
In [ ]: