For measuring the concentration of the hormones estradiol, progesterone and LH our idea was to build a biosensor or more specific an immunosensor. The general setup of those is
target – biological receptor – transducer – signal – recording
An immunosensor uses the specificity of an antigen – antibody interaction for its recognition.
Biosensors offer the possibility of a label-free detection by which even small molecules can be identified.
![](https://static.igem.org/mediawiki/2020/6/60/T--Bielefeld-CeBiTec--WikiWave.png)
General
Part | Description | Design |
---|---|---|
BBa_K3410001 | Nanobody scaffold suitable for grafting | Neele Kusche and Stephan Wagner |
selfmade grafted nanobody against estradiol | BBa_K3410002 | Neele Kusche and Stephan Wagner |
Piezoelectric effect
SAW Technique
![](https://static.igem.org/mediawiki/2020/4/4d/T--Bielefeld-CeBiTec--Technik_Logo.png)
1 | 2 | 3 |
---|---|---|
4 | 5 | 6 |
7 | 8 | 9 |
7 | 8 | 9 |
Test
Test
Test
Test
Test PDF
- 50x TAE Stock Solution
- Chemically Competent Cells
- Colony PCR
- DNA Gel Extraction Kit (NEB)
- Electrocompetent Cells
- Error-Prone PCR using JBS Error-Prone PCR Kit (JBS)
- Gibson Assemlby
- IMPACT Protein Purification
- LB Medium
- Ligation with T4 RNA Ligase (NEB)
- PBS Buffer
- PCR & DNA Cleanup Kit (NEB)
- PCR using OneTaq DNA Polymerase (NEB)
- PCR using Phusion DNA Polymerase (NEB)
- PCR using Q5 DNA Polymerase
- PCR using Taq DNA Polymerase
- Phage Amplification
- 50x TAE
- Phage Purification
- Plasmid Purification Kit (Thermo Scientific)
- SDS Page
- SOC Medium
- Transformation via Electroporation
- Transformation via Heat Shock
<!DOCTYPE html>
Modelling
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
The following cell sets the time period for our modelled measurement to 0 to 20 seconds, whereby the value is updated every 0.002 seconds. It also defines the cosinus wave as acos(f2πt+φ).
t = np.arange(0.0, 20.0, 0.002)
def cos_wave(f, phi, a):
return a * np.cos(f* 2 * np.pi * t + phi)
Phase Shift Regulators are here first created with which the values of the amplitudes, the frequency and the phase shift can be set. Then both cosine functions as well as the functions for the mixer and XOR are introduced. Then the graphic representation of both functions is implemented.
@interact(f_1=(0.1,2.,0.1), phi_1=(0.,np.pi*2,np.pi/20), a_1=(0.5,1.5,0.1),
f_2=(0.1,2.,0.1), phi_2=(0.,np.pi*2,np.pi/20), a_2=(0.5,1.5,0.1))
def plot(f_1, phi_1, a_1, f_2, phi_2, a_2):
fig, (ax1,ax2) = plt.subplots(2,1, figsize=(15,10))
fig.tight_layout(pad=5.0)
c1 = cos_wave(f_1, phi_1, a_1)
c2 = cos_wave(f_2, phi_2, a_2)
m = c1 * c2 #mixer
#s = c1 + c2 #interference
x = np.logical_xor(c1>0, c2>0)
ax1.plot(t, c1, label='c1')
ax1.plot(t, c2, label='c2')
ax1.plot(t, m, label='c1 * c2')
ax1.set(xlabel='time (s)', ylabel='voltage in volts', title='mixer')
ax1.grid()
#hängt auch von den amplituden und nicht nur vom phaseshift ab
ax1.legend(loc='lower left')
ax2.plot(t, c1, label='c1')
ax2.plot(t, c2, label='c2')
ax2.plot(t, x, label='c1 xor c2')
ax2.set(xlabel='time (s)', ylabel='voltage in volts', title='XOR')
ax2.grid()
ax2.legend(loc='lower left')
plt.show()
This part of the code shows the dependency of the measurement results of the mixer method on amplitude and phase shift. The first cosinus wave is taken as given, as is the sequence of the second wave. For the given phi value, the for loop goes through the values which the amplitude can assume. The change in the measured values as a function of the phase shift and the relative amplitude is shown. The color gradient within the graphic shows that the measured values depend on the amplitude and phase shift. With the help of the two lines commented out, the mean, minimum and maximum of the measured values can be displayed for a given phase shift.
c1 = cos_wave(1.0, 3.14, 1.0)
f_2 = 1.0
X = []
for phi_2 in np.arange(0.,np.pi*2,np.pi/50):
Y = []
for a_2 in np.arange(0.5,1.5,0.01):
c2 = cos_wave(f_2, phi_2, a_2)
m = c1 * c2 #mixer
Y.append(np.mean(m))
X.append(Y)
#print ("phi = {:.2f}, mean = {:.2f},min = {:.2f}, max ={:.2f}".format(
#phi_2, np.mean(Y),np.min(Y,np.max(Y)))
plt.imshow(X,cmap='Reds')
plt.gca().invert_yaxis()
locs = [0, 20, 40, 60, 80, 99]
plt.xticks(locs, ["{:.1f}".format(i) for i in np.arange(0.5,1.5,0.01)[locs]])
plt.yticks(locs, ["{:.1f}".format(i/np.pi) for i in np.arange(0.,np.pi*2,np.pi/50)[locs]])
plt.xlabel('rel. amplitude [-]')
plt.ylabel('phase shift [pi]')
plt.title('')
plt.show()
This part of the code shows the dependency of the measurement results of the XOR method on amplitude and phase shift. The first cosinus wave is taken as given, as is the sequence of the second wave. For the given phi value, the for loop goes through the values which the amplitude can assume. The change in the measured values as a function of the phase shift and the relative amplitude is shown. The color gradient within the graphic shows that the measured values depend on the phase shift. With the help of the two lines commented out, the mean, minimum and maximum of the measured values can be displayed for a given phase shift.
c1 = cos_wave(1.0, 3.14, 1.0)
f_2 = 1.0
X = []
for phi_2 in np.arange(0.,np.pi*2,np.pi/50):
Y = []
for a_2 in np.arange(0.5,1.5,0.01):
c2 = cos_wave(f_2, phi_2, a_2)
x = np.logical_xor(c1>0, c2>0)
Y.append(np.mean(x))
X.append(Y)
#print ("phi = {:.2f}, mean = {:.2f},min = {:.2f}, max ={:.2f}".format(
#phi_2, np.mean(Y),np.min(Y),np.max(Y)))
plt.imshow(X,cmap='Reds')
plt.gca().invert_yaxis()
plt.xticks(locs, ["{:.1f}".format(i) for i in np.arange(0.5,1.5,0.01)[locs]])
plt.yticks(locs, ["{:.1f}pi".format(i/np.pi) for i in np.arange(0.,np.pi*2,np.pi/50)[locs]])
plt.xlabel('rel. amplitude [-]')
plt.ylabel('phase shift [pi]')
plt.title('')
plt.show()