Compound intake estimator calculates intakes of compounds based on food or food supplement intake, compound concentration in food, and guidance values for the compound.
Question
How to estimate intakes and compare them to guidance values?
Answer
The concern indicator is calculated for each compound separately. If the intake is smaller than the threshold of concern, the indicator is < 1 and there is no concern. The threshold of concern is acceptable daily indake (ADI), benchmark dose (BMDL10), or threshold of toxicological concern (TTC), depending on what data is available for each compound.
Example data(%)Obs | Extraction.technique | Compound | Result | Reference |
---|
1 | Superheated water extraction, 100 °C | 2-Carene | 0.08; 0.1; 0.12 | Jayawardena & Smith, 2010 |
2 | Superheated water extraction, 100 °C | Z-Cinnamaldehyde | 1.63; 2.1; 2.57 | Jayawardena & Smith, 2010 |
3 | Superheated water extraction, 100 °C | Cinnamaldehyde | 81.14; 83.7; 86.26 | Jayawardena & Smith, 2010 |
4 | Superheated water extraction, 100 °C | Eugenol | 0.45; 0.8; 1.15 | Jayawardena & Smith, 2010 |
5 | Hydrodistillation | 1,8-Cineole | 0.2 | Chericoni et al, 2005 |
6 | Superheated water extraction, 100 °C | Cinnamyl acetate | 5.47; 7.2; 8.93 | Jayawardena & Smith, 2010 |
Rationale
The idea of the tool is to look at consumption of a particular PFS product, and estimate whether any of the compounds in the product cause concern. The estimation follows this equation:
compound intakes = product intake (g /day) * concentration of each compound in the product (mg /g) / 60
(60 kg is the assumed body weight of the person)
concern indicator = compound intakes (mg /kg /d) / threshold of concern (mg /kg /d)
Calculations
- You need to run the code below only if you update the data tables on this page.
+ Show code- Hide code
library(OpasnetUtils)
################## PRE-DEFINED INPUTS
# food.conc is a temporary object about the concentration of a compound in food.
# compound.conc is the concentration of a compound in the critical constituent (or food, if fr.const == 1)
# fr.const is the fraction of the critical constituent in the whole food
# extraction is a criteria to select specific extraction techniques
# addcomp is an additional compound not in the product. Data about its concentration in food is given by the user.
# compound.intake is the intakes of the compounds via food or food supplement, each given as mg /kg /d.
compound.intake <- Ovariable("compound.intake",
dependencies = data.frame(Names = c(
"food.amount",
"compound.conc",
"fr.const",
"extraction",
"addcomp"
)),
formula = function(...) {
food.conc <- compound.conc * 10 * fr.const / 100
# compound.conc from w/w% to mg/g; fr.const from % to fraction
food.conc <- food.conc * extraction # remove extractions that are not considered.
# addcomp must not contain columns that are not in food.conc. It is multiplied by 1 to make
# the result column name "Result".
food.conc@output <- orbind(food.conc, addcomp * 1)
test <- colnames(food.conc@output) != "Extraction.technique"
food.conc@marginal <- food.conc@marginal[test]
food.conc@output <- food.conc@output[test] # unit: mg /g
out <- food.amount / 60 * food.conc # scale to 60 kg person
return(out)
}
)
# guidance.values is the guidance value (ADI, BMDL10, TTC or similar) for compounds. unit: mg /kg /d
# cramer is cramer classes of compounds (temporary)
# cramer.values are the thresholds of toxicological concern for each Cramer class (temporary)
cramer <- tidy(opbase.data("Op_en6193", subset = "cramer_classes_of_compounds"))
cramer$Result <- NULL
cramer$Guidance <- "TTC" # Threshold for toxicological concern
cramer.values <- tidy(opbase.data("Op_en6193", subset = "cramer_values"))
cramer.values <- merge(cramer, cramer.values)
cramer.values[["Cramer class"]] <- NULL
cramer.values$Result <- cramer.values$Result / 1000 # from ug /kg /d to mg /kg /d
guidance.values <- tidy(opbase.data("Op_en6193", subset = "guidance_values"))
guidance.values <- orbind(cramer.values, guidance.values)
guidance.values <- Ovariable("guidance.values", data = guidance.values)
# food.risk calculates "hazard quotients" or risks relative to guidance values. Value < 1 are of minimal concern
food.risk <- Ovariable(name = "food.risk",
dependencies = data.frame(Name = c("compound.intake", "guidance.values")),
formula = function(...) {
# guidance.risk is intake compared with guidance values.
out <- compound.intake / guidance.values
removepoorguidance <- function(dat, goodg) { # Remove inferior guidance values
# Compounds that have good guidance values (goodg).
hasgoodg <- dat[dat$Guidance == goodg , "Compound"]
# The row contains data about a chemical with a good guidance value
# but the data is about an inferior guidance value.
out <- dat[!(dat$Compound %in% hasgoodg & dat$Guidance != goodg) , ]
return(out)
}
out <- removepoorguidance(out@output, "ADI")
out <- removepoorguidance(out, "TDI")
out <- removepoorguidance(out, "BMDL10")
return(out)
}
)
extraction <- Ovariable("extraction", ddata = "Op_en6193.extraction_techniques")
extraction@data$extractionResult <- 1
### Define formatting for the concentration graphs that will be shown.
concplot <- function(condition) {
dat <- compound.conc@output[condition, ]
if(nrow(dat) != 0) {
out <- ggplot(dat,
aes(
x = Compound,
y = compound.concResult,
colour = Extraction.technique
)) +
geom_point(size=5) +
theme_grey(base_size = 24) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
labs(y = "Concentration (%)")
return(out)
} else {
warning("No data to show")
}
}
objects.store(compound.intake, guidance.values, food.risk, extraction, concplot)
cat("The following objects were successfully stored:
compound.intake, guidance.values, food.risk, extraction, concplot\n")
| |
Using different data on different layers: [1].
Extraction techniques(-)Obs | Extraction.technique | Notes |
---|
1 | Not known | |
2 | Hydrodistillation | |
3 | Solvent extraction | |
4 | Steam distillation | |
5 | Supercritical fluid extraction, 120 bar, 40 °C | |
6 | Supercritical fluid extraction, 90 bar, 40 °C | |
7 | Supercritical fluid extraction, 90 bar, 50 °C | |
8 | Superheated water extraction, 100 °C | |
9 | Superheated water extraction, 150 °C | |
10 | Superheated water extraction, 200 °C | |
11 | Solid phase | |
Data about guidance values
[1]
Guidance values(mg /kg-BW /d)Obs | Compound | Guidance | Result | Notes |
---|
1 | 1,8-Cineole | ADI | 2.8 | |
2 | 4-Terpineol | ADI | 1.2 | |
3 | Benzylbenzoate | ADI | 5 | |
4 | Cinnamaldehyde | ADI | 0.7 | |
5 | Coumarin | TDI | 0.1 | |
6 | Estragole | BMDL10 | 3.3-6.5 | Data said BMD10 but probably BMDL10 |
7 | Eugenol | ADI | 2.5 | |
8 | Fenchone | ADI | 10.64 | |
9 | Limonene | ADI | 1 | |
10 | Linalool | ADI | 0.5 | |
11 | Myrcene | ADI | 2.5 | |
12 | Trans-anethole | ADI | 2 | |
13 | Safrole | BMDL10 | 1.9-5.1 | |
14 | α-Terpineol | ADI | 1.2 | |
Cramer values(µg /kg-BW /d)Obs | Cramer class | Threshold of toxicological concern | Description |
---|
1 | 1 | 30 | |
2 | 2 | 1.5 | |
3 | 3 | 1.5 | |
4 | 4 | 0.0025 | This comes from Apiole?! Is this correct? |
Values 30 and 1.5 µg /kg /d come from EFSA (2012)[2]
[show]Cramer classes of compounds
|
Cramer classes of compounds(-)Obs | Compound | Cramer class | Notes |
---|
1 | 1,8-Cineole | 3 | A new line was created for 1.8-Cineole based on "ß-Phellandrene + 1,8-Cineole: 1+3" | 2 | 2-Carene | 1 | | 3 | 2-Methoxycinnamaldehyde | 1 | | 4 | 3-Phenylpropyl acetate | 1 | | 5 | 4-Methoxyphenylacetone | 1 | | 6 | 4-Terpineol | 3 | | 7 | Allo-ocimene | 1 | | 8 | Apiole | 4 | This is 0.0025 ug/kg/d!? Is this Cramer class at all? | 9 | Aromadendrene | 1 | | 10 | Aromatic compound | | Class could not be assigned | 11 | Benzaldehyde | 1 | | 12 | Benzenepropanal | 1 | | 13 | Benzenepropanol acetate | 1 | | 14 | Benzenepropanol | 1 | | 15 | Benzylbenzoate | 1 | | 16 | Borneol | 1 | | 17 | Cadinene | 1 | | 18 | Calamenene | 2 | | 19 | Camphene | 1 | | 20 | Camphor | 3 | | 21 | Carvacrol | 1 | | 22 | Carveol isomere | 1 | Carveol (2-methyl-5-prop-1-en-2-ylcyclohex-2-en-1-ol) is 1. Isomere is not specified so the class was assigned to the general compound | 23 | Caryophyllene alcohol | 3 | | 24 | Caryophyllene oxide | 3 | | 25 | Caryophyllene | 1 | | 26 | Chavicol | 1 | | 27 | Cinnamaldehyde | 1 | | 28 | Cinnamic acid | 1 | | 29 | Cinnamyl acetate | 1 | | 30 | Cinnamyl alcohol | 1 | | 31 | Cis-anethole | 2 | | 32 | Cis-limonene oxide | 2 | | 33 | Cis-P-menth-2-en-1-ol | 3 | | 34 | Cis-sabinene hydrate | 2 | | 35 | Cis-ß-Ocimene | 1 | | 36 | Cis-α-ocimene | 1 | | 37 | Cis-β-ocimene | 1 | | 38 | Coumarin | 3 | | 39 | Cryptone | 2 | | 40 | Cymene isomere | 1 | cymene is 1. Isomere is not specified so the class was assigned to the general compound | 41 | E-Anethole | 1 | | 42 | e-Cadinene + Pioncarvone | | Class could not be assigned | 43 | E-Cinnamyl acetate | 1 | | 44 | E-o-Methoxycinnamaldehye | 1 | | 45 | Epoxy-6.7-Humulene + Mw=220 | | Class could not be assigned | 46 | Estragole | 1 | Test compound, not real value | 47 | Eugenol acetate | 3 | | 48 | Eugenol | 1 | | 49 | Fenchyl acetate | 1 | | 50 | Humulene epoxide II | 3 | | 51 | Isoledene | 1 | | 52 | Limonene | 1 | | 53 | Linalool | 3 | | 54 | Methoxy eugenol | 3 | | 55 | Methyl cinnamaldehyde | 1 | | 56 | Methyl eugenol | 1 | | 57 | Monoterpenes | | Class could not be assigned | 58 | N-Hexadecanoic acid | 1 | | 59 | N-Octadecanoic acid | 1 | | 60 | o-Cymene | 1 | | 61 | p-Anisaldehyde | 1 | | 62 | Para-Methoxy cinnamic aldehyde | 1 | | 63 | p-Cymene | 1 | | 64 | P-Cymene-8-ol | 3 | | 65 | Phenyl cyclohexene | 2 | | 66 | Phenylmethyle isovalerate | 1 | | 67 | Rutin | 1 | Test compound, not real value | 68 | Sabinene | 1 | | 69 | Safrole | 3 | | 70 | Sesquiterpene epoxide | | Class could not be assigned. Sesquierpene is class 3, but don't now if something changes with epoxide | 71 | Sesquiterpenol Mw=220 | | Class could not be assigned | 72 | Sesquiterpenol Mw=222 | | Class could not be assigned | 73 | Spathulenol | 3 | | 74 | ß-Bisabolene | 1 | | 75 | ß-Cubebene | 1 | | 76 | ß-Elemene | 1 | | 77 | ß-Myrcene | 1 | | 78 | ß-Phellandrene | 1 | ß-Phellandrene + 1,8-Cineole: 1+3 | 79 | ß-Pinene | 1 | | 80 | Styrene | 1 | | 81 | Terpinen-4-ol | 3 | | 82 | Terpinolene isomere | 1 | terpinolene is 1 , isomere not known. Isomere is not specified so the class was assigned to the general compound | 83 | Terpinolene | 1 | | 84 | Tetradecanal | 1 | | 85 | Trans-2-methoxycinnamaldehyde | 1 | | 86 | Trans-limonene oxide | 2 | | 87 | Trans-pinene hydrate | 2 | | 88 | Trans-Pinocarveol | 1 | | 89 | Trans-Piperitol | 1 | | 90 | Trans-P-menth-2-en-1-ol | 3 | | 91 | Trans-ß-Ocimene | 1 | | 92 | Z-Cinnamaldehyde | 1 | | 93 | α-Cadinol | 3 | | 94 | α-Calacorene | 2 | | 95 | α-Copaene | 1 | | 96 | α-Cubebene | 1 | | 97 | α-Famesene | | Class could not be assigned | 98 | α-Gurjunene | 1 | | 99 | α-Humulene | 1 | | 100 | α-Muurolene | 1 | | 101 | α-Muurolol | 3 | | 102 | α-P-Dimethylstyrene | 1 | | 103 | α-Phellandrene | 1 | | 104 | α-Pinene | 1 | | 105 | α-Selinene | 1 | | 106 | α-Terpinene | 1 | | 107 | α-Terpineol | 3 | | 108 | α-Thujene | 1 | | 109 | β-Anise aldehyde | 1 | | 110 | β-Phellandrene | 1 | | 111 | β-Pinene | 1 | | 112 | γ-Cadinene | 1 | | 113 | γ-terpinene | 1 | | 114 | γ-Terpinene | 1 | | 115 | Δ3-Carene | 1 | | 116 | δ-Cadinene | 1 | |
|
See also
References
- ↑ New data obtained from Antonella Guzzon, personal communication (email) 31 March 2014.
- ↑ EFSA (2012). Scientific Opinion on Exploring options for providing advice about possible human health risks based on the concept of Threshold of Toxicological Concern (TTC). EFSA Journal 2012;10(7):2750