In [1]:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit  # import the curve fitting function
%matplotlib inline



# Constants



In [2]:

n = 1.33 #DI
n2 = 1.375 #Solution
y = 633*1e-9 #wavelength

theta = np.pi/2

K = (4*np.pi*n/y)*np.sin(theta/2)

kb = 1.38064852*1e-23
T = 20 + 273
eta = 1.005*1e-3 #DI
eta2 = 1.76*1e-3 #Solution

K2 = (4*np.pi*n2/y)*np.sin(theta/2)




In [3]:

return (kb*T)/(6*np.pi*eta*D)

return eD*(kb*T)/(6*np.pi*eta*D**2)




In [4]:

#This will use label A

#Label B

#Label C

#Label D



# DI water with 0.11$\mu$m beads



In [6]:

ACorr = np.array([DI_110nm[i][0] for i in np.arange(0,len(DI_110nm))])
ATime = np.array([DI_110nm[i][1] for i in np.arange(0,len(DI_110nm))])

ACorr2 = np.array([DI_110nm_2[i][0] for i in np.arange(0,len(DI_110nm_2))])
ATime2 = np.array([DI_110nm_2[i][1] for i in np.arange(0,len(DI_110nm_2))])




In [11]:

plt.figure(figsize=(10,6));

plt.scatter(ATime2,ACorr2,marker='.');

plt.xlabel('Lag Time $\mu s$',fontsize=20);
plt.ylabel('Correlation',fontsize = 20);

plt.xticks(size = 13);
plt.yticks(size = 13);

plt.legend(loc='best');
plt.xlim(1,11000);
plt.ylim(-0.05,0.9);

plt.savefig('Data.png')




C:\Users\James\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py:531: UserWarning: No labelled objects found. Use label='...' kwarg on individual plots.
warnings.warn("No labelled objects found. "




In [7]:

def myfun(tau,beta,D,c):
ans =  beta*np.exp(-2*D*(K**2)*tau) + c
return ans

p0 = [0.5,1e-18,0.2] #guess

xspace = np.linspace(1,11000,2000)

plsq, pcov = curve_fit(myfun, ATime2, ACorr2, p0)  # curve fit returns p and covariance matrix
# these give the parameters and the uncertainties
beta = plsq[0]
ebeta = np.sqrt(pcov[0,0])

D = plsq[1]*1e6
eD = np.sqrt(pcov[1,1])*1e6

c = plsq[2]
ec = np.sqrt(pcov[2,2])

yfit = myfun(xspace,plsq[0],plsq[1],plsq[2])  # use fit results for a, b, c

plt.figure(figsize=(10,6));

plt.scatter(ATime2,ACorr2,marker='.',label='Data');
plt.plot(xspace,yfit,label='Fit');

plt.xlabel('Lag Time $\mu s$',fontsize=20);
plt.ylabel('Correlation',fontsize = 20);

plt.xticks(size = 13);
plt.yticks(size = 13);

plt.legend(loc='best');
plt.xscale('log');
plt.xlim(1,11000);
plt.ylim(-0.05,0.9);

plt.text(1.2,0.4,'$D_T = (%.2f \pm %.3f) \cdot 10^{-12}$ ${m^2}{s^{-1}}$' % (D*1e12, eD*1e12),size=20);

plt.text(1.2,0.25,'$r = %.5f \pm %.5f$ $\mu m$' % (r*1e6, er*1e6),size=20);

plt.savefig('AFit.png')






# DI water with 153$\mu$m beads



In [ ]:

BCorr = np.array([DI_153um[i][0] for i in np.arange(0,len(DI_153um))])
BTime = np.array([DI_153um[i][1] for i in np.arange(0,len(DI_153um))])




In [ ]:

def myfun2(tau,beta,D,c):
ans =  beta*np.exp(-2*D*(K**2)*tau) + c
return ans

p02 = [0.5,1e-18,0.2] #guess

xspace2 = np.linspace(5,100000,1000)

plsq2, pcov2 = curve_fit(myfun2, BTime, BCorr, p02)  # curve fit returns p and covariance matrix
# these give the parameters and the uncertainties
beta2 = plsq2[0]
ebeta2 = np.sqrt(pcov2[0,0])

D2 = plsq2[1]*1e6
eD2 = np.sqrt(pcov2[1,1])*1e6

c2 = plsq2[2]
ec2 = np.sqrt(pcov2[2,2])

yfit2 = myfun2(xspace2,plsq2[0],plsq2[1],plsq2[2])  # use fit results for a, b, c

plt.figure(figsize=(10,6));

plt.scatter(BTime,BCorr,marker='.',label='Data');
plt.plot(xspace2,yfit2,label='Fit');

plt.xlabel('Lag Time $\mu s$',fontsize=20);
plt.ylabel('Correlation',fontsize = 20);

plt.xticks(size = 13);
plt.yticks(size = 13);

plt.legend(loc='best');
plt.xscale('log');
plt.xlim(5,100000);

plt.ylim(-0.05,1);

plt.text(6,0.4,'$D_T = (%.3f \pm %.3f) \cdot 10^{-12}$ ${m^2}{s^{-1}}$' % (D2*1e12, eD2*1e12),size=20);

plt.text(6,0.3,'$r = %.5f \pm %.5f$ $\mu m$' % (r2*1e6, er2*1e6),size=20);

plt.savefig('BFit.png')



# 20$\%$ glycerol by wt., 80$\%$ DI water, with 0.11$\mu$m beads



In [ ]:

CCorr = np.array([Glycerol20_DI80_110nm[i][0] for i in np.arange(0,len(Glycerol20_DI80_110nm))])
CTime = np.array([Glycerol20_DI80_110nm[i][1] for i in np.arange(0,len(Glycerol20_DI80_110nm))])

CCorr2 = np.array([Glycerol20_DI80_110nm_2[i][0] for i in np.arange(0,len(Glycerol20_DI80_110nm_2))])
CTime2 = np.array([Glycerol20_DI80_110nm_2[i][1] for i in np.arange(0,len(Glycerol20_DI80_110nm_2))])




In [ ]:

def myfun3(tau,beta,D,c):
ans =  beta*np.exp(-2*D*(K2**2)*tau) + c
return ans

p03 = [0.5,1e-18,0.2] #guess

xspace3 = np.linspace(1,10000,1000)

plsq3, pcov3 = curve_fit(myfun3, CTime, CCorr, p03)  # curve fit returns p and covariance matrix
# these give the parameters and the uncertainties
beta3 = plsq3[0]
ebeta3 = np.sqrt(pcov3[0,0])

D3 = plsq3[1]*1e6
eD3 = np.sqrt(pcov3[1,1])*1e6

c3 = plsq3[2]
ec3 = np.sqrt(pcov3[2,2])

yfit3 = myfun3(xspace3,plsq3[0],plsq3[1],plsq3[2])  # use fit results for a, b, c

plt.figure(figsize=(10,6));

plt.scatter(CTime,CCorr,marker='.',label='Data');
plt.plot(xspace3,yfit3,label='Fit');

plt.xlabel('Lag Time $\mu s$',fontsize=20);
plt.ylabel('Correlation',fontsize = 20);

plt.xticks(size = 13);
plt.yticks(size = 13);

plt.legend(loc='best');
plt.xscale('log');
plt.xlim(0,10000);

plt.text(1.2,0.4,'$D_T = (%.3f \pm %.3f) \cdot 10^{-12}$ ${m^2}{s^{-1}}$' % (D3*1e12, eD3*1e12),size=20);

plt.text(1.2,0.3,'$r = %.5f \pm %.5f$ $\mu m$' % (r3*1e6, er3*1e6),size=20);

plt.savefig('CFit.png')



# DI water with 0.11$\mu$m and 153$\mu$m beads



In [ ]:

DCorr = np.array([DI_110nm_153um[i][0] for i in np.arange(0,len(DI_110nm_153um))])
DTime = np.array([DI_110nm_153um[i][1] for i in np.arange(0,len(DI_110nm_153um))])




In [ ]:

def myfun4(tau,beta,beta2,D4,D5,c):
ans =  beta*np.exp(-2*D4*(K**2)*tau) + c + beta2*np.exp(-2*D5*(K**2)*tau)
return ans

p04 = [0.5,0.5,1e-18,1e-18,0.2] #guess

xspace4 = np.linspace(1,8000,1000)

plsq4, pcov4 = curve_fit(myfun4, DTime, DCorr, p04)  # curve fit returns p and covariance matrix
# these give the parameters and the uncertainties

D4 = plsq4[2]*1e6
eD4 = np.sqrt(pcov4[2,2])*1e6

D5 = plsq4[3]*1e6
eD5 = np.sqrt(pcov4[3,3])*1e6

yfit4 = myfun4(xspace4,plsq4[0],plsq4[1],plsq4[2],plsq4[3],plsq4[4])  # use fit results for a, b, c

plt.figure(figsize=(10,6));

plt.scatter(DTime,DCorr,marker='.',label='Data');
plt.plot(xspace4,yfit4,label='Fit');

plt.xlabel('Lag Time $\mu s$',fontsize=20);
plt.ylabel('Correlation',fontsize = 20);

plt.xticks(size = 13);
plt.yticks(size = 13);

plt.legend(loc='best');
plt.xscale('log');
plt.xlim(0,8000);

plt.text(1.2,0.4,'$r = %.5f \pm %.5f$ $\mu m$' % (r4*1e6, er4*1e6),size=20);

plt.text(1.2,0.2,'$r = %.5f \pm %.5f$ $\mu m$' % (r5*1e6, er5*1e6),size=20);

plt.text(1.2,0.5,'$D_{T1} = (%.3f \pm %.3f) \cdot 10^{-12}$ ${m^2}{s^{-1}}$' % (D4*1e12, eD4*1e12),size=20);
plt.text(1.2,0.3,'$D_{T2} = (%.3f \pm %.3f) \cdot 10^{-12}$ ${m^2}{s^{-1}}$' % (D5*1e12, eD5*1e12),size=20);

plt.savefig('DFit.png')




In [ ]: