LSPR biosensors detect a target molecule by monitoring plasmon resonance frequency changes due to the proximity of the target to the metallic nanoparticle. We present a proof of concept calculation that shows how our approach can be used to model the response of LSPR biosensors.
We place a $r = 10 \,nm$ silver sphere in water, surrounded by six $r = 4 \,nm$ spherical proteins at a distance $d$ along the principal axes (x,y,z).
Before running the response calculations we perform a mesh convergence analysis to ensure that the results are not going to be affected by changing the size of the mesh.
We run the case presented in Fig. 1 for a wavelength of $380 \, nm$ and a distance $d\,=\,1 \,nm$ for meshes of 512-128, 2048-512, 8192-2048 and 32768-8192 elements where the first number corresponds to the metallic sphere and the second one to the protein.
The values for the dielectric constants for water and silver were obtained by interpolation of experimental data (2,3):
For the protein (modeled as a sphere) we use Bovine Serum Albumina (BSA) data extracted from the functional relationship provided by Pahn, et al. (4)
The error calculation uses the Richardson extrapolation value of the extinction cross-section as a reference, $Cext\,=\, 2663.476 \, nm^2$
We obtain a 1/N convergence (Fig. 2), proving that the numerical solutions computed with PyGBe are correctly resolved by the meshes.
Runs performed in a GPU card NVIDIA Tesla C2075:
For reference we also run the previous cases in a newer GPU card, NVIDIA Tesla K40:
To analyze how the LSPR response and the sensor-analyte distance are related, we use the mesh of 8192 elements for the silver sphere and 2048 elements for the protein spheres.
We vary the distance between the silver sphere (sensor) and the analytes (small spheres i.e. proteins) and we calculate the extinction cross-section as a function of wavelength for the different distances:
The runs were performed for wavelngths in the range [380-400] nm, each 0.5 nm, what gives a total of 41 runs.
Figure 3 shows the variation of the extinction cross-section with respect to the wavelength, for each of the distances shown above. The red shift in the resonance frequency and the decrement of the peak in the presence of the analyte agrees with the behavior observed in experiments perform by Tang et al. (5). This indicates that our boundary element method approach, using electrostatic approximation, is capable of reproducing characteristic resonance frequency shift in LSPR biosensors.
Experiments suggests that the distance between the nanoparticle and the analyte affects the sensitivity of the sensor (6), and these proof-of-concept calculations show that our apprach can be use to study sensitivity versus distance, using electrostatics.
Our next step is to study the interaction between a realistic model of the BSA protein (non-spherical) and the nanoparticle; more specifically how the relative position between them affects sensitivity.
PyGBe can solve problems with arbitrary geometries which will allow us to also study the sensitivity of previously unexplored nanoparticle geometries.
(2) Hale, G. M. and Querry, M. R. (1972). Optical constants of water in the 200-nm to 200-μm wavelength region. Appl. Opt., 12(3):555–563.
(3) Johnson, P. B. and Christy, R. W. (1972). Optical constants of nobble metals. Phys. Rev. B, 12(6):4370–4379.
(4) Phan, Anh D., et al. "Surface plasmon resonances of protein-conjugated gold nanoparticles on graphitic substrates." Applied Physics Letters 103.16 (2013): 163702.
(5) Tang, Bin, et al. "Two-dimensional correlation localized surface plasmon resonance spectroscopy for analysis of the interaction between metal nanoparticles and bovine serum albumin." The Journal of Physical Chemistry C 114.49 (2010): 20990-20996.
(6) Haes, A. J., Zou, S., Schantz, G. C., and Van Duyne, R. P. (2004). A nanoscale optical biosensor: The long range distance dependence of the localized surface plasmon resonance of noble metal nanoparticles. J. Phys. Chem B, 108:109–116.
#Ignore this cell, It simply loads a style for the notebook. from IPython.core.display import HTML def css_styling(): try: styles = open("styles/custom.css", "r").read() return HTML(styles) except: pass css_styling()