From 3564a2712b473bcd337f2e32de91aa8817183858 Mon Sep 17 00:00:00 2001 From: lsachuk <lsachuk@contractor.usgs.gov> Date: Fri, 14 Apr 2023 11:31:35 -0600 Subject: [PATCH] added calculate_* methods for horizontal and vertical component --- geomagio/residual/Calculation.py | 100 +++++++++++++++++-------------- geomagio/residual/Diagnostics.py | 10 +--- 2 files changed, 57 insertions(+), 53 deletions(-) diff --git a/geomagio/residual/Calculation.py b/geomagio/residual/Calculation.py index 5352676b..72708859 100644 --- a/geomagio/residual/Calculation.py +++ b/geomagio/residual/Calculation.py @@ -37,18 +37,23 @@ def calculate(reading: Reading, adjust_reference: bool = True) -> Reading: hemisphere=reading.hemisphere, measurements=reading.measurements ) corrected_f = f + reading.pier_correction - # calculate absolutes, horizontal_component, vertical_component - ( - absoluteH, - absoluteZ, - horizontal_component, - vertical_component, - ) = calculate_HZ_absolutes( + + # calculate absolutes, + (absoluteH, absoluteZ) = calculate_HZ_absolutes( corrected_f=corrected_f, inclination=inclination, mean=i_mean, reference=reference, ) + + horizontal_component = calculate_horizontal_component( + inclination=inclination, corrected_f=corrected_f + ) + + vertical_component = calculate_vertical_component( + inclination=inclination, corrected_f=corrected_f + ) + absoluteD, meridian = calculate_D_absolute( azimuth=reading.azimuth, h_baseline=absoluteH.baseline, @@ -88,10 +93,7 @@ def calculate(reading: Reading, adjust_reference: bool = True) -> Reading: mean_mark=mean_mark, magnetic_south_meridian=magnetic_south_meridian ) - ordinate_f = calculate_ordinate_f( - corrected_f=corrected_f, - pier_correction=reading.pier_correction, - ) + ordinate_f = f ordinate_d = calculate_ordinate_d( absoluteD_absolute=absoluteD.absolute, @@ -118,7 +120,6 @@ def calculate(reading: Reading, adjust_reference: bool = True) -> Reading: magnetic_azimuth_of_mark=magnetic_azimuth_of_mark, magnetic_south_meridian=magnetic_south_meridian, mean_mark=mean_mark, - meridian=meridian, ordinate_d=ordinate_d, ordinate_f=ordinate_f, ordinate_h=ordinate_h, @@ -219,7 +220,7 @@ def calculate_HZ_absolutes( mean: AverageMeasurement, reference: Measurement, ) -> Tuple[Absolute, Absolute, float, float]: - """Calculate H and Z absolutes, horizontal_component, vertical_component. + """Calculate H and Z absolutes Parameters ---------- @@ -233,15 +234,8 @@ def calculate_HZ_absolutes( Tuple - H Absolute - Z Absolute - - horizontal_component, - - vertical_component """ - - # store the pre-shifted h_abs and the pre-shifted z_abs inclination_radians = np.radians(inclination) - horizontal_component = corrected_f * np.cos(inclination_radians) - vertical_component = corrected_f * np.sin(inclination_radians) - h_abs = corrected_f * np.cos(inclination_radians) z_abs = corrected_f * np.sin(inclination_radians) h_b = np.sqrt(h_abs**2 - mean.e**2) - mean.h @@ -271,8 +265,6 @@ def calculate_HZ_absolutes( starttime=starttime, endtime=endtime, ), - horizontal_component, - vertical_component, ) @@ -409,7 +401,7 @@ def calculate_D_computed( d_computed = np.average( [ - np.degrees(np.arctan(m.e / (m.h + h_baseline))) + -1 * np.degrees(np.arctan(m.e / (m.h + h_baseline))) for m in declination_measurements ] ) @@ -493,28 +485,6 @@ def calculate_magnetic_azimuth_of_mark( return magnetic_azimuth_of_mark -def calculate_ordinate_f( - corrected_f: float, - pier_correction: float, -) -> float: - """Calculate ordinate_f. - - Parameters - ---------- - corrected_f: float, - pier_correction:float, - - - Returns - ------- - Calculated ordinate_f - """ - - ordinate_f = corrected_f - pier_correction - - return ordinate_f - - def calculate_ordinate_d( absoluteD_absolute: float, absoluteD_baseline: float, @@ -576,8 +546,46 @@ def calculate_ordinate_h( ------- Calculated ordinate_h """ - ordinate_e = absoluteH_absolute * np.sin(ordinate_d) + ordinate_e = absoluteH_absolute * np.sin(np.radians(ordinate_d)) ordinate_h = np.sqrt(absoluteH_absolute**2 - ordinate_e**2) - absoluteH_baseline return ordinate_h + + +def calculate_horizontal_component(inclination: float, corrected_f: float) -> float: + """Calculate horizontal_component. + + Parameters + ---------- + inclination: calculated inclination. + corrected_f: calculated f with pier correction. + + Returns + ------- + Calculated horizontal_component + """ + + inclination_radians = np.radians(inclination) + horizontal_component = corrected_f * np.cos(inclination_radians) + + return horizontal_component + + +def calculate_vertical_component(inclination: float, corrected_f: float) -> float: + """Calculate vertical_component. + + Parameters + ---------- + inclination: calculated inclination. + corrected_f: calculated f with pier correction. + + Returns + ------- + Calculated vertical_component + """ + + inclination_radians = np.radians(inclination) + vertical_component = corrected_f * np.sin(inclination_radians) + + return vertical_component diff --git a/geomagio/residual/Diagnostics.py b/geomagio/residual/Diagnostics.py index 7844cb7b..7c75de63 100644 --- a/geomagio/residual/Diagnostics.py +++ b/geomagio/residual/Diagnostics.py @@ -8,11 +8,10 @@ class Diagnostics(BaseModel): Attributes ---------- - corrected_f: Optional[float] = None + corrected_f: Optional[float] = None d_computed: Optional[float] = None horizontal_component: Optional[float] = None - horizontal_component: Optional[float] = None - inclination: float + inclination: Optional[float] = None magnetic_azimuth_of_mark: Optional[float] = None magnetic_south_meridian: Optional[float] = None mean_mark: Optional[float] = None @@ -22,19 +21,16 @@ class Diagnostics(BaseModel): ordinate_h: Optional[float] = None ordinate_z: Optional[float] = None r_computed: Optional[float] = None - scale_value: Optional[float] = None vertical_component: Optional[float] = None """ corrected_f: Optional[float] = None d_computed: Optional[float] = None horizontal_component: Optional[float] = None - horizontal_component: Optional[float] = None - inclination: float + inclination: Optional[float] = None magnetic_azimuth_of_mark: Optional[float] = None magnetic_south_meridian: Optional[float] = None mean_mark: Optional[float] = None - meridian: Optional[float] = None ordinate_d: Optional[float] = None ordinate_f: Optional[float] = None ordinate_h: Optional[float] = None -- GitLab