library(mdatools)
library(kableExtra)
library(tidyverse)

The dataset


This dataset is the result of an analysis carried out with an electronic tongue on 72 samples of wine of 6 different types (Pigani et al. 2008)

We have 72 obervations and 1950 variables


df = read.csv('dpv_lingua_vini_bianchi_cleaned.csv', check.names = F) 
df = df[-c(1,3,4,5)]

kable(df[, 1:10], row.names = T) %>% kable_styling('striped', fixed_thead = T, full_width = FALSE) %>%
  scroll_box( height = "500px")
Type TR.TS 1 2 3 4 5 6 7 8
1 Chardonnay Francia TR 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06
2 Chardonnay Francia TR 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06
3 Chardonnay Francia TS 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
4 Chardonnay Francia TR 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
5 Chardonnay Francia TR 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06
6 Chardonnay Francia TS 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
7 Chardonnay Francia TR 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07
8 Chardonnay Francia TR 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07
9 Chardonnay Francia TS 5.0e-07 5.0e-07 5.0e-07 5.0e-07 5.0e-07 5.0e-07 5.0e-07 5.0e-07
10 Chardonnay Francia TR 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07
11 Chardonnay Francia TR 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
12 Chardonnay Francia TS 5.0e-07 5.0e-07 5.0e-07 5.0e-07 5.0e-07 5.0e-07 5.0e-07 5.0e-07
13 Chardonnay Veneto TR 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
14 Chardonnay Veneto TR 1.3e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06
15 Chardonnay Veneto TS 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07
16 Chardonnay Veneto TR 8.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07
17 Chardonnay Veneto TR 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
18 Chardonnay Veneto TS 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
19 Chardonnay Veneto TR 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
20 Chardonnay Veneto TR 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07
21 Chardonnay Veneto TS 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07
22 Chardonnay Veneto TR 7.0e-07 7.0e-07 7.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 7.0e-07
23 Chardonnay Veneto TR 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
24 Chardonnay Veneto TS 9.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
25 Chardonnay Puglia TR 9.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
26 Chardonnay Puglia TR 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06
27 Chardonnay Puglia TS 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07
28 Chardonnay Puglia TR 1.0e-06 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07
29 Chardonnay Puglia TR 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06
30 Chardonnay Puglia TS 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06
31 Chardonnay Puglia TR 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 8.0e-07 9.0e-07 8.0e-07
32 Chardonnay Puglia TR 6.0e-07 5.0e-07 5.0e-07 5.0e-07 5.0e-07 5.0e-07 5.0e-07 5.0e-07
33 Chardonnay Puglia TS 1.0e-06 1.0e-06 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07
34 Chardonnay Puglia TR 8.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07
35 Chardonnay Puglia TR 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07
36 Chardonnay Puglia TS 9.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 9.0e-07 9.0e-07 9.0e-07
37 Trebbiano Emilia TR 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
38 Trebbiano Emilia TR 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06
39 Trebbiano Emilia TS 1.3e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06
40 Trebbiano Emilia TR 1.2e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06
41 Trebbiano Emilia TR 1.0e-06 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07
42 Trebbiano Emilia TS 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07
43 Trebbiano Emilia TR 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07
44 Trebbiano Emilia TR 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
45 Trebbiano Emilia TS 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07
46 Trebbiano Emilia TR 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
47 Trebbiano Emilia TR 1.0e-06 1.0e-06 1.0e-06 1.0e-06 9.0e-07 9.0e-07 1.0e-06 9.0e-07
48 Trebbiano Emilia TS 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07
49 Trebbiano Umbria TR 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07
50 Trebbiano Umbria TR 1.2e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06
51 Trebbiano Umbria TS 1.4e-06 1.3e-06 1.3e-06 1.3e-06 1.3e-06 1.3e-06 1.3e-06 1.3e-06
52 Trebbiano Umbria TR 1.2e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06
53 Trebbiano Umbria TR 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06
54 Trebbiano Umbria TS 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06
55 Trebbiano Umbria TR 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06
56 Trebbiano Umbria TR 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07
57 Trebbiano Umbria TS 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
58 Trebbiano Umbria TR 1.2e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06
59 Trebbiano Umbria TR 1.1e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06
60 Trebbiano Umbria TS 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07
61 Trebbiano Romagna TR 3.0e-07 3.0e-07 3.0e-07 3.0e-07 3.0e-07 3.0e-07 3.0e-07 3.0e-07
62 Trebbiano Romagna TR 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06 1.1e-06
63 Trebbiano Romagna TS 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06
64 Trebbiano Romagna TR 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06 1.0e-06
65 Trebbiano Romagna TR 1.0e-06 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07
66 Trebbiano Romagna TS 1.2e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06 1.2e-06
67 Trebbiano Romagna TR 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07 8.0e-07
68 Trebbiano Romagna TR 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07
69 Trebbiano Romagna TS 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07 6.0e-07
70 Trebbiano Romagna TR 8.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07 7.0e-07
71 Trebbiano Romagna TR 1.0e-06 1.0e-06 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 1.0e-06
72 Trebbiano Romagna TS 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07 9.0e-07


We have four different classes corresponding to four types of wine.

df %>% group_by(Type) %>% summarise(Count = n()) %>% kable() %>% kable_minimal(full_width = F)
Type Count
Chardonnay Francia 12
Chardonnay Puglia 12
Chardonnay Veneto 12
Trebbiano Emilia 12
Trebbiano Romagna 12
Trebbiano Umbria 12


Here’s how they look like

dfdata = df[-c(1:2)]

attr(dfdata, "xaxis.name") = "Variables"
attr(dfdata, "xaxis.values") = colnames(dfdata) %>% as.numeric() 

mdaplot(dfdata, type = 'l', main = 'Raw data', cgroup = as.factor(df$Type))


Preprocessing


Before performing classification you need to preprocess the data. Start applying only mean-center


\[ x_{ij}\ast = x_{ij} - \overline{x}_j \]


dfdataMean = scale(dfdata, scale = F) %>% as.data.frame()

mdaplot(dfdataMean, type = 'l', cgroup = factor(df$Type), main = 'Mean-centered data')


Create a new categorical variable by separating the samples in Chardonnay and Trebbiano

a = rep('Chardonnay', 36)
b = rep('Trebbiano', 36)
CT = c(a, b)

dfclass = cbind('C/T' = CT, 'TR/TS' = df$TR.TS, dfdataMean)

kable(dfclass[, 1:10], row.names = T) %>% kable_styling('striped', fixed_thead = T, full_width = FALSE) %>%
  scroll_box( height = "500px")
C/T TR/TS 1 2 3 4 5 6 7 8
1 Chardonnay TR 1e-07 1e-07 1e-07 1e-07 2e-07 2e-07 2e-07 2e-07
2 Chardonnay TR 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07
3 Chardonnay TS -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07
4 Chardonnay TR -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07
5 Chardonnay TR 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07
6 Chardonnay TS -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07
7 Chardonnay TR -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07
8 Chardonnay TR -3e-07 -3e-07 -3e-07 -3e-07 -3e-07 -3e-07 -3e-07 -3e-07
9 Chardonnay TS -4e-07 -4e-07 -4e-07 -4e-07 -4e-07 -4e-07 -4e-07 -4e-07
10 Chardonnay TR -3e-07 -3e-07 -3e-07 -3e-07 -3e-07 -3e-07 -3e-07 -3e-07
11 Chardonnay TR -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07
12 Chardonnay TS -4e-07 -4e-07 -4e-07 -4e-07 -4e-07 -4e-07 -4e-07 -3e-07
13 Chardonnay TR -1e-07 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00
14 Chardonnay TR 4e-07 4e-07 4e-07 4e-07 4e-07 4e-07 4e-07 4e-07
15 Chardonnay TS 0e+00 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07
16 Chardonnay TR -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07
17 Chardonnay TR -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07
18 Chardonnay TS 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00
19 Chardonnay TR 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00
20 Chardonnay TR -3e-07 -3e-07 -3e-07 -3e-07 -3e-07 -2e-07 -3e-07 -2e-07
21 Chardonnay TS -3e-07 -3e-07 -3e-07 -3e-07 -3e-07 -3e-07 -2e-07 -3e-07
22 Chardonnay TR -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07
23 Chardonnay TR -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07
24 Chardonnay TS 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00
25 Chardonnay TR 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00
26 Chardonnay TR 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07
27 Chardonnay TS 0e+00 0e+00 0e+00 0e+00 1e-07 1e-07 0e+00 0e+00
28 Chardonnay TR 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07
29 Chardonnay TR 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07
30 Chardonnay TS 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07
31 Chardonnay TR 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00
32 Chardonnay TR -3e-07 -3e-07 -3e-07 -3e-07 -3e-07 -3e-07 -3e-07 -3e-07
33 Chardonnay TS 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07
34 Chardonnay TR -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07
35 Chardonnay TR 1e-07 0e+00 0e+00 0e+00 0e+00 0e+00 1e-07 0e+00
36 Chardonnay TS 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00
37 Trebbiano TR -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07
38 Trebbiano TR 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07
39 Trebbiano TS 4e-07 4e-07 4e-07 4e-07 4e-07 4e-07 4e-07 4e-07
40 Trebbiano TR 3e-07 3e-07 3e-07 3e-07 3e-07 3e-07 3e-07 3e-07
41 Trebbiano TR 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07
42 Trebbiano TS 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00
43 Trebbiano TR 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00
44 Trebbiano TR -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07
45 Trebbiano TS -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07
46 Trebbiano TR -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07
47 Trebbiano TR 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07
48 Trebbiano TS -3e-07 -3e-07 -3e-07 -3e-07 -3e-07 -3e-07 -3e-07 -3e-07
49 Trebbiano TR -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07
50 Trebbiano TR 3e-07 3e-07 3e-07 3e-07 3e-07 3e-07 3e-07 3e-07
51 Trebbiano TS 5e-07 5e-07 5e-07 5e-07 5e-07 5e-07 5e-07 5e-07
52 Trebbiano TR 3e-07 3e-07 3e-07 3e-07 3e-07 3e-07 3e-07 3e-07
53 Trebbiano TR 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07
54 Trebbiano TS 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07
55 Trebbiano TR 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07
56 Trebbiano TR -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07
57 Trebbiano TS -1e-07 0e+00 0e+00 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07
58 Trebbiano TR 3e-07 3e-07 3e-07 3e-07 3e-07 2e-07 2e-07 2e-07
59 Trebbiano TR 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07
60 Trebbiano TS -1e-07 -1e-07 -1e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07
61 Trebbiano TR -6e-07 -6e-07 -5e-07 -5e-07 -5e-07 -6e-07 -6e-07 -6e-07
62 Trebbiano TR 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07 2e-07
63 Trebbiano TS 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07
64 Trebbiano TR 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07
65 Trebbiano TR 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07
66 Trebbiano TS 4e-07 3e-07 3e-07 3e-07 3e-07 3e-07 3e-07 3e-07
67 Trebbiano TR -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07
68 Trebbiano TR -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07
69 Trebbiano TS -3e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07 -2e-07
70 Trebbiano TR -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07 -1e-07
71 Trebbiano TR 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07
72 Trebbiano TS 0e+00 0e+00 1e-07 1e-07 1e-07 1e-07 1e-07 1e-07
dfclassTR = dfclass[dfclass$`TR/TS` == 'TR',]
dfclassTS = dfclass[dfclass$`TR/TS` == 'TS',]

model = plsda(dfclassTR[-c(1,2)], dfclassTR$`C/T`, cv = list('ven', 5), center = F, lim.type = 'jm')


par(mfrow = c(1,1))
plotRMSE(model)

plotSensitivity(model)

model = selectCompNum(model , 4)
plot(model)


Classification’s \(R^2\) for 4 latent variables is 0.8137212


Now validate the model using the test set

modelp = predict(model, dfclassTS[-c(1,2)], c.ref = dfclassTS$`C/T`)
plotPredictions(modelp)

Classification’s \(R^2\) for 4 latent variables is 0.8559592


References


Pigani, L., G. Foca, K. Ionescu, V. Martina, A. Ulrici, F. Terzi, M. Vignali, C. Zanardi, and R. Seeber. 2008. “Amperometric Sensors Based on Poly(3,4-Ethylenedioxythiophene)-Modified Electrodes: Discrimination of White Wines.” Analytica Chimica Acta 614 (2): 213–22. https://doi.org/10.1016/j.aca.2008.03.029.



LS0tDQp0aXRsZTogIkNsYXNzaWZpY2F0aW9uOiBQTFMtREEiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIHRoZW1lOiBjZXJ1bGVhbg0KICAgIHRvYzogVHJ1ZQ0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCmJpYmxpb2dyYXBoeTogcmVmZXJlbmNlcy5iaWINCi0tLQ0KDQpgYGB7ciAsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQoNCmxpYnJhcnkobWRhdG9vbHMpDQpsaWJyYXJ5KGthYmxlRXh0cmEpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCg0KYGBgDQoNCg0KIyMgVGhlIGRhdGFzZXQNCg0KPGJyLz4NCg0KVGhpcyBkYXRhc2V0IGlzIHRoZSByZXN1bHQgb2YgYW4gYW5hbHlzaXMgY2FycmllZCBvdXQgd2l0aCBhbiBlbGVjdHJvbmljIHRvbmd1ZSBvbiA3MiBzYW1wbGVzIG9mIHdpbmUgb2YgNiBkaWZmZXJlbnQgdHlwZXMgW0BwaWdhbmkyMDA4XQ0KDQpXZSBoYXZlIDcyIG9iZXJ2YXRpb25zIGFuZCAxOTUwIHZhcmlhYmxlc1wNCg0KPGJyLz4NCg0KYGBge3J9DQpkZiA9IHJlYWQuY3N2KCdkcHZfbGluZ3VhX3ZpbmlfYmlhbmNoaV9jbGVhbmVkLmNzdicsIGNoZWNrLm5hbWVzID0gRikgDQpkZiA9IGRmWy1jKDEsMyw0LDUpXQ0KDQprYWJsZShkZlssIDE6MTBdLCByb3cubmFtZXMgPSBUKSAlPiUga2FibGVfc3R5bGluZygnc3RyaXBlZCcsIGZpeGVkX3RoZWFkID0gVCwgZnVsbF93aWR0aCA9IEZBTFNFKSAlPiUNCiAgc2Nyb2xsX2JveCggaGVpZ2h0ID0gIjUwMHB4IikNCmBgYA0KPGJyLz4NCg0KV2UgaGF2ZSBmb3VyIGRpZmZlcmVudCBjbGFzc2VzIGNvcnJlc3BvbmRpbmcgdG8gZm91ciB0eXBlcyBvZiB3aW5lLiBcDQoNCg0KYGBge3J9DQpkZiAlPiUgZ3JvdXBfYnkoVHlwZSkgJT4lIHN1bW1hcmlzZShDb3VudCA9IG4oKSkgJT4lIGthYmxlKCkgJT4lIGthYmxlX21pbmltYWwoZnVsbF93aWR0aCA9IEYpDQoNCmBgYA0KDQoNCg0KDQoNCjxici8+DQoNCkhlcmUncyBob3cgdGhleSBsb29rIGxpa2UgXA0KDQpgYGB7ciBmaWcuYWxpZ249J2NlbnRlcicsIGZpZy5hc3A9MC43LCBmaWcud2lkdGg9OX0NCg0KZGZkYXRhID0gZGZbLWMoMToyKV0NCg0KYXR0cihkZmRhdGEsICJ4YXhpcy5uYW1lIikgPSAiVmFyaWFibGVzIg0KYXR0cihkZmRhdGEsICJ4YXhpcy52YWx1ZXMiKSA9IGNvbG5hbWVzKGRmZGF0YSkgJT4lIGFzLm51bWVyaWMoKSANCg0KbWRhcGxvdChkZmRhdGEsIHR5cGUgPSAnbCcsIG1haW4gPSAnUmF3IGRhdGEnLCBjZ3JvdXAgPSBhcy5mYWN0b3IoZGYkVHlwZSkpDQoNCg0KYGBgDQoNCjxici8+DQoNCiMjIFByZXByb2Nlc3NpbmcNCg0KPGJyLz4NCg0KQmVmb3JlIHBlcmZvcm1pbmcgY2xhc3NpZmljYXRpb24geW91IG5lZWQgdG8gcHJlcHJvY2VzcyB0aGUgZGF0YS4gU3RhcnQgYXBwbHlpbmcgb25seSAqKm1lYW4tY2VudGVyKioNCg0KPGJyLz4NCg0KJCQNCiAgeF97aWp9XGFzdCA9IHhfe2lqfSAtIFxvdmVybGluZXt4fV9qIA0KJCQNCjxici8+DQoNCjxici8+DQoNCmBgYHtyLGZpZy5hbGlnbj0nY2VudGVyJywgZmlnLndpZHRoPTksIGZpZy5hc3A9MC43fQ0KDQpkZmRhdGFNZWFuID0gc2NhbGUoZGZkYXRhLCBzY2FsZSA9IEYpICU+JSBhcy5kYXRhLmZyYW1lKCkNCg0KbWRhcGxvdChkZmRhdGFNZWFuLCB0eXBlID0gJ2wnLCBjZ3JvdXAgPSBmYWN0b3IoZGYkVHlwZSksIG1haW4gPSAnTWVhbi1jZW50ZXJlZCBkYXRhJykNCg0KYGBgDQoNCjxici8+DQoNCkNyZWF0ZSBhIG5ldyBjYXRlZ29yaWNhbCB2YXJpYWJsZSBieSBzZXBhcmF0aW5nIHRoZSBzYW1wbGVzIGluICoqQ2hhcmRvbm5heSoqIGFuZCAqKlRyZWJiaWFubyoqIFwNCg0KDQpgYGB7cn0NCg0KYSA9IHJlcCgnQ2hhcmRvbm5heScsIDM2KQ0KYiA9IHJlcCgnVHJlYmJpYW5vJywgMzYpDQpDVCA9IGMoYSwgYikNCg0KZGZjbGFzcyA9IGNiaW5kKCdDL1QnID0gQ1QsICdUUi9UUycgPSBkZiRUUi5UUywgZGZkYXRhTWVhbikNCg0Ka2FibGUoZGZjbGFzc1ssIDE6MTBdLCByb3cubmFtZXMgPSBUKSAlPiUga2FibGVfc3R5bGluZygnc3RyaXBlZCcsIGZpeGVkX3RoZWFkID0gVCwgZnVsbF93aWR0aCA9IEZBTFNFKSAlPiUNCiAgc2Nyb2xsX2JveCggaGVpZ2h0ID0gIjUwMHB4IikNCg0KYGBgDQoNCmBgYHtyfQ0KZGZjbGFzc1RSID0gZGZjbGFzc1tkZmNsYXNzJGBUUi9UU2AgPT0gJ1RSJyxdDQpkZmNsYXNzVFMgPSBkZmNsYXNzW2RmY2xhc3MkYFRSL1RTYCA9PSAnVFMnLF0NCg0KbW9kZWwgPSBwbHNkYShkZmNsYXNzVFJbLWMoMSwyKV0sIGRmY2xhc3NUUiRgQy9UYCwgY3YgPSBsaXN0KCd2ZW4nLCA1KSwgY2VudGVyID0gRiwgbGltLnR5cGUgPSAnam0nKQ0KDQpgYGANCg0KDQoNCjxici8+DQoNCg0KYGBge3IsIGZpZy5hbGlnbj0nY2VudGVyJ30NCnBhcihtZnJvdyA9IGMoMSwxKSkNCnBsb3RSTVNFKG1vZGVsKQ0KDQpgYGANCmBgYHtyLCBmaWcuYWxpZ249J2NlbnRlcid9DQpwbG90U2Vuc2l0aXZpdHkobW9kZWwpDQoNCmBgYA0KDQoNCg0KDQpgYGB7ciwgZmlnLmFsaWduPSdjZW50ZXInLCBmaWcud2lkdGg9MTAsIGZpZy5hc3A9MC44fQ0KDQptb2RlbCA9IHNlbGVjdENvbXBOdW0obW9kZWwgLCA0KQ0KcGxvdChtb2RlbCkNCg0KYGBgDQo8YnIvPg0KDQpDbGFzc2lmaWNhdGlvbidzICRSXjIkIGZvciBgciBtb2RlbCRuY29tcC5zZWxlY3RlZGAgbGF0ZW50IHZhcmlhYmxlcyBpcyBgciBtb2RlbCRjdnJlcyRyMlsxLDRdYA0KDQoNCg0KPGJyLz4NCg0KDQpOb3cgdmFsaWRhdGUgdGhlIG1vZGVsIHVzaW5nIHRoZSB0ZXN0IHNldCBcDQoNCmBgYHtyLCBmaWcuYWxpZ249J2NlbnRlcid9DQptb2RlbHAgPSBwcmVkaWN0KG1vZGVsLCBkZmNsYXNzVFNbLWMoMSwyKV0sIGMucmVmID0gZGZjbGFzc1RTJGBDL1RgKQ0KcGxvdFByZWRpY3Rpb25zKG1vZGVscCkNCg0KYGBgDQpDbGFzc2lmaWNhdGlvbidzICRSXjIkIGZvciBgciBtb2RlbHAkbmNvbXAuc2VsZWN0ZWRgIGxhdGVudCB2YXJpYWJsZXMgaXMgYHIgbW9kZWxwJHIyWzEsIG1vZGVscCRuY29tcC5zZWxlY3RlZF1gDQoNCjxici8+DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojIyBSZWZlcmVuY2VzDQoNCjxici8+DQoNCg0KPGRpdiBpZD0icmVmcyI+PC9kaXY+DQoNCjxici8+DQoNCjxici8+