TREES

Overview

TREES: The Terrestrial Regional Ecosystem Exchange Simulator (TREES) is a dynamic biophysical process based simulation model.

The current module was built from the TREES Workshop 2020. This site contains tutorial notes with examples, and additional documentation.

Using

Use the module name trees to discover versions available and to load the application.

Retrieving the 2020 Workshop:

You do not have to build the trees software as we have installed it as a module, but if you want to retrieve the workshop, that contains tutorials, examples and documentation, then from a folder of your choosing, from the command line you can git clone the repository. The example below demonstrates the output you should see, obviously the folder paths will be different, but gives you something to follow/compare.

[salexan5@tlog1 trees]$ pwd /project/arcc/salexan5/apps/trees [salexan5@tlog1 trees]$ git clone https://github.com/dscottmackay/TREES-Workshop-2020.git Cloning into 'TREES-Workshop-2020'... remote: Enumerating objects: 87, done. remote: Counting objects: 100% (87/87), done. remote: Compressing objects: 100% (77/77), done. remote: Total 329 (delta 34), reused 25 (delta 10), pack-reused 242 Receiving objects: 100% (329/329), 21.67 MiB | 32.16 MiB/s, done. Resolving deltas: 100% (123/123), done. [salexan5@tlog1 trees]$ ls TREES-Workshop-2020 [salexan5@tlog1 trees]$ cd TREES-Workshop-2020/ [salexan5@tlog1 TREES-Workshop-2020]$ ls Documents easyR_TREES Examples Graphics Model-Code README.md Rscripts TREES_tutorial_2021.docx TREES_tutorial_2021.pdf

Running an Example

If you are following the tutorial, then the example below is slightly different. Since we have loaded trees3 as a module you do not have the make it (we’ve taken care of that for you), and the command is available on your general path so you do not have to add .. and forward slashes in your command line to run it.

[salexan5@tlog1 TREES-Workshop-2020]$ ls Documents easyR_TREES Examples Graphics Model-Code README.md Rscripts TREES_tutorial_2021.docx TREES_tutorial_2021.pdf [salexan5@tlog1 TREES-Workshop-2020]$ module load trees/3 [salexan5@tlog1 Brassica]$ ls cc_lowN.p cc.p cc_ww_drivers_drought_validation.txt covfile1 in_cc_lowN.txt in_cc_ww.txt param_mod README [salexan5@tlog1 Brassica]$ trees3 < in_cc_ww.txt Input data file: Number of time steps to aggregate for MCMC evaluations (suggest 1, 2, 4, 6, 8, 12):cc_ww_drivers_drought_validation.txt contains 16 variables 768 data points 1 steps will be aggregated to produce 768 data points for evaluation Parameter file: cc.p OK Shoot and Root Modules File Name: Output file: cc_ww_drought_valid_expt 50 20 0.187881 34.9221 0.322119 0.07 >>> TREES, v. 3.1.4, deterministic mode with plant water balance <<< leafBiomassCarbon = 15.9091 leafBiomassNitrogen = 1.06061 canopy_cover = 0.999997 rootDiamMultiplier = 1.4235 rootArea = 0.756928 -> Predawn: updating Weibulls with xylem loss = 1% -------- 0:123 -------- target LAI = 0.183168; canopy PLC = 1.43335; N status (mol N+ mol organic N) = 1 Plant hydraulic status (Ks and Weibulls): Shoot: axial Ks=27.3703, b=1.62, c=2.39; lateral Ks=11.4043, b=1.62, c=2.39 Root(0) axial Ks=939.036, b=1.62, c=2.39; lateral Ks=1.49962, b=1.84, c=2.15155 Root(1) axial Ks=375.615, b=1.62, c=2.39; lateral Ks=1.49963, b=1.84, c=2.15155 Root(2) axial Ks=187.812, b=1.62, c=2.39; lateral Ks=2.24951, b=1.84, c=2.15155 Root(3) axial Ks=93.9063, b=1.62, c=2.39; lateral Ks=1.12475, b=1.84, c=2.15155 Root(4) axial Ks=46.9542, b=1.62, c=2.39; lateral Ks=1.12478, b=1.84, c=2.15155 -> Predawn: updating Weibulls with xylem loss = 1% ... -------- 0:138 -------- target LAI = 1.01635; canopy PLC = 1.41347; N status (mol N+ mol organic N) = 0.49933 Plant hydraulic status (Ks and Weibulls): Shoot: axial Ks=29.7757, b=1.62, c=2.39; lateral Ks=12.4065, b=1.62, c=2.39 Root(0) axial Ks=1345.28, b=1.62, c=2.39; lateral Ks=1.27791, b=1.86, c=2.13998 Root(1) axial Ks=592.611, b=1.62, c=2.39; lateral Ks=2.55582, b=1.86, c=2.13998 Root(2) axial Ks=288.37, b=1.62, c=2.39; lateral Ks=3.8315, b=1.86, c=2.13998 Root(3) axial Ks=128.407, b=1.62, c=2.39; lateral Ks=1.92127, b=1.86, c=2.13577 Root(4) axial Ks=48.1908, b=1.62, c=2.39; lateral Ks=1.15445, b=1.84, c=2.15282 Simulated values in cc_ww_drought_valid_expt.sim Hydraulic diagnostics in cc_ww_drought_valid_expt.hyd Simulation completed [salexan5@tlog1 Brassica]$ ls cc_lowN.p cc_ww_drivers_drought_validation.txt cc_ww_drought_valid_expt.leaf covfile1 in_cc_ww.txt README cc.p cc_ww_drought_valid_expt.hyd cc_ww_drought_valid_expt.sim in_cc_lowN.txt param_mod

After running the example above, we now have three additional 'cc_ww_drought_valid_expt.hyd' files with extensions .leaf, .hyd and .sim.

Using the R Scripts

The workshop details how to use trees3, and then uses R scripts to aggregate and plot the data. The following example demonstrates how to run these scripts using R3.6.3:

[salexan5@tlog1 TREES-Workshop-2020]$ module load gcc/7.3.0 r/3.6.1 [salexan5@tlog1 TREES-Workshop-2020]$ Rscript Rscripts/Aggregate_to_Daily.R [salexan5@tlog1 TREES-Workshop-2020]$ Rscript Rscripts/Plot_TREES_results.R null device 1 There were 50 or more warnings (use warnings() to see the first 50) null device 1 [salexan5@tlog1 TREES-Workshop-2020]$ ls Graphics/ ccLeaf.pdf cc.pdf README

 

For both the Aggregate_to_Daily.R and Plot_TREES_results.R files I opened them up (using the command line text editor vim) and commented out the setwd line.

If you have retrieved the workshop and it lives in your home /Downloads/ folder then you can leave this line in.

Viewing the PDFs

We have a very crude pdf viewer on teton that you can use to check the output pdf:

Slurm:

From what we can see, trees3 is not multi core, meaning it only uses a single core.

A simple template to submit a job to use trees3 would look something like below:

With respect to the workshop, this slurm bash script is being run directly from the /Examples/Brassica/ folder where the in_cc_ww.txt file exists:

If you’re running the command from the command line please remember to use salloc to create an interactive session (and not run anything directly on the login nodes).

Depending on the size of your data set, if you find jobs are failing with Out-Of-Memory issues, then please explore using the --mem or --mem-per-cpu slurm options. Pages can be found on the Wiki about using slurm.