neptoon.calibration
station_calibration¶
Classes:
- CalibrationConfiguration
- CalibrationContext
- CalibrationStation
- SampleProfile
- PrepareCalibrationData
- PrepareNeutronCorrectedData
- IndicesExtractor
- CalibrationWeightsCalculator
- CalculateN0
Functions:
- from_config
- find_n0_value
- return_calibration_results_data_frame
- return_weighting_dataframe
- distance
- prepare_calibration_data
- extract_calibration_day_values
- extract_calibration_day_indices
- set_values
- calculate_all_sample_weights
- return_output_dict_as_dataframe
- return_weighting_dataframe
- set_values
- find_optimal_N0
- find_optimal_N0_old
- calculate_sm_and_error_desilets
- calculate_sm_and_error_koehli
CalibrationConfiguration ¶
CalibrationConfiguration(hours_of_data_around_calib=6, converge_accuracy=0.01, neutron_conversion_method='desilets_etal_2010', koehli_parameters='Mar21_mcnp_drf', horizontal_weight_method='schroen_etal_2017', vertical_weight_method='schroen_etal_2017', calib_data_date_time_column_name=None, calib_data_date_time_format='%Y-%m-%d %H:%M', sample_depth_column=None, distance_column=None, bulk_density_of_sample_column=None, profile_id_column=None, soil_moisture_gravimetric_column=None, soil_organic_carbon_column=None, lattice_water_column=None, temperature_column=None, relative_humidity_column=None, abs_air_humidity_column=None, neutron_column_name=None, air_pressure_column_name=None, value_avg_lattice_water=None, value_avg_bulk_density=None, value_avg_soil_organic_carbon=None)
User facing configuration class for calibration steps. Here a user can add information required for calibration. Defaults can often also be used if following similar data structure and naming as neptoon uses as standard.
User-facing configuration for calibration parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
hours_of_data_around_calib
|
int
|
Number of hours of neutron count data to include around the datetime stamp for calibration. This window is used to gather measurements from sensors during the calibration period. Default is 6. |
6
|
converge_accuracy
|
float
|
The convergence threshold for when finding n0. Default is 0.01. |
0.01
|
neutron_conversion_method
|
(desilets_etal_2010, koehli_etal_2021)
|
The conversion method used to translate raw neutron counts into soil moisture estimates. Options are "desilets_etal_2010" or "koehli_etal_2021". Default is "desilets_etal_2010". |
"desilets_etal_2010"
|
koehli_parameters
|
str
|
Parameter set to use when koehli_etal_2021 method is selected. Default is "Mar21_mcnp_drf". |
'Mar21_mcnp_drf'
|
horizontal_weight_method
|
(schroen_etal_2017, equal)
|
|
"schroen_etal_2017"
|
optional
|
Method for horizontal weighting. Default is "schroen_etal_2017". |
required | |
vertical_weight_method
|
(schroen_etal_2017, equal)
|
|
"schroen_etal_2017"
|
optional
|
Method for vertical weighting. Default is "schroen_etal_2017". |
required | |
calib_data_date_time_column_name
|
str
|
The name of the column containing dateātime information for each calibration day. If None, uses default from ColumnInfo. |
None
|
calib_data_date_time_format
|
str
|
Format string for parsing date-time values. Default is "%Y-%m-%d %H:%M". |
'%Y-%m-%d %H:%M'
|
sample_depth_column
|
str
|
The name of the column with sample depth values (cm). If None, uses default from ColumnInfo. |
None
|
distance_column
|
str
|
The name of the column stating the distance of the sample from the sensor (meters). If None, uses default from ColumnInfo. |
None
|
bulk_density_of_sample_column
|
str
|
The name of the column with bulk density values of the samples (g/cm^3). If None, uses default from ColumnInfo. |
None
|
profile_id_column
|
str
|
Name of the column with profile IDs. If None, uses default from ColumnInfo. |
None
|
soil_moisture_gravimetric_column
|
str
|
Name of the column with gravimetric soil moisture values (g/g). If None, uses default from ColumnInfo. |
None
|
soil_organic_carbon_column
|
str
|
Name of the column with soil organic carbon values (g/g). If None, uses default from ColumnInfo. |
None
|
lattice_water_column
|
str
|
Name of the column with lattice water values (g/g). If None, uses default from ColumnInfo. |
None
|
temperature_column
|
str
|
Name of the column with temperature values. If None, uses default from ColumnInfo. |
None
|
relative_humidity_column
|
str
|
Name of the column with relative humidity values. If None, uses default from ColumnInfo. |
None
|
abs_air_humidity_column
|
str
|
Name of the column with absolute air humidity values (g/cm3). If None, uses default from ColumnInfo. |
None
|
neutron_column_name
|
str
|
Name of the column with corrected neutrons in it. If None, uses default from ColumnInfo. |
None
|
air_pressure_column_name
|
str
|
Name of the column with air pressure values in it. If None, uses default from ColumnInfo. |
None
|
value_avg_lattice_water
|
float | None
|
The actual site average lattice water value. Default is 0. |
None
|
value_avg_bulk_density
|
float | None
|
The actual site average dry soil bulk density. Default is 0. |
None
|
value_avg_soil_organic_carbon
|
float | None
|
The actual site average soil organic carbon. Default is 0. |
None
|
CalibrationContext
dataclass
¶
CalibrationContext(hours_of_data_around_calib=None, converge_accuracy=None, neutron_conversion_method=None, koehli_parameters=None, horizontal_weight_method=None, vertical_weight_method=None, calib_data_date_time_column_name=None, calib_data_date_time_format=None, sample_depth_column=None, distance_column=None, bulk_density_of_sample_column=None, profile_id_column=None, soil_moisture_gravimetric_column=None, soil_organic_carbon_column=None, lattice_water_column=None, temperature_column=None, relative_humidity_column=None, abs_air_humidity_column=None, neutron_column_name=None, air_pressure_column_name=None, value_avg_lattice_water=None, value_avg_bulk_density=None, value_avg_soil_organic_carbon=None, value_avg_soil_organic_carbon_water_equiv=None, unique_calibration_days=list(), list_of_data_frames=list(), list_of_profiles=list(), calib_day_df_dict=dict(), calib_metrics_dict=dict(), calibration_results_by_day=dict(), weights_df=DataFrame())
Internal context for data processing - outputs of each stage are written here. Contains resolved column names and processed values.
from_config
classmethod
¶
Convert configuration to context, resolving all None values to defaults from ColumnInfo and calculating derived values.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
CalibrationConfiguration
|
User configuration object |
required |
Returns:
| Type | Description |
|---|---|
CalibrationContext
|
Internal processing context with all values resolved |
CalibrationStation ¶
Abstract which does the complete claibration steps. Can be used on its own, but is mainly designed to facilitate CRNSDataHub calibration. Simply include the calibration data, the time series data and the config object and run find_n0_value(), to return the optimum N0.
find_n0_value ¶
Runs the full process to obtain an N0 estimate.
Returns:
| Type | Description |
|---|---|
float
|
N0 estimate after calibration. |
return_calibration_results_data_frame ¶
Returns the daily results as a data frame. When multiple days calibration is undertaken on each day. The outputs of this are saved and this method returns them for viewing.
Returns:
| Type | Description |
|---|---|
DataFrame
|
data frame with the results in it. |
return_weighting_dataframe ¶
Returns the information about the weighting procedure
Returns:
| Type | Description |
|---|---|
DataFrame
|
dataframe with weights |
SampleProfile ¶
SampleProfile(soil_moisture_gravimetric, depth, bulk_density, site_avg_bulk_density, site_avg_organic_carbon, site_avg_lattice_water, calibration_day, distance=1, lattice_water=None, soil_organic_carbon=None, pid=None)
Initialise SampleProfile instance.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
soil_moisture_gravimetric
|
array
|
array of soil moisture gravimetric values in g/g |
required |
depth
|
array
|
The depth of each soil moisture sample |
required |
bulk_density
|
array
|
bulk density of the samples in g/cm^3 |
required |
distance
|
int
|
distance of the profile from the sensor, by default 1 |
1
|
lattice_water
|
array - like
|
Lattice water from the samples , by default 0 |
None
|
soil_organic_carbon
|
int
|
description, by default 0 |
None
|
pid
|
_type_
|
description, by default None |
None
|
PrepareCalibrationData ¶
Prepares the calibration dataframe for processing.
- ensures datetime index
- splits multiple days into individual data frames
- for each calibration day, converts data into a list of SampleProfiles
- calculates site averages of key information (e.g., bulk density)
- gap fills key info with averages when missing
Instantiate attributes
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
calibration_data_frame
|
DataFrame
|
The dataframe with the calibration sample data in it. If multiple calibration days are available these should be stacked in the same dataframe. |
required |
prepare_calibration_data ¶
Prepares the calibration data into a list of profiles.
PrepareNeutronCorrectedData ¶
extract_calibration_day_values ¶
Extracts the rows of data for each calibration day.
IndicesExtractor ¶
Extracts indices from the corrected neutron data based on the supplied calibration days
Attributes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
corrected_neutron_data_frame
|
DataFrame
|
The corrected neutron data frame |
required |
calibration_data_prepper
|
PrepareCalibrationData
|
The processed object |
required |
hours_of_data_to_extract
|
int
|
The number of hours of data around the calibration date time stamp to collect., by default 6 |
required |
extract_calibration_day_indices ¶
Extract indices for each calibration day within a time window.
Returns:
| Type | Description |
|---|---|
Dict
|
Indicies for each calibration day |
CalibrationWeightsCalculator ¶
set_values ¶
Set required values for calculating weights on calibration data. Use this when you already have derived values (e.g., air pressure during calibration period), and want to submit them directly.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
CalibrationConfiguration
|
Calibration config with required information for finding sample weights. |
required |
calibration_df
|
DataFrame
|
Calibration sample data |
required |
absolute_humidity
|
list
|
List of absolute humidity values, one for each calibration day in the order they appear in the dataframe. |
required |
air_pressure
|
list
|
List of atmospheric pressure values, one for each calibration day in the order they appear in the dataframe. |
required |
bulk_density
|
float | None
|
Bulk Density for the site, by default None |
required |
lattice_water
|
float | None
|
Lattice water, by default None |
required |
soil_organic_carbon
|
float | None
|
Soil organic carbon, by default None |
required |
calculate_all_sample_weights ¶
Applies the weighting procedure to multiple calibration days if present.
Returns:
| Type | Description |
|---|---|
CalibrationContext
|
With more context |
return_output_dict_as_dataframe ¶
Returns the dictionary of information created for each calibration day during processing as a pandas DataFrame
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame with information created during processing. |
return_weighting_dataframe ¶
Returns the information about the weighting procedure
Returns:
| Type | Description |
|---|---|
DataFrame
|
dataframe with weights |