Overview¶
The process configuration file tells neptoon about the sensor being processed. The sections in this file are: config, neutron_quality_assessment, correction_steps, and data_smoothing. Below is an example file which you can use a starting point for your own sensor.
Cosmos Standard¶
There are ongoing discussion in the community to set a standard for CRNS which users can use as a jumping off point. The standard is considered to be using established methods that have been tested in the field and produce good results. There are arguably better technique (and ones we've yet to discover) - we endeavour to keep up to date with the scienfitic knowledge.
The below processing yaml will be up to date with the current standard.
config: process
# Neutron QA
neutron_quality_assessment:
raw_neutrons:
spike_offset:
threshold_relative: [0.2, -0.2] # + or - 20%
window: 12h
corrected_neutrons:
greater_than_N0:
percent_maximum: 1.075 # Köhli 2021
below_N0_factor:
percent_minimum: 0.3
# Correction methods
correction_steps:
air_humidity:
method: rosolem_2013
coefficient: 0.0054
humidity_ref: 0
air_pressure:
method: tirado_bueno_2021
incoming_radiation:
method: hawdon_2014
reference_neutron_monitor:
station: JUNG
resolution: 60 # minutes
nmdb_table: revori # recommend revori
above_ground_biomass:
method: none
biomass_units:
soil_moisture_estimation:
method: desilets_etal_2010 # or koehli_etal_2021
koehli_etal_2021_parameterset: Mar21_mcnp_drf
# Data Smoothing
data_smoothing:
smooth_corrected_neutrons: True
smooth_soil_moisture: False
settings:
algorithm: rolling_mean
window: 12h
min_proportion_good_data: 0.7
temporal_aggregation:
aggregate_data: false
output_resolution: 1h
align_timestamps: true
alignment_method: time
aggregate_method: bagg
aggregate_func: mean
aggregate_maxna_fraction: 0.3
Configuration Quick Reference Guide¶
Neutron Quality Assessment¶
Raw Neutron Quality Control Parameters¶
Here we conduct spike detection to account for problems in the raw count rate. There are a few algorithms to choose from, however we currently recommend using spike_offset with the defaults set to what you cna see in the above yaml file. This follows the current literature by identifying spikes as anything >20% of previous value.
| Parameter | Required | Type | Example | Description |
|---|---|---|---|---|
| spike_offset.threshold_relative | Yes | list | [0.2, -0.2] |
Maximum percent (as decimal) that an observation can jump, before being designated a spike. Add two values in list format (with square brackets []), one with a postive sign and one with a negative sign. Advised to stick to uniform. |
| spike_offset.window | Yes | integer | 12h |
The window to use to identify whether a spike as returned back to base line after a plateau of spikes |
Corrected Neutron Quality Control Parameters¶
These are some quality checks we do on corrected neutrons based on the literature.
It's recommended to not touch this section unless your experimenting.
| Parameter | Required | Type | Example | Description |
|---|---|---|---|---|
| greater_than_N0.percent_maximum | Yes | float | 1.075 |
Maximum allowed neutron count as percentage of N0 (Köhli 2021) |
| below_N0_factor.percent_minimum | Yes | float | 0.3 |
Minimum allowed neutron count as percentage of N0 |
Correction Steps¶
The following section is for applying corrections to the neutron count rate to account for additional influences, besides soil moisture, that influence the count rate.
If you wish to turn off a particular correction - set the method to "none".
Air Humidity Correction¶
Air humidity corrections can be left as the example values shown below when being applied as these are based on the literature.
Köhli et al., 2021 method for neutron conversion
- If you are using the
koehli_etal_2021method for neutron to soil moisture conversion - set the method to"none". The humidity correction is integrated to this method already. (If you forget neptoon will disapply this correction during neutron conversion, but it's best to not apply it in the first place)
| Parameter | Required | Type | Example | Description |
|---|---|---|---|---|
| method | No | string | "rosolem_2013" or "none" |
Method used for humidity correction |
| omega | No | float | 0.0054 |
Correction coefficient for humidity |
| humidity_ref | No | float | 0 |
Reference humidity value for correction |
Air Pressure Correction¶
Air pressure correction - very important to leave on as CRNS are very sensitive to atmospheric pressure changes.
| Parameter | Required | Type | Example | Description |
|---|---|---|---|---|
| method | Yes | string | "desilets_zreda_2003" or "desilets_2021" or "tirado_bueno_2021" or "none" |
Method used for pressure correction |
| dunai_inclination | No | float | - | Inclination parameter for dunai method |
Incoming Intensity Correction¶
| Parameter | Required | Type | Example | Description |
|---|---|---|---|---|
| method | Yes | string | "hawdon_2014" or"zreda_2012" or"mcjannet_desilets_2023" or"none" |
Method used for incoming intensity correction |
| reference_neutron_monitor.station | Yes | string | "AATB" or"INVK" or"JUNG" or"KERG" or"KIEL" or"MXCO" or"NEWK" or"OULU" or"PSNM" or"SOPO" or"TERA" or"THUL" |
Reference neutron monitor station |
| reference_neutron_monitor.resolution | Yes | integer | 60 |
Time resolution in minutes |
| reference_neutron_monitor.nmdb_table | Yes | string | "revori" or "ori" |
NMDB table name (revori recommended) |
Above Ground Biomass Correction¶
| Parameter | Required | Type | Example | Description |
|---|---|---|---|---|
| method | No | string | "baatz_2015" or "morris_2024" or "none" |
Method used for biomass correction |
| biomass_units | No | string | - | Units for biomass measurements |
Soil Moisture Estimation¶
Here we state how we will convert neutrons to soil mositure. If you choose koehli_etal_2021 then koehli_method_form is required.
| Parameter | Required | Type | Example | Description |
|---|---|---|---|---|
| method | Yes | string | "desilets_etal_2010" or "koehli_etal_2021" or "none" |
Method for converting neutrons to soil mositure |
| koehli_etal_2021_parameterset | No | string | "Jan23_uranos" or "Jan23_mcnpfull" or "Mar12_atmprof" or "Mar21_mcnp_drf" or "Mar21_mcnp_ewin" or "Mar21_uranos_drf" or "Mar21_uranos_ewin" or "Mar22_mcnp_drf_Jan" or "Mar22_mcnp_ewin_gd" or "Mar22_uranos_drf_gd" or "Mar22_uranos_ewin_chi2" or "Mar22_uranos_drf_h200m" or "Aug08_mcnp_drf" or "Aug08_mcnp_ewin" or "Aug12_uranos_drf" or "Aug12_uranos_ewin" or "Aug13_uranos_atmprof" or "Aug13_uranos_atmprof2" |
Thats a lot of options... just stick with "Mar21_mcnp_drf" if you want simple. This sets the parameters when using the koehlie et al., 2021 method |
Data Smoothing¶
In this section we state whether to do smoothing on the neutron data, and how to do it. The boolean statement is required. If this is set to true then the further options need to be set too, otherwise they can be left blank.
| Parameter | Required | Type | Example | Description |
|---|---|---|---|---|
| smooth_corrected_neutrons | Yes | boolean | true |
Enable smoothing for corrected neutron counts |
| smooth_soil_moisture | Yes | boolean | false |
Enable smoothing for soil moisture data |
| settings.algorithm | No | string | "rolling_mean" |
Smoothing algorithm selection |
| settings.window | No | string | 12h or 12hours or 1day or 1d or 30min or 30m |
Window size for smoothing operation, provided as a string which neptoon will automatically parse into a timedelta window |
| settings.min_proportion_good_data | No | float | 0.7 |
The minimum proportion of available data for the smoothing window to succeed. If less than this is available in the window the observation is nan |
Additional Information
- The smoothing algorithm supports only
rolling_meanuntil a future update.
Temporal Aggregation¶
In this section we state whether to do smoothing on the neutron data, and how to do it.
The boolean statements are required. If they are set to true then the further options need to be set too, otherwise they can be left blank.
Alignment is used if you want to have your data output on rounded time points, but don't wish to change the resolution of your data (e.g., data at 15:04 realigned to be at 15:00).
Aggregation does what it says, converts your data to a new resolution via aggregation. The output_resolution should be larger than original timestep resolution of your data (no downscaling).
More info on this found here
| Parameter | Required | Type | Example | Description |
|---|---|---|---|---|
| aggregate_data | Yes | boolean | true or false |
Whether to aggregate data |
| output_resolution | No | string | 1h or None |
Desired time step of output data. Should be pandas style FreqStr (e.g., 1h, 1m) |
| aggregate_method | No | string | bagg |
Method for data aggregation |
| aggregate_func | No | string | mean |
Function used for aggregation |
| aggregate_maxna_fraction | No | float | 0.3 |
Maximum allowed fraction of NA values in the aggregation period |
| align_timestamps | Yes | boolean | true or false |
Whether to align timestamps |
| alignment_method | No | string | time |
Method for timestamp alignment |