LimaRAF / plantR

An R Package for Managing Species Records from Biological Collections
GNU General Public License v3.0
17 stars 4 forks source link

Erro em "Making request to speciesLink..." #69

Closed Thiieres closed 2 years ago

Thiieres commented 3 years ago

Estou tendo problemas ao usar a função rspeciesLink()

occs_splink <- rspeciesLink(species = sp,

  • Scope = "plants",
  • basisOfRecord = "PreservedSpecimen",
  • Synonyms = "flora2020") Making request to speciesLink... Erro: lexical error: invalid char in json text. https://api.splink.org.br/recor (right here) ------^
saramortara commented 3 years ago

Olá Thieres, você poderia por favor enviar um exemplo reprodutível incluindo o que está no seu vetor sp

Thiieres commented 3 years ago

Olá, Sara, obrigado pela resposta rápida. Vou deixar abaixo o script q utilizei. O vetor sp tem 310 nomes de espécies então vou deixar apenas alguns nomes no exemplo mas vou deixar o arquivo .csv Sp_name.csv

Tabela com o nome das espécies

spt <- read.csv("Spname.csv", header = TRUE) ##Carregando a lista de espécies spt$Sp <- gsub("", " ", spt$Sp) sp<-as.character(spt$Sp)

sp = c(Arrojadoa albiflora, Arrojadoa beateae, Arrojadoa dinae subsp. dinae, Discocactus petr-halfari, Rhipsalis baccifera)

Conseguindo os registros no Specieslink e GBIF

occs_splink <- rspeciesLink(species = sp, Scope = "plants", basisOfRecord = "PreservedSpecimen", Synonyms = "flora2020")

LimaRAF commented 3 years ago

Olá, @Thiieres,

Dei uma olhada rápida no seu problema. E sua origem é que a API do speciesLink (CRIA/INCT) não aceita buscas muito longas, ou seja, com um número grande de espécies de uma só vez. Estamos estudando uma maneira de contornar internamente essa limitação da API, mas ainda não implementamos uma solução. Assim que fizermos, te avisamos por aqui.

Para o seu caso em específico, é possível baixar blocos de até ~60 nomes. Enquanto não implementamos a solução, talvez valha a pena fazer o download por gênero e depois combinar os registros.

Espero que ajude e desculpe não termos uma solução mais definitiva.

###Tabela com o nome das espécies
spt <- read.csv("Sp_name.csv", header = TRUE) ##Carregando a lista de espécies

spt$Sp <- gsub("^_|_$", "", spt$Sp, perl = TRUE) ## added by Renato (removendo espaços que sobraram)
spt$Sp <- gsub("_", " ", spt$Sp)
#sp <- as.character(spt$Sp)
sp <- unique(as.character(spt$Sp)) ## added by Renato (removendo nome duplicado: Tacinga werneri)

#Conseguindo os registros no Specieslink
## Lexical error: o mesmo que vc obteve
occs_splink <- rspeciesLink(species = sp,
                            Scope = "plants",
                            basisOfRecord = "PreservedSpecimen",
                            Synonyms = "flora2020")

#Reduzindo o numero de nomes na busca
occs_splink <- rspeciesLink(species = sp[1:60],
                            Scope = "plants",
                            basisOfRecord = "PreservedSpecimen",
                            Synonyms = "flora2020")
table(occs_splink$genus)
## OK

sp1 = c("Arrojadoa albiflora", "Arrojadoa beateae", "Arrojadoa dinae subsp. dinae",
"Discocactus petr-halfari", "Rhipsalis baccifera") # precisa colocar as aspas...

#Conseguindo os registros no Specieslink e GBIF
occs_splink1 <- rspeciesLink(species = sp1,
                            Scope = "plants",
                            basisOfRecord = "PreservedSpecimen",
                            Synonyms = "flora2020")
table(occs_splink1$genus)
## OK
LimaRAF commented 2 years ago

Olá, @Thiieres

Só dando um retorno. Estamos colocando online uma nova versão do pacote, mas por enquanto não resolvemos essa questão internamente na função. Como está agora no help de rspeciesLink(), o que sugerimos é baixar os dados dentro de um loop (lapply ou similar). De qualquer forma, vale a pena instalar a nova versão do pacote (0.1.4). Abs