Colunas estratigráficas em R (SDAR)

Armazenamento de dados estratigráficos e construção de colunas
Um novo pacote recém lançado vai revolucionar como lidamos com dados estratigráficos, se trata do SDAR (Stratigraphical Data Analysis in R, Ortiz & Jaramillo 2016, www.cgares.org/sdar/). Ele permite o manejo e produção de colunas estratigráficas de forma muito eficiente e com alta resolução gráfica.
Vamos instalar o pacote e utilizar os dados nele próprio para visualizarmos a coluna estratigráfica. A função data() extrai do pacote um conjunto de dados chamado beds_SDAR_SC, que é uma matriz composta de informações estratigráficas e litológicas como número, tipo de rocha, granulometria, cor, etc, e é feita cama a cama. Em seguida utiliza-se a função strata(), para converter o conjunto de dados para a classe strata, que foi desenhada especificamente para o pacote, a fim de gerar a coluna estratigráfica com a função plot.strata(). Alguns outros pacotes são exigidos na instalação do SDAR, veja abaixo:

> install.packages("grImport")
> install.packages("RGraphics")
> install.packages("openxlsx")  #importa tabelas em .xlsx
> install.packages("SDAR")

> library(RGraphics)
> library(openxlsx)
> library(grImport)
> library(SDAR)

> data(beds_SDAR_SC) #carrega os dados
> x<-strata(beds_SDAR_SC) #transforma-os em classe strata

> fix(beds_SDAR_SC)

> summary(x) #gera um sumário das capas
> summary(x,grain.size=T) #adiciona granulometria ao sumário

> plot.strata(x) #gera a coluna (‘plot(x)’ também funciona)

Pronto, agora procure um PDF (SDAR_SC.pdf) no seu diretório.
O plot é feito com bastante facilidade, porém o mais importante é saber tabular os dados para que eles sejam carregados corretamente para o SDAR. No exemplo acima, usamos dados inbutidos no pacote, agora vamos importar tabelas em excel e gerar colunas novamente, adicionando mais informação a elas. Há duas tabelas que DEVEM ter uma formatação própria em SDAR, uma delas constrói a coluna básica, a outra adiciona informações fundamentais. Comecemos com a coluna básica, importando o arquivo ‘basic_SDAR_table’:

> beds_table<- read.xlsx("basic_SDAR_table.xlsx")
> beds_table_stra<- strata(beds_table)
> fix(beds_table)

> plot(beds_table_stra, file.name= "SDAR_RIO_2016")

Os dados ‘basic_SDAR_table’ são bastante simples e geram uma coluna básica. Vamos importar um arquivo semelhante ao anterior, mas com mais detalhes, e refazer a coluna:

> beds_demo_SC <-read.xlsx("SDAR_beds_demo_column_meters.xlsx")
> beds_demo_SC_stra <- strata(beds_demo_SC)
> fix(beds_demo_SC_stra)

> plot(beds_demo_SC_stra, file.name= "SDAR_RIO_2016")

A função para desenhar as colunas (plot.strata()) tem muitos argumentos que permitem a edição das colunas, adição de informações, etc. Vejamos esses argumentos e usemos alguns deles:

> ?plot.strata
> plot(beds_demo_SC_stra, d.scale=200, d.barscale=1, bed.number=TRUE, notes=TRUE, file.name= "SDAR_RIO_2016")

Algumas variáveis da nossa coluna podem ser adicionadas importando-se tabelas simples em excel. Vamos fazer isso para a curva gamma e alguns elementos. A curva gamma é importada e adicionada separadamente (pelo argumento ‘gamma.ray=’), pois tem um “display” específico na coluna produzida pelo SDAR; já a abundância de certos elementos (K, Fe, etc, ou na verdade qualquer variável desejada) se importa em outro arquivo do tipo matriz e é adicionado pelo argumento ‘abun.data=’. Nenhum deles precisa ser transformado para a classe strata.

> gamma_sdar <- read.csv("GRdemo.csv")

> plot(beds_demo_SC_stra, d.scale=100, d.barscale=1, d.legend=TRUE, bed.number=TRUE, gamma.ray = gamma_sdar, file.name= "SDAR_RIO_2016")

> abun_sdar <- read.csv("elements_abundance.csv")

> plot(beds_demo_SC_stra, d.scale=100, d.barscale=1,bed.number=TRUE, gamma.ray = gamma_sdar, abun.data=abun_sdar, file.name= "SDAR_RIO_2016")

Seguindo a mesma lógica acima, podemos adicionar informações à legenda da coluna. Criaremos isso diretamente no script, sem necessidade de importar dados, e usaremos o argumento ‘metadata=’.

> metadata_sdar <- list(SiteName = "Borehole core: SALTARIN 1A", Latitude = 48.54, Longitude = 28.45, Elevation= "1280 meters", Author = "Bayona, et al. 2008", References= "Bayona, G.2008.")
> plot(beds_demo_SC_stra, d.scale=100, d.barscale=1, d.legend=TRUE, bed.number=TRUE, gamma.ray = gamma_sdar, abun.data=abun_sdar, metadata=metadata_sdar, file.name= "SDAR_RIO_2016")

Ao passo que as informações que adicionamos às colunas até agora são opcionais (gamma ray, geoquímica, etc), outras características são praticamente obrigatórias. É o caso de estruturas sedimentares, fósseis, bioturbação, entre outras. Para adicionarmos esse tipo de informação, vamos usar uma segunta tabela em excel que tem uma formatação estrita, onde cada tipo de informação é armazenado em uma aba diferente do arquivo. O arquivo usado será o "SDAR_intervals_demo_column_meters.xlsx". Abra-o em excel para visualização, depois vamos importá-lo ao R. Para importarmos uma aba específica, usamos o argumento ‘sheet=’ da função read.xlsx().

# fossils
> demo_SDAR_fos <- read.xlsx ("SDAR_intervals_demo_column_meters.xlsx",
     sheet="fossils")

> plot(beds_demo_SC_stra, d.scale=100, d.barscale=1, d.legend=TRUE, bed.number=TRUE, fossil=demo_SDAR_fos, file.name= "SDAR_RIO_2016")


# bioturbation
> demo_SDAR_bio <- read.xlsx("SDAR_intervals_demo_column_meters.xlsx",
     sheet="bioturbation")

> plot(beds_demo_SC_stra, d.scale=100, d.barscale=1, d.legend=TRUE, bed.number=TRUE, fossil=demo_SDAR_fos, bioturbation=demo_SDAR_bio, biotur.sc="Reineck", file.name= "SDAR_RIO_2016")


# time scale
> demo_SDAR_crono <- read.xlsx("SDAR_intervals_demo_column_meters.xlsx",
     sheet="cronostra")

> plot(beds_demo_SC_stra, d.scale=100, d.barscale=1, d.legend=TRUE, bed.number=TRUE, fossil=demo_SDAR_fos,  bioturbation=demo_SDAR_bio, biotur.sc="Reineck", geo.time.model=demo_SDAR_crono,
     file.name= "SDAR_RIO_2016")


# litho stratigraphy
> demo_SDAR_litho <- read.xlsx("SDAR_intervals_demo_column_meters.xlsx",
     sheet="lithostra")

> plot(beds_demo_SC_stra, d.scale=100, d.barscale=1, d.legend=TRUE,
     bed.number=TRUE, fossil=demo_SDAR_fos,  bioturbation=demo_SDAR_bio,
     biotur.sc="Reineck", geo.time.model=demo_SDAR_crono,
     litho.stra=demo_SDAR_litho, file.name= "SDAR_RIO_2016")


Se quisermos adicionar todas as informações de uma vez (todas abas do arquivo anterior), podemos fazer isso direta e facilmente, criando um objeto em um novo tipo de classe, a ‘intervals’ com a função read_SDAR_intervals().

> path_int <- "SDAR_intervals_demo_column_meters.xlsx"
> int <- read_SDAR_intervals(path_int)


> plot(beds_demo_SC_stra, SDAR.intervals=int, biotur.sc="Reineck", file.name= "SDAR_RIO_2016")