OxSR: Soil Iron Oxides via Diffuse Reflectance

Solos
R
Pacote
OxSR: Óxidos de ferro do solo via refletância difusa
Autor

Gustavo Frosi




{OxSR} meu primeiro pacote em R aplicado à Ciência do Solo!

O que o {OxSR} faz?

O objetivo deste pacote é implementar uma forma automatizada de determinar a relação entre os óxidos de ferro hematita e goethita no solo, bem como obter parâmetros de cor por meio da técnica de espectroscopia de refletância difusa.

O pacote utiliza dados de refletância de amostras de solo submetidas à emissão de luz do espectro visível (380 - 780 nm).

Relação entre hematita e goethita

Com os valores de refletância (%), os dados são submetidos a cálculos utilizando a equação de Kubelka-Munk: \[\frac{K_\lambda}{S_\lambda} = \frac{(1-R_\lambda)^2}{2R_\lambda}\]

Depois é realizada a suavização da curva por meio da cubic spline:

\[S_i(x) = a_i (x - x_i)^3 + b_i (x - x_i)^2 + c_i (x - x_i) + d\] Depois realiza-se a 2ª derivada dessa função obtendo:

\[S''_i(x) = 6a_i (x - x_i) + 2b_i\]

E, por fim utiliza-se a equação de regressão Equação 1 proposta por Scheinost et al. (1998).

\[\frac{Hm}{(Hm+Gt)} = -0.068 + 1.325 * \frac{y_2}{(y_2 + y_1)} \tag{1}\]

A grande vantagem de utilizar o pacote é a possibilidade de automatizar esse processo, permitindo obter resultados para centenas de amostras em poucos minutos.

Cor do solo

Para a determinação da cor do solo, o {OxSR} realiza a conversão de refletância para triestímulos x,y e z por meio das equações de Wyszecki e Stiles (2000). Com isso é possível calcular e converter a cor entre os diferentes espaços de cores (Viscarra Rossel et al. (2006)). O {OxSR} retorna cores em: Munsell (HVC), RGB e o código hexadecimal da cor para facilitar o uso no próprio R.

Como é a primeira versão ainda há muito a se avançar. Atualmente, o pacote conta com três funções e dois bancos de dados. No entanto, atualizações futuras já estão em andamento, para novas funcionalidades e possibilidades.

Uso do {OxSR}

Instalando e carregando o pacote

# install.packages("OxSR")
library(OxSR)

Função: relation_hm_gt()

# dados de refletância
data("soil_refle")

# com 1 amostra
dados_relacao <- relation_hm_gt(data = soil_refle[,c(1,2)], 
               plot = T,
               name_wave = "wave",
               points_smoothing = 0.3, 
               pv_tolerance = c(1,1,1,1),
               hm_gt_limits = list(hm = c(535, 585),
                                   gt = c(430, 470)))

# com diversas amostras
soil_refle |> 
relation_hm_gt() |> 
  dplyr::mutate(dplyr::across(2:7, ~ format(., scientific = TRUE, digits = 3))) |>
  gt::gt()
samples min_gt max_gt min_hm max_hm range_gt range_hm relation_hm_gt
a1 -1.88e-04 5.05e-04 -7.51e-05 1.53e-04 6.92e-04 2.28e-04 0.2607
a2 -2.67e-04 7.13e-04 -1.00e-05 1.54e-04 9.81e-04 1.64e-04 0.1216
a3 -2.70e-04 3.03e-04 -3.84e-04 4.63e-04 5.72e-04 8.47e-04 0.7227
a4 6.21e-06 3.48e-05 -8.37e-06 2.41e-05 2.85e-05 3.24e-05 0.6366
a5 -1.00e-04 4.52e-04 -2.66e-05 7.17e-05 5.52e-04 9.83e-05 0.1322
a6 -1.88e-04 2.31e-04 -4.05e-04 4.60e-04 4.19e-04 8.65e-04 0.8245
a7 -2.69e-04 5.34e-04 -1.01e-04 1.87e-04 8.03e-04 2.88e-04 0.2819
a8 -1.59e-04 1.94e-04 -4.73e-04 5.11e-04 3.54e-04 9.84e-04 0.9066
a9 -2.39e-04 5.45e-04 -1.79e-04 2.49e-04 7.84e-04 4.28e-04 0.3998
a10 2.61e-05 3.41e-05 1.19e-06 2.32e-05 7.93e-06 2.20e-05 0.9063
a11 -2.66e-05 2.42e-04 1.95e-05 5.12e-05 2.69e-04 3.17e-05 0.0715
a12 -1.68e-04 4.31e-04 -1.25e-04 1.95e-04 6.00e-04 3.19e-04 0.3923
a13 -2.77e-04 7.08e-04 -2.06e-05 1.05e-04 9.85e-04 1.25e-04 0.0814
a14 -1.35e-04 4.03e-04 -6.74e-05 1.30e-04 5.38e-04 1.97e-04 0.2879
a15 -2.15e-04 3.04e-04 -3.56e-04 4.37e-04 5.20e-04 7.93e-04 0.7323
a16 2.43e-05 7.85e-05 6.55e-06 3.74e-05 5.42e-05 3.09e-05 0.4129
a17 -5.66e-05 1.30e-04 1.55e-05 5.43e-05 1.87e-04 3.88e-05 0.1596
a18 -1.62e-05 1.29e-04 1.02e-05 4.49e-05 1.45e-04 3.46e-05 0.1869
a19 -1.72e-04 1.66e-04 -3.32e-04 3.43e-04 3.38e-04 6.75e-04 0.8146
a20 -1.71e-04 2.06e-04 -2.82e-04 3.23e-04 3.77e-04 6.05e-04 0.7480
a22 -3.69e-04 7.84e-04 -4.16e-05 2.37e-04 1.15e-03 2.79e-04 0.1898
a24 -1.30e-05 1.71e-04 -2.48e-05 1.09e-04 1.84e-04 1.34e-04 0.4901
a26 -7.90e-05 1.69e-04 -7.86e-06 8.71e-05 2.48e-04 9.49e-05 0.2991

Função: soil_color()

dados_cor <- soil_refle |> 
soil_color(plot = T)

dados_cor |> 
  gt::gt()
sample munsell H V C R G B hex
a1 8.3YR 6.2/3.7 18.33 6.15 3.69 179.01 146.84 114.92 #B39272
a2 8.2YR 5.9/4.1 18.22 5.94 4.06 173.47 138.32 103.71 #AD8A67
a3 5.1YR 5.3/4.1 15.10 5.34 4.14 160.53 120.97 94.65 #A0785E
a4 8.6YR 5.3/2 18.56 5.32 2.01 144.23 126.16 109.37 #907E6D
a5 8.1YR 5.9/3.2 18.08 5.86 3.22 168.35 139.62 112.87 #A88B70
a6 4.4YR 5.8/5.1 14.38 5.81 5.11 181.39 131.27 99.54 #B58363
a7 8YR 5.5/3.4 17.99 5.55 3.42 158.98 128.87 101.32 #9E8065
a8 4YR 5.5/4.8 13.98 5.48 4.84 171.65 123.89 95.97 #AB7B5F
a9 7.2YR 5.6/3.8 17.22 5.57 3.83 164.99 130.31 101.30 #A48265
a10 8.4YR 6.7/2.7 18.37 6.71 2.65 186.04 161.47 137.10 #BAA189
a11 8.9YR 6.3/2.9 18.92 6.30 2.88 176.07 151.01 124.30 #B0977C
a12 7.8YR 5.6/3.5 17.75 5.61 3.46 162.50 131.17 103.15 #A28367
a13 9.1YR 5.9/3.3 19.07 5.91 3.27 167.51 140.17 110.05 #A78C6E
a14 7.4YR 6.8/4.4 17.40 6.83 4.37 200.72 160.76 124.26 #C8A07C
a15 4.4YR 5/4.3 14.41 5.01 4.27 154.56 112.31 86.92 #9A7056
a16 8.8YR 5.4/2.4 18.75 5.45 2.38 149.28 128.24 107.55 #95806B
a17 8.7YR 5.2/2.4 18.69 5.17 2.38 144.11 123.02 102.80 #907B66
a18 8.4YR 6/3 18.43 6.01 2.98 169.40 142.71 116.76 #A98E74
a19 5.2YR 5/3.9 15.23 5.05 3.94 151.28 113.62 88.70 #977158
a20 5YR 5.5/4.7 14.99 5.52 4.71 169.95 124.79 94.31 #A97C5E
a22 7.5YR 5.6/4.4 17.54 5.64 4.36 168.22 129.47 94.74 #A8815E
a24 8YR 5.5/3.1 18.05 5.53 3.06 157.15 129.34 104.27 #9D8168
a26 8.5YR 5.3/2.7 18.53 5.27 2.71 148.82 125.06 102.55 #947D66

Função: clean_sheet_cary()

Organização de planilha!

Essa função é destinada apenas para quem realiza a aquisição dos dados por meio do equipamento Cary 5000 UV-Vis-IR spectrophotometer. É uma função para organizar os dados e deixar adequado para as etapas anteriores.

# Banco de dados do Cary 5000
data_cary |> 
  dplyr::slice_head(n = 5) |> 
  gt::gt()
a1 x2 a2 x4 a3 x6 a4 x8 a5 x10 a6 x12 a7 x14 a8 x16 a9 x18 a10 x20 a11 x22 a12 x24 a13 x26 a14 x28 a15 x30 a16 x32 a17 x34 a18 x36 a19 x38 a20 x40 a21 x42 a22 x44 a23 x46 a24 x48 a26 x50
Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R Wavelength (nm) %R
2500 37.000789640000001 2500 49.176151279999999 2500 41.338989259999998 2500 65.063980099999995 2500 63.107933039999999 2500 45.606403350000001 2500 46.697166439999997 2500 47.17472076 2500 45.863365170000002 2500 49.31319809 2500 40.448589320000004 2500 49.748420719999999 2500 46.566570280000001 2500 43.653793329999999 2500 32.574417109999999 2500 53.085697170000003 2500 49.682147980000003 2500 64.718704220000006 2500 40.960739140000001 2500 51.58111572 2500 57.92206573 2500 42.347759250000003 2500 51.439876560000002 2500 53.007198330000001 2500 51.440166470000001
2499.5 35.992374419999997 2499.5 48.783744810000002 2499.5 40.540019989999998 2499.5 64.629318240000003 2499.5 62.068862920000001 2499.5 45.767177580000002 2499.5 47.050430300000002 2499.5 44.895530700000002 2499.5 45.479999540000001 2499.5 51.682304379999998 2499.5 42.545753480000002 2499.5 48.831096649999999 2499.5 46.848133089999997 2499.5 43.963947300000001 2499.5 33.725421910000001 2499.5 54.058986660000002 2499.5 50.41638184 2499.5 66.355339049999998 2499.5 43.733318330000003 2499.5 52.555202479999998 2499.5 60.644519809999998 2499.5 43.74700928 2499.5 53.814464569999998 2499.5 54.359413150000002 2499.5 50.515193940000003
2499 35.985748289999997 2499 47.822666169999998 2499 42.149955749999997 2499 64.824974060000002 2499 61.840461730000001 2499 46.436317440000003 2499 44.724040989999999 2499 45.763561250000002 2499 45.142364499999999 2499 48.809226989999999 2499 41.615894320000002 2499 48.076721190000001 2499 46.172176360000002 2499 43.312557220000002 2499 32.510795590000001 2499 51.807807920000002 2499 48.546257019999999 2499 63.345520020000002 2499 40.846916200000003 2499 50.948207859999997 2499 57.538753509999999 2499 42.960998539999999 2499 51.611797330000002 2499 51.807933810000002 2499 49.019931790000001
2498.5 38.489418030000003 2498.5 49.605098720000001 2498.5 41.312103270000001 2498.5 64.729019170000001 2498.5 62.625057220000002 2498.5 46.19560242 2498.5 46.219425200000003 2498.5 44.884304049999997 2498.5 48.246681209999998 2498.5 50.805198670000003 2498.5 41.919811250000002 2498.5 48.922367100000002 2498.5 46.85780716 2498.5 43.880950929999997 2498.5 32.679573060000003 2498.5 54.541404720000003 2498.5 49.817447659999999 2498.5 66.337448120000005 2498.5 41.826614380000002 2498.5 52.010925290000003 2498.5 60.065387729999998 2498.5 42.656402589999999 2498.5 51.621894840000003 2498.5 54.588497160000003 2498.5 50.162040709999999
# Banco de dados organizado
data_cary |> 
  clean_sheet_cary(prefix = "x") |> 
  dplyr::slice_head(n = 10) |> 
  gt::gt()
wavelength_nm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21 a22 a23 a24 a26
2500.0 37.00079 49.17615 41.33899 65.06398 63.10793 45.60640 46.69717 47.17472 45.86337 49.31320 40.44859 49.74842 46.56657 43.65379 32.57442 53.08570 49.68215 64.71870 40.96074 51.58112 57.92207 42.34776 51.43988 53.00720 51.44017
2499.5 35.99237 48.78374 40.54002 64.62932 62.06886 45.76718 47.05043 44.89553 45.48000 51.68230 42.54575 48.83110 46.84813 43.96395 33.72542 54.05899 50.41638 66.35534 43.73332 52.55520 60.64452 43.74701 53.81446 54.35941 50.51519
2499.0 35.98575 47.82267 42.14996 64.82497 61.84046 46.43632 44.72404 45.76356 45.14236 48.80923 41.61589 48.07672 46.17218 43.31256 32.51080 51.80781 48.54626 63.34552 40.84692 50.94821 57.53875 42.96100 51.61180 51.80793 49.01993
2498.5 38.48942 49.60510 41.31210 64.72902 62.62506 46.19560 46.21943 44.88430 48.24668 50.80520 41.91981 48.92237 46.85781 43.88095 32.67957 54.54140 49.81745 66.33745 41.82661 52.01093 60.06539 42.65640 51.62189 54.58850 50.16204
2498.0 36.36701 48.78992 40.53429 65.44196 62.29750 46.40760 45.77126 44.94921 46.38973 50.68516 41.37297 49.09949 44.44979 42.52377 33.23236 53.10048 47.56423 64.38295 41.87343 51.69527 58.49126 42.05893 51.17921 53.41380 50.84171
2497.5 35.47375 47.40605 39.28766 64.69308 62.80320 47.46761 45.43714 43.85400 46.56013 49.77858 42.67687 49.36871 45.86231 43.46720 33.50034 53.77203 47.93750 64.51688 43.06777 51.35834 59.48670 42.08835 52.01495 54.47463 51.80394
2497.0 37.54932 49.06899 40.51805 66.31032 61.39204 47.45987 47.22514 45.51409 47.03294 52.32437 42.97775 51.46626 48.44763 45.58345 34.41420 55.03705 49.94693 66.48486 42.57556 52.68879 60.96202 44.20485 52.76716 56.03076 51.18570
2496.5 37.51561 49.62285 41.16562 66.21677 62.81740 46.27085 44.03780 46.01490 46.43413 49.37601 42.33263 51.74368 46.97945 44.28795 33.22097 53.44904 48.68655 65.18649 43.43986 51.53688 59.64460 42.89709 52.39546 53.65092 50.44417
2496.0 38.04464 48.09126 40.28804 65.09939 61.15833 47.21523 46.27015 44.47467 44.94371 49.94247 42.94918 48.13147 47.09360 44.01383 33.09505 52.52531 48.12371 64.72941 41.32262 51.86341 57.99576 43.55550 50.37817 52.03664 50.27183
2495.5 36.01619 48.13330 40.37979 63.10073 60.78304 47.39004 45.29571 45.72540 46.44136 50.63606 43.56080 50.05605 47.20666 44.21487 33.20906 54.13455 49.41895 66.34621 42.15396 51.39552 59.53514 42.21766 51.51138 54.11118 50.80389
De volta ao topo

Referências

Scheinost, A. C., A. Chavernas, V. Barrón, e J. Torrent. 1998. «Use and Limitations of Second-Derivative Diffuse Reflectance Spectroscopy in the Visible to Near-Infrared Range to Identify and Quantify Fe Oxide Minerals in Soils». Clays and Clay Minerals 46 (5): 528–36. https://doi.org/10.1346/CCMN.1998.0460506.
Viscarra Rossel, R. A., B. Minasny, P. Roudier, e A. B. McBratney. 2006. «Colour space models for soil science». Geoderma 133 (3): 320–37. https://doi.org/https://doi.org/10.1016/j.geoderma.2005.07.017.
Wyszecki, Günther, e Walter Stanley Stiles. 2000. Color science: concepts and methods, quantitative data and formulae. John wiley & sons.