All notable changes are kept in this file. All changes made should be added to the section called
Unreleased
. Once a new release is made this file will be updated to create a new Unreleased
section for the next release.
For more information about this file see also Keep a Changelog .
- updated github action to build docker images
- The following components have changed their licensing. With approval of all their contributors, we now provide them under a BSD 3-clause license rather than the previously used NCSA Open Source license. As a reminder, we intend to relicense the entire system and this list will expand as we gather permission from the relevant copyright owners.
apps/api
- Shiny apps
dbsync
,BenchmarkReport
,Data-Ingest
,Elicitation
,ForecastingDashboard
,global-sensitivity
,Pecan.depend
,SDAdashboard
, andViewMet
- Base packages
PEcAn.all
,PEcAn.DB
,PEcAn.QAQC
,PEcAn.remote
,PEcAn.settings
,PEcAn.visualization
, andPEcAn.workflow
- Model packages
PEcAn.BASGRA
,PEcAn.CLM45
,PEcAn.DALEC
,PEcAn.dvmdostem
,PEcAn.FATES
,PEcAn.GDAY
,PEcAn.JULES
,PEcAn.LDNDC
,PEcAn.LINKAGES
,PEcAn.LPJGUESS
,PEcAn.MAAT
,PEcAn.MAESPA
,PEcAn.PRELES
,PEcAn.SIBCASA
,PEcAn.SIPNET
,PEcAn.STICS
, and the new model package template. - Modules
PEcAn.allometry
,PEcAn.assim.batch
,PEcAn.data.mining
,PEcAn.emulator
,PEcAn.MA
,PEcAn.photosynthesis
,PEcAn.priors
, andPEcAn.RTM
.
- Renamed master branch to main
- Remove Browndog support for conversions (#3348, @Sweetdevil144).
-
Created a new soilgrids function to extract the mean soil organic carbon profile with associated undertainty values at each depth for any lat/long location (#3040). Function was created for the CMS SDA workflow
-
PEcAn.all
gains new functionpecan_version
, which reports for each PEcAn package the version that was provided with this release and the version that is currently installed. Use it in scripts to record your system state for reproducibility, or for debugging. -
Added a new function
unit_is_parseable
in PEcAn.utils to replaceudunits2::ud.is.parseable
. (#3002; @nanu1605) -
Initial LDNDC model coupling
-
Added optional
process_partial
argument tomodel2netcdf.ED2()
to allow it to process existing output from failed runs. -
Added litter_mass_content_of_water to standard_vars table and model2netcdf.SIPNET
-
Added all SIPNET state variables to read_restart and write_restart
-
Added Observation preparation functions into the SDA workflow, which supports AGB, LAI, Soil Carbon, and Soil moisture.
-
Added an optional
pfts
argument toPEcAn.uncertainty::run.sensitivity.analysis()
so that sensitivity analysis and variance decomposition can be run on a subset of PFTs defined insettings
if desired (#3155). -
Added new features of the SDA function including: 1) allow user-defined free-run mode;
- allow user-defined parallel mode for the qsub submission; 3) allow user-defined email option to report the progress.
PEcAnAssimSequential::GET.MultiSite()
now supports the parallelization of multi-chain MCMC sampling with the fully randomized inits function.- Added the new feature of the block-based SDA workflow, which supports the parallel computation.
- Added new SDA workflow for the 342 North America anchor sites.
- Added new feature of preparing initial conditions for MODIS LAI, AGB, ISCN SOC, and soil moisture across NA anchor sites.
- Added GEDI AGB preparation workflow.
- Added new feature of downloading datasets from the NASA DAAC ORNL database.
- Extended downscale function and created 'downscale_hrly' so that it handles more frequent data
- Added 'aggregate' as a new feature for downscaled data
- Replaced the broken ameriflux download pipeline with the new amerifluxr package's function.
- Fix broken build caused by BioCro updates #2925
- rstudio was not working behind traefik.
- plots now work in docker containers
- when specifying diferent rstudio user, dev setup would mount pecan folder in wrong path.
- fixed the pagination error in the next_page field of the workflows, inputs and runs Rest API.
- bugs in
model2ncdf.ED2()
that were causing it to both error and also only convert data for a single PFT fixed (#1329, #2974, #2981) - Code cleanup in PEcAn.MA to protect against global namespace pollution (#2965, #2973; @nanu1605)
- Fixed vignettes and cleaned up internal warnings in PEcAn.DB (#2966, #2971; @nanu1605).
- Updated unit conversions throughout PEcAn to use the
units
R package instead of the unmaintainedudunits2
. Note that bothunits
andudunits2
interface with the same underlying compiled code, so theudunits2
system library is still required. (#2989; @nanu1605) - Occasionally some run directories were not getting copied over to remote hosts. This should be fixed now (#3025)
- Fixed a bug with ED2 where ED2IN tags supplied in
settings
that were not in the ED2IN template file were not getting added to ED2IN config files (#3034, #3033) - Fixed a bug where warnings were printed for file paths on remote servers even when they did exist (#3020)
- Fixed bug in model2netcdf.SIPNET that caused LE to be overestimaed 10^3 (#3036)
- Added an updated ED2IN template file,
models/ed/inst/ED2IN.r2.2.0.github
, to reflect new variables in the development version of ED2 PEcAn.data.land::gSSURGO.Query
has been updated to work again after changes to the gSSURGO API.PEcAn.settings::read.settings()
now prints a warning when falling back on default"pecan.xml"
if the namedinputfile
doesn't exist.- fqdn() can access hostname on Windows (#3044 fixed by #3058)
- write.config.xml.ED2() wasn't using the tag in settings correctly (#3080)
- runModule.get.trait.data() now correctly respects the settings$database$bety$write setting (#2968)
- Fixed a bug in
model2netcdf.ed2()
where .nc file connections were being closed multiple times, printing warnings (#3078) - Fixed a bug causing the model2netcdf.ED2() step in jobs.sh to be incorrectly written (#3075)
- Fixed a bug where
plant_min_temp
trait value wasn't being converted from ºC to K when writing config file for ED2 (#3110) - Fixed a bug in
PEcAn.ED2::read_E_files()
affectingPEcAn.ED2::model2netcdf.ED2()
that resulted in incorrect calculations (#3126) - Fixed a bug in
PEcAn.utils::ud_convert()
where it failed with objects of class "difftime" introduced by refactoring to use theunits
package instead ofudunits
(#3012) - The propagation of aqq and bqq for the SINGLE Q type has been corrected.
- The issue where the indirect constraints will be increase with the increase of the covariance sizes.
- Updated URL for MERRA downloads (#2888)
- The default build of PEcAn now uses R 4.1. PEcAn is also tested daily on R 4.2 and weekly on R-devel. R 4.0 and older are no longer tested and will probably not work.
- Some changes have been made to the docker-compose file. Check your .env file to
see if you need to change any of these:
- TRAEFIK_HOST is now TRAEFIK_HOSTNAME without the
Host:
and;
, for example if you haveTRAEFIK_HOST=Host:pecan.example.com;
you will need to change this toTRAEFIK_HOST=pecan.example.com
. - TRAEFIK_IPFILTER is no longer used, and should be removed.
- TRAEFIK_HTTP_PORT now defaults to port 80
- TRAEFIK_HTTPS_PORT now defaults to port 443
- TRAEFIK_ACME_ENABLE is no longer used. If you want to use https you will need to add
docker-compose.https.yml
to your command line. You can use the scriptcompose.sh
to start PEcAn with https. - TRAEFIK_HTTPS_OPTIONS is no longer used, this is the default when you use https.
- TRAEFIK_HTTP_REDIRECT is no longer used, this is the default when you use https.
- TRAEFIK_HOST is now TRAEFIK_HOSTNAME without the
- Updated Dockerfile for sipnet/maespa/template to use pecan/models:tag to build.
- The
yr
andyfiles
arguments ofPEcAn.ED2::read_E_files()
are no longer used and the simulation date is extracted from the names of the .h5 files output by ED2. - DDBH (change in DBH over time) is no longer extracted and summarized from
monthly -E- files by
PEcAn.ED2::model2netcdf.ED2()
. We are not sure it makes sense to summarize this variable across cohorts of different sizes. PEcAn.SIPNET::model2netcdf.SIPNET
can now export full year nc files by using the cdo_setup argument in the template job file. In detail, people will need to specify `cdosetup = "module load cdo/2.0.6"`` in the host section. More details are in the Create_Multi_settings.R script. (#3052)PEcAn.settings::read.settings()
now strips comments so HTML style comments (e.g.<!-- a comment -->
) are now allowed in pecan.xml filesPEcAn.logger::setLevel()
now invisibly returns the previously set logger level- Warning messages for
model2netcdf.ed2()
coming fromncdf4::ncvar_put()
now are prepended with the variable name for easier debugging (#3078) - Database connections consistently use
DBI::dbConnect
instead of the deprecateddplyr::src_postgres
(#2881). This change should be invisible to most users, but it involved converting a lot of internal variables frombety$con
tocon
. If you see errors involving these symbols it means we missed a place, so please report them as bugs. PEcAn.utils::download.url
argumentretry404
is now renamed toretry
and now functions as intended (it was being ignored completely before).- We have begun the process of relicensing the PEcAn packages from the previous NCSA license to BSD-3, with the consent of all contributors. PEcAn.logger is now distributed as BSD-3; others will be changed as their authors sign off.
- Skipped ICOS and MERRA download tests when running in github actions
- Converted .zenodo.json to CITATION.cff
- Using traefik 2.5 instead of 1.7
- api is now open by default (was auth required in the past)
- Installation instructions updated in documentation
- PEcAn.assim.sequential is renamed to PEcAnAssimSequential
convert.input
is moved from PEcAn.utils to PEcAn.DB and renamed asconvert_input
. This was needed to resolve a cyclic dependency between PEcAn.DB and PEcAn.utils. (#3026; @nanu1605)- Internal changes to keep up to date with tidyselect v1.2.0
- The
PEcAn.utils::download.file()
function has now been renamed toPEcAn.utils::download_file()
- The
regrid()
andgrid2netcdf()
function fromPEcAn.utils
have been moved toPEcAn.data.remote
package. - Web is now build using PHP 8 since PHP 7 is EOL.
- the check image (used in kubernetes) is removed, please use ncsa/checks instead.
- Unused (and apparently long-broken) function
PEcAn.data.land::find.land
has been removed. - No longer building r136 sipnet docker image.
This is a major change:
- Newer version of R
- Ubuntu 20.04 instead of Debian.
- Removed sender.py and now allow the submission of workflows from inside the rstudio container.
- Use TRAEFIK_FRONTEND_RULE in compose file and TRAEFIK_HOST in env.example, using TRAEFIK_HOST everywhere now. Make sure TRAEFIK_HOST is used in .env
- Use initial biomass pools for Sorghum and Setaria #2495, #2496
- PEcAn.DB::betyConnect() is now smarter, and will try to use either config.php or environment variables to create a connection. It has switched to use db.open helper function (#2632).
- PEcAn.utils::tranformstats() assumed the statistic names column of its input was a factor. It now accepts character too, and returns the same class given as input (#2545).
- fixed and added tests for
get.rh
function in PEcAn.data.atmosphere - Invalid .zenodo.json that broke automatic archiving on Zenodo (b56ef53)
- Fixed a filehandle leak in multi-year runs of PEcAn.BIOCRO::met2model.BIOCRO: It was only closing the last input file it processed (#2485).
- Fix issue with cruncep download: use netcdf subset (ncss) method instead of opendap (#2424).
- The
parse
option toPEcAn.utils::read_web_config
had no effect whenexpand
was TRUE (#2421). - Fixed a typo that made
PEcAn.DB::symmetric_setdiff
falsely report no differences (#2428). - sipnet2netcdf will now only extract the data for the year requested (#2187)
- Fixed Priors vignette (#2439).
- When building sipnet model would not set correct model version
- Update pecan/depends docker image to have latest Roxygen and devtools.
- Update ED docker build, will now build version 2.2.0 and git
- Do not override meta-analysis settings random-effects = FALSE PecanProject#2625
- model2netcdf.ED2 no longer detecting which varibles names
-T-
files have based on ED2 version (#2623) - Changed docker-compose.yml to use user & group IDs of the operating system user (#2572)
- gSSURGO file download now added as inputs into BETY through extract_soil_gssurgo (#2666)
- ensure Tleaf converted to K for temperature corrections in PEcAn.photosynthesis::fitA (#2726)
- fix bug in summarize.result to output stat, which is needed to turn on RE in the meta-analysis (#2753)
- ensure that control treatments always receives the random effect index of 1; rename madata.Rdata to jagged.data.Rdata and include database ids and names useful for calculating parameter estimates by treatment (#2756)
- ensure that existing meta-analysis results can be used for pfts with cultivars (#2761)
- Major code cleanup by GSoC student @moki1202, fixing many check warnings across 10 packages (#2771, #2773, #2774, #2775, #2805, #2815, #2826, #2830, #2857)
- Removed deprecated mstmip_vars and mstmip_local; now all functions use the combined standard_vars.csv
- RabbitMQ is set to be 3.8 since the 3.9 version can no longer be configured with environment variables.
- Removed old api, now split into rpecanapi and apps/api.
- Replaced
tmvtnorm
package withTruncatedNormal
package for speed up per #2621. - Continuous integration changes: Added experimental GitHub Actions CI builds (#2544), streamlined Travis CI builds, added a fourth R version (second-newest old release; currently R 3.5) to Travis test matrix (#2592).
- Functions that update database entries no longer pass
created_at
orupdated_at
timestamps. The database now updates these itself and ensures they are consistently in UTC (#1083). PEcAn.DB::insert_table
now usesDBI::dbAppendTable
internally instead of manually constructed SQL (#2552).- Rebuilt documentation using Roxygen 7. Readers get nicer formatting of usage sections, writers get more flexible behavior when inheriting parameters and less hassle when maintaining namespaces (#2524).
- Renamed functions that looked like S3 methods but were not:
- PEcAn.priors:
plot.posterior.density
->plot_posterior.density
,plot.prior.density
->plot_prior.density
,plot.trait
->plot_trait
(#2439). - PEcAn.visualization:
plot.netcdf
->plot_netcdf
(#2526). - PEcAn.assim.sequential:
Remote.Sync.launcher
->Remote_Sync_launcher
(#2652)
- PEcAn.priors:
- Stricter package checking:
make check
and CI builds will now fail ifR CMD check
returns any ERRORs or any "newly-added" WARNINGs or NOTEs. "Newly-added" is determined by strict string comparison against a check result saved 2019-09-03; messages that exist in the reference result do not break the build but will be fixed as time allows in future refactorings (#2404). - No longer writing an arbitrary num for each PFT, this was breaking ED runs potentially.
- The pecan/data container has no longer hardcoded path for postgres
- PEcAn.JULES: Removed dependency on
ncdf4.helpers
package, which has been removed from CRAN (#2511). - data.remote: Arguments to the function
call_MODIS()
have been changed (issue #2519). - Changed precipitaion downscale in
PEcAn.data.atmosphere::download.NOAA_GEFS_downscale
. Precipitation was being downscaled via a spline which was causing fake rain events. Instead the 6 hr precipitation flux values from GEFS are preserved with 0's filling in the hours between. - Changed
dbfile.input.insert
to work with inputs (i.e soils) that don't have start and end dates associated with them - Default behavior for
stop_on_error
is nowTRUE
for non-ensemble runs; i.e., workflows that run only one model simulation (or omit theensemble
XML group altogether) will fail if the model run fails. For ensemble runs, the old behavior is preserved; i.e., workflows will continue even if one of the model runs failed. This behavior can also be manually controlled by setting the newrun -> stop_on_error
XML tag toTRUE
orFALSE
. - Several functions have been moved out of
PEcAn.utils
into other packages (#2830, #2857):ensemble.filename
,get.results
,runModule.get.results
,read.sa.output
,sensitivity.filename
, andwrite.sa.configs
have been moved toPEcAn.uncertainty
.create.base.plot
,dhist
,plot_data
andtheme_border
have been moved toPEcAn.visualizaton
.
- BioCro can export Aboveground Biomass (#2790)
- Functionality for generating the same ensemble parameter sets with randtoolbox functions.
- Functionality for joint sampling from the posteriors using randtoolbox functions.
- BASGRA-SDA couplers.
- Now creates docker images during a PR, when merged it will push them to docker hub and github packages
- New functionality to the PEcAn API to GET information about PFTs, formats & sites, submit workflows in XML or JSON formats & download relevant inputs/outputs/files related to runs & workflows (#2674 #2665 #2662 #2655)
- Functions to send/receive messages to/from rabbitmq.
- Documentation in DEV-INTRO.md on development in a docker environment (#2553)
- PEcAn API that can be used to talk to PEcAn servers. Endpoints to GET the details about the server that user is talking to, PEcAn models, workflows & runs. Authetication enabled. (#2631)
- New versioned ED2IN template: ED2IN.2.2.0 (#2143) (replaces ED2IN.git)
- model_info.json and Dockerfile to template (#2567)
- Dockerize BASGRA_N model.
- Basic coupling for models BASGRA_N and STICS.
- PEcAn.priors now exports functions
priorfig
andplot_densities
(#2439). - Models monitoring container for Docker now shows a webpage with models it has seen
- Added small container to check if certain services are up, used as initi container for kubernetes
- Documentation how to run ED using singularity
- PEcAn.DB gains new function
get_postgres_envvars
, which tries to look up connection parameters from Postgres environment variables (if they are set) and return them as a list ready to be passed todb.open
. It should be especially useful when writing tests that need to run on systems with many different database configurations (#2541). - New shiny application to show database synchronization status (shiny/dbsync)
- Ability to run with MERRA-2 meteorology (reanalysis product based on GEOS-5 model)
- Ability to run with ICOS Ecosystem products
- Removed travis integration
- Removed the sugarcane and db folders from web, this removes the simple DB editor in the web folder. (#2532)
- Removed ED2IN.git (#2599) 'definitely going to break things for people' - but they can still use PEcAn <=1.7.1
- Database maintenance scripts
vacuum.bety.sh
andreindex.bety.sh
have been moved to the BeTY database repository (#2563). - Scripts
dump.pgsql.sh
anddump.mysql.sh
have been deleted. See the "BeTY database administration" chapter of the PEcAn documentation for current recommendations (#2563). - Old dependency management scripts
check.dependencies.sh
,update.dependencies.sh
, andinstall_deps.R
have been deleted. Usegenerate_dependencies.R
and the automatic dependency handling built intomake install
instead (#2563). - Deprecated copies of functions previously moved to other packages have been removed from
PEcAn.utils
(#2830):do_conversions
andrunModule.run.write.configs
,run.write.configs
. These are now inPEcAn.workflow
get.ensemble.samples
,read.ensemble.output
,write.ensemble.configs
. These are now inPEcAn.uncertainty
logger.debug
,logger.error
,logger.getLevel
,logger.info
,logger.setLevel
,logger.setOutputFile
,logger.setQuitOnSevere
,logger.setWidth
,logger.severe
,logger.warn
. These are now inPEcAn.logger
- Replace deprecated
rlang::UQ
syntax with the recommended!!
- Explicitly use
PEcAn.uncertainty::read.ensemble.output
inPEcAn.utils::get.results
. Otherwise, it would sometimes use the deprecatedPEcAn.utils::read.ensemble.output
version. PEcAn.ED2::met2model.ED2
now skips processing of years for which all output files are already present (unlessoverwrite = TRUE
). This prevents a lot of unnecessary work when extending an existing ED met record.- Fixed issue that prevented modellauncher from working properly #2262
- Use explicit namespacing (
package::function
) throughoutPEcAn.meta.analysis
. Otherwise, many of these functions would fail when trying to run a meta-analysis outside of the PEcAn workflow (i.e. without having loaded the packages first) (#2351). - Standardize how
PEcAn.DB
tests create database connections, and make sure tests work with both the newerPostgres
and olderPostgreSQL
drivers (#2351). - Meta-analysis = "AUTO" now correctly skips the meta analysis if the PFT definition has not changed (#1217).
- Replace deprecated
rlang::UQ
syntax with the recommended!!
- Explicitly use
PEcAn.uncertainty::read.ensemble.output
inPEcAn.utils::get.results
. Otherwise, it would sometimes use the deprecatedPEcAn.utils::read.ensemble.output
version. - History page would not pass the hostname parameter when showing a running workflow, this would result in the running page showing an error.
- Updated modules/rtm PROSPECT docs
- Updated models/sipnet/R/model2netcdf.SIPNET.R to address issues in PR #2254
- Improved testing (#2281). Automatic Travis CI builds of PEcAn on are now run using three versions of R in parallel. This should mean fewer issues with new releases and better backwards compatibility, but note that we still only guarantee full compatibility with the current release version of R. The tested versions are:
release
, the current public release of R (currently R 3.5). Build failures in this version are fixed before merging the change that caused them. When we say PEcAn is fully tested and working, this is the build we mean.devel
, the newest available development build of R. We will fix issues with this version before the next major R release.oldrel
, the previous major release of R (currently R 3.4). We will fix issues with this version as time allows, but we do not guarantee that it will stay compatible.
- Reverting back from PR (#2137) to fix issues with MAAT wrappers.
- Moved docker files for models into model specific folder, for example Dockerfile for sipnet now is in models/sipnet/Dockerfile.
PEcAn.utils
:- Remove, or make "Suggests", a bunch of relatively underutilized R package dependencies.
- Add template for documentation issues and add button to edit book.
- Conditionally skip unit tests for downloading raw met data or querying the database when the required remote connection is not available.
- Reorganization of docker folder
- All dockerfiles now live in their own folder
scripts/generate_dependencies.R
is now used to generate dependencies for make and docker
- In
PEcAn.DB::get.trait.data
, iftrait.names
isNULL
or missing, use the traits for which at least one prior is available among the input list of PFTs. (Previously, we were getting this from thePEcAn.utils::trait.dictionary
, which we are trying to deprecate #1747). (#2351) - Cleanup and improve logging and code readability in parts of
PEcAn.DB
related to getting trait data, including replacing many manual database queries withdplyr
calls. - Reorganization of PEcAn documentation in accordance with isue #2253.
- SIPNET now is installed from the source code managed in git
- Meta analysis functionality to not use greenhouse data.
- Dockerize the BioCro model.
- Added PRO4SAIL-D model, using existing 4SAIL src and coupling with PROSPECT-D Fortran code
- Models will not advertise themselvs, so no need to register them a-priori with the database #2158
- Added simple Docker container to show all containers that are available (http://localhost:8000/monitor/). This will also take care of registering the models with the BETY database.
- Added unit tests for
met2model.<MODEL>
functions for most models. - Added MAESPA model to docker build
- PEcAn has more robust support for
RPostgres::Postgres
backend. The backend is officially supported bydb.query
, and basic workflows run top-to-bottom with thePostgres
backend. However,RPostgreSQL
is still the default until we do more robust testing of all modules. PEcAn.DB::db.query
now optionally supports prepared statements (#395).- New function
PEcAn.DB::query_priors
that expands the functionality ofquery.priors
by (1) accepting PFTs by name or ID and (2) allowing the user to request all possible combinations of the input PFTs and traits (i.e.expand.grid(pfts, traits)
) or just the pairwise combinations (i.e.pft[1]-trait[1], pft[2]-trait[2]
). This function also comes with more robust error handling and a set of unit tests (#2351). - New function
PEcAn.DB::query_pfts
for finding PFT IDs and types from the PFT name and (optionally) model type (#2351). - Run Travis integration tests with both Postgres and PostgreSQL drivers (#2351).
- New function
PEcAn.utils::load_local
readsRdata
files into a named list (instead of into the current environment).
- Removed unused function
PEcAn.visualization::points2county
, thus removing many indirect dependencies by no longer importing theearth
package. - Removed package
PEcAn.data.mining
from the Make build. It can still be installed directly from R if desired, but is skipped by default because it is in early development, does not yet export any functions, and creates a dependency on the (large, often annoying to install) ImageMagick library. - Fully deprecate support for
MySQL
database driver. Now, onlyPostgreSQL
(and, experimentally,RPostgres
) are supported. With this, removeRMySQL
dependency in several places.
- Fixed minor bug in query.trait.data related to stem respiration covariates (PecanProject#2269)
- Removed google maps and replaced with leaflet #2105
- Added ability to add a new site from web interface
- Small updated to models/ed/R/model2netcdf.ED2.R to fix issue realted to writing the time_bounds time attribute. Needed to add a check for which file types exitst (e.g. -E-, -T-, etc) and only write the appropriate attribute(s).
- Fixed error in
read_web_config
which would filter out all variables. - Docker:
- Make sure web interface posts RabbitMQ messages even after editing files (fixes #2151)
- Can specify name of docker cluster using PECAN_FQDN and PECAN_NAME (fixes #2128)
- Fixed issue where setting username/password for rabbitmq would break web submit (fixes #2185)
- data image only registers sipnet and ed, has all data pre-downloaded
- ED2:
- Fix processing of
ed2in_tags
from XML. Now numbers (e.g.<TRAIT_PLASTICITY_SCHEME>0</TRAIT_PLASTICITY_SCHEME>
) and numeric vectors (e.g.<INCLUDE_THESE_PFT>9,10,11,12</INCLUDE_THESE_PFT>
) are correctly written to ED2IN without quotes.
- Fix processing of
- NEW FEATURE: PEcAn R API (PR #2192). Features include:
- Modified
docker/receiver.py
to accept apecan_json
object containing a JSON version of the PEcAn settings. Can now Use RabbitMQ HTTP API (called from R withhttr
) to send a settings list (functionsubmit_workflow
) - Helper functions to make it easier to build the settings object, and to register a new workflow.
- Helper functions for tracking workflow status
- Helper functions for accessing workflow output files through THREDDS. All files are accessible through
fileServer
(basically, direct download), and NetCDF files are also readable through OpenDAP.- THREDDS catalog filter has been removed, so that all workflow outputs are available to THREDDS.
- Added another
datasetScan
to the THREDDS catalog to search fordbfiles
. Now, model inputs (e.g. meteorology files) are accessible via THREDDS as well.
- Modified
- Lots of new documentation for running PEcAn using Docker
- Added Docker container with documentation #2160
- Download method (
method
) argument fordata.atmosphere::download.CRUNCEP
, which defaults toopendap
(as it was), but can be switched to the slower but more robust NetCDF subset (ncss
). - In
download.CRUNCEP
, check target coordinate against the land-sea mask. If sea, pick the nearest land pixel within 1 degree of target. This facilitates doing runs at coastal sites that may get masked out. - Added a prototype of the THREDDS data server (TDS) to the PEcAn Docker stack.
- Added portainer to the PEcAn Docker stack to easily look at running containers.
- Added ability to specify short name for a host (hostlist->displayname)
- Added
PEcAn.logger::print2string
function -- capture the output - Cleanup and enhancements to
PEcAn.utils::read.output
:- Pass
variables = NULL
to try to read all variables from file - New argument
ncfiles
for passing file names explicitly (useful for remote file access wherelist.files
doesn't work; e.g. THREDDS) - Variable summary stats are only calculated if new argument
print_summary
isTRUE
(default). Summary is rendered nicely as a variable x statistic matrix. - New argument
verbose
(default =FALSE
) to print out (logger.debug
) at every variable and year - Minor code cleanup for style (spacing, long lines, etc.) and logic (replace several
else
statements with early returns)
- Pass
- ED2:
- Add ability to pass arbitrary arguments to the ED binary through the
pecan.xml
(#2183; fixes #2146). - Add new
model
tag<all_pfts>
. If "false" (default), set ED2IN'sINCLUDE_THESE_PFT
to only PFTs explicitly configured through PEcAn. If "true", use all 17 of ED2's PFTs. - Add new
model
tag<barebones_ed2in>
. If "true", only write ED2IN tags, and do not include comment annotations. If "false" (default), try to transfer comments from ED2IN template to target ED2IN. Because of comments are written by matching line numbers, leaving this as "false" can lead to unexpected results whenever<ed2in_tags>
contains tags missing from theED2IN
template. - Add some additional documentation for ED2
pecan.xml
tags.
- Add ability to pass arbitrary arguments to the ED binary through the
- Updated MAAT model model2netcdf.MAAT.R to reflect general changes to the netCDF time variable in PEcAn standard output. Added time_bounds attribute and variable. Updated inst/ scripts for created MAAT drivers from NGEE-Tropics met sources (WIP)
PEcAn.utils::do_conversions
has been moved toPEcAn.workflow::do_conversions
.PEcAn.utils::do_conversions
still works for now with a warning, but is deprecated and will be removed in the future.- Docker:
- Change base image for R code from
r-base
torocker/tidyverse:3.5.1
. This (1) saves build time (because many R packages and system dependencies are pre-installed), and (2) enhances reproducibility (because of the strict versioning rules of therocker
packages) - Re-factor web interface RabbitMQ create connections and post messages into their own PHP functions.
- Change base image for R code from
- Updated model2netcdf.SIPNET() to address issue #2094. Revised netCDF time to be from 0-364./365. (if leap) so time would be properly parsed by R and python (cf tools)
- Fixed output time variable in models/ed/R/model2netcdf.ED2.R to provide correct fractional DOY
- Running tests for PEcAn.settings package no longer leaves empty temp directories in test folder (#2075)
- Fixed issue #2064 which sends one met path to write.sa.config.
PEcAn.data.land::soil_params
now accepts any 2 out of 3 texture components as documented, and correctly converts percentages to proportion (#2043).- Added missing ncdf4 library calls in model2netcdf.JULES
- Added download.LandTrendr.AGB and extract.LandTrendr.AGB functions in modules/data.remote
- Added new time_bounds variable in SIPNET output netCDF files to define the exact start time and end time for each model timestep.
- Updated models/ed/R/model2netcdf.ED2.R to include new time_bounds variable
- Added a first vignette to models/maat with the plan to add more examples
- Added scaling to documentation
- Removed unused PEcAn.utils::counter(), which existed to increment a global variable that is also unused.
- Updated models/fates/R/model2netcdf.FATES.R to increase supported model outputs. Added longname to nc file variables
- Updated models/dalec/R/model2netcdf.DALEC.R to add time_bounds variable
- Updated models/maat/R/write.config.MAAT.R to improve flow, remove bugs, and to work with the release version of the MAAT model.
- Minor update to modules/data.atmosphere/R/met2CF.csv.R to include recursive=TRUE for outfolder. Seemed to work better
- Updated models/maat/R/met2model.MAAT.R to include additional output variables, fix a bug, and conduct overall cleanup. Updated docs
- Updated models/maat/R/model2netcdf.MAAT.R to work with the release version of the MAAT model. Other small MAAT wrapper code cleanup
- Small change to modules/data.atmosphere/R/download.NARR_site.R to set parallel=TRUE to match documentation and sub-function calls
-
Fixed issue #1939 which corrects output time vector for FATES output
-
Update to read.output to look for and read only PEcAn formatted .nc output based on the pecan standard filename format of YYYY.nc. Solves issues with models such as FATES and dvm-dos-tem where the original model output is also in .nc file format and was not ignored by read.output, causing errors with output parsing and plotting with Shiny. Removed deprecated function convert.outputs
-
PEcAn.data.atmosphere:
- download.Geostreams is pickier about formatting start/end datess, for fewer surprises in result timestamps
- Fixed swapped lat/lon in met2CF.Geostreams
- download.GFDL now records reference date in time units field, as required by the CF met standard
- Reduced download.GFDL network load by not preloading dimension data
- Fixed spurious
No geonamesUsername set
warning by updating geonames package to development version
-
ED:
- Change all history parameter files to have zero storage respiration
-
missing_port_bety
-
dataone_download.R:
- Added functionality that spoofs our user address to prevent authentication errors with downloading files via wget.
-
Could not specify the port for BETY in config.php. Can now use
db_bety_port
to specify port.- Added functionality that spoofs our user address to prevent authentication errors with downloading files via wget.
-
Data_Ingest_App:
- use
updateSelectizeInput
to populateselectizeInput
with choices from BETYdb. This instantly loads the inputfields where other methods take minutes to load.
- use
-
sda.enkf function inside the
PEcAn.assim.sequential
package was replaced with the refactored version, while the original sda function can be found in the same package with the name of sda.enkf.original. -
PEcAn.undertainty gains one new function (input.ens.gen) and three functions moved from PEcAn.utils (see "Changed" below)
-
IC workflow now has functionality to generate ensembles.
-
You can now generate ensembles for parameters and met separatly and using different methods.
-
Soil process is now capable of reading in soil data from gSSURGO databse.
-
In modules/rtm new function foursail() to interface with the 4SAIL Fortran code. To enable the use of 4SAIL with any version of PROSPECT (i.e. 4, 5, 5b, D) and custom soil/background reflectance inputs
-
Shiny/Dependency explorer
-
Explore the interdependencies between pecan packages/functions.
-
From history you can now select an old run and show the curl command to re-execute this run. This only works with runs submitted through web interface right now.
-
Experimental support for docker (#1028)
-
dataone_download.R:
- Added progress messages to indicate that the function is working during longer downloads via PEcAn logger.
- Store path to downloaded data as newdir_D1 so that the download app can call this path.
-
shiny/Data-Ingest
- Download data from DataONE to a temporary directory, display the contents of that directory, and then move files from the temporary directory to dbfiles
- Upload files from local machines (via drag and drop on some browsers), display files, and then move these files to a directory in dbfiles.
- Spinner displays when class "shiny-busy" is invoked during the dataONE download process. In this way, users can be sure that the app is live and is processing their request.
- Users can now input the name of the destination directory that they wish to create within dbfiles.
- Updated Travis.yml to include librdf0-dev so that it can download redland, datapack, and dataone.
- Added Data-Ingest UI (inputs, dbfiles, and formats record UI and some basic server side functionality are online)
- Modularized input record, format record, and dbfiles record into shiny modules. This allows the app to be greatly simplified to two, single-page workflows. These functions can also be used "plug-and-play" style elsewhere in PEcAn shiny apps to load in data.
- Replaced modularized input, format and dbfiles records with static "Ingest Workflow" page. On this page, the user can select either importing from dataONE or Uploading from local files. If creating a new format is necessary, the user can click "Create New Format" and a dropdown menu will walk them through this process.
- Selected files now autofill name value in input record workflow
- Store inputs and formats in the global environment
- "Test BETY" button allows users create a record in BETY with
dbfile.input.insert
- Added
input.format.vars
to query the BETYdb - New File:
helper.R
- New Function:
auto.name.directory
This function uses the format_name and the site_id for a given input to create a directory name in the style of other dbfiles names. Next Step
buttons progress workflow programmatically- New formats-variables UI allows user to create a table of formats-variable records before completing the ingest process
- Two separate complete Ingest buttons are rendered at the end of the workflow to trigger actions specific to local upload or dataONE download workflows. These buttons are rendered programmatically depending on the state of the selectInputMethod radio button.
- Converted time inputs to properly merge startDate and startTime with EndDate and EndTime so they can be inserted into the start_date and end_date columns in BETYdb.
- Error handling introduced using
shinytoastr
package - DESCRIPTION:
Depends
: PEcAn.visualization, shinytoastr, shinyWidgets, shinyjs
-
pecan/base/db
- New File:
input.format.vars.R
. This function registers the format and the (optional) formats_variables record usingdb_merge_into
.
- New File:
-
data.atmosphere
check_met_input_file
-- Check that target met file conforms to PEcAn meteorology data standard.get_cf_variables_table
-- Retrieve CF variables table as adata.frame
-
docker:
- Added updated docker container builds
- Use docker.sh to create docker images
- Use release.sh to push released images to push to docker registry (hub.docker.com by default)
- Create pecan/depends docker image that holds all PEcAn dependencies
- Needs to build seperatly, not part of the docker.sh build process to speed things up
- Build using
(cd docker ; docker build -t pecan/depends:latest -f Dockerfile.depends .)
- docker-compose.yml file to bring up full PEcAn stack using docker
- First time to start requires to install BETY database (see documentation)
- SIPNET docker image which works with PEcAn docker stack
- Data container that will download and install demo data in /data folder
- Added updated docker container builds
- pecan.worldmap function no longer used, dropped from visualization package
- shiny/Data-Ingest/DESCRIPTION no longer
DEPENDS
onshinyFiles
orshinycssloaders
- PEcAn.utils functions run.write.configs and runModule.run.write.configs have been moved to PEcAn.workflow. The versions in PEcAn.utils are deprecated and will be removed in a future release.
- Fixed Git instructions and remote execution instructions.
- Five functions from PEcAn.utils functions have been moved to other packages. The versions in PEcAn.utils are deprecated, will not be updated with any new features, and will be removed in a future release.
- run.write.configs and runModule.run.write.configs have been moved to PEcAn.workflow
- read.ensemble.output, get.ensemble.samples and write.ensemble.configs have been moved to PEcAn.uncertainty
- Change the way packages are checked for and called in SHINY apps. DESCRIPTION files in SHINY apps are not the place to declare pacakge dpendencies.
- read.output now accepts date-times for start.year and end.year argument (#1887)
- read.output no longer assumes timestamps are in days since the beginning of the year
- Fixed xss issue in setup folder, now require users to login before accessing the setup folder scripts.
- Fixed issue where in website not all sites are shown #1884
- Fixed status page, should now be run from cronjob, creates static page
- Fixed bug that overwrote remote met file paths with local file paths
- PEcAnRTM:
- Remove non-portable extensions from
src/Makevars
. This should make the package Windows-compatible.
- Remove non-portable extensions from
- Fixed BrownDog shiny issues of removing site without geometry; fixing sites.length==0; removing old map markers when change input$type; fixing agreement bug when change input$type
- Functionality to read pft-specific outputs and to run sensitivity analysis on pft-specific outputs.
- Ability to allow for insecure sync using -k flag
- Added information on how to join slack
- PEcAn.BIOCRO now supports BioCro version 1.0. BioCro 0.9x models should still work as before, but note parameter and weather format changes in the
Changed
section below. - Added new model package (PEcAn.dvmdostem) and initial wrappers for integration of the DVM-DOS-TEM model and tested.
- PEcAn now supports PFTs whose members are cultivars rather than species, and will automatically restrict the meta-analysis to matching records, e.g. runs with a PFT containing only Panicum virgatum 'Cave-In-Rock' will not use observations from Panicum virgatum 'Alamo', but a PFT containing the whole species will use observations from both. However, there is not yet any BETYdb interface to create cultivar-PFTs other than manual SQL.
- New base package
PEcAn.workflow
, for functions used to perform the each major step of the analysis. These were previously scattered in other base packages. - Added PR review time estimate to PR template
- New set of
PEcAn.logger
functions similar tostopifnot
to facilitate assertive programming:severeifnot
,errorifnot
,warnifnot
,infoifnot
,debugifnot
- PEcAnRTM:
- Exposed PROSPECT absorption coefficients and
gpm()
function ("generalized plate model"), facilitating experimentation with different absorption coefficients - Added
spectra
S3 class and methods for subsetting (e.g.myspec[[400:700]]
), plotting (plot()
andmatplot()
), and combining spectra by wavelength. - Added
resample
functions for quickly resampling spectra (and, more generally, vectors and functions) to different dimensions. EDR
API has been revised. Setup has been refactored from EDR via newsetup_edr
function, which relies on the ED utilities (seePEcAn.ED2
below), and theEDR
function now focuses only on execution. Also, added newparams2edr
function to make it easy to convert complex EDR parameters list to flat parameter vector required byinvert_bt
(or other optimization functions).
- Exposed PROSPECT absorption coefficients and
- PEcAn.ED2:
- New set of utilities for working with ED meteorology and vegetation inputs, and the ED2IN file. Existing PEcAn code has been revised to use these utilities.
- PEcAn.data.atmosphere:
- New utilities for efficiently downloading NARR time series using THREDDS/OpenDAP
- Removed deprecated copies of PEcAn.utils::SafeList, PEcAn.utils::listToXml (both moved to PEcAn.settings in v 1.5.2), and PEcAn.utils::fqdn (moved to PEcAn.remote in 1.5.2). This fixes the masses of deprecation warnings in otherwise normal run logs (#1719).
- Updated wrappers for FATES model to work with recent CLM5 release. Updated write.config, job.template, and other associated files to work with CLM5 inputs and met drivers
- Updated model2netcdf.MAAT to use ncdf4::ncvar_def to define netCDF variables
- Fixed an remote code execution discovered by NCSA security team.
- Column name changes for newly generated biocromet csvs:
SolarR
is nowsolar
andWS
is nowwindspeed
. Previously generated met files with the old names will still work for BioCro 0.9 runs, but will need to be renamed before using them with BioCro 1.0. - write.configs.BIOCRO now requires a model version specification so that it can format parameters to match your version of BioCro. Set it in your Bety model record or in the model$revision field of your pecan.xml.
- When using BioCro 1.0 and no parameter file is given, PEcAn will make an attempt to find default parameters for your genus in the datasets provided by the BioCro package. Note that the default parameter files provided in
models/biocro/inst/extdata/defaults
will not work when using BioCro 1.0. - Added documentation how to submit a run from the command line
- Updated models/maat to provide support for latest model code updates
- PEcAn.DB function
rename.jags.columns
renamed torename_jags_columns
to avoid conflict with S3 method naming conventions - Replaced
rhdf5
library withhdf5r
, a more modern alternative that is available on CRAN. - PEcAn.DB function
runModule.get.trait.data
has been moved to the new PEcAn.workflow package to avoid a circular package dependency between PEcAn.DB and PEcAn.settings. - Major documentation refactoring. The documentation names are now directly tied to the order in which they are rendered, and all
Rmd
files in all subdirectories of the documentation source are rendered by default. The overall structure of the documentation has been revised for clarity and cohesiveness. - Edited met2model.ED2 to not enforce leap years.
- Integrate demo 1 into basic user guide
- Updated models/ed/data/pftmapping.csv to include two new BETYdb PFTs
- Simple fix to models/ed/R/write.configs.ed.R to properly align pss and css file prefix
- Fixed issue #1752 by updating the site.lst() function to include
site.id=site$id
instead of site.id=site, as site is an object not just the id - Update to PEcAn.ED2::met2model.ED2 to fix issue with rhdf5::h5write. Bug fix to #1742
- Fixed write.config.xml.ED2 parsing of data/history* files
PEcAn.utils
now lazy-loads data for faster execution of functions that consult lookup tables, especiallyto_ncvar
.- Fixed incorrect
PEcAn.BIOCRO
daily and yearly results: Was calculating every row from whole simulation instead of that day (#1738)
- New Dockerfile to create PEcAn specific container for SIPNET.
- Removed
PEcAn.utils::model2netcdf
, which has been deprecated since PEcAn 1.3.7. Usemodel2netcdf.<YOURMODEL>
in the appropriate model package instead.
- Major namespace cleanup in the
PEcAn.utils
package. It now loads more quietly and is much less likely to mask functions in a package you loaded earlier. - Moved many functions from
PEcAn.utils
into other PEcAn packages. ThePEcAn.utils
versions still work with a deprecation warning, but will be removed in next release.listToXml
andSafeList
moved toPEcAn.settings
fqdn
moved toPEcAn.remote
- PEcAnRTM: Removed effective sample size normalization from likelihood calculation. It was giving weird results.
- Fixed hyperparameter draws in PDA
- Show workflowid in the URL when run is finshed and user clicks results (#1659)
PEcAn.BIOCRO
now uses PEcAn-standard variable names. As a result, two output variables have been renamed but keep their existing units and definitions:StemBiom
renamed toAbvGrndWood
RootBiom
renamed toroot_carbon_content
- Improved make install logic (#1558)
- Fixed remote code execution #1545
- Added check for NA end/start year in read.output
- Fixed jagify bug for raw field data
- Fixed bug (order of dims in nc_create) introduced in model2netcdf.DALEC by standard_vars changes
- Cleaned up NAMESPACE and source code of
PEcAn.DB
(#1520) - Debugged python script in call_MODIS in data.remote to allow MODIS downloads
- Fixed FATES build script to work on ubuntu SIPNET output netcdf now includes LAI; some variable names changed to match standard
- Cleanup of leap year logic, using new
PEcAn.utils::days_in_year(year)
function (#801). - Replace many hard-coded unit conversions with
udunits2::ud.convert
for consistency, readability, and clarity - Refactored extract_soil_nc to create soil2netcdf, which will write soil data out in PEcAn standard.
- Added a new retry.func() to base/utils to provide ability to re-try a function X times before stopping. Currently using this function in the download.CRUNCEP() function to handle slow responses from THREDDS.
- Reformatted call_MODIS netcdf output to reflect the orientation of the MODIS grid
- Remote execution is more robust to errors in the submission process, not just the actual model execution
- PRELES model run script bug fix
- Functionality to pass hyperparameters via settings
- Created new (and very rudimentary) web interface for downloading data from the dataone federation into the PEcAn database. More updates to come.
- Expanded initial conditions workflow for pool-based models, including PEcAn.data.land::prepare_pools to calculate pools from IC file (to be coupled with write.configs)
- New
PEcAn.utils::days_in_year(year)
function that should make it easier to work with leap years. - New
PEcAn.data.atmosphere::solar_angle
function that replaces math that occurs in some models. - New
PEcAn.benchmarking::align_pft
fucntion that aligns data assosiated with two different plant functional types - #1594 shiny/workflowPlot Adding interactiveness using ggploltly
- #1594 shiny/workflowPlot Load outputs from multiple runs of the model
- #1594 shiny/workflowPlot Ways to toggle geometries (e.g. geom_point vs. geom_line).
- #1594 shiny/workflowPlot Smoothing using geom_smooth (Slider for specifying moving window width)
- #1594 shiny/workflowPlot Comparing model output vs loaded data according to tutorial
- Allow SIPNET and DALEC met files and model2netcdf to start or end mid year
- A Pre-release database clean up script that deletes unused/unassosiated entries from the database
- Clean up directory structure:
- Move
base
packages (utils
,settings
,db
,visualizaton
) to abase
directory, for consistency withmodules
andmodels
- Move
logger.*
functions out of thePEcAn.utils
package and into thePEcAn.logger
package - Move
remote
functions out of thePEcAn.utils
package and into their ownPEcAn.remote
package.
- Move
- #1594 shiny/workflowPlot Refactoring of code.
get_workflow_ids
in db/R/query.dplyr.R changed withensemble = FALSE
. Also allowing to load all workflow IDs.load_data_single_run
andvar_names_all
also moved from shiny/workflowPlot/server.R to query.dplyr.R PEcAn.remote::start.model.runs
has been significantly refactored to be less redundant and more robustbetyConnect
function inquery.dplyr.R
is now refactored intoread_web_config
so that the the Data-Ingest app can leverageread_web_config
and provide it with a machine specific filepath for.../dbfiles
- Rpreles and Maeswrap package moved to suggest checked for within package function.
- Added cron job and script for the sync of the database.
- Added PEcAn.utils::download.file() to allow for use of alternative FTP programs
- Updated downloadAmeriflux and downloadNARR to make use of PEcAn.utils::download.file()
- Added -w flag to load.bety.sh script to specify the URL to fetch the data from
- Add new table sites_cultivars to betydb sync scripts (dump and load)
- Added docker container scrips (.yml) to create docker container for PEcAn
- Added the configuration edit page to allow easy modification of config via web interface
- Thredds server documentation and catlog generating script
- Added new standard variables table (standard_vars.csv) and to_ncvar and to_ncdim functions in PEcAn.utils
- Added initial conditions file io functions for pool-based models in data.land
- upscale_met now accepts ~any valid CF file (not just full years), retains correct time units, and respects the previously ignored
overwrite
parameter - Better date handling in BioCro functions
- Bugfix in Fluxnet2015
- Update Git workflow in Documentation
- download.CRUNCEP now uses CF-compliant time units (days since start of year instead of "secs")
- Bugfixes in met.process
Documentation
- Source Rmarkdown and deploy scripts for PEcAn documentation
- Autocorrelation correction in PDA and scaling factor in emulator
- now dumping/loading experiments, cultivars_pfts, current_posteriors, experiments_sites experiments_treatments, trait_covariate_associations BETY #403 BETY #491
- Ameriflux is no longer selectable from the web gui #1291
Benchmarking, code cleanup
- benchmarking code
- no more build.sh, using Makefile
- Lots of code cleanup thanks to @bpbond
Camp PEON: Assimilation, multi-site, soil params, Maespa, LPJ-GUESS, improvements to web & tutorials
CMIP5, Shiny, FLUXNET2015, Global Sensitivity