lhmet-ped / fuse.prep

What the Package Does (One Line, Title Case)
Other
0 stars 1 forks source link

Erro ao executar os comandos da vinheta "pp-forcmets" #4

Closed nelsonvnperu closed 3 years ago

nelsonvnperu commented 3 years ago

Ao esecutar os comandos fornecidos pela vinheta "pp-forcmets" (http://xxxxxxxx/library/fuse.prep/doc/pp-forcmets.html), ocorre um erro na função "import_nc", como é mostrado a seguir:

> library(HEgis)
> library(HEobs)
> library(lhmetools)
> library(fuse.prep)
> library(raster)
Loading required package: sp
> library(dplyr)

Attaching package: ‘dplyr’

The following objects are masked from ‘package:raster’:

    intersect, select, union

The following objects are masked from ‘package:stats’:

    filter, lag

The following objects are masked from ‘package:base’:

    intersect, setdiff, setequal, union

> library(fs)
> 
> 
> 
> dropbox_link <- "https://www.dropbox.com/s/d40adhw66uwueet/VazoesNaturaisONS_D_87UHEsDirceuAssis_2018.dat?dl=1"
> dropbox_link
[1] "https://www.dropbox.com/s/d40adhw66uwueet/VazoesNaturaisONS_D_87UHEsDirceuAssis_2018.dat?dl=1"
> 
> 
> 
> dest_dir <- "/home/mpiuser/fusepoc-prep/input"
> dest_dir
[1] "/home/mpiuser/fusepoc-prep/input"
> 
> 
> 
> dest_file <- dropbox_link %>% path_ext_remove() %>% path_file() %>% paste0(".dat") %>% path(dest_dir, .)
> dest_file
/home/mpiuser/fusepoc-prep/input/VazoesNaturaisONS_D_87UHEsDirceuAssis_2018.dat
> 
> 
> 
> if(!file_exists(dest_file)){download.file(dropbox_link, dest_file, mode = "wb")}
> 
> 
> 
> info_posto <- info_station(name_regex = "MUNHOZ")
trying URL 'https://www.ccee.org.br/ccee/documentos/NW202011'
Content type 'application/zip' length 975243 bytes (952 KB)
==================================================
downloaded 952 KB

> info_posto
# A tibble: 1 x 10
    num nome        posto   jus   ree v_inic u_exis modif inic_hist fim_hist
  <int> <chr>       <int> <int> <int>  <dbl> <chr>  <int>     <int>    <int>
1    74 G.B. MUNHOZ    74    76    11    3.5 EX         0      1931     2018
> 
> 
> 
> id_posto <- info_posto$posto
> id_posto
[1] 74
> 
> 
> 
> qobs_posto <- extract_qnat(qnat_file = dest_file, stn_id = id_posto, save = FALSE)
> str(qobs_posto)
tibble [18,536 × 3] (S3: tbl_df/tbl/data.frame)
 $ date : Date[1:18536], format: "1968-04-02" "1968-04-03" ...
 $ posto: num [1:18536] 74 74 74 74 74 74 74 74 74 74 ...
 $ qnat : num [1:18536] 265 325 325 330 348 ...
 - attr(*, ".internal.selfref")=<externalptr> 
> 
> 
> 
> prec_brick <- import_nc(varnc = "prec", dest_dir = dest_dir)

downlonding file: NA

Error in if (startsWith(url, "file:")) "internal" else "libcurl" : 
  missing value where TRUE/FALSE needed
> 
> 
> 
> et0_brick <- import_nc(varnc = "et0", dest_dir = dest_dir)

downlonding file: NA

Error in if (startsWith(url, "file:")) "internal" else "libcurl" : 
  missing value where TRUE/FALSE needed
> 
> 
> 

Baixei manualmente os arquivos .nc

ETo_daily_UT_Brazil_v2_19800101_19891231.nc ETo_daily_UT_Brazil_v2_19900101_19991231.nc ETo_daily_UT_Brazil_v2_20000101_20061231.nc ETo_daily_UT_Brazil_v2_20070101_20131231.nc prec_daily_UT_Brazil_v2.2_19800101_19891231.nc prec_daily_UT_Brazil_v2.2_19900101_19991231.nc prec_daily_UT_Brazil_v2.2_20000101_20091231.nc prec_daily_UT_Brazil_v2.2_20100101_20151231.nc

mas não consigo continuar com os comandos da documentação. Segue abaixo a informação do sistema:

> devtools::session_info()
─ Session info ───────────────────────────────────────────────────────────────
 setting  value                       
 version  R version 4.0.3 (2020-10-10)
 os       Ubuntu 20.04.1 LTS          
 system   x86_64, linux-gnu           
 ui       X11                         
 language (EN)                        
 collate  en_US.UTF-8                 
 ctype    pt_BR.UTF-8                 
 tz       America/Sao_Paulo           
 date     2020-11-22                  

─ Packages ───────────────────────────────────────────────────────────────────
 package     * version  date       lib source                              
 assertthat    0.2.1    2019-03-21 [1] CRAN (R 4.0.2)                      
 callr         3.5.1    2020-10-13 [1] CRAN (R 4.0.2)                      
 cli           2.2.0    2020-11-20 [1] CRAN (R 4.0.3)                      
 crayon        1.3.4    2017-09-16 [1] CRAN (R 4.0.2)                      
 desc          1.2.0    2018-05-01 [1] CRAN (R 4.0.2)                      
 devtools      2.3.2    2020-09-18 [1] CRAN (R 4.0.2)                      
 digest        0.6.27   2020-10-24 [1] CRAN (R 4.0.2)                      
 ellipsis      0.3.1    2020-05-15 [1] CRAN (R 4.0.2)                      
 fansi         0.4.1    2020-01-08 [1] CRAN (R 4.0.2)                      
 fs            1.5.0    2020-07-31 [1] CRAN (R 4.0.2)                      
 fuse.prep   * 0.0.4.91 2020-11-18 [1] Github (lhmet-ped/fuse.prep@ff84b28)
 glue          1.4.2    2020-08-27 [1] CRAN (R 4.0.2)                      
 magrittr      2.0.1    2020-11-17 [1] CRAN (R 4.0.3)                      
 memoise       1.1.0    2017-04-21 [1] CRAN (R 4.0.2)                      
 pkgbuild      1.1.0    2020-07-13 [1] CRAN (R 4.0.2)                      
 pkgload       1.1.0    2020-05-29 [1] CRAN (R 4.0.2)                      
 prettyunits   1.1.1    2020-01-24 [1] CRAN (R 4.0.2)                      
 processx      3.4.4    2020-09-03 [1] CRAN (R 4.0.2)                      
 ps            1.4.0    2020-10-07 [1] CRAN (R 4.0.2)                      
 R6            2.5.0    2020-10-28 [1] CRAN (R 4.0.2)                      
 remotes       2.2.0    2020-07-21 [1] CRAN (R 4.0.2)                      
 rlang         0.4.8    2020-10-08 [1] CRAN (R 4.0.2)                      
 rprojroot     2.0.2    2020-11-15 [1] CRAN (R 4.0.3)                      
 sessioninfo   1.1.1    2018-11-05 [1] CRAN (R 4.0.2)                      
 testthat      3.0.0    2020-10-31 [1] CRAN (R 4.0.2)                      
 usethis       1.6.3    2020-09-17 [1] CRAN (R 4.0.2)                      
 withr         2.3.0    2020-09-22 [1] CRAN (R 4.0.2)                      

[1] /home/mpiuser/R/x86_64-pc-linux-gnu-library/4.0
[2] /usr/local/lib/R/site-library
[3] /usr/lib/R/site-library
[4] /usr/lib/R/library
> 

lhmet commented 3 years ago

1) qual a saída da expressão options("download.file.method") em sua máquina?

2) não precisa baixar manualmente os arquivos, pois isso foi feito com o script https://github.com/lhmet-ped/fuse.prep/blob/master/data-raw/join-netcdfs.R e então disponibilizei no dropbox um arquivo netcdf (RasterBrick) único. Este processo seria necessário para temperatura por exemplo.

nelsonvnperu commented 3 years ago
  1. A saída abaixo é muito esquisita, pois foi possível baixar o arquivo "VazoesNaturaisONS_D_87UHEsDirceuAssis_2018.dat" utilizando o comando "download.file(dropbox_link, dest_file, mode = "wb")"

    > options("download.file.method")
    $download.file.method
    NULL
    

  2. OK, mas a documentação gerada pela vinheta diz "... Se você optar por baixar manualmente cada arquivo, não altere o nome original dos arquivos...". Eu decidi baixá-los para testar os comandos seguintes, mas não foi possível continuar.

lhmet commented 3 years ago

@nelsonvnperu

Sim mas você está baixando os dados errados. Veja que no início desta vinheta há

Esta base de dados também foi usada no pré-processamento dos dados de bandas de elevação (ver vinheta Pré-processamento dos dados de bandas de elevação).

Os links para os dados nc integrados (todo período) estão na vinheta das bandas de elevação. Se repares no README e no índice do pacote sempre aparece a primeira vinheta como a pp-elevbands, depois a pp-forcmets. Essa é a ordem recomendada pois na primeira vinheta descrevo mais detalhadamente os dados das forçantes meteorológicas.

Apesar disso não estar explícito deixarei agora isso explícito no README.

Reinstale a nova versão do pacote para testar se a alteração no código resolve o problema.

Obrigado.

lhmet commented 3 years ago

@nelsonvnperu

Sobre a opção de download não sei pq par arquivos texto funciona e para binários não. Para fixar sua opção de método de download você pode fazer no RStudio

usethis::edit_r_profile()

e colar options(download.file.method = "libcurl")

salve o arquivo e este problema espera-se não ocorrer mais.

Este é um problema reportado por vários e resolvi dessa forma no linux.

nelsonvnperu commented 3 years ago

Deinstalei e reinstalei os pacotes usando os comandos descritos em https://github.com/lhmet-ped/fuse.prep/issues/3. Entretanto, ao tentar baixar os arquivos de precipitação e temperatura obtive um erro de "timeout":

> nc_files <- meteo_nc(c("prec", "et0"), dest_dir = "input")

downlonding file: brick-prec-25km-19800101-20151231.nc

trying URL 'https://www.dropbox.com/s/hj6bu183myfor9y/brick-prec-25km-19800101-20151231.nc?dl=1'
Content type 'application/binary' length 1431719160 bytes (1365.4 MB)
=
downloaded 35.6 MB

Error in utils::download.file(lnk_nc[i], destfile = dest_file[i], mode = "wb") : 
  download from 'https://www.dropbox.com/s/hj6bu183myfor9y/brick-prec-25km-19800101-20151231.nc?dl=1' failed
In addition: Warning messages:
1: In utils::download.file(lnk_nc[i], destfile = dest_file[i], mode = "wb") :
  downloaded length 37281049 != reported length 1431719160
2: In utils::download.file(lnk_nc[i], destfile = dest_file[i], mode = "wb") :
  URL 'https://uc64640231454859f6ff242750a8.dl.dropboxusercontent.com/cd/0/get/BDxNPULgLRTL_50tLYdaAUmogOFWTy28CcwaIwwlX44QQ-4gtFFti17sMj-cpBssNxytPDg08TAiGy98-C20Hj291rybv_vAD5xxce7kQqiKt-cjXLSX5IpqO_ZI5serphg/file?dl=1': Timeout of 60 seconds was reached

Então baixei manualmente os arquivos "brick-prec-25km-19800101-20151231.nc" e "brick-ETo-25km-19800101-20171231.nc" (aliás, aqui em casa, cada um demorou quase 1h30m). Agora, vai ser quase impossível baixar o arquivo "sa_con_3s_hydrosheds.grd" que, segundo a documentação da função "extract_condem", têm aproximadamente 12.5Gb (aliás, dito arquivo no Dropbox têm apenas 375 bytes e pelo jeito é só o cabeçalho do raster).

De qualquer forma, consegui reproduzir os comandos do tópico "Centróide da BH (ccoords)" da vinheta "pp-elevbands" para a bacia que têm como parte do nome a palavra "MUNHOZ" e também para a bacia que têm como parte do nome a palavra "CAMARGOS".

Agora, para reproduzir o tópico "Elevação do terreno da BH (con_dem)", é necessário ter o arquivo "sa_con_3s_hydrosheds.grd".

lhmet commented 3 years ago

@nelsonvnperu, welcome to the big data era! o 'sa_con_3s_hydrosheds.gri' é que é o pesado.

nelsonvnperu commented 3 years ago

Ocorreu um erro ao executar o comando "extract_condem", na seção "Elevação do terreno da BH (con_dem)" da vinheta "pp-elevbands" :

> path_hs <- "/home/mpiuser/fusepoc-prep/input/sa_con_3s_hydrosheds.grd"
> 
> con_hs <- raster(path_hs)
Warning message:
In .rasterFromRasterFile(grdfile, band = band, objecttype, ...) :
  size of values file does not match the number of cells (given the data type)
> 
> con_dem <- extract_condem(condem = con_hs, poly_station = poly_posto)
Error in h(simpleError(msg, call)) : 
  error in evaluating the argument 'x' in selecting a method for function 'mask': replacement has length zero

Os comandos da seção anterior "Centróide da BH (ccoords)" ocorreram normalmente. Os arquivos "sa_con_3s_hydrosheds.grd" e "sa_con_3s_hydrosheds.gri" se encontram na pasta "/home/mpiuser/fusepoc-prep/input".

O tamanho do arquivo "sa_con_3s_hydrosheds.gri" é de 4.3 Gb. Isso está correto? Dadas as dimensões do raster (85200 x 73200) e o tipo de dado (inteiro não negativo de dois bytes), eu esperava um arquivo de aprox. 12 Gb.

nelsonvnperu commented 3 years ago

Acho que sei onde está o erro. Um arquivo no sistema de arquivos FAT32 pode ter como máximo um tamanho de 4 Gb menos um byte (4 1024 1024 * 1024 - 1 bytes = 4294967295 bytes) que é exatamente o tamanho que têm o arquivo "sa_con_3s_hydrosheds.gri" no pendrive. Uma verificação do pendrive indicou que têm sistema de arquivos FAT32.

lhmet commented 3 years ago

Realmente @nelsovnperu não havia verificado o sistema de arquivos do pendrive, apenas copiei o arquivo para ele. Mas estranho que o tamanho aparecia com ~12Gb. @andreza-santos teve este problema também?

andreza-santos commented 3 years ago

Realmente @nelsovnperu não havia verificado o sistema de arquivos do pendrive, apenas copiei o arquivo para ele. Mas estranho que o tamanho aparecia com ~12Gb. @andreza-santos teve este problema também?

Bom, eu tive que baixar os dados manualmente, pois sempre só baixava pela metade no R e então aparecia, por exemplo:

downlonding file: brick-prec-25km-19800101-20151231.nc

trying URL 'https://www.dropbox.com/s/hj6bu183myfor9y/brick-prec-25km-19800101-20151231.nc?dl=1'
Content type 'application/binary' length 1431719160 bytes (1365.4 MB)
====================
downloaded 559.3 MB

downloaded length 586486048 != reported length 1431719160URL 'https://ucc8f859b1e42866a6eec58e0b8e.dl.dropboxusercontent.com/cd/0/get/BEAOqL9F_s5W-Gi3iKw0OmszNocqjsLwOtWBJETic_EA34BTmUE6cSLjOUV_92xDsQ4-a4KMIA4saainFqPYvGhRzITxkfYhPMusP4n8S7FwnPMpqBz5crsdcHF8W2jkIl8/file?dl=1': Timeout of 60 seconds was reachedError in utils::download.file(lnk_nc[i], destfile = dest_file[i], mode = "wb") : 
  download from 'https://www.dropbox.com/s/hj6bu183myfor9y/brick-prec-25km-19800101-20151231.nc?dl=1' failed
andreza-santos commented 3 years ago

Em Médias das forçantes meteorológicas na área da BH da vinheta pp-forcmets, não era reconhecido o arquivo manualmente baixado, assim também retornava o erro:

downlonding file: brick-ETo-25km-19800101-20171231.nc

trying URL 'https://www.dropbox.com/s/jfsehx65g0z8yjo/brick-ETo-25km-19800101-20171231.nc?dl=1'
Content type 'application/binary' length 1494654124 bytes (1425.4 MB)
===================
downloaded 558.8 MB

Error in utils::download.file(lnk_nc[i], destfile = dest_file[i], mode = "wb") : 
  download from 'https://www.dropbox.com/s/jfsehx65g0z8yjo/brick-ETo-25km-19800101-20171231.nc?dl=1' failed
In addition: Warning messages:
1: In utils::download.file(lnk_nc[i], destfile = dest_file[i], mode = "wb") :
  downloaded length 585990509 != reported length 1494654124
2: In utils::download.file(lnk_nc[i], destfile = dest_file[i], mode = "wb") :
  URL 'https://uc2cb049a3c39f1f8484b877b004.dl.dropboxusercontent.com/cd/0/get/BEAvzQb1ToUW12aO8-Gcf_InDNbam2pisQtOLM5Bf6FHJ-a-G2f7WQiMnPVnsYq0USKvfCO7ZUzCbQHB0oRbmk_ojJmmvDn86AiS4ocv6YfKv7HI9lAjS2-RuB985Ipn_l4/file?dl=1': Timeout of 60 seconds was reached

E então notei que o link refere-se a "brick-ETo-25km-19800101-20171231.nc", mas baixando pelo navegador (com o mesmo link) o arquivo baixava "brick-ETo-25km-19800101-20170731". Com a impossibilidade de baixar através do RStudio, tentei renomear o arquivo baixado. Rodou, mas encontrou um problema:

Loading previously downloaded data available in the 'input' directory.
Error in raster::setZ(x = b, z = seq(min(b_dates), max(b_dates), by = "days")) : 
  length(z) == nlayers(x) is not TRUE

E então não sei mais como proceder.

nelsonvnperu commented 3 years ago

Comigo ocorreu o mesmo erro relatado pela Andreza. Eu baixei manualmente os arquivos "brick-prec-25km-19800101-20151231.nc" e "brick-ETo-25km-19800101-20171231.nc", via "wget". A função "import_nc" funciona para o arquivo de precipitação, mas falha para o arquivo da evapotranspiração:

> prec_brick <- import_nc(varnc = "prec", dest_dir = dest_dir)
Loading previously downloaded data available in the 'input' directory.
> prec_brick
class      : RasterBrick 
dimensions : 162, 168, 27216, 13149  (nrow, ncol, ncell, nlayers)
resolution : 0.25, 0.25  (x, y)
extent     : -74.25, -32.25, -34.25, 6.25  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs 
source     : /home/mpiuser/fusepoc-prep/input/brick-prec-25km-19800101-20151231.nc 
names      :        X1,        X2,        X3,        X4,        X5,        X6,        X7,        X8,        X9,       X10,       X11,       X12,       X13,       X14,       X15, ... 
min values :         0,         0,         0,         0,         0,         0,         0,         0,         0,         0,         0,         0,         0,         0,         0, ... 
max values :  79.81250,  89.37500,  97.81250,  54.09375,  82.31250,  64.06250,  54.90625,  51.93750,  78.25000,  85.50000, 109.43750,  69.00000, 115.75000, 109.43750, 101.87500, ... 
time       : 1980-01-01, 2015-12-31 (min, max)
varname    : variable 

> 
> et0_brick <- import_nc(varnc = "et0", dest_dir = dest_dir)
Loading previously downloaded data available in the 'input' directory.
Error in raster::setZ(x = b, z = seq(min(b_dates), max(b_dates), by = "days")) : 
  length(z) == nlayers(x) is not TRUE
lhmet commented 3 years ago

@andreza-santos e @nelsonvnperu instalem a última versão do fuse.rep. Arrumei os problemas conforme commits acima, inclusive o problema do download dos arquivos (testado), mas testei somente em linux. O problema do nome do arquivo foi erro de digitação. Agora deve funcionar. Peço que por gentileza, criem uma issue para cada problema. Todos os problemas aqui eram relacionados a vinheta, mas eram problemas diferentes. Obrigado.

nelsonvnperu commented 3 years ago

Reinstalei os pacotes "fuse.prep", "HEgis", "HEobs" e "lhmetools" (previa desinstalação) e o erro continua.

> et0_brick <- import_nc(varnc = "et0", dest_dir = dest_dir)
File names from previously downloaded data available in the 'input' directory.
Error in raster::setZ(x = b, z = seq(min(b_dates), max(b_dates), by = "days")) : 
  length(z) == nlayers(x) is not TRUE

Não abri um novo "issue" porque o erro continua sendo o mesmo.

lhmet commented 3 years ago

O nome do arquivo de et0 deve ser "brick-ETo-25km-19800101-20170731.nc" ao invés "brick-ETo-25km-19800101-20171231.nc". Isto ocorreu porque na vinheta estava errado previamente. Agora foi corrigido. Mas tu podes apenas renomear o arquivo que deve resolver o problema. É que as datas são obtidas a partir do nome do nc. O nc desta base de dados não inclui o atributo de tempo, infelizmente.

nelsonvnperu commented 3 years ago

Sim, os nomes dos arquivos são "brick-prec-25km-19800101-20151231.nc" e "brick-ETo-25km-19800101-20170731.nc" (se um deles falta a função "import_nc" vai baixá-lo).

Acabei de desinstalar os pacotes "fuse.prep", "HEgis", "HEobs" e "lhmetools" e quando fui reinstalá-los ocorreu o seguinte erro:

> devtools::install_github("lhmet-ped/fuse.prep", build_vignettes = TRUE, force = TRUE)
Downloading GitHub repo lhmet-ped/fuse.prep@HEAD
Downloading GitHub repo lhmet-ped/HEobs@HEAD
Downloading GitHub repo lhmet/lhmetools@HEAD
   checking for file ‘/tmp/RtmpatYftb/remotes4335795e7cf3/lhmet-lhmetools-d15fc7c/DESCRIPT  checking for file ‘/tmp/RtmpatYftb/remotes4335795e7cf3/lhmet-lhmetools-d15fc7c/DESCRIPTION’
─  preparing ‘lhmetools’:
  checking DESCRIPTION meta-information ...
─  checking for LF line-endings in source and make files and shell scripts
─  checking for empty or unneeded directories
─  building ‘lhmetools_0.1.1.tar.gz’

Installing package into ‘/home/mpiuser/R/x86_64-pc-linux-gnu-library/4.0’
(as ‘lib’ is unspecified)
* installing *source* package ‘lhmetools’ ...
** using staged installation
** R
** data
*** moving datasets to lazyload DB
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (lhmetools)
Downloading GitHub repo lhmet/lhmetools@HEAD
Skipping lhmetools, it is already being installed
   checking for file ‘/tmp/RtmpatYftb/remotes4335484bae0a/lhmet-ped-HEobs-cfb770c/DESCRIPT  checking for file ‘/tmp/RtmpatYftb/remotes4335484bae0a/lhmet-ped-HEobs-cfb770c/DESCRIPTION’
─  preparing ‘HEobs’:
  checking DESCRIPTION meta-information ...
─  checking for LF line-endings in source and make files and shell scripts
─  checking for empty or unneeded directories
─  building ‘HEobs_0.0.3.tar.gz’

Installing package into ‘/home/mpiuser/R/x86_64-pc-linux-gnu-library/4.0’
(as ‘lib’ is unspecified)
* installing *source* package ‘HEobs’ ...
** using staged installation
** R
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (HEobs)
Downloading GitHub repo lhmet-ped/HEgis@HEAD
Error in utils::download.file(url, path, method = method, quiet = quiet,  : 
  download from 'https://api.github.com/repos/lhmet-ped/HEgis/tarball/HEAD' failed
Downloading GitHub repo lhmet/lhmetools@HEAD
Skipping lhmetools, it is already being installed
Downloading GitHub repo lhmet-ped/HEobs@HEAD
Skipping HEobs, it is already being installed
Downloading GitHub repo lhmet-ped/HEgis@HEAD
Error in utils::download.file(url, path, method = method, quiet = quiet,  : 
  download from 'https://api.github.com/repos/lhmet-ped/HEgis/tarball/HEAD' failed
Downloading GitHub repo lhmet/lhmetools@HEAD
Skipping lhmetools, it is already being installed
   checking for file ‘/tmp/RtmpatYftb/remotes43356d6d6622/lhmet-ped-fuse.prep-76f8015/DESC  checking for file ‘/tmp/RtmpatYftb/remotes43356d6d6622/lhmet-ped-fuse.prep-76f8015/DESCRIPTION’
─  preparing ‘fuse.prep’:
  checking DESCRIPTION meta-information ...
─  installing the package to build vignettes
         -----------------------------------
   ERROR: dependency ‘HEgis’ is not available for package ‘fuse.prep’
─  removing ‘/tmp/RtmpSIpqYb/Rinst454627016dc2/fuse.prep’
         -----------------------------------
   ERROR: package installation failed
Error: Failed to install 'fuse.prep' from GitHub:
  System command 'R' failed, exit status: 1, stdout + stderr:
E> * checking for file ‘/tmp/RtmpatYftb/remotes43356d6d6622/lhmet-ped-fuse.prep-76f8015/DESCRIPTION’ ... OK
E> * preparing ‘fuse.prep’:
E> * checking DESCRIPTION meta-information ... OK
E> * installing the package to build vignettes
E>       -----------------------------------
E> ERROR: dependency ‘HEgis’ is not available for package ‘fuse.prep’
E> * removing ‘/tmp/RtmpSIpqYb/Rinst454627016dc2/fuse.prep’
E>       -----------------------------------
E> ERROR: package installation failed

Emtão tentei instalar somente o pacote "HEgis", mas ocorreu o seguinte erro

> devtools::install_github("lhmet-ped/HEgis")
Downloading GitHub repo lhmet-ped/HEgis@HEAD
Error in utils::download.file(url, path, method = method, quiet = quiet,  : 
  download from 'https://api.github.com/repos/lhmet-ped/HEgis/tarball/HEAD' failed

pelo que baixei o código fonte do pacote "HEgis" do GitHub e o instalei manualmente, com o seguinte comando:

> install.packages('/home/mpiuser/Downloads/HEgis-master', repos = NULL, type='source')

Após a instalação do pacote "HEgis" consegui instalar o pacote "fuse.prep", com o seguinte comando:

> devtools::install_github("lhmet-ped/fuse.prep", build_vignettes = TRUE, force = TRUE)

Mas na hora de executar os comandos da vinheta "pp-forcmets", continua ocorrendo o mesmo erro

lhmet commented 3 years ago

@nelsonvnperu por gentileza,

1) confirme se você fez o indicado neste comentário dessa issue mesmo.

2) Se você conseguiu instalar a nova versão do fuse.prep mostre a saída dos seguintes comandos:

library(fuse.prep)
getwd()
system.file(package = "HEgis")
packageVersion("HEgis")
system.file(package = "fuse.prep")
packageVersion("fuse.prep")

fs::dir_info("input")
fs::path_abs(fs::dir_info("input")[[1]])
fuse.prep:::.nc_name()
fuse.prep:::.find_nc(FALSE)
nelsonvnperu commented 3 years ago

A resposta à sua primeira pergunta é sim. Essa opção está no arquivo "~/.Rprofile".

Tentei refazer o processo inteiro. Desinstalei os pacotes "fuse.prep", "HEgis", "HEobs" e "lhmetools" e tentei reinstalá-los com o comando

> devtools::install_github("lhmet-ped/fuse.prep", build_vignettes = TRUE, force = TRUE)

que consegue instalar os pacotes "lhmetools" e "HEobs" mas da erro ao instalar o pacote "HEgis", exatamente igual como relatei neste post. Então baixei o código fonte do pacote "HEgis" do site do Github e o instalei manualmente com o comando

> install.packages('/home/mpiuser/Downloads/HEgis-master', repos = NULL, type='source')

Uma vez feito isso, tentei instalar o pacote "fuse.prep" com o comando

> devtools::install_github("lhmet-ped/fuse.prep", build_vignettes = TRUE, force = TRUE)

mas agora ocorreu o seguinte erro

E  creating vignettes (17.7s)
   --- re-building ‘pp-elevbands.Rmd’ using rmarkdown
   Warning in engine$weave(file, quiet = quiet, encoding = enc) :
     Pandoc (>= 1.12.3) and/or pandoc-citeproc not available. Falling back to R Markdown v1.
   Loading required package: sp

   Attaching package: 'dplyr'

   The following objects are masked from 'package:raster':

       intersect, select, union

   The following objects are masked from 'package:stats':

       filter, lag

   The following objects are masked from 'package:base':

       intersect, setdiff, setequal, union

   trying URL 'https://www.ccee.org.br/ccee/documentos/NW202012'
   Content type 'application/zip' length 1727965 bytes (1.6 MB)
   ==================================================
   downloaded 1.6 MB

   Quitting from lines 162-174 (pp-elevbands.Rmd) 
   Error: processing vignette 'pp-elevbands.Rmd' failed with diagnostics:
   Assertion on 'confhd_file' failed: No file provided.
   --- failed re-building ‘pp-elevbands.Rmd’

   --- re-building ‘pp-forcmets.Rmd’ using rmarkdown
   Warning in engine$weave(file, quiet = quiet, encoding = enc) :
     Pandoc (>= 1.12.3) and/or pandoc-citeproc not available. Falling back to R Markdown v1.
   --- finished re-building ‘pp-forcmets.Rmd’

   SUMMARY: processing the following file failed:
     ‘pp-elevbands.Rmd’

   Error: Vignette re-building failed.
   Execution halted
Error: Failed to install 'fuse.prep' from GitHub:
  System command 'R' failed, exit status: 1, stdout + stderr (last 10 lines):
E> --- re-building ‘pp-forcmets.Rmd’ using rmarkdown
E> Warning in engine$weave(file, quiet = quiet, encoding = enc) :
E>   Pandoc (>= 1.12.3) and/or pandoc-citeproc not available. Falling back to R Markdown v1.
E> --- finished re-building ‘pp-forcmets.Rmd’
E> 
E> SUMMARY: processing the following file failed:
E>   ‘pp-elevbands.Rmd’
E> 
E> Error: Vignette re-building failed.
E> Execution halted

Entretanto, se desconsidero a construção das vinhetas, isto é, uso o comando

> devtools::install_github("lhmet-ped/fuse.prep", force = TRUE)

o pacote "fuse.prep" é instalado.

Em relação à sua segunda pergunta, seguem abaixo as respostas.

> library(fuse.prep)
> getwd()
[1] "/home/mpiuser/fusepoc-prep"
> system.file(package = "HEgis")
[1] "/home/mpiuser/R/x86_64-pc-linux-gnu-library/4.0/HEgis"
> packageVersion("HEgis")
[1] ‘0.0.5.9000’
> system.file(package = "fuse.prep")
[1] "/home/mpiuser/R/x86_64-pc-linux-gnu-library/4.0/fuse.prep"
> packageVersion("fuse.prep")
[1] ‘0.2.0.9000’
> 
> fs::dir_info("input")
# A tibble: 10 x 18
   path       type     size permissions modification_time   user  group
   <fs::path> <fct> <fs::b> <fs::perms> <dttm>              <chr> <chr>
 1 input/Vaz… file   42.66M rw-rw-r--   2020-11-21 00:08:15 mpiu… mpiu…
 2 input/bri… syml…      35 rwxrwxrwx   2020-11-30 02:04:11 mpiu… mpiu…
 3 input/bri… file    1.39G rw-rw-r--   2020-11-23 19:03:37 mpiu… mpiu…
 4 input/bri… file    1.33G rw-rw-r--   2020-11-23 17:16:53 mpiu… mpiu…
 5 input/sa_… file      375 rw-rw-r--   2020-11-23 16:47:54 mpiu… mpiu…
 6 input/sa_… file   11.62G rw-rw-r--   2020-11-27 21:13:58 mpiu… mpiu…
 7 input/sa_… file       3G rw-r--r--   2020-11-27 20:32:22 mpiu… mpiu…
 8 input/sa_… file       3G rw-r--r--   2020-11-27 20:33:06 mpiu… mpiu…
 9 input/sa_… file       3G rw-r--r--   2020-11-27 20:33:56 mpiu… mpiu…
10 input/sa_… file    2.62G rw-r--r--   2020-11-27 20:34:44 mpiu… mpiu…
# … with 11 more variables: device_id <dbl>, hard_links <dbl>,
#   special_device_id <dbl>, inode <dbl>, block_size <dbl>, blocks <dbl>,
#   flags <int>, generation <dbl>, access_time <dttm>, change_time <dttm>,
#   birth_time <dttm>
> fs::path_abs(fs::dir_info("input")[[1]])
/home/mpiuser/fusepoc-prep/input/VazoesNaturaisONS_D_87UHEsDirceuAssis_2018.dat
/home/mpiuser/fusepoc-prep/input/brick-ETo-25km-19800101-20170731.nc
/home/mpiuser/fusepoc-prep/input/brick-ETo-25km-19800101-20171231.nc
/home/mpiuser/fusepoc-prep/input/brick-prec-25km-19800101-20151231.nc
/home/mpiuser/fusepoc-prep/input/sa_con_3s_hydrosheds.grd
/home/mpiuser/fusepoc-prep/input/sa_con_3s_hydrosheds.gri
/home/mpiuser/fusepoc-prep/input/sa_parte_00
/home/mpiuser/fusepoc-prep/input/sa_parte_01
/home/mpiuser/fusepoc-prep/input/sa_parte_02
/home/mpiuser/fusepoc-prep/input/sa_parte_03
> fuse.prep:::.nc_name()
[1] "brick-prec-25km-19800101-20151231.nc"
[2] "brick-ETo-25km-19800101-20170731.nc" 
> fuse.prep:::.find_nc(FALSE)
                                                                                 prec 
"https://www.dropbox.com/s/hj6bu183myfor9y/brick-prec-25km-19800101-20151231.nc?dl=1" 
                                                                                  et0 
 "https://www.dropbox.com/s/jfsehx65g0z8yjo/brick-ETo-25km-19800101-20170731.nc?dl=1" 
> 

Segue em anexo um arquivo com a saída completa do processo acima descrito. fuse.prep_install_output.txt

lhmet commented 3 years ago

@nelsonvnperu

o arquivo "/home/mpiuser/fusepoc-prep/input/brick-ETo-25km-19800101-20171231.nc" e os /home/mpiuser/fusepoc-prep/input/sa_parte* são desnecessários, sugiro removê-los.

Você não está usando o RStudio?

rmarkdown::find_pandoc()
$version
[1] ‘2.7.3’

$dir
[1] "/usr/lib/rstudio/bin/pandoc"

Sobre 'Error: processing vignette 'pp-elevbands.Rmd' failed with diagnostics' ver https://github.com/lhmet-ped/HEgis/issues/2

lhmet commented 3 years ago

Instalação do fuse.prep e construção das vinhetas realizadas com sucesso em Ubuntu 18.04.5 LTS, usando:

options(download.file.method = "wget")
devtools::install_github("lhmet-ped/fuse.prep", build_vignettes = TRUE, dependencies = TRUE)
vignette('pp-elevbands', package = "fuse.prep")
vignette('pp-forcmets', package = "fuse.prep")
nelsonvnperu commented 3 years ago

Confirmo que a instalação do "fuse.prep" e a construção das vinhetas foram realizadas com sucesso em Ubuntu 20.04.1 LTS, como relatado neste post. Em breve comunicarei o resultado da reprodução dos comandos das vinhetas.

nelsonvnperu commented 3 years ago

Confirmo que os comandos da vinheta "pp-elevbands" foram executados com sucesso. Já para a vinheta "pp-forcmets" o erro relatado aqui continua ocorrendo. Preciso salientar que dito erro ocorre quando uso o R desde o terminal ou o RStudio 1.3.1093.

Como o erro ocorre apenas com a ET, vou baixar (novamente) o arquivo "brick-ETo-25km-19800101-20170731.nc" e testar de novo.

nelsonvnperu commented 3 years ago

O arquivo "brick-ETo-25km-19800101-20170731.nc" novamente baixado é idêntico ao que já tinha. Então apaguei a pasta onde o R instala os pacotes (no meu caso, "/home/mpiuser/R" e executei os comandos

> install.packages("devtools")
> devtools::install_github("lhmet-ped/fuse.prep", build_vignettes = TRUE, force = TRUE)
> vignette('pp-elevbands', package = "fuse.prep")
> vignette('pp-forcmets', package = "fuse.prep")

que foram executados com sucesso e instalaram todos os pacotes necessários para executar os comandos do pacote "fuse.prep". O erro na função "import_nc" não ocorre mais. Entretanto, aparecem uns "warnings" ao executar a função "spatial_average", como é mostrado a seguir:

> prec_posto <- spatial_average(meteo_brick = prec_brick, poly_station = poly_posto, var_name = "pr", fun = mean)
Warning message:
In st_buffer.sfc(st_geometry(x), dist, nQuadSegs, endCapStyle = endCapStyle,  :
  st_buffer does not correctly buffer longitude/latitude data
> str(prec_posto)
tibble [13,149 × 3] (S3: tbl_df/tbl/data.frame)
 $ date : Date[1:13149], format: "1980-01-01" "1980-01-02" ...
 $ posto: int [1:13149] 74 74 74 74 74 74 74 74 74 74 ...
 $ pr   : num [1:13149] 0.3299 0.0578 0.1773 0.0476 0.0517 ...
> 
> 
> pet_posto <- spatial_average(meteo_brick = et0_brick, poly_station = poly_posto, var_name = "pet", fun = mean)
Warning message:
In st_buffer.sfc(st_geometry(x), dist, nQuadSegs, endCapStyle = endCapStyle,  :
  st_buffer does not correctly buffer longitude/latitude data
> str(pet_posto)
tibble [13,727 × 3] (S3: tbl_df/tbl/data.frame)
 $ date : Date[1:13727], format: "1980-01-01" "1980-01-02" ...
 $ posto: int [1:13727] 74 74 74 74 74 74 74 74 74 74 ...
 $ pet  : num [1:13727] 5.41 5.01 5.36 5.57 5.49 ...

Finalmente, ocorre o seguinte erro ao executar a função "meteo_forcing_nc":

> forcings_nc <- path("output", "posto74_input.nc")
> meteo_forcing_nc(forc_tbl = meteo_data, ccoords = centroids(poly_station = poly_posto), file_nc = forcings_nc)
Error: Can't subset columns that don't exist.
 Column `id` doesn't exist.
Run `rlang::last_error()` to see where the error occurred.

A saída do comando sugerido e

> rlang::last_error()
<error/vctrs_error_subscript_oob>
Can't subset columns that don't exist.
 Column `id` doesn't exist.
Backtrace:
  1. fuse.prep::meteo_forcing_nc(...)
  2. fuse.prep:::.check_inputs_meteo_forc(...)
  4. dplyr:::select.data.frame(variab_list, -date, -id)
  5. tidyselect::eval_select(expr(c(...)), .data)
  6. tidyselect:::eval_select_impl(...)
 14. tidyselect:::vars_select_eval(...)
 15. tidyselect:::walk_data_tree(expr, data_mask, context_mask)
 16. tidyselect:::eval_c(expr, data_mask, context_mask)
 17. tidyselect:::reduce_sels(node, data_mask, context_mask, init = init)
 18. tidyselect:::walk_data_tree(new, data_mask, context_mask)
 19. tidyselect:::as_indices_sel_impl(...)
 20. tidyselect:::as_indices_impl(x, vars, strict = strict)
 21. tidyselect:::chr_as_locations(x, vars)
 22. vctrs::vec_as_location(x, n = length(vars), names = vars)
 24. vctrs:::stop_subscript_oob(...)
 25. vctrs:::stop_subscript(...)
Run `rlang::last_trace()` to see the full context.

enquanto a saída do novo comando sugerido é

> rlang::last_trace()
<error/vctrs_error_subscript_oob>
Can't subset columns that don't exist.
 Column `id` doesn't exist.
Backtrace:
       1. └─fuse.prep::meteo_forcing_nc(...)
  2.   └─fuse.prep:::.check_inputs_meteo_forc(...)
  3.     ├─dplyr::select(variab_list, -date, -id)
  4.     └─dplyr:::select.data.frame(variab_list, -date, -id)
  5.       └─tidyselect::eval_select(expr(c(...)), .data)
  6.         └─tidyselect:::eval_select_impl(...)
  7.           ├─tidyselect:::with_subscript_errors(...)
  8.           │ ├─base::tryCatch(...)
  9.           │ │ └─base:::tryCatchList(expr, classes, parentenv, handlers)
 10.           │ │   └─base:::tryCatchOne(expr, names, parentenv, handlers[[1L]])
 11.           │ │     └─base:::doTryCatch(return(expr), name, parentenv, handler)
 12.           │ └─tidyselect:::instrument_base_errors(expr)
 13.           │   └─base::withCallingHandlers(...)
 14.           └─tidyselect:::vars_select_eval(...)
 15.             └─tidyselect:::walk_data_tree(expr, data_mask, context_mask)
 16.               └─tidyselect:::eval_c(expr, data_mask, context_mask)
 17.                 └─tidyselect:::reduce_sels(node, data_mask, context_mask, init = init)
 18.                   └─tidyselect:::walk_data_tree(new, data_mask, context_mask)
 19.                     └─tidyselect:::as_indices_sel_impl(...)
 20.                       └─tidyselect:::as_indices_impl(x, vars, strict = strict)
 21.                         └─tidyselect:::chr_as_locations(x, vars)
 22.                           └─vctrs::vec_as_location(x, n = length(vars), names = vars)
 23.                             └─(function () ...
 24.                               └─vctrs:::stop_subscript_oob(...)
 25.                                 └─vctrs:::stop_subscript(...)
> 

lhmet commented 3 years ago

@nelsonvnperu os avisos são esperados, sem problema. Obrigado por reportar o problema. Corrigido na nova versão do fuse.prep.

nelsonvnperu commented 3 years ago

Confirmo que a instalação do "fuse.prep" e a construção das vinhetas "pp-elevbands" e "pp-forcmets", junto com a execução dos comandos nelas contidas, foram realizadas com sucesso para o Ubuntu 20.04.1 LTS, Debian 11 e, com mínimas modificações nos arquivos DESCRIPTION dos pacotes "lhmetools" e "HEgis", para o Debian 10.

lhmet commented 3 years ago

@nelsonvnperu por gentileza seja específico, que alterações no DESCRIPTION foram feitas. A proposta das issues é justamente documentar os problemas e buscar as soluções. Alterar o DESCRIPTION jamais deve ser feito. Há algo muito estranho aí. As alterações foram feitas para reprodução das vinhetas em particular, ou para instalação dos pacotes?