|Home||Methods||Data Formats||Processing||FAQ & Contact||R-Package|
For understanding the methods, have a look at our Biogeosciences paper at doi 10.5194/bg-15-5015-2018.
You may search the reddyproc-users list archive for answers. When using google, you may include site:lists.r-forge.r-project.org inurl:reddyproc-users along with your other search criteria.
Or emails us your questions.
Please, be patient, if you do not get immediate reply. We are scientists providing this tool for you, but usually have other higher priority tasks.
Please, do not send big data with your e-mail.
When reporting problems with the online tool, please, specify the id hat is assigned to your job. This id appears in the URL of the pages following the upload as ?fileId=<theNumber>. Further it is reported in the processing log near the beginning, e.g.
Entries supplied by the web form: ... fileIdentifier "<theNumber>"
When reporting problems with the R package, please, specify your operating system, the Version of R, and the version of the REddyProc package.
A good place to start are the vignettes provided with the R package, especially the useCase vignette. At the R command prompt type:
Please also read
Most often, the input is not provided in correct format. Carefully reread the documentation on required input format, including case, type, and units of the columns. Also note to provide "tab-delimited or space-delimited ASCII file".
Flux data are specified with the "end of period" timestamp convention, i.e. the time stamp of the half-hour from 00.00 to 00:30 is 00:30. You need to take care in preparing the input data (see input format).
If the first row of your dataset has time stamp "2001-01-01 00:00:00" this corresponds to the last half-hour of year 2000. This is prone to cause problems with the processing where subsets according to year have few data.
Similarly, take care that the last record in your dataset corresponds to the last hour of the day.
One can filter timestamps by year or day with subtracting 15 minutes from the "end-of-period" beforehand
so that the R-function POSIXlt give correct answers for the period. E.g.
as.POSIXlt(myPOSIXVar - 15*60)$year
REddyProc produces a multitude of outputs for different u*thresholds and different methods. The outputs are described at web-menu entry Data Formates/Output format.
We recommend computing statistics across the outputs for different u* thresholds.
However, its also save to use output generated using the 50% quantile of u* thesholds, e.g.
There are pros and cons for both using nighttime based and daytime based flux partitioning.
For comparing to past results, the nighttime based option is probably more suitable:
NEE was defined by meteorologists from an atmosphere perspective. Positive flux goes into the atmosphere and out the land ecosystem. Negative fluxes go into the ecosystem. GPP on the other hand is defined as a positive allocation to the ecosystem, and Ecosystem respiration is defined as a loss of carbon from the ecosystem. For mosts ecologists it helps to argue with the -NEE flux: net uptake -NEE = GPP - Reco.
Due to the random uncertainties in the eddy covariance measurements, the derived GPP fluxes can result in negative fluxes. This is due to the stochastic nature of turbulence and noise in the measurement signal.
With nighttime partitioning, in addition if modelled respiration is too high, GPP might become negative. If this is within the range of NEE uncertainty its normal. If its larger then the fitted respiration~temerature model was not adequate for the data. The partitioning methods only work at sites where respiration is primarily controlled by temperature. They will not work e.g. at some tropical sites, sites controlled by moisture, or at frozen soils.
In other words, though GPP cannot be negative by definition, GPP values derived from EC measurements may also contain (some small) negative values, since these are the GPP values plus their random uncertainty. Hence, the negative values are also correct and should NOT be removed when using the partitioned results. Removing the negative GPP values (e.g. by setting them to zero after processing) would introduce a bias in the derived GPP.
There are several kinds of uncertainty. First, random uncertainty that decreases in relative terms by aggregating many records. Second, there is systematic uncertainty of using a biased u* threshold that does not decrease during aggregation.
For the random uncertainty, use the equations for
of sums of random variables (adding variances
take care for autocorrelations among records
(see aggUncertainty vignette).
For systematic uncertainty, repeat all the computation with different values of the distribution of the u* threshold (The default processing setup) including the aggregation for each output columns. Next, compute statistics, i.e. the mean and standard deviation) across the different estimates of the aggregates (see end of use case vignette).
Both kinds of uncertainty are independent of each other and hence, variances add. On annual time scale, often the systematic u*-threshold associated uncertainty dominates and the random uncertainty can be neglected.
DTS = 24.
Usually, the high-frequency raw measurement are processed to derive half-hourly fluxes, but at some sites aggregation across longer period can capture larger and slower eddies. Such hourly aggregated fluxes can be post-processed with REddyProc.
You can provide the number of timesteps per day when creating the REddyProc class with new (see help of
?sEddyProc_initialize) from the input data. For hourly data this is 24 hours per day.
EProc <- sEddyProc$new(mySite, myData, ..., DTS = 24)
Note, however, that several checks for plausible data in REddyProc are used experience with half-hourly data. Hence, you may get warnings or may need to adjust some of the thresholds.
Incoming shortwave global radiation (Rg) is used for different purposes in REddyproc. The answer depends on which purpose.
Option 1: Estimate Rg by measured PAR
This should give reasonable results for gap-filling, nighttime partitoning, and daytime partitioning Rg = PAR/0.47
References e.g. Yu 2015 et al. 10.1016/j.enconman.2014.09.038, Britton & Dodd 1976, 10.1016/0002-1571(76)90080-7
Option 2: Use Rg of a geographically not to distant site
Option 3: net radiation
is not an option for us, but try to convince us with your results.
Night-time based flux-partitioning estimates respiration by its relationship with temperature. If there is no good relationship you cannot apply night-time partitioning (E.g. with frozen soil, snow cover, or tropical sites with no pronounced temperature differences.)
Sometimes, the relationship is there also with a low temperature variability. Then you can try tuning the the required temperature range constraint to lower than 5 Kelvin:
YourEddyClass$sMRFluxPartition( parsE0Regression = list(TempRange = 3) )
Sometimes, there are just too few good-quality night-time records to estimate the existing relationship. Then you can provide a user-specified temperature sensitivity E0 to use, and be very cautios in interpreting results:
YourEddyClass$sMRFluxPartition( debug = list(fixedE0 = <yourE0Value>) )
Note, that this is an option implemented for debugging. Hence, only use this with great caution.
You can use a value determined at another year at the same site or a value from a very similar site. Or you can specify low, medium, and high values of E0 and inspect how this effects your results.
The functions starting with
are methods of the REddyProc Reference class.
They are not to be called directly.
They are called by
EProc is the object, created before by calling
.self within the method refers then to the
EProc object and allows the method to
access information stored by previous calls of
More information on Reference classes is provided by
REddyProc stores information of previous processing inside the class. If this information is already there from a previous call to a similar function, it warns you that it may get confused.
Hence, if something went wrong during processing or when processing different scenarios, do not repeat call to a function,
but start again from initializing the REddyProc class by
EProc <- sEddyProc$new(...).
For processing several scenarios with different uStar thresholds, one can use argument
sMDSGapFillAfterUstar (see halp at
This is the approach taken when calling
There will be several output columns, one for each uStar scenario, with a suffix in column name to distinguish the scenarios.
You can specify the same custom color legend by using arguments
?sEddyProc_sPlotFingerprint ?sEddyProc_sPlotFingerprintY EProc$sPlotFingerprintY('NEE', Year = 1998, colors = rainbow(50), valueLimits = c(-300,300))
R help can be request by typing
?functionName at the R command prompt.
However, EddyProc is an R5 class and has its functions attached to the class as so called methods.
sEddyProc_ before the method name to display the help page. E.g. for
The help for initializing the class with the call to
new is displayed by typing:
No, REddyProc requires local time (true time, i.e. without daylight savings) using timestamps without explicit time zone. This is because we do not want require users to be familiar with all the R timezone-specific routines.
The timezone is told to REddyProc separately with method
R Users working with timezone-aware timestamps usually know how to convert timestamp data to timezone "Etc/GMT+offset" and feed this data to REddyProc.