Uma breve história sobre o pacote R ‘metan’

Post ESCRITO POR Tiago Olivoto

This post is also available in English

Em nosso recente artigo na Methods in Ecology and Evolution, Alessandro D. Lúcio e eu descrevemos um novo pacote R para análise de ensaios multi-ambientes chamado metan. Ensaios multi-ambientes são um tipo de ensaio em programas de melhoramento de plantas, onde vários genótipos são avaliados em um conjunto de ambientes. A análise desses dados requer a combinação de várias abordagens, incluindo manipulação, visualização e modelagem de dados. A versão estável mais recente do metan (v1.5.1) está disponível agora no repositório CRAN. Então, pensei em compartilhar a história da minha primeira incursão no uso do R criando um pacote e submetendo um artigo para uma revista que nunca havia submetido antes.

As primeiras linhas de código em R

Um dos objetivos da minha tese de doutorado no Departamento de Filotecnia da Universidade Federal de Santa Maria, era propor novos métodos para realizar análises de estabilidade em ensaios de melhoramento de plantas. Naquela época, eu trabalhava com pelo menos quatro softwares distintos para analisar dados de ensaios multi-ambientes. Com exceção do SAS®, todos os outros programas de computador eram baseados em interfaces gráficas de usuário do tipo “apontar e clicar”, o que criou um grande desafio para a implementação dos novos métodos que eu estava propondo. Estava na hora de começar a usar um software de interface de linha de comando de código aberto, como o R.

No início de 2017, fui apresentado à linguagem de programação R pelo Dr. Bruno Giacomini Sari, a quem serei eternamente grato. Não foi difícil traduzir meus códigos para a linguagem R porque eu já tinha experiência anterior com SAS®. No início do ano seguinte, escrevi uma versão preliminar de um estudo propondo novas medidas de estabilidade para ensaios de melhoramento de plantas (WAAS e WAASB), que hoje está publicado. Não poderia deixar de agradecer meus coautores Alessando Lúcio, José G. da Silva, Volmir S. Marchioro, Velci P. de Souza e Evandro Jost! Enquanto escrevia o artigo, também escrevi duas das funções mais complexas que já havia feito em R: waas() e waasb().

O artigo foi concluído e eu também tinha as funções usadas para implementar os métodos. O próximo passo foi encontrar a melhor maneira de tornar meus scripts acessíveis a qualquer pessoa interessada em nosso trabalho. A questão era: como eu poderia fazer isso?

Minha primeira incursão na criação de um pacote R

Tiago ministrando curso de R, incluindo METAAB, na Universidade Federal de Santa Maria (Novembro de 2018).

A 62ª Rbras (Região Brasileira da Sociedade Internacional de Biometria) sobre os desafios da estatística aplicada na era da big data que ocorreu em julho de 2017 em Lavras-MG teve um papel importante nessa história. Eu estava nos meus primeiros passos na programação em R e, durante essa reunião, participei de alguns minicursos sobre a linguagem R e tive a oportunidade de me conectar com muitas pessoas com vasta experiência trabalhando na linguagem. Esta reunião me ajudou a entender o que é um pacote R e que um pacote R seria a melhor maneira de compartilhar meu código. Depois de ler as instruções sobre como criar pacotes R (uma boa fonte é R packages de Hadley Wickham) e passar por muitos avisos e erros, eu havia finalizado meu primeiro pacote R! Convenientemente, o pacote foi denominado METAAB (multi-environment analysis using AMMI and BLUP). Sim, o metan já foi chamado de METAAB!

metan foi concebido para produzir um arquivo legível de índices de estabilidade

Durante o processo de revisão por pares do nosso artigo, um dos revisores sugeriu uma comparação do ranking de genótipos produzido com os índices WAAS e WAASB com outros índices de estabilidade usados em todo o mundo. Muitos pacotes R estão disponíveis para calcular índices de estabilidade de várias maneiras. Optei por usar quatro pacotes R para essa comparação: stability, ammistability, agricolae, e plantbreeding. No entanto, cada pacote tem sua própria sintaxe, o que dificulta a escrita e o acompanhamento do código, especialmente ao analisar um grande número de variáveis. Colocar todos esses índices de estabilidade no mesmo arquivo “pronto para ler” foi uma tarefa bastante tediosa. Abaixo está um exemplo do tipo de código que eu precisei usar para extrair as variáveis dos dados:

Exemplo de abordagens que eu usei para calcular os índices de estabilidade antes de lanças o metan. Linhas de comando mostram a extração de valores de PC1 em uma análise AMMI.

Eu tinha certeza de que enfrentaria essas mesmas dificuldades repetidamente. Também pensei (hoje tenho certeza) que outros pesquisadores poderiam enfrentar esses mesmos problemas. Assim, decidi fazer algo para facilitar a computação de índices de estabilidade em R. O projeto metan (multi-environment trial analysis) nasceu!

Quando iniciei este projeto, o nome do pacote era METAAB, porquê as únicas funções disponíveis para análise de estabilidade eram as que estávamos propondo. A primeira alteração que fiz no METAAB foi mudar seu nome para metan. Alterar o nome do pacote foi necessário, porque agora o pacote não seria usado apenas para calcular os índices WAAS e WAASB. Este blog me ajudou muito nesse processo. Durante o desenvolvimento do Metan v0.2.0, diversos novos índices paramétricos e não-paramétricos de estabilidade foram implementados. A última função que incluí nessa versão do pacote foi ge_stats(), que é capaz de finalmente realizar a tarefa que procurava há muito tempo! Hoje, tudo o que os usuários precisam fazer para obter 30 índices de estabilidade (paramétricos e não paramétricos) para todas as variáveis numéricas de um conjunto de dados cabe em duas linhas de código! Abaixo, você pode ver um breve tutorial (sem áudio) sobre o uso da função ge_stats() para calcular índices de estabilidade em R.

Tutorial para o metan (sem audio).

O processo de submissão do metan no CRAN

Em julho de 2019, o metan já era conhecido em 18 países, embora estivesse hospedado apenas no Github. Se eu quisesse ter uma tração significativa na comunidade R, sabia que também deveria enviá-lo ao CRAN. Antes da primeira apresentação ao CRAN alguns erros foram corrigidos e algumas variáveis, tais como gge() para computar um modelo “genotype plus genotype-versus-environment interaction”, desc_stat() para o cálculo de estatísticas descritivas, e algumas outras funções úteis para a manipulação de dados.

Depois de ler muitos tutoriais (R packages de Hadley Wickham me ajudou muito novamente!) e de corrigir todos os erros, avisos e mensagens durante o processo de verificação local, tive minha primeira experiência em enviar um pacote ao CRAN no início de setembro de 2019. O processo de envio da v0.2.0 foi muito mais fácil do que pensei que seria. O metan v1.2.1 foi lançado no CRAN pela primeira vez em 14/01/2020.

metan além do melhoramento de plantas

O pacote metan oferece um conjunto de funções para manipular, resumir e plotar dados que podem ser úteis para usuários de R além de melhoristas de plantas. Isso me convenceu de que era hora de escrever um artigo para descrever e promover o pacote, além de atuar como um recurso citável. Decidi então escrever um “Application Paper” para a Methods in Ecology and Evolution.

Pouco tempo após a submissão de nosso artigo, recebi a decisão de que o artigo foi aceito para publicação. Foi um dos e-mails mais motivadores que já recebi.

Nosso artigo ‘metan: an R package for multi‐environment trial analysis’ está disponível gratuitamente para todos. Para saber mais sobre o metan, visite seu site, que é atualizado regularmente. Você também pode ver um resumo das funções no quadro de dicas abaixo. A versão em pdf pode ser baixada na nossa página do Github.

Resumo das funções do pacote metan. Click na imagem para versão em alta definição.

Para saber mais sobre o pacote metan e seus usos em reprodução de plantas, veja o artigo na Methods in Ecology and Evolution, ‘metan: An R package for multi-environment trial analysis

1 thought on “Uma breve história sobre o pacote R ‘metan’

  1. Pingback: A brief history about the R package ‘metan’ | methods.blog

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s