Fix/add (residual) absolutes diagnostics
There are numerous diagnostic values that can be calculated from (residual) absolute measurements. The following is a list of all diagnostics that should be added to, or updated in, geomagio.residual.Calculation.py and returned in the reading via the diagnostics
object:
For Inclination Summary
-
inclination
- already calculated and returned in diagnostics object -
horizontalComponent
- sometimes, but not always absoluteH- Calculate_HZ_absolutes() may time-shift absoluteH if reference is not None, so store the pre-shifted h_abs and return as diagnostic
-
verticalCompopnent
- sometimes, but not always absoluteZ- Calculate_HZ_absolutes() may time-shift absoluteZ if reference is not None, so store the pre-shifted z_abs and return as diagnostic
For Magnetometer Ordinates Table
-
absoluteF
- already calculated as "corrected_f" in calculate_I() method;- add to diagnostics object
-
ordinateF
- this is justcorrected_f - reading.pier_correction
-
OR you could simply return the object
f
, which is generated by the calculate_I() method
-
OR you could simply return the object
-
ordinateD
- this is justabsoluteD.absolute - absoluteD.baseline
-
ordinateZ
- this is justabsoluteZ.absolute - absoluteZ.baseline
-
ordinateH
- this is not justabsoluteH.absolute - absoluteH.baseline
- the full relationship is:
h_ord = sqrt(h_abs**2 - e_ord**2) - h_bas
, wheree_ord = h_abs * sin(d_ord)
-
OR, you could simply return the object
i_mean.h
, which is generated by the calculate_I() method
- the full relationship is:
(Remember that that all absolute and baseline values for H, D, and Z are stored in the reading's list of absolutes, and that the pier_correction is its own object inside a reading)
For Declination Summary
-
magneticSouthMeridian
- the "meridian" currently calculated and returned by calculate_D_absolute() method is actually composed of three components:- decompose the current calculation into:
-
DComputed
=\frac{1}{n}{\sum}_{i=1}^{n} \arctan(e_i / (h_i+h_{base}) -
RComputed
=\frac{1}{n}{\sum}_{i=1}^{n} \arcsin(r_i / \sqrt{(h_i+h_{base})^2 + e_i^2} ) \quad\textrm{ where }\quad r\equiv\textrm{residual measurement} -
magneticSouthMeridian
=\frac{1}{n}{\sum}_{i=1}^{n} A_i \quad\textrm{ where }\quad A\equiv[\textrm{WestDn, EastDn, WestUp, EastUp}]
-
- combine these for the calculation of d_b (declination baseline), then
- add components to diagnostics object
- decompose the current calculation into:
-
meanMark
- the "average_mark" currently calculated by calculate_D_absolute() method is already corrected by 90 degrees in the proper direction for the calculation of d_b (declination baseline);- we could un-correct this so it looks like observers expect, but that seems...
- add to diagnostics object
-
magneticAzimuthOfMark
=\textrm{meanMark} - \textrm{magneticSouthMeridian}- this is only true if
meanMark
is the same as "average_mark (i.e., properly rotated by 90 degrees) - add to diagnostics object
- this is only true if
Other Diagnostics
-
scaleValue
- already calculated as scale_value, need to place inside diagnostics object- scale_value should be removed from the class definition for reading
- the scale_value calculated here has units of degrees, while the scale_value calculated in residual spreadsheets has units of gradians, or gon. Neither make geometric or physical sense, so another issue should be created to research what this diagnostic value should really be (probably it should be radians, or in effect, a dimensionless ratio).