Public Lab Research note

Detection of Olive Oil Adulteration (with Peanut Oil) Using Visual Light Spectroscopy

by ygzstc | April 30, 2014 15:15 30 Apr 15:15 | #10382 | #10382

ygzstc was awarded the Empiricism Barnstar by liz for their work in this research note.

Disclaimer: All the information (including hardware, software, experimental setup, procedure, and results) in this research note is provided "as is" without warranty of any kind. Author makes no warranties, express or implied, that they are free of error, or are consistent with any particular standard of merchantability, or that they will meet your requirements for any particular application and/or problem. They should not be relied on for solving a problem whose incorrect solution could result in incorrect claims which may or may not lead to any kind of monetary loss related to trade and/or legal liability. If you do use them in such a manner, it is at your own risk. The author disclaims all liability for direct, indirect, or consequential damages resulting from your experiments and claims based on their results.


Food fraud, especially “Economically Motivated Adulteration (EMA)” of food and food ingredients is one of the most important problems that we are facing today [1, 2]. As expected, edible oils (especially olive oil) are the top of the list of EMA and most common types of adulteration techniques for oils are “dilution” and “substitution” [1, 2]. Despite government (federal or state) level inspections, those adulterated oils end up our kitchens anyways. So the question is: Can we come up with a cheap but effective method for household use to detect edible oil adulteration?

In this preliminary study, oil olive adulteration is investigated using visual light spectroscopy.

Setup, Sample Preparation and Data Collection

In the study, extra virgin olive oil and peanut oil (for adulteration) are considered. In addition, Public Lab’s spectrometer (, and its data collection software “Spectral Workbench” ( and few extra tools are used (See Figure 1).


Figure 1 - Setup (left) and oils used (right)

Total 5 samples are created. Starting from pure olive oil, 25%, 50% and 75% diluted (with peanut oil) samples along with pure peanut oil sample are prepared.

Once the spectrometer is calibrated with CFL, physical setup (shown in Figure 1) is set. First, a spectral data is recorded with the empty petri dish (90 mm diameter, glass) and a white LED work lamp ( ). We call this spectrum as “baseline”. Later, from each sample, 20 ml is taken and poured in the petri dish and the spectral data are collected. (Those spectral data are on the Public Lab’s website and nomenclature of the data is provided in Appendix.)

Collected spectral data is then smoothed with 3th order Savitzky–Golay filter and the difference between each sample spectra and the baseline spectrum is calculated. Resulting spectral data is shown in Figure 2.


Figure 2 – Spectral data of the difference between the samples and baseline (zoomed region on the right)

It is worth noting the fact that, it is possible to detect/model the level of adulteration using the spectra of Red, Green or Blue Channel data as well. As an example, same plots are provided in Figure 3 for “Blue Channel”. However, please note the fact that, optimal region selection may differ for each color channel.


Figure 3 – Spectral data of the difference between the samples and empty petri dish for blue channel (zoomed region on the right)

As a simple measure for evaluating the level of adulteration (relative olive oil concentration in the mixture), area under the curve between the wavelengths 400 and 520 nm is selected. This is more robust measure compared to “peak height” which fluctuate more causing noisy measurements. Also note that, in order to have stable measurements (for omitting negative value from numerical integration), all spectra are lifted up by 10 (see Figure 2 and 3).

Values of the area under the curve (AUC) with respect to different adulteration levels are shown in Figure 4. It is clear that the level of adulteration and AUC exhibit almost perfect linear relation.


Figure 4 – Adulteration level and AUC exhibit almost perfect linear relation (average value (left) and blue channel (right))

Results and Discussions

It is easy to see the fact that, using visual light spectroscopy (using the spectrometer developed by Public Lab), it’s possible to detect/model/measure olive oil adulteration (with peanut oil) in an efficient and simple way. Furthermore, these results indicate that it might be possible to detect and measure other type of oil adulteration as well.

In addition, similar approach can be used to identify the level of oil contamination in water and soil. However, it seems to be crucial to collect/maintain a nice library of spectral data from different oils in order to be able to correctly identify them.





test2: CFL spectra used for calibration

d2-l2: Spectra of the LED work lamp

d2-b: Spectra of empty petri dish - baseline

d2-o2: Spectra of sample – 0% peanut oil / 100% olive oil

d2-p25: Spectra of sample – 25% peanut oil / 75% olive oil

d2-po2: Spectra of sample – 50% peanut oil / 50% olive oil

d2-o25: Spectra of sample – 75% peanut oil / 25% olive oil

d2-p2: Spectra of sample – 100% peanut oil / 0% olive oil

I did this Help out by offering feedback! Browse other activities for "spectrometry"

People who did this (0)

None yet. Be the first to post one!


Wow, this is spectacular -- thanks! I'm wondering if there's a way we could write a macro for Spectral Workbench to do this kind of analysis in real time, with the smoothing and so forth?

Is this a question? Click here to post it to the Questions page.

Reply to this comment...

This is excellent research. Do you think if I bought some "100% extra virgin olive oil" and sent you a sample, you could tell me if it was really 100%? I guess in order to do that, we would need a database of systematically collected spectra of oils that are known to be 100% extra virgin olive oil. But how do we even know that our control oils are 100%? We need to know someone down on the oil farm.

Is this a question? Click here to post it to the Questions page.

Reply to this comment...

Jeff, I am sure it can be done. However, coding is not my strong suit :( I may help on theory and algorithm development though...

Cfastie, you are right. We need to have a 100% olive oil and some expert to say it is 100%. And a nice database of different olive oil brands. It is more common to dilute high quality olive oil with low quality olive oil rather than peanut oil, I guess.

Reply to this comment...

Wow this is fantastic!!! I can't wait to try this method~!

Reply to this comment...

Nice experiment. As I recall, white LEDs have a significant 'bump' at about 430nm, a dip at 470nm and a broad peak about 600nm so I assume the 470 bump correlates with the band of interest. What interested me is the apparent increase in signal due to adding olive oil as the plots are the difference between baseline (petri dish, no water) and adding oil (but not peanut oil) Right?. If you added water to the petri dish, does the difference show a broadband increase or just noise? Same question with adding peanut oil. Is the effect the same with another dilution fluid? (i.e. could you tell the difference if olive oil was diluted with something other than peanut oil?) Clearly, the response just outside the band has little measurable signal so the addition of olive oil does not appear to be attenuating the LEDs 470nm output. It would be interesting to understand the mechanism causing this signal increase. Cheers, Dave

Is this a question? Click here to post it to the Questions page.

Reply to this comment...

Very nice work. I checked the listing for the lamp, and if you are using the original bulb, it is a "warm white" with color temperature of 2700 degrees. LED lamps come in a variety of shades, which depend on the choice of phosphors and the bulb design. In the "warm white" bulbs, the blue peak at about 450 nanometers is reduced, as shown at A more standard white LED with a higher color temperature has a much sharper peak at 450 nm as shown at ,

Reply to this comment...

Dave - Thanks a lot for the insights...As you said, when I add oil sample, intensity decreases and since the plots above is the difference between the baseline and the spectra of oil sample (baseline - spectra of sample), pure olive oil has the largest difference (i.e. high absorbance). I do not have chemistry background, so, I am not sure which molecules are causing this behavior.

I did not try the experiment with water. Also, I guess, it is not easy to say what type of oil is used to dilute the olive oil without having set of spectra for candidate oils. One way to solve this problem seems to be repeating the same experiment with other oils (sesame, hazelnut, canola etc.). Another option is to collect pure spectra from different oils and come up with a pattern recognition algorithm (clustering/classification with some soft decision rules) to figure out the unknown mixture.

Jeffh - Thanks a lot for the info. I am using the original bulb and I am sure using little more expensive (better) light source will help a lot.

Reply to this comment...

Ok, so the plots are absorption; which makes more sense. However, the Y axis is labeled "Intensity". It would be more clear to either plot relative absorption (the inverse of your plot with negative values) or use the term absorption. Ultimately, units are also important if you wish to report relative values (i.e. relative to what -- some measurable reference of absorption).

Jeff, if the bulb he's using really does have a very sharp peak at 460nm, then I'm surprised by the broader absorption band data. If the light source is not generating much spectral energy at 500nm (a factor of ~1/6 of the 460 peak) then the plotted data near 500nm becomes much less robust (noise will become predominant). Absorption plots for olive and other oils seem to cover from ~520nm and far below with a spike at about 670nm.

I'd suggest two alternatives for improving the data reliability. 1) A Solux halogen would provide broadband spectra down to below 400nm. (No, not completely flat but at least a smooth curve only down about 1/3 (-3.5dB) at 380nm relative to 500nm). This would provide a measurement curve which would better cover the actual absorption curve of the oils; thus reducing measurement errors due to weak 'out of band' source signals. 2) An intermediate improvement would be to limit the measurement to the source's bandwidth. In the case of the LED, only accept the data from within the 460nm spike bandwidth. When the source signal level drops (below 425nm and above 475nm) it is about 15dB down and noise will predominate - so maybe accept 430-470nm; a 50nm BW). Even with a bandwidth limit, there are still additional errors just because the source is not 'flat' within the measurement band so you are still relying on the absorption curve to be 'flat' (which it isn't) in order to use a narrow-band source.

If you are looking to do comparative measurements between samples (after you have a handle on the source issue and the measurable effects of the fluid for dilution) you would need to control the linear distance the light will travel through the sample (i.e. fixed cuvette vs petri dish puddle) to gain control over that absorption variable.

Cheers, Dave

Reply to this comment...

Hi @ygzstc, i heard from Li Zhou and He Shan in Guangzhou who asked me to pass along a question about detecting "recycled" food oil, AKA used restaurant oil that is resold to consumers as new. They call it "gutter oil." Do we know anything about the usefulness of this technique for identifyingor differentiating gutter oil from new oils?

FYI, at least one journalist has been killed in China for publishing about this issue. Pictures of the oil "recycling facilities":



Is this a question? Click here to post it to the Questions page.

Reply to this comment...

Thanks @Liz, last year, there's a big scandal on gutter oil in Taiwan.

Reply to this comment...

Login to comment.