# install.packages("OxSR")
library(OxSR)
OxSR: Soil Iron Oxides via Diffuse Reflectance
{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
Função: relation_hm_gt()
# dados de refletância
data("soil_refle")
# com 1 amostra
<- relation_hm_gt(data = soil_refle[,c(1,2)],
dados_relacao 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() |>
::mutate(dplyr::across(2:7, ~ format(., scientific = TRUE, digits = 3))) |>
dplyr::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()
<- soil_refle |>
dados_cor 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()
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 ::slice_head(n = 5) |>
dplyr::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") |>
::slice_head(n = 10) |>
dplyr::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 |