Source code for pedophysics.predict.frequency_ec

import numpy as np
from pedophysics import instruments

[docs]def FrequencyEC(soil): """ Return and set missing values of the soil.df.frequency_ec attribute. If any value of the frequency_ec attribute is missing (NaN), it will be set to a default value of 0 Hz (direct current). Corresponding information in the soil's info dataframe will be updated accordingly. Parameters ---------- soil : object A custom soil object that contains: - frequency_ec : array-like Frequency of electric conductivity measurement [Hz] - df : DataFrame Data Frame containing all the quantitative information of soil array-like attributes for each state. - info : DataFrame Data Frame containing descriptive information about how each array-like attribute was calculated. includes: frequency_ec - n_states : int Number of states or records in the dataframe. Returns ------- np.ndarray soil.df.frequency_ec.values: an array of updated frequency of electric conductivity measurement values. External functions ------------------ Inst2FreqEC : Function to calculate missing frequency_ec attribute based on soil.instrument. Example ------- >>> sample = Soil() >>> sample.df.frequency_ec 0 NaN Name: frequency_ec, dtype: float64 >>> FrequencyEC(sample) >>> sample.df.frequency_ec 0 0 Name: frequency_ec, dtype: float64 """ # Check if any value of frequency_ec is missing if (np.isnan(soil.df.frequency_ec)).any(): instruments.Inst2FreqEC(soil) soil.info['frequency_ec'] = ["Set as 0 Hz (direct current) by default" if np.isnan(soil.df.frequency_ec[x]) or soil.info.frequency_ec[x] == "Set as 0 Hz (direct current) by default" else soil.info.frequency_ec[x] for x in range(soil.n_states)] soil.df['frequency_ec'] = [0 if np.isnan(soil.df.frequency_ec[x]) else soil.df.frequency_ec[x] for x in range(soil.n_states)] return soil.df.frequency_ec.values