Pecan: PEcAn.data.atmosphere::download.CRUNCEP() ์˜ค๋ฅ˜

์— ๋งŒ๋“  2017๋…„ 09์›” 13์ผ  ยท  21์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: PecanProject/pecan

์ตœ์‹  ๊ฐœ๋ฐœ ๋ถ„๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ PEcAn.data.atmosphere::download.CRUNCEP()๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

> remotefunc <- function() {PEcAn.data.atmosphere::download.CRUNCEP(site_id=1000000105, lat.in=9.154, lon.in=-79.848, model=NULL, scenario=NULL, ensemble_member=NULL, overwrite=FALSE, outfolder='/data/Model_Output/pecan.output/dbfiles/CRUNCEP_site_1-105/', start_date='1990-01-01', end_date='2004-12-31')}
> remoteout <- remotefunc()
2017-09-13 08:30:22 INFO   [PEcAn.logger::logger.info] : 
   Downloading 
   /data/Model_Output/pecan.output/dbfiles/CRUNCEP_site_1-105//CRUNCEP.1990.nc 
2017-09-13 08:30:22 INFO   [PEcAn.logger::logger.info] : 
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_tair_1990_v1.nc4 
2017-09-13 08:30:32 INFO   [PEcAn.logger::logger.info] : 
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_lwdown_1990_v1.nc4 
2017-09-13 08:30:40 INFO   [PEcAn.logger::logger.info] : 
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_press_1990_v1.nc4 
2017-09-13 08:30:47 INFO   [PEcAn.logger::logger.info] : 
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_swdown_1990_v1.nc4 
2017-09-13 08:30:52 INFO   [PEcAn.logger::logger.info] : 
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_uwind_1990_v1.nc4 
2017-09-13 08:30:59 INFO   [PEcAn.logger::logger.info] : 
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_vwind_1990_v1.nc4 
Error in Rsx_nc4_get_vara_double: NetCDF: Index exceeds dimension bound
Var: time  Ndims: 1   Start: 0 Count: 1460
Error in ncvar_get_inner(d$dimvarid$group_id, d$dimvarid$id, default_missval_ncdf4(),  : 
  C function R_nc4_get_vara_double returned error
Calls: remotefunc -> <Anonymous> -> <Anonymous> -> ncvar_get_inner
Execution halted

์„ค๋ช…

๋ฒ„๊ทธ ์ˆ˜์ •. ๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ncdf4::ncvar_def์— ๋Œ€ํ•œ ํ˜ธ์ถœ์—์„œ "verbose"๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

verbose= TRUE/FALSE์—ฌ์•ผ ํ•˜์ง€๋งŒ ํ˜„์žฌ ํ•จ์ˆ˜์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

      var.list[[j]] <- ncdf4::ncvar_def(name = as.character(var$CF.name[j]),
                                 units = as.character(var$units[j]),
                                 dim = dim,
                                 missval = -999,
                                 verbose = verbose)

์ด ์˜ค๋ฅ˜๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

>       var.list[[j]] <- ncdf4::ncvar_def(name = as.character(var$CF.name[j]),
+                                  units = as.character(var$units[j]),
+                                  dim = dim,
+                                  missval = -999,
+                                  verbose = verbose)
Error in ncdf4::ncvar_def(name = as.character(var$CF.name[j]), units = as.character(var$units[j]),  :
  object 'verbose' not found

๊ทธ๋Ÿฌ๋‚˜ verbose = TRUE๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด

>       var.list[[j]] <- ncdf4::ncvar_def(name = as.character(var$CF.name[j]),
+                                  units = as.character(var$units[j]),
+                                  dim = dim,
+                                  missval = -999,
+                                  verbose = TRUE)
[1] "ncvar_def: entering"
[1] "ncvar_def: prec= float"
[1] "ncvar_def: making ncvar object for var eastward_wind"

๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์•„๋งˆ๋„ verbose = FALSE๋ฅผ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฌธ๋งฅ

๋ฒ„๊ทธ ์ˆ˜์ •

๊ฐ€๋Šฅํ•œ ๊ตฌํ˜„

์—†์Œ

๋ชจ๋“  21 ๋Œ“๊ธ€

์ž์„ธํ•œ ์ •๋ณด ์ผœ๊ธฐ

Loading required package: PEcAn.benchmark
>  download.CRUNCEP(site_id=2000000003, lat.in=9.280225, lon.in=-79.975527, model=NULL, scenario=NULL, ensemble_member=NULL, overwrite=TRUE, outfolder='/data/Model_Output/p2017-09-13 09:16:10 INFO   [PEcAn.logger::logger.info] : 01/01', end_date='2002/12/31')
   Downloading
   /data/Model_Output/pecan.output/dbfiles/CRUNCEP_site_2-3//CRUNCEP.2001.nc
2017-09-13 09:16:10 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_tair_2001_v1.nc4
[1] "ncvar_def: entering"
[1] "ncvar_def: prec= float"
[1] "ncvar_def: making ncvar object for var air_temperature"
2017-09-13 09:16:17 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_lwdown_2001_v1.nc4
[1] "ncvar_def: entering"
[1] "ncvar_def: prec= float"
[1] "ncvar_def: making ncvar object for var surface_downwelling_longwave_flux_in_air"

์ž, ๊ทธ๋Ÿผ verbose๋ฅผ ์ผœ๋ฉด 1๋…„ ๋™์•ˆ ๋„์›€์ด ๋˜์—ˆ์ง€๋งŒ ๋‹ค์Œ ํ•ด์—๋Š” ์‹คํŒจํ–ˆ์Šต๋‹ˆ๊นŒ?

2017-09-13 09:16:55 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_qair_2001_v1.nc4
[1] "ncvar_def: entering"
[1] "ncvar_def: prec= float"
[1] "ncvar_def: making ncvar object for var specific_humidity"
2017-09-13 09:17:05 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_rain_2001_v1.nc4
[1] "ncvar_def: entering"
[1] "ncvar_def: prec= float"
[1] "ncvar_def: making ncvar object for var precipitation_flux"
2017-09-13 09:17:14 INFO   [PEcAn.logger::logger.info] :
   Downloading
   /data/Model_Output/pecan.output/dbfiles/CRUNCEP_site_2-3//CRUNCEP.2002.nc
2017-09-13 09:17:14 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_tair_2002_v1.nc4
Error in Rsx_nc4_get_vara_double: NetCDF: file not found
Var: time  Ndims: 1   Start: 0 Count: 1460
Error in ncvar_get_inner(d$dimvarid$group_id, d$dimvarid$id, default_missval_ncdf4(),  :
  C function R_nc4_get_vara_double returned error

์ถœ๋ ฅ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ํŒŒ์ผ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

-rw-rw-r--. 1 apache test 59760 Sep 13 09:17 CRUNCEP.2001.nc
-rw-rw-r--. 1 apache test 59732 Dec  5  2016 CRUNCEP.2002.nc
-rw-rw-r--. 1 apache test 59732 Dec  5  2016 CRUNCEP.2003.nc
-rw-rw-r--. 1 apache test 59892 Dec  5  2016 CRUNCEP.2004.nc
-rw-rw-r--. 1 apache test 59732 Dec  5  2016 CRUNCEP.2005.nc
-rw-rw-r--. 1 apache test 59732 Dec  5  2016 CRUNCEP.2006.nc

์ด์ƒํ•˜๊ฒŒ๋„ ๋‹ค์Œ ํŒŒ์ผ์ธ 2002 lwdown์„ ํ™•์ธํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๊ฑฐ๊ธฐ์— ์—†๋‹ค๊ณ  ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

> ncdf4::nc_open('https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_lwdown_2002_v1.nc4')
Error in Rsx_nc4_get_vara_double: NetCDF: file not found
Var: time  Ndims: 1   Start: 0 Count: 1460
Error in ncvar_get_inner(d$dimvarid$group_id, d$dimvarid$id, default_missval_ncdf4(),  :
  C function R_nc4_get_vara_double returned error

ํ•˜์ง€๋งŒ ์›น์—์„œ ํŒŒ์ผ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

screen shot 2017-09-13 at 9 23 17 am

์œผ์•…! ์ž‘๋™ํ–ˆ๋˜ ํŒŒ์ผ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์‹ญ์‹œ์˜ค.

> ncdf4::nc_open('https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_tair_2001_v1.nc4')
Error in Rsx_nc4_get_vara_double: NetCDF: file not found
Var: time  Ndims: 1   Start: 0 Count: 1460
Error in ncvar_get_inner(d$dimvarid$group_id, d$dimvarid$id, default_missval_ncdf4(),  :
  C function R_nc4_get_vara_double returned error

์ข‹์Šต๋‹ˆ๋‹ค. ๊ฑฐ๋ž˜๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์ƒ๋‹นํžˆ ์–ผ๋ฃฉ๋œ๋ฃฉํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

2017-09-13 09:26:18 INFO   [PEcAn.logger::logger.info] :
   Downloading
   /data/Model_Output/pecan.output/dbfiles/CRUNCEP_site_2-3//CRUNCEP.2002.nc
2017-09-13 09:26:18 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_tair_2002_v1.nc4
[1] "ncvar_def: entering"
[1] "ncvar_def: prec= float"
[1] "ncvar_def: making ncvar object for var air_temperature"
2017-09-13 09:26:24 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_lwdown_2002_v1.nc4
[1] "ncvar_def: entering"
[1] "ncvar_def: prec= float"
[1] "ncvar_def: making ncvar object for var surface_downwelling_longwave_flux_in_air"
2017-09-13 09:26:30 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_press_2002_v1.nc4
Error in Rsx_nc4_get_vara_double: NetCDF: file not found
Var: press  Ndims: 3   Start: 0,161,200 Count: 1460,1,1
Error in ncvar_get_inner(ncid2use, varid2use, nc$var[[li]]$missval, addOffset,  :
  C function R_nc4_get_vara_double returned error

์ผ์ข…์˜ try/catch ๋˜๋Š” ์ง€์—ฐ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? THREDDS์—์„œ ์•ฝ๊ฐ„์˜ ์ง€์—ฐ์ด ์žˆ์œผ๋ฉด ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„?

๊ธฐ๋Šฅ์— 3์ดˆ ์ง€์—ฐ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

      # This throws an error if file not found
      dap <- ncdf4::nc_open(dap_file, verbose=FALSE)
      Sys.sleep(3)

101ํ–‰์—์„œ

2๋…„ ๋™์•ˆ ์ผํ•˜๊ฒŒ ๋งŒ๋“ 

-rw-rw-r--. 1 apache test 59760 Sep 13 09:36 CRUNCEP.2001.nc
-rw-rw-r--. 1 apache test 59760 Sep 13 09:37 CRUNCEP.2002.nc

์ข‹์•„, ์ ์–ด๋„ modex์—์„œ๋Š” 1๋…„์ด ์ถฉ๋Œํ•˜์ง€๋งŒ ๊ณ„์† ์‹œ๋„ํ•˜๋ฉด ์ž‘๋™ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ถ„๋ช…ํžˆ ์žˆ์Šต๋‹ˆ๋‹ค.

[1] "ncvar_def: making ncvar object for var air_temperature"
2017-09-13 09:38:37 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_lwdown_1999_v1.nc4
Error in Rsx_nc4_get_vara_double: NetCDF: file not found
Var: time  Ndims: 1   Start: 0 Count: 1460
Error in ncvar_get_inner(d$dimvarid$group_id, d$dimvarid$id, default_missval_ncdf4(),  :
  C function R_nc4_get_vara_double returned error
>  download.CRUNCEP(site_id=2000000003, lat.in=9.280225, lon.in=-79.975527, model=NULL, scenario=NULL, ensemble_member=NULL, overwrite=TRUE, outfolder='/data/Model_Output/p2017-09-13 09:38:46 INFO   [PEcAn.logger::logger.info] : 01/01', end_date='2002/12/31')
   Downloading
   /data/Model_Output/pecan.output/dbfiles/CRUNCEP_site_2-3//CRUNCEP.1999.nc
2017-09-13 09:38:46 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_tair_1999_v1.nc4
Error in Rsx_nc4_get_vara_double: NetCDF: file not found
Var: time  Ndims: 1   Start: 0 Count: 1460
Error in ncvar_get_inner(d$dimvarid$group_id, d$dimvarid$id, default_missval_ncdf4(),  :
  C function R_nc4_get_vara_double returned error
>  download.CRUNCEP(site_id=2000000003, lat.in=9.280225, lon.in=-79.975527, model=NULL, scenario=NULL, ensemble_member=NULL, overwrite=TRUE, outfolder='/data/Model_Output/p2017-09-13 09:38:49 INFO   [PEcAn.logger::logger.info] : 01/01', end_date='2002/12/31')
   Downloading
   /data/Model_Output/pecan.output/dbfiles/CRUNCEP_site_2-3//CRUNCEP.1999.nc
2017-09-13 09:38:49 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_tair_1999_v1.nc4
[1] "ncvar_def: entering"
[1] "ncvar_def: prec= float"
[1] "ncvar_def: making ncvar object for var air_temperature"
2017-09-13 09:38:59 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_lwdown_1999_v1.nc4

@robkooper @mdietze @ashiklom @jsimkins2 ์ด์— ๋Œ€ํ•œ ์ƒ๊ฐ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋Ÿฐ๋‹ค์šด, ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ๊ฒฐ๊ตญ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋ช‡ ๋ฒˆ์˜ ์‹œ๋„๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ... nc_open์ด ์Šค๋ ˆ๋“œ๋ฅผ ํ†ตํ•ด ์ง€์—ฐ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ง์€ ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š”๋ฐ.....์•„๋งˆ๋„ ๋ฐฉํ™”๋ฒฝ์œผ๋กœ ์ธํ•œ modex ๋ฌธ์ œ์ผ๊นŒ์š”?

๊ทธ๋Ÿฌ๋‚˜ ๊ณ„์† ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ๊ฒฐ๊ตญ ์‹คํŒจํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ THREDDS๊ฐ€ ๋‹ค์šด๋œ ๊ฒฝ์šฐ ๊ถ๊ทน์ ์œผ๋กœ ์‹คํŒจํ•˜๊ธฐ ์ „์— ๋ช‡ ๋ฒˆ ์‹œ๋„ํ•˜๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ•๋ ฅํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

VM์—์„œ๋„ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  rstudio์—์„œ ๋‹ค์‹œ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ์—ฌ์ „ํžˆ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์ด๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด์ „์— ์ด๊ฒƒ์„ #1546์—์„œ ๋งŒ๋‚œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ์˜ค๋ฅ˜ ์—†์ด ๋‹ค์šด๋กœ๋“œ๋˜๋ฏ€๋กœ ๋ณต์ œํ•˜๊ณ  ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ ๊ธฐ๊ณ„์— ํŠน์ •ํ•œ ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์–ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ฐ•๋ ฅํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

DOE THREDDS ์„œ๋ฒ„๊ฐ€ ์„œ๋น„์Šค ๊ฑฐ๋ถ€ ๊ณต๊ฒฉ ๋“ฑ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ๋Œ€ ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๊ฑฐ๋‚˜ ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋น ๋ฅธ ํ˜ธ์ถœ ์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋งŽ์€ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. @jsimkins2 ๊ฐ€ ๊ณผ๊ฑฐ์— ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ํ†ตํ™”์— ๋Œ€ํ•ด ๊ทธ๋“ค๊ณผ ํ†ต์‹ 

ํ•œ ๊ฐ€์ง€ ์•„์ด๋””์–ด๋Š” ์ ˆ์ „์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ํฌ๊ธฐํ•˜๊ธฐ ์ „์— ์„ธ ๋ฒˆ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ankurdesai ์ด ํ‰๊ฐ€์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ Sys.sleep์„ ์ถ”๊ฐ€ํ–ˆ๋Š”๋ฐ ๋„์›€์ด ๋˜์—ˆ์ง€๋งŒ ์„ฑ๊ณต์ ์ธ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜์— 10๋ฒˆ์˜ ์žฌ์‹œ๋„๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@ankurdesai @serbinsh ํ•˜๋ฃจ ์ค‘ ๋” ์ข‹์€ ์‹œ๊ฐ„์ด ์žˆ๋‹ค๋Š” ๋œป์ธ๊ฐ€์š”? ํ•œ๋‚ฎ์ด ์•„๋‹Œ ๋ฐค์— ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

@araiho ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค...์ •๋ง IT ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์•„์š”. Ankur๊ฐ€ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์„œ๋ฒ„๋Š” DoS ๊ณต๊ฒฉ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋น ๋ฅธ ๋‹ค์ค‘ ํŒŒ์ผ ์š”์ฒญ์„ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

retry <- function(expr, isError=function(x) "try-error" %in% class(x), maxErrors=5, sleep=0) {
  attempts = 0
  retval = try(eval(expr))
  while (isError(retval)) {
    attempts = attempts + 1
    if (attempts >= maxErrors) {
      msg = sprintf("retry: too many retries [[%s]]", capture.output(str(retval)))
      PEcAn.logger::logger.warn(msg)
      stop(msg)
    } else {
      msg = sprintf("retry: error in attempt %i/%i [[%s]]", attempts, maxErrors, 
                    capture.output(str(retval)))
      PEcAn.logger::logger.warn(msg)
      #warning(msg)
    }
    if (sleep > 0) Sys.sleep(sleep)
    retval = try(eval(expr))
  }
  return(retval)
}

๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ๋ถ€๋ฅด๋Š” ๊ณณ

dap <- retry(ncdf4::nc_open(dap_file, verbose=FALSE),maxErrors=10, sleep=2)

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

> retry(ncdf4::nc_open('https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_lwdown_1999_v1.Error in Rsx_nc4_get_vara_double: NetCDF: file not found
Var: time  Ndims: 1   Start: 0 Count: 1460
Error in ncvar_get_inner(d$dimvarid$group_id, d$dimvarid$id, default_missval_ncdf4(),  :
  C function R_nc4_get_vara_double returned error
2017-09-13 10:50:17 WARN   [#13: PEcAn.logger::logger.warn] :
   retry: error in attempt 1/10 [[Class 'try-error' atomic [1:1] Error in
   ncvar_get_inner(d$dimvarid$group_id, d$dimvarid$id,
   default_missval_ncdf4(), : ]] retry: error in attempt 1/10 [[ C function
   R_nc4_get_| __truncated__]] retry: error in attempt 1/10 [[ ..- attr(*,
   "condition")=List of 2]] retry: error in attempt 1/10 [[ .. ..$ message:
   chr "C function R_nc4_get_vara_double returned error"]] retry: error in
   attempt 1/10 [[ .. ..$ call : language
   ncvar_get_inner(d$dimvarid$group_id, d$dimvarid$id,
   default_missval_ncdf4(), verbose = verbose)]] retry: error in attempt
   1/10 [[ .. ..- attr(*, "class")= chr [1:3] "simpleError" "error"
   "condition"]]
File https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_lwdown_1999_v1.nc4 (NC_FORMAT_CLASSIC):

     6 variables (excluding dimension variables):
        int crs[]
            semi_major_axis: 6370997
            grid_mapping_name: latitude_longitude
            inverse_flattening: 0
        double lat_bnds[nv,lat]
            _ChunkSizes: 360
             _ChunkSizes: 2
        double lon_bnds[nv,lon]
            _ChunkSizes: 720
             _ChunkSizes: 2
        double time_bnds[nv,time]
            _ChunkSizes: 1
             _ChunkSizes: 2
        float lwdown[lon,lat,time]
            cell_methods: area:mean time:sum
            grid_mapping: crs
            long_name: Incoming_Long_Wave_Radiation
            units: W/m2
            missing_value: -999
            _FillValue: -999
            _ChunkSizes: 1
             _ChunkSizes: 360
             _ChunkSizes: 720
        int mask[lon,lat]
            _ChunkSizes: 360
             _ChunkSizes: 720

     4 dimensions:
        time  Size:1460   *** is unlimited ***
            bounds: time_bnds
            long_name: time
            units: days since 1700-01-01T00:00:00Z
            standard_name: time
            calendar: gregorian
            _ChunkSizes: 1
        lat  Size:360
            units: degrees_north
            standard_name: latitude
            bounds: lat_bnds
            _ChunkSizes: 360
        lon  Size:720
            units: degrees_east
            standard_name: longitude
            bounds: lon_bnds
            _ChunkSizes: 720
        nv  Size:2

    4 global attributes:
        model_name: STOMATE-SECHIBA-LPJ
        history: Tue Mar  1 10:57:59 2011: ncks -d time_counter,143176,144635 ncep9_lwdown_1901_2010_2D.nc cruncepV4_leap_lwdown_1999.nc
        Conventions: CF-1.4
        DODS_EXTRA.Unlimited_Dimension: time
Warning message:
In eval(expr) : restarting interrupted promise evaluation
>

์ผํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค

2017-09-13 11:12:28 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_lwdown_2000_v1.nc4
Error in Rsx_nc4_get_vara_double: NetCDF: file not found
Var: time  Ndims: 1   Start: 0 Count: 1464
Error in ncvar_get_inner(d$dimvarid$group_id, d$dimvarid$id, default_missval_ncdf4(),  :
  C function R_nc4_get_vara_double returned error
In addition: Warning message:
In eval(expr) : restarting interrupted promise evaluation
2017-09-13 11:12:29 WARN   [PEcAn.logger::logger.warn] :
   retry: error in attempt 1/10 [[Class 'try-error' atomic [1:1] Error in
   ncvar_get_inner(d$dimvarid$group_id, d$dimvarid$id,
   default_missval_ncdf4(), : ]] retry: error in attempt 1/10 [[ C function
   R_nc4_get_| __truncated__]] retry: error in attempt 1/10 [[ ..- attr(*,
   "condition")=List of 2]] retry: error in attempt 1/10 [[ .. ..$ message:
   chr "C function R_nc4_get_vara_double returned error"]] retry: error in
   attempt 1/10 [[ .. ..$ call : language
   ncvar_get_inner(d$dimvarid$group_id, d$dimvarid$id,
   default_missval_ncdf4(), verbose = verbose)]] retry: error in attempt
   1/10 [[ .. ..- attr(*, "class")= chr [1:3] "simpleError" "error"
   "condition"]]

๊ธฐ๋Šฅ์—์„œ ๋”ธ๊พน์งˆ ์ฒ˜๋ฆฌ ๋ฐ ๊ณ„์† ์‹คํ–‰, ์ง€๊ธˆ๊นŒ์ง€

@serbinsh ๊ทธ ์žฌ์‹œ๋„ ๊ธฐ๋Šฅ์„ ์–ด๋””์— ๋‘์—ˆ์Šต๋‹ˆ๊นŒ?

๋‹ค์Œ์€ ์—ฌ๋Ÿฌ ๋ฒˆ ์žฌ์‹œ๋„ํ•˜๋Š” ์˜ˆ์ž…๋‹ˆ๋‹ค.

In eval(expr) : restarting interrupted promise evaluation
2017-09-13 11:12:55 WARN   [PEcAn.logger::logger.warn] :
   retry: error in attempt 5/10 [[Class 'try-error' atomic [1:1] Error in
   ncvar_get_inner(d$dimvarid$group_id, d$dimvarid$id,
   default_missval_ncdf4(), : ]] retry: error in attempt 5/10 [[ C function
   R_nc4_get_| __truncated__]] retry: error in attempt 5/10 [[ ..- attr(*,
   "condition")=List of 2]] retry: error in attempt 5/10 [[ .. ..$ message:
   chr "C function R_nc4_get_vara_double returned error"]] retry: error in
   attempt 5/10 [[ .. ..$ call : language
   ncvar_get_inner(d$dimvarid$group_id, d$dimvarid$id,
   default_missval_ncdf4(), verbose = verbose)]] retry: error in attempt
   5/10 [[ .. ..- attr(*, "class")= chr [1:3] "simpleError" "error"
   "condition"]]
2017-09-13 11:13:10 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_swdown_2000_v1.nc4
2017-09-13 11:13:19 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_uwind_2000_v1.nc4
2017-09-13 11:13:32 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_vwind_2000_v1.nc4
2017-09-13 11:13:43 INFO   [PEcAn.logger::logger.info] :
   https://thredds.daac.ornl.gov/thredds/dodsC/ornldaac/1220/mstmip_driver_global_hd_climate_qair_2000_v1.nc4

@araiho ๋‚ด ๊ฐœ๋ฐœ ๋ถ„๊ธฐ์˜ base/utils.R์— ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณง ๋Œ“๊ธ€๋กœ PR์„ ๋ณด๋‚ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

@serbinsh ์˜ ์žฌ์‹œ๋„ ์ฝ”๋“œ #1651 ์กฐํ•ฉ๊ณผ ๋” ์•ˆ์ •์ ์ธ ๋Œ€์ฒด ์›๊ฒฉ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๋ฐฉ๋ฒ•(NetCDF ํ•˜์œ„ ์ง‘ํ•ฉ ๋˜๋Š” PEcAn XML์˜ <method>ncss</method> ์„ ๊ตฌํ˜„ํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ซ ์Šต๋‹ˆ๋‹ค. #2153์˜ ๋‚˜.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

dlebauer picture dlebauer  ยท  5์ฝ”๋ฉ˜ํŠธ

tonygardella picture tonygardella  ยท  7์ฝ”๋ฉ˜ํŠธ

tonygardella picture tonygardella  ยท  8์ฝ”๋ฉ˜ํŠธ

ashiklom picture ashiklom  ยท  4์ฝ”๋ฉ˜ํŠธ

serbinsh picture serbinsh  ยท  39์ฝ”๋ฉ˜ํŠธ