Thank you Adaobi for such a wonderful suggestion. All credit to her for the idea, we are still workin’ on it!
My genius friend Adaobi Adibe sent me a paper on making biological tissues transparent. In “Achieving optical transparency in live animals with absorbing molecules”, the authors make biological tissues, like chicken breast, transparent by soaking them in a solution of tartrazine. Tartrazine is the very bright yellowish-orange food dye that is found on Doritos.
We aim to do a more ambitious replication imminently. But as a warm up, I tried to replicate parts of this protocol by soaking chicken breast in tartrazine solution. I got partial transparency but not to the degree of the paper. The sample below is an approximately 2mm thick raw chicken breast cut from a 5mm slice that was soaked in ~0.19 M tartrazine solution for 6 hours at room temperature. I took an image of this with a desk light. You can see the grid lines showing through from underneath. The chicken, even though the texture to the touch is the same, has a visual quality like that of gummy bears.
The original paper used 0.62 M, 40 °C and a machine shaker, but I couldn't find a way to do this safely, nor did I have the equipment to do so. Hence the altered protocol.
The image below is a different angle of my sample. The sample on the left is the same 2mm thick chicken breast slice as above. And the sample on the right is a control where I soaked it in water (it is slightly yellow since this process is super messy and I got dust on it).
In the top part of the sample we do see some transparency, with the 5mm x 5mm grid showing through. The visual quality of the chicken breast takes on a gummy-bear like quality. Kinda makes me wanna chew it if it wouldn't give me Salmonella.
I don't wanna get copyrighted by Doritos so here is a cartoon of where you can find tartrazine in the wild.
How does this work?
The current model we have is that the absorbance properties of the tartrazine also shift the refractive index of water. By pushing the refractive index of water to that of protein and lipid solution, we make the object more transparent. I’ll explain this in great detail later.
Tartrazine was from APC Pure. It was >80% dye content, which means some uncertainty over what the true molar concentration will be. I then prepared three concentrations of tartrazine at these molar concentrations, one of which was just a 0 concentration as a control.
Tartrazine: 0 g, Tap water: 20 g, w/w: 0%, Molality (mol/kg water): 0, Tartrazine (mmol): 0, Molarity (approx.): 0 M (control)
Tartrazine: 2 g, Tap water: 18 g, w/w: 10%, Molality (mol/kg water): 0.21, Tartrazine (mmol): 3.7, Molarity (approx.): ~0.19 M
Tartrazine: 6 g, Tap water: 14 g, w/w: 30%, Molality (mol/kg water): 0.80, Tartrazine (mmol): 11.2, Molarity (approx.): ~0.56 M
Tartrazine has M = 534.4 g/mol. Moles use the nominal mass (the powder is >80% dye, so true values are up to ~15% lower). Molarity assumes a final solution volume of ~20 mL.
This is what the tartrazine looked like. It doesn't have an odour, and it seems to be considered food safe by the FDA, so I didn't bother wearing gloves for this bit. Here is a picture of the tartrazine and the specs.
Product: Tartrazine E102 FG, C.I. 19140
Dye content: >80%
Molecular formula: C16H9N4Na3O9S2
Molecular weight: 534.37 g/mol
λmax (in water): 425 nm
Water-insoluble matter: <0.20%
Subsidiary dyes: <1.00%
Heavy metals (as Pb): <40 mg/kg
To prepare the solutions I used a jeweller's scale to weigh out the right amounts and then added tap water to the weights listed in the table.
To dissolve the tartrazine, I mixed it with a glass stirrer at room temperature until there were no visible lumps.¹
Here are the different solutions at different concentrations, the most concentrated one on the left, the middle concentration in the middle, and then a water control on the right.
Next, I got chicken breast fillets from Tesco. I cut a 5mm thick slab and then cut three pieces out to around 15mm in length.
I then soaked 5mm thick slices of chicken breast in each of the three solutions.
After 6 hours of soaking, these were the results.
First, the chicken in the highest concentration solution failed, because the tartrazine seemed to crystallise. This is what it looked like - it got all crusty.
For the middle concentration (~0.19 M), the chicken appeared gelatinous. But it wasn't transparent. The control chicken remained completely opaque.
I threw these pieces out and then tried again with the method below.
And then I tried again with the same procedure, with the aim of soaking it for 12 hours at room temperature. Given the issues with the highest concentration (~0.56 M), I only tried the water control and the middle concentration (~0.19 M). But this time I put the chicken in test tubes and covered it, given that I was gonna leave it out for 12 hours at room temperature. I wanted to mitigate the food safety risk.
This was the 12-hour-soaked piece. Whilst it's hard to see with the camera, there was some slight visible translucency compared to the control.
To examine it I put it under some light above.
I then cut approximately 2mm slices of chicken. This was quite fiddly to do with a small slimy piece. Here is what it looked like compared to the control.
This technique has been used to make fluorescence imaging much easier in live animals.
On my end, doing this well could add to the set of things that independent scientists could image at home. We might be able to probe internal structures of things more casually. Making things transparent would give better images and would allow independent scientists to look at tissue structure more closely.
Effective observation at low cost is one of the themes of my research. I wrote about writing tracing software for Brownian particles using my microscope in my last post. I am also thinking about trying to match the performance of CO2 gas sensing using pressure, which would make that type of sensing cheaper. In line with this theme, I’m super excited about attempting weird and cool techniques to make structures more easier to probe!
Here’s is more than you ever wanted to know about optical transparency.
A material can be opaque for two reasons. First, a material can absorb light and block it. Second, it can scramble light due to different refractive indices.
First, light rays from the other side could be absorbed when they pass through. If light is absorbed, the light can't hit your eyes and you can't see the other side. Light can have multiple wavelengths, and the wavelengths absorbed by the material are determined by the material's spectra. To calculate the spectra, we can approximate the physical behaviour of molecules to that of an electron around a potential. The Schrödinger equation tells us that this system can only occupy a discrete set of energies, and it tells us which ones these are. The differences between these energies set the wavelengths that are ultimately absorbed by the material.
In reality, materials are composed of lots of different things and so we expect them to also absorb different wavelengths.
Another reason for opacity is less obvious, but more interesting. The refractive index of a material tells us how quickly light travels within the medium. When light travels between materials with different refractive indices, it deflects slightly. When a material is packed with sub-materials that have different refractive indices, the refraction within causes light rays to get scattered since light rays ping around.
Biological materials contain a mix of different sub-materials inside - fibres, cells, proteins, and more. Each of these materials contains a different refractive index. When you have a material with one refractive index embedded in a material with a different refractive index, you get scattering. This scattering causes the light from the other side to get scrambled. The diagram below shows this.
We can model biological materials as a 'base material' of water, with chunks of lipids and proteins embedded inside, all of which have different refractive indices.
To make something transparent, we need to exploit the two causes of opacity. One approach is to try to change the absorbance spectra of a material so that it absorbs fewer wavelengths of light.
Alternatively (and this is the approach we'll cover in this post), we could try to change the refractive index of the water inside to match the embedded media. The image below shows this principle with biological tissues. If you can change the refractive index of water with a dye, you can then match it to the refractive index of proteins and lipids, which is slightly higher.
If you manage to do this without modifying the absorbance of a material, you should be able to make it more transparent.
Ok, so the game is to change the refractive index. Here is a map of the calculations we need to do to figure out how to modify the refractive index of a material.
To understand where the refractive index plays a part in a quantitative model, let's model how light travels according to Maxwell. Light is an electromagnetic wave, comprised of oscillating electric and magnetic waves. For this essay, let's focus on the electric field part to get the key intuitions.
Using complex representation, if light travels down the z axis, in a vacuum, we can write down the equation of light as the following. Because it's a wave, we can write
\(E(z, t) = E_0 \cos\!\left(\frac{\omega z}{c} - \omega t\right)\)
But for convenience we use complex numbers
\(E(z, t) = \mathrm{Re}\left\{ E_0\, e^{\,i\omega z / c \;-\; i\omega t} \right\}\)
Where E₀ is the amplitude (how strong the field is), ω is the angular frequency (at a fixed point the field goes round once every T = 2π/ω), c is the speed of light, z is distance along the beam and t is time. Crest to crest, the wavelength is λ = 2πc/ω.
In media though, we expect both the speed of light to change in the medium, as well as some absorption. We can rewrite the equation as follows
\(E(z, t) = \mathrm{Re}\left\{ E_0\, e^{\,i(n' + i\kappa)\,\omega z / c \;-\; i\omega t} \right\} = \mathrm{Re}\left\{ E_0\, e^{-\kappa \omega z / c}\, e^{\,i(n' \omega z / c \;-\; \omega t)} \right\}\)
The coefficient in the exponential n′ is a multiplier behind the spatial term, and represents the real refractive index. κ represents how much the wave attenuates, and is meant to denote absorption.
In practice we can group n′ + iκ as one number, and then refer to this as the complex refractive index.
First we need to try to change the real refractive index. If we can increase the refractive index of water to match the tissue refractive index, we would have a more transparent material. Water has a refractive index of 1.33. And although this number is variable, protein and lipid rich structures have a refractive index of around 1.45. So the game is to adjust the refractive index of the water around it towards 1.45, which would make it more transparent.
Whatever we do to the water, we also need to make sure that we don't make the absorbance property too high. If κ gets too high, then we'd end up absorbing all the light and it won't go transparent.
So how do we shift the refractive index? To understand refractive indices, we first need to understand polarisation. To first order, a material consists of electrons bound to nuclei. When an electric field is applied to a material, the relative positions of the electrons to their nuclei change.
from [http://hyperphysics.phy-astr.gsu.edu/hbase/electric/dielec.html#c1]
For a positively charged particle and a negatively charged particle, polarisation is the magnitude of that charge multiplied by the displacement of one from the other. To calculate the polarisation, we need to model how far electrons displace from the nucleus under the electric field.
Electric fields provide a force on charges that are free. To model the effect of an electric field on a material, we treat the positive nucleus as fixed, and the electrons as free. To calculate the effect of the system, we'll use the Lorentz oscillator model.
In this model, the electrons are modelled to be bound to the nucleus like a damped spring, with the electric field applying a forcing. We can solve it exactly how we would solve a damped spring problem:
Newton's second law for the electron, with the light's field oscillating at ω:
\(m\ddot{x} = -m\omega_0^2\, x \;-\; m\gamma\,\dot{x} \;-\; e\,E_0\, e^{-i\omega t}\)
If we try an Ansatz for the position of the electron x(t) = x₀ e^(−iωt) (the electron oscillates at the driving frequency), we get that the position of the electron relative to the nucleus is given by the following expression.
\(x(t) = \frac{-e/m}{\omega_0^2 - \omega^2 - i\gamma\omega}\; E(t)\)
The dipole moment is p = −ex, and with N electrons per unit volume the polarisation per unit volume is
\(\mathbf{P} = N p = \frac{N e^2/m}{\omega_0^2 - \omega^2 - i\gamma\omega}\; \mathbf{E}\)
In this setup, ω₀ represents the natural frequency of the bound electron, which is the frequency the molecule absorbs at (for tartrazine, the 425 nm peak), γ represents the damping rate, which sets how broad that absorption peak is, and ω is the frequency of the electric field. Now we've found polarisation, we want to relate it to the refractive index itself. To do that, we need to do some gymnastics with two identities.
By convention, the polarisation can be written as proportional to the electric field
\(\mathbf{P} = \varepsilon_0\,\chi\,\mathbf{E}\)
where ε₀ is the permittivity of free space, χ is the electric susceptibility (a dimensionless number that says how easily the material polarises), and E is the electric field. Comparing with the Lorentz oscillator result above,
\(\chi(\omega) = \frac{N e^2/(\varepsilon_0 m)}{\omega_0^2 - \omega^2 - i\gamma\omega}\)
To relate our polarisation, and electric susceptibility to the refractive index, we use the following trick. The below is an AI-assisted proof with manual checking.
This degree of polarisation and the electric field is encoded in something called the electric displacement field D. And the relationship between D and the electric field is linear, with the coefficient called the relative permittivity, εᵣ. P here represents the polarisation per unit volume, and is the average induced dipole moment across all of the material.
\(\mathbf{D} = \varepsilon_0 \varepsilon_r \mathbf{E} = \varepsilon_0 \mathbf{E} + \mathbf{P}\)
It turns out that the relative permittivity is related to the complex refractive index as follows:
\(n_c^2 = (n' + i\kappa)^2 = \varepsilon_r\)
The proof of the relationship between refractive index and permittivity for a standard electric wave is standard, and is in the footnote below.² And so, to change the complex refractive index, we need to change the relative permittivity of the material.
To proceed, we use an approximation. The electric displacement field is a function of the polarisation of a material. But when we mix two materials together, we can add their polarisation densities.
Before adding tartrazine, we have that water obeys
\(\mathbf{D} = \varepsilon_0\,\varepsilon_{r,\mathrm{water}}\,\mathbf{E} = \varepsilon_0\mathbf{E} + \mathbf{P}_{\mathrm{water}}\)
Then when we add the dye, we get
\(\mathbf{D} = \varepsilon_0\mathbf{E} + \mathbf{P}_{\mathrm{water}} + \mathbf{P}_{\mathrm{tartrazine}}\)
But we know that each polarisation is proportional to the field, with its own susceptibility: P(water) = ε₀ χ(water) E and P(tartrazine) = ε₀ χ(dye) E, where χ(dye). Substituting that in, we get
\(\mathbf{D} = \varepsilon_0\left(1 + \chi_w + \chi_d\right)\mathbf{E}\)
Comparing with D = ε₀εᵣE, and using that water alone has εᵣ(water) = 1 + χ(water) = n(water)², the relative permittivity of the dyed water is
\(\varepsilon_r = \varepsilon_{r,\mathrm{water}} + \chi_d = n_w^2 + \chi_d\)
For a dilute dye, χ(dye) is small compared to n(water)², so we can expand the square root and use a Taylor expansion to get the modified refractive index of the water with the dye.
\(n_c = \sqrt{n_w^2 + \chi_d} = n_w\sqrt{1 + \frac{\chi_d}{n_w^2}} \;\approx\; n_w + \frac{\chi_d}{2 n_w}\)
n_c is complex. If we write it out as n_c = n′ + iκ and split the electric susceptibility of χ(dye) that we got into real and imaginary parts, the dye shifts the real refractive index and introduces absorption by
\(\Delta n' = n' - n_w = \frac{\mathrm{Re}\,\chi_d}{2 n_w}, \qquad \kappa = \frac{\mathrm{Im}\,\chi_d}{2 n_w}\)
And putting in the Lorentz form of χ(dye) that we got earlier
\(\Delta n' = \frac{N e^2}{2 n_w \varepsilon_0 m}\,\frac{\omega_0^2 - \omega^2}{(\omega_0^2 - \omega^2)^2 + \gamma^2\omega^2}, \qquad \kappa = \frac{N e^2}{2 n_w \varepsilon_0 m}\,\frac{\gamma\omega}{(\omega_0^2 - \omega^2)^2 + \gamma^2\omega^2}\)
For tartrazine and red light, ω is below the resonance ω₀, so ω₀² − ω² > 0 and Δn′ is positive. This means the dye raises the refractive index of the water. Meanwhile κ carries a factor of γω in the numerator and is only large near ω ≈ ω₀,, which means that we don't get absorbance.
References
Ou Z, Duh YS, Rommelfanger NJ, Keck CHC, Jiang S, Brinson K Jr, Zhao S, Schmidt EL, Wu X, Yang F, Cai B, Cui H, Qi W, Wu S, Tantry A, Roth R, Ding J, Chen X, Kaltschmidt JA, Brongersma ML, Hong G. Achieving optical transparency in live animals with absorbing molecules. Science. 2024 Sep 6;385(6713):eadm6869. doi: 10.1126/science.adm6869. Epub 2024 Sep 6. PMID: 39236186; PMCID: PMC11931656.
² Here are Maxwell's equations for electric and magnetic fields in a material. This is generated by Claude.
\(\nabla \cdot \mathbf{D} = \rho_f, \qquad \nabla \cdot \mathbf{B} = 0, \qquad \nabla \times \mathbf{E} = -\frac{\partial \mathbf{B}}{\partial t}, \qquad \nabla \times \mathbf{H} = \mathbf{J}_f + \frac{\partial \mathbf{D}}{\partial t}\)
\(\mathbf{D} = \varepsilon_0 \mathbf{E} + \mathbf{P} = \varepsilon_0 \varepsilon_r \mathbf{E}, \qquad \mathbf{B} = \mu_0 \mathbf{H} \quad \text{(non-magnetic)}\)
The question is then - how do any of these relate to the refractive index?
No free charges or currents (ρ = 0, J = 0), non-magnetic. Faraday's law says that the curl of an electric field is the negative of the magnetic field's time derivative. Take the curl of Faraday's law, and then substitute in
\(\nabla \times (\nabla \times \mathbf{E}) = -\frac{\partial}{\partial t}\,\nabla \times \mathbf{B}\)
Ampère–Maxwell with J = 0:
\(\nabla \times \mathbf{H} = \frac{\partial \mathbf{D}}{\partial t}\)
Substitute B = μ₀H and D = ε₀E + P = ε₀εᵣE:
\(\nabla \times \mathbf{B} = \mu_0 \frac{\partial \mathbf{D}}{\partial t} = \mu_0 \varepsilon_0 \frac{\partial \mathbf{E}}{\partial t} + \mu_0 \frac{\partial \mathbf{P}}{\partial t} = \mu_0 \varepsilon_0 \varepsilon_r \frac{\partial \mathbf{E}}{\partial t}\)
This is where εᵣ enters: the polarisation current ∂P/∂t adds to the vacuum displacement current. Then (taking εᵣ constant in time, i.e. working at a single frequency)
\(\nabla \times (\nabla \times \mathbf{E}) = -\frac{\partial}{\partial t}\,\nabla \times \mathbf{B} = -\mu_0 \varepsilon_0 \varepsilon_r \frac{\partial^2 \mathbf{E}}{\partial t^2}\)
\(\nabla \times (\nabla \times \mathbf{E}) = \nabla(\nabla \cdot \mathbf{E}) - \nabla^2 \mathbf{E} = -\nabla^2 \mathbf{E}\)
Then if we equate both sides, we get a plane wave equation
\(\Rightarrow \quad \nabla^2 \mathbf{E} = \frac{\varepsilon_r}{c^2}\frac{\partial^2 \mathbf{E}}{\partial t^2}, \qquad c^2 = \frac{1}{\mu_0 \varepsilon_0}\)
Plane wave E = E₀ e^(i(kz − ωt))
\(k^2 = \varepsilon_r \frac{\omega^2}{c^2}\)
Comparing with k = (n′ + iκ) ω/c from the attenuating wave written earlier,
\(\varepsilon_r(\omega) = n_c(\omega)^2 = (n' + i\kappa)^2 = n'^2 - \kappa^2 + 2 i n' \kappa\)





























