imap-processing 0.19.0__py3-none-any.whl → 0.19.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of imap-processing might be problematic. Click here for more details.
- imap_processing/_version.py +2 -2
- imap_processing/cdf/config/imap_codice_global_cdf_attrs.yaml +6 -0
- imap_processing/cdf/config/imap_codice_l1a_variable_attrs.yaml +31 -894
- imap_processing/cdf/config/imap_codice_l1b_variable_attrs.yaml +279 -255
- imap_processing/cdf/config/imap_enamaps_l2-common_variable_attrs.yaml +11 -0
- imap_processing/cdf/config/imap_glows_l1b_variable_attrs.yaml +3 -1
- imap_processing/cdf/config/imap_lo_global_cdf_attrs.yaml +5 -4
- imap_processing/cdf/config/imap_ultra_global_cdf_attrs.yaml +20 -8
- imap_processing/cdf/config/imap_ultra_l1b_variable_attrs.yaml +33 -31
- imap_processing/cdf/config/imap_ultra_l1c_variable_attrs.yaml +61 -1
- imap_processing/cli.py +62 -71
- imap_processing/codice/codice_l0.py +2 -1
- imap_processing/codice/codice_l1a.py +47 -49
- imap_processing/codice/codice_l1b.py +42 -32
- imap_processing/codice/codice_l2.py +105 -7
- imap_processing/codice/constants.py +50 -8
- imap_processing/codice/data/lo_stepping_values.csv +1 -1
- imap_processing/ena_maps/ena_maps.py +39 -18
- imap_processing/ena_maps/utils/corrections.py +291 -0
- imap_processing/ena_maps/utils/map_utils.py +20 -4
- imap_processing/glows/l1b/glows_l1b.py +38 -23
- imap_processing/glows/l1b/glows_l1b_data.py +10 -11
- imap_processing/hi/hi_l1c.py +4 -109
- imap_processing/hi/hi_l2.py +34 -23
- imap_processing/hi/utils.py +109 -0
- imap_processing/ialirt/l0/ialirt_spice.py +1 -0
- imap_processing/ialirt/utils/create_xarray.py +1 -1
- imap_processing/lo/ancillary_data/imap_lo_hydrogen-geometric-factor_v001.csv +75 -0
- imap_processing/lo/ancillary_data/imap_lo_oxygen-geometric-factor_v001.csv +75 -0
- imap_processing/lo/l1b/lo_l1b.py +90 -16
- imap_processing/lo/l1c/lo_l1c.py +164 -50
- imap_processing/lo/l2/lo_l2.py +941 -127
- imap_processing/mag/l1d/mag_l1d_data.py +36 -3
- imap_processing/mag/l2/mag_l2.py +2 -0
- imap_processing/mag/l2/mag_l2_data.py +4 -3
- imap_processing/quality_flags.py +14 -0
- imap_processing/spice/geometry.py +15 -8
- imap_processing/spice/pointing_frame.py +4 -2
- imap_processing/spice/repoint.py +49 -0
- imap_processing/ultra/constants.py +29 -0
- imap_processing/ultra/l1b/badtimes.py +35 -11
- imap_processing/ultra/l1b/de.py +15 -9
- imap_processing/ultra/l1b/extendedspin.py +24 -12
- imap_processing/ultra/l1b/goodtimes.py +112 -0
- imap_processing/ultra/l1b/lookup_utils.py +1 -1
- imap_processing/ultra/l1b/ultra_l1b.py +7 -7
- imap_processing/ultra/l1b/ultra_l1b_culling.py +8 -4
- imap_processing/ultra/l1b/ultra_l1b_extended.py +79 -43
- imap_processing/ultra/l1c/helio_pset.py +68 -39
- imap_processing/ultra/l1c/l1c_lookup_utils.py +45 -12
- imap_processing/ultra/l1c/spacecraft_pset.py +81 -37
- imap_processing/ultra/l1c/ultra_l1c.py +27 -22
- imap_processing/ultra/l1c/ultra_l1c_culling.py +7 -0
- imap_processing/ultra/l1c/ultra_l1c_pset_bins.py +41 -41
- imap_processing/ultra/l2/ultra_l2.py +54 -10
- imap_processing/ultra/utils/ultra_l1_utils.py +10 -5
- {imap_processing-0.19.0.dist-info → imap_processing-0.19.2.dist-info}/METADATA +1 -1
- {imap_processing-0.19.0.dist-info → imap_processing-0.19.2.dist-info}/RECORD +62 -60
- imap_processing/ultra/l1b/cullingmask.py +0 -90
- imap_processing/ultra/l1c/histogram.py +0 -36
- /imap_processing/glows/ancillary/{imap_glows_pipeline_settings_20250923_v002.json → imap_glows_pipeline-settings_20250923_v002.json} +0 -0
- {imap_processing-0.19.0.dist-info → imap_processing-0.19.2.dist-info}/LICENSE +0 -0
- {imap_processing-0.19.0.dist-info → imap_processing-0.19.2.dist-info}/WHEEL +0 -0
- {imap_processing-0.19.0.dist-info → imap_processing-0.19.2.dist-info}/entry_points.txt +0 -0
|
@@ -681,7 +681,6 @@ class HistogramL1B:
|
|
|
681
681
|
histogram: np.ndarray
|
|
682
682
|
flight_software_version: str
|
|
683
683
|
seq_count_in_pkts_file: int
|
|
684
|
-
# ancillary_data_files: np.ndarray TODO Add this
|
|
685
684
|
first_spin_id: int
|
|
686
685
|
last_spin_id: int
|
|
687
686
|
flags_set_onboard: int # TODO: this should be renamed in L1B
|
|
@@ -705,9 +704,7 @@ class HistogramL1B:
|
|
|
705
704
|
imap_time_offset: np.double # No conversion needed from l1a->l1b
|
|
706
705
|
glows_start_time: np.double # No conversion needed from l1a->l1b
|
|
707
706
|
glows_time_offset: np.double # No conversion needed from l1a->l1b
|
|
708
|
-
|
|
709
|
-
# init=False
|
|
710
|
-
# ) # Could be datetime TODO: Can't put a string in data
|
|
707
|
+
unique_block_identifier: str = field(init=False)
|
|
711
708
|
imap_spin_angle_bin_cntr: np.ndarray = field(init=False) # Same size as bins
|
|
712
709
|
histogram_flag_array: np.ndarray = field(init=False)
|
|
713
710
|
# These two are retrieved from spin data
|
|
@@ -724,10 +721,9 @@ class HistogramL1B:
|
|
|
724
721
|
flags: np.ndarray = field(init=False)
|
|
725
722
|
ancillary_exclusions: InitVar[AncillaryExclusions]
|
|
726
723
|
ancillary_parameters: InitVar[AncillaryParameters]
|
|
724
|
+
pipeline_settings: InitVar[PipelineSettings]
|
|
727
725
|
# TODO:
|
|
728
726
|
# - Determine a good way to output flags as "human readable"
|
|
729
|
-
# - Add spice pieces
|
|
730
|
-
# - also unique identifiers
|
|
731
727
|
# - Bad angle algorithm using SPICE locations
|
|
732
728
|
# - Move ancillary file to AWS
|
|
733
729
|
|
|
@@ -739,6 +735,7 @@ class HistogramL1B:
|
|
|
739
735
|
pulse_length_variance: np.double,
|
|
740
736
|
ancillary_exclusions: AncillaryExclusions,
|
|
741
737
|
ancillary_parameters: AncillaryParameters,
|
|
738
|
+
pipeline_settings: PipelineSettings,
|
|
742
739
|
) -> None:
|
|
743
740
|
"""
|
|
744
741
|
Will process data.
|
|
@@ -759,6 +756,8 @@ class HistogramL1B:
|
|
|
759
756
|
Ancillary exclusions data for bad-angle flag processing.
|
|
760
757
|
ancillary_parameters : AncillaryParameters
|
|
761
758
|
Ancillary parameters for decoding histogram data.
|
|
759
|
+
pipeline_settings : PipelineSettings
|
|
760
|
+
Pipeline settings for processing thresholds and flags.
|
|
762
761
|
"""
|
|
763
762
|
# self.histogram_flag_array = np.zeros((2,))
|
|
764
763
|
day = met_to_datetime64(self.imap_start_time)
|
|
@@ -804,9 +803,9 @@ class HistogramL1B:
|
|
|
804
803
|
# is_inside_excluded_region, is_excluded_by_instr_team,
|
|
805
804
|
# is_suspected_transient] x 3600 bins
|
|
806
805
|
self.histogram_flag_array = self._compute_histogram_flag_array(day_exclusions)
|
|
807
|
-
#
|
|
808
|
-
|
|
809
|
-
|
|
806
|
+
# Generate ISO datetime string using SPICE functions
|
|
807
|
+
datetime64_time = met_to_datetime64(self.imap_start_time)
|
|
808
|
+
self.unique_block_identifier = np.datetime_as_string(datetime64_time, "s")
|
|
810
809
|
self.flags = np.ones((FLAG_LENGTH,), dtype=np.uint8)
|
|
811
810
|
|
|
812
811
|
def update_spice_parameters(self) -> None:
|
|
@@ -852,7 +851,7 @@ class HistogramL1B:
|
|
|
852
851
|
geometry.frame_transform(
|
|
853
852
|
time_range,
|
|
854
853
|
np.array([0, 0, 1]),
|
|
855
|
-
SpiceFrame.
|
|
854
|
+
SpiceFrame.IMAP_SPACECRAFT,
|
|
856
855
|
SpiceFrame.ECLIPJ2000,
|
|
857
856
|
)
|
|
858
857
|
)
|
|
@@ -873,7 +872,7 @@ class HistogramL1B:
|
|
|
873
872
|
)
|
|
874
873
|
position = imap_state[:, :3]
|
|
875
874
|
velocity = imap_state[:, 3:]
|
|
876
|
-
#
|
|
875
|
+
# average and standard deviation over time (rows)
|
|
877
876
|
self.spacecraft_location_average = np.average(position, axis=0)
|
|
878
877
|
self.spacecraft_location_std_dev = np.std(position, axis=0)
|
|
879
878
|
self.spacecraft_velocity_average = np.average(velocity, axis=0)
|
imap_processing/hi/hi_l1c.py
CHANGED
|
@@ -19,7 +19,7 @@ from imap_processing.hi.hi_l1a import (
|
|
|
19
19
|
HALF_CLOCK_TICK_S,
|
|
20
20
|
)
|
|
21
21
|
from imap_processing.hi.utils import (
|
|
22
|
-
|
|
22
|
+
CalibrationProductConfig,
|
|
23
23
|
create_dataset_variables,
|
|
24
24
|
full_dataarray,
|
|
25
25
|
parse_sensor_number,
|
|
@@ -378,8 +378,9 @@ def pset_counts(
|
|
|
378
378
|
filtered_de_df["spin_phase"].to_numpy() * N_SPIN_BINS
|
|
379
379
|
).astype(int)
|
|
380
380
|
# When iterating over rows of a dataframe, the names of the multi-index
|
|
381
|
-
# are not preserved. Below, `config_row.Index[0]` gets the
|
|
382
|
-
# value from the namedtuple representing the
|
|
381
|
+
# are not preserved. Below, `config_row.Index[0]` gets the
|
|
382
|
+
# calibration_prod value from the namedtuple representing the
|
|
383
|
+
# dataframe row.
|
|
383
384
|
np.add.at(
|
|
384
385
|
counts_var["counts"].data[0, i_esa, config_row.Index[0]],
|
|
385
386
|
spin_bin_indices,
|
|
@@ -684,109 +685,3 @@ def good_time_and_phase_mask(
|
|
|
684
685
|
"""
|
|
685
686
|
# TODO: Implement this once we have Goodtimes data product defined.
|
|
686
687
|
return np.full_like(tick_mets, True, dtype=bool)
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
@pd.api.extensions.register_dataframe_accessor("cal_prod_config")
|
|
690
|
-
class CalibrationProductConfig:
|
|
691
|
-
"""
|
|
692
|
-
Register custom accessor for calibration product configuration DataFrames.
|
|
693
|
-
|
|
694
|
-
Parameters
|
|
695
|
-
----------
|
|
696
|
-
pandas_obj : pandas.DataFrame
|
|
697
|
-
Object to run validation and use accessor functions on.
|
|
698
|
-
"""
|
|
699
|
-
|
|
700
|
-
index_columns = (
|
|
701
|
-
"cal_prod_num",
|
|
702
|
-
"esa_energy_step",
|
|
703
|
-
)
|
|
704
|
-
tof_detector_pairs = ("ab", "ac1", "bc1", "c1c2")
|
|
705
|
-
required_columns = (
|
|
706
|
-
"coincidence_type_list",
|
|
707
|
-
*[
|
|
708
|
-
f"tof_{det_pair}_{limit}"
|
|
709
|
-
for det_pair in tof_detector_pairs
|
|
710
|
-
for limit in ["low", "high"]
|
|
711
|
-
],
|
|
712
|
-
)
|
|
713
|
-
|
|
714
|
-
def __init__(self, pandas_obj: pd.DataFrame) -> None:
|
|
715
|
-
self._validate(pandas_obj)
|
|
716
|
-
self._obj = pandas_obj
|
|
717
|
-
self._add_coincidence_values_column()
|
|
718
|
-
|
|
719
|
-
def _validate(self, df: pd.DataFrame) -> None:
|
|
720
|
-
"""
|
|
721
|
-
Validate the current configuration.
|
|
722
|
-
|
|
723
|
-
Parameters
|
|
724
|
-
----------
|
|
725
|
-
df : pandas.DataFrame
|
|
726
|
-
Object to validate.
|
|
727
|
-
|
|
728
|
-
Raises
|
|
729
|
-
------
|
|
730
|
-
AttributeError : If the dataframe does not pass validation.
|
|
731
|
-
"""
|
|
732
|
-
for index_name in self.index_columns:
|
|
733
|
-
if index_name in df.index:
|
|
734
|
-
raise AttributeError(
|
|
735
|
-
f"Required index {index_name} not present in dataframe."
|
|
736
|
-
)
|
|
737
|
-
# Verify that the Dataframe has all the required columns
|
|
738
|
-
for col in self.required_columns:
|
|
739
|
-
if col not in df.columns:
|
|
740
|
-
raise AttributeError(f"Required column {col} not present in dataframe.")
|
|
741
|
-
# TODO: Verify that the same ESA energy steps exist in all unique calibration
|
|
742
|
-
# product numbers
|
|
743
|
-
|
|
744
|
-
def _add_coincidence_values_column(self) -> None:
|
|
745
|
-
"""Generate and add the coincidence_type_values column to the dataframe."""
|
|
746
|
-
# Add a column that consists of the coincidence type strings converted
|
|
747
|
-
# to integer values
|
|
748
|
-
self._obj["coincidence_type_values"] = self._obj.apply(
|
|
749
|
-
lambda row: tuple(
|
|
750
|
-
CoincidenceBitmap.detector_hit_str_to_int(entry)
|
|
751
|
-
for entry in row["coincidence_type_list"]
|
|
752
|
-
),
|
|
753
|
-
axis=1,
|
|
754
|
-
)
|
|
755
|
-
|
|
756
|
-
@classmethod
|
|
757
|
-
def from_csv(cls, path: Path) -> pd.DataFrame:
|
|
758
|
-
"""
|
|
759
|
-
Read configuration CSV file into a pandas.DataFrame.
|
|
760
|
-
|
|
761
|
-
Parameters
|
|
762
|
-
----------
|
|
763
|
-
path : pathlib.Path
|
|
764
|
-
Location of the Calibration Product configuration CSV file.
|
|
765
|
-
|
|
766
|
-
Returns
|
|
767
|
-
-------
|
|
768
|
-
dataframe : pandas.DataFrame
|
|
769
|
-
Validated calibration product configuration data frame.
|
|
770
|
-
"""
|
|
771
|
-
df = pd.read_csv(
|
|
772
|
-
path,
|
|
773
|
-
index_col=cls.index_columns,
|
|
774
|
-
converters={"coincidence_type_list": lambda s: tuple(s.split("|"))},
|
|
775
|
-
comment="#",
|
|
776
|
-
)
|
|
777
|
-
# Force the _init_ method to run by using the namespace
|
|
778
|
-
_ = df.cal_prod_config.number_of_products
|
|
779
|
-
return df
|
|
780
|
-
|
|
781
|
-
@property
|
|
782
|
-
def number_of_products(self) -> int:
|
|
783
|
-
"""
|
|
784
|
-
Get the number of calibration products in the current configuration.
|
|
785
|
-
|
|
786
|
-
Returns
|
|
787
|
-
-------
|
|
788
|
-
number_of_products : int
|
|
789
|
-
The maximum number of calibration products defined in the list of
|
|
790
|
-
calibration product definitions.
|
|
791
|
-
"""
|
|
792
|
-
return len(self._obj.index.unique(level="cal_prod_num"))
|
imap_processing/hi/hi_l2.py
CHANGED
|
@@ -13,6 +13,7 @@ from imap_processing.ena_maps.ena_maps import (
|
|
|
13
13
|
RectangularSkyMap,
|
|
14
14
|
)
|
|
15
15
|
from imap_processing.ena_maps.utils.naming import MapDescriptor
|
|
16
|
+
from imap_processing.hi.utils import CalibrationProductConfig
|
|
16
17
|
|
|
17
18
|
logger = logging.getLogger(__name__)
|
|
18
19
|
|
|
@@ -153,14 +154,25 @@ def generate_hi_map(
|
|
|
153
154
|
output_map.data_1d["obs_date_range"] = xr.zeros_like(output_map.data_1d["obs_date"])
|
|
154
155
|
|
|
155
156
|
# Rename and convert coordinate from esa_energy_step energy
|
|
156
|
-
|
|
157
|
+
esa_df = esa_energy_df(
|
|
157
158
|
esa_energies_path, output_map.data_1d["esa_energy_step"].data
|
|
158
159
|
)
|
|
159
160
|
output_map.data_1d = output_map.data_1d.rename({"esa_energy_step": "energy"})
|
|
160
|
-
output_map.data_1d = output_map.data_1d.assign_coords(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
#
|
|
161
|
+
output_map.data_1d = output_map.data_1d.assign_coords(
|
|
162
|
+
energy=esa_df["nominal_central_energy"].values
|
|
163
|
+
)
|
|
164
|
+
# Set the energy_step_delta values to the energy bandpass half-width-half-max
|
|
165
|
+
energy_delta = esa_df["bandpass_fwhm"].values / 2
|
|
166
|
+
output_map.data_1d["energy_delta_minus"] = xr.DataArray(
|
|
167
|
+
energy_delta,
|
|
168
|
+
name="energy_delta_minus",
|
|
169
|
+
dims=["energy"],
|
|
170
|
+
)
|
|
171
|
+
output_map.data_1d["energy_delta_plus"] = xr.DataArray(
|
|
172
|
+
energy_delta,
|
|
173
|
+
name="energy_delta_plus",
|
|
174
|
+
dims=["energy"],
|
|
175
|
+
)
|
|
164
176
|
|
|
165
177
|
output_map.data_1d = output_map.data_1d.drop("esa_energy_step_label")
|
|
166
178
|
|
|
@@ -223,25 +235,26 @@ def calculate_ena_intensity(
|
|
|
223
235
|
geometric_factors_path : str or pathlib.Path
|
|
224
236
|
Where to get the geometric factors from.
|
|
225
237
|
esa_energies_path : str or pathlib.Path
|
|
226
|
-
Where to get the energies
|
|
238
|
+
Where to get the esa energies, energy deltas, and geometric factors.
|
|
227
239
|
|
|
228
240
|
Returns
|
|
229
241
|
-------
|
|
230
242
|
intensity_vars : dict[str, xarray.DataArray]
|
|
231
243
|
ENA Intensity with statistical and systematic uncertainties.
|
|
232
244
|
"""
|
|
233
|
-
#
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
245
|
+
# read calibration product configuration file
|
|
246
|
+
cal_prod_df = CalibrationProductConfig.from_csv(geometric_factors_path)
|
|
247
|
+
# reindex_like removes esa_energy_steps and calibration products not in the
|
|
248
|
+
# map_ds esa_energy_step and calibration_product coordinates
|
|
249
|
+
geometric_factor = cal_prod_df.to_xarray().reindex_like(map_ds)["geometric_factor"]
|
|
250
|
+
geometric_factor = geometric_factor.transpose(
|
|
251
|
+
*[coord for coord in map_ds.coords if coord in geometric_factor.coords]
|
|
239
252
|
)
|
|
240
|
-
|
|
241
|
-
esa_energy =
|
|
253
|
+
energy_df = esa_energy_df(esa_energies_path, map_ds["esa_energy_step"].data)
|
|
254
|
+
esa_energy = energy_df.to_xarray()["nominal_central_energy"]
|
|
242
255
|
|
|
243
256
|
# Convert ENA Signal Rate to Flux
|
|
244
|
-
flux_conversion_divisor = geometric_factor * esa_energy
|
|
257
|
+
flux_conversion_divisor = geometric_factor * esa_energy
|
|
245
258
|
intensity_vars = {
|
|
246
259
|
"ena_intensity": map_ds["ena_signal_rates"] / flux_conversion_divisor,
|
|
247
260
|
"ena_intensity_stat_unc": map_ds["ena_signal_rate_stat_unc"]
|
|
@@ -267,9 +280,9 @@ def calculate_ena_intensity(
|
|
|
267
280
|
return intensity_vars
|
|
268
281
|
|
|
269
282
|
|
|
270
|
-
def
|
|
283
|
+
def esa_energy_df(
|
|
271
284
|
esa_energies_path: str | Path, esa_energy_steps: np.ndarray
|
|
272
|
-
) ->
|
|
285
|
+
) -> pd.DataFrame:
|
|
273
286
|
"""
|
|
274
287
|
Lookup the nominal central energy values for given esa energy steps.
|
|
275
288
|
|
|
@@ -282,13 +295,11 @@ def esa_energy_lookup(
|
|
|
282
295
|
|
|
283
296
|
Returns
|
|
284
297
|
-------
|
|
285
|
-
|
|
286
|
-
|
|
298
|
+
esa_energies_df: pandas.DataFrame
|
|
299
|
+
Full data frame from the csv file filtered to only include the
|
|
300
|
+
esa_energy_steps input.
|
|
287
301
|
"""
|
|
288
302
|
esa_energies_lut = pd.read_csv(
|
|
289
303
|
esa_energies_path, comment="#", index_col="esa_energy_step"
|
|
290
304
|
)
|
|
291
|
-
|
|
292
|
-
"nominal_central_energy"
|
|
293
|
-
].values
|
|
294
|
-
return esa_energies
|
|
305
|
+
return esa_energies_lut.loc[esa_energy_steps]
|
imap_processing/hi/utils.py
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"""IMAP-Hi utils functions."""
|
|
2
2
|
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
3
5
|
import re
|
|
4
6
|
from collections.abc import Iterable, Sequence
|
|
5
7
|
from dataclasses import dataclass
|
|
6
8
|
from enum import IntEnum
|
|
9
|
+
from pathlib import Path
|
|
7
10
|
|
|
8
11
|
import numpy as np
|
|
9
12
|
import pandas as pd
|
|
@@ -392,3 +395,109 @@ class EsaEnergyStepLookupTable:
|
|
|
392
395
|
return results.astype(self._esa_energy_step_dtype)[0]
|
|
393
396
|
else:
|
|
394
397
|
return results.astype(self._esa_energy_step_dtype)
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
@pd.api.extensions.register_dataframe_accessor("cal_prod_config")
|
|
401
|
+
class CalibrationProductConfig:
|
|
402
|
+
"""
|
|
403
|
+
Register custom accessor for calibration product configuration DataFrames.
|
|
404
|
+
|
|
405
|
+
Parameters
|
|
406
|
+
----------
|
|
407
|
+
pandas_obj : pandas.DataFrame
|
|
408
|
+
Object to run validation and use accessor functions on.
|
|
409
|
+
"""
|
|
410
|
+
|
|
411
|
+
index_columns = (
|
|
412
|
+
"calibration_prod",
|
|
413
|
+
"esa_energy_step",
|
|
414
|
+
)
|
|
415
|
+
tof_detector_pairs = ("ab", "ac1", "bc1", "c1c2")
|
|
416
|
+
required_columns = (
|
|
417
|
+
"coincidence_type_list",
|
|
418
|
+
*[
|
|
419
|
+
f"tof_{det_pair}_{limit}"
|
|
420
|
+
for det_pair in tof_detector_pairs
|
|
421
|
+
for limit in ["low", "high"]
|
|
422
|
+
],
|
|
423
|
+
)
|
|
424
|
+
|
|
425
|
+
def __init__(self, pandas_obj: pd.DataFrame) -> None:
|
|
426
|
+
self._validate(pandas_obj)
|
|
427
|
+
self._obj = pandas_obj
|
|
428
|
+
self._add_coincidence_values_column()
|
|
429
|
+
|
|
430
|
+
def _validate(self, df: pd.DataFrame) -> None:
|
|
431
|
+
"""
|
|
432
|
+
Validate the current configuration.
|
|
433
|
+
|
|
434
|
+
Parameters
|
|
435
|
+
----------
|
|
436
|
+
df : pandas.DataFrame
|
|
437
|
+
Object to validate.
|
|
438
|
+
|
|
439
|
+
Raises
|
|
440
|
+
------
|
|
441
|
+
AttributeError : If the dataframe does not pass validation.
|
|
442
|
+
"""
|
|
443
|
+
for index_name in self.index_columns:
|
|
444
|
+
if index_name in df.index:
|
|
445
|
+
raise AttributeError(
|
|
446
|
+
f"Required index {index_name} not present in dataframe."
|
|
447
|
+
)
|
|
448
|
+
# Verify that the Dataframe has all the required columns
|
|
449
|
+
for col in self.required_columns:
|
|
450
|
+
if col not in df.columns:
|
|
451
|
+
raise AttributeError(f"Required column {col} not present in dataframe.")
|
|
452
|
+
# TODO: Verify that the same ESA energy steps exist in all unique calibration
|
|
453
|
+
# product numbers
|
|
454
|
+
|
|
455
|
+
def _add_coincidence_values_column(self) -> None:
|
|
456
|
+
"""Generate and add the coincidence_type_values column to the dataframe."""
|
|
457
|
+
# Add a column that consists of the coincidence type strings converted
|
|
458
|
+
# to integer values
|
|
459
|
+
self._obj["coincidence_type_values"] = self._obj.apply(
|
|
460
|
+
lambda row: tuple(
|
|
461
|
+
CoincidenceBitmap.detector_hit_str_to_int(entry)
|
|
462
|
+
for entry in row["coincidence_type_list"]
|
|
463
|
+
),
|
|
464
|
+
axis=1,
|
|
465
|
+
)
|
|
466
|
+
|
|
467
|
+
@classmethod
|
|
468
|
+
def from_csv(cls, path: str | Path) -> pd.DataFrame:
|
|
469
|
+
"""
|
|
470
|
+
Read configuration CSV file into a pandas.DataFrame.
|
|
471
|
+
|
|
472
|
+
Parameters
|
|
473
|
+
----------
|
|
474
|
+
path : str or pathlib.Path
|
|
475
|
+
Location of the Calibration Product configuration CSV file.
|
|
476
|
+
|
|
477
|
+
Returns
|
|
478
|
+
-------
|
|
479
|
+
dataframe : pandas.DataFrame
|
|
480
|
+
Validated calibration product configuration data frame.
|
|
481
|
+
"""
|
|
482
|
+
df = pd.read_csv(
|
|
483
|
+
path,
|
|
484
|
+
index_col=cls.index_columns,
|
|
485
|
+
converters={"coincidence_type_list": lambda s: tuple(s.split("|"))},
|
|
486
|
+
comment="#",
|
|
487
|
+
)
|
|
488
|
+
# Force the _init_ method to run by using the namespace
|
|
489
|
+
_ = df.cal_prod_config.number_of_products
|
|
490
|
+
return df
|
|
491
|
+
|
|
492
|
+
@property
|
|
493
|
+
def number_of_products(self) -> int:
|
|
494
|
+
"""
|
|
495
|
+
Get the number of calibration products in the current configuration.
|
|
496
|
+
|
|
497
|
+
Returns
|
|
498
|
+
-------
|
|
499
|
+
number_of_products : int
|
|
500
|
+
The maximum number of calibration products defined in the list of
|
|
501
|
+
calibration product definitions.
|
|
502
|
+
"""
|
|
503
|
+
return len(self._obj.index.unique(level="calibration_prod"))
|
|
@@ -133,6 +133,7 @@ def transform_instrument_vectors_to_inertial(
|
|
|
133
133
|
spin_phase: NDArray,
|
|
134
134
|
sc_inertial_right: NDArray,
|
|
135
135
|
sc_inertial_decline: NDArray,
|
|
136
|
+
# TODO: Use correct IMAP_MAG_I or IMAP_MAG_O frame here
|
|
136
137
|
instrument_frame: SpiceFrame = SpiceFrame.IMAP_MAG,
|
|
137
138
|
spacecraft_frame: SpiceFrame = SpiceFrame.IMAP_SPACECRAFT,
|
|
138
139
|
) -> NDArray:
|
|
@@ -144,7 +144,7 @@ def create_xarray_from_records(records: list[dict]) -> xr.Dataset: # noqa: PLR0
|
|
|
144
144
|
# Populate the dataset variables
|
|
145
145
|
for i, record in enumerate(records):
|
|
146
146
|
for key, val in record.items():
|
|
147
|
-
if key in ["apid", "met", "met_in_utc", "ttj2000ns"]:
|
|
147
|
+
if key in ["apid", "met", "met_in_utc", "ttj2000ns", "last_modified"]:
|
|
148
148
|
continue
|
|
149
149
|
elif key in ["mag_B_GSE", "mag_B_GSM", "mag_B_RTN"]:
|
|
150
150
|
dataset[key].data[i, :] = val
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
incident_E-Step,Observed_E-Step,Cntr_E,Cntr_E_unc,GF_Dbl_all,GF_Dbl_all_unc,GF_Trpl_all,GF_Trpl_all_unc,GF_Dbl_H,GF_Dbl_H_unc,GF_Trpl_H,GF_Trpl_H_unc
|
|
2
|
+
Hi_Res,,[keV],[keV],[cm^2sr keV/keV],[cm^2sr keV/keV],[cm^2sr keV/keV],[cm^2sr keV/keV],[cm^2sr keV/keV],[cm^2sr keV/keV],[cm^2sr keV/keV],[cm^2sr keV/keV]
|
|
3
|
+
1,1,0.015,0.00135,5.35E-05,4.82E-06,2.20E-05,1.87E-06,5.32E-05,4.26E-06,2.19E-05,1.86E-06
|
|
4
|
+
2,1,0.015,0.00135,3.10E-05,2.79E-06,1.25E-05,1.06E-06,3.09E-05,2.47E-06,1.27E-05,1.08E-06
|
|
5
|
+
2,2,0.029,0.00261,1.04E-04,9.36E-06,4.27E-05,3.63E-06,1.03E-04,8.26E-06,4.24E-05,3.61E-06
|
|
6
|
+
3,1,0.015,0.00135,4.13E-05,3.72E-06,1.68E-05,1.43E-06,4.16E-05,3.33E-06,1.71E-05,1.45E-06
|
|
7
|
+
3,2,0.029,0.00261,1.28E-04,1.15E-05,5.02E-05,4.26E-06,1.30E-04,1.04E-05,5.35E-05,4.55E-06
|
|
8
|
+
3,3,0.055,0.00495,1.59E-04,1.43E-05,6.54E-05,5.56E-06,1.59E-04,1.27E-05,6.51E-05,5.54E-06
|
|
9
|
+
4,1,0.015,0.00135,9.85E-06,8.86E-07,3.73E-06,3.17E-07,7.97E-06,6.38E-07,3.28E-06,2.79E-07
|
|
10
|
+
4,2,0.029,0.00261,1.71E-05,1.54E-06,6.54E-06,5.56E-07,1.68E-05,1.34E-06,6.89E-06,5.86E-07
|
|
11
|
+
4,3,0.055,0.00495,6.72E-05,6.05E-06,2.58E-05,2.19E-06,6.92E-05,5.53E-06,2.84E-05,2.42E-06
|
|
12
|
+
4,4,0.11,0.0099,1.79E-04,1.61E-05,7.36E-05,6.25E-06,1.78E-04,1.42E-05,7.30E-05,6.20E-06
|
|
13
|
+
5,1,0.015,0.00135,1.62E-05,1.46E-06,5.05E-06,4.29E-07,7.86E-06,6.29E-07,3.23E-06,2.75E-07
|
|
14
|
+
5,2,0.029,0.00261,1.57E-05,1.41E-06,5.16E-06,4.39E-07,9.72E-06,7.77E-07,3.99E-06,3.39E-07
|
|
15
|
+
5,3,0.055,0.00495,1.45E-05,1.31E-06,4.98E-06,4.24E-07,1.49E-05,1.20E-06,6.14E-06,5.22E-07
|
|
16
|
+
5,4,0.11,0.0099,5.81E-05,5.23E-06,2.15E-05,1.83E-06,6.00E-05,4.80E-06,2.47E-05,2.10E-06
|
|
17
|
+
5,5,0.209,0.01881,1.77E-04,1.59E-05,7.26E-05,6.17E-06,1.76E-04,1.41E-05,7.22E-05,6.14E-06
|
|
18
|
+
6,1,0.015,0.00135,1.34E-05,1.21E-06,4.33E-06,3.68E-07,9.40E-06,7.52E-07,3.86E-06,3.28E-07
|
|
19
|
+
6,2,0.029,0.00261,1.61E-05,1.45E-06,4.64E-06,3.94E-07,1.11E-05,8.92E-07,4.58E-06,3.89E-07
|
|
20
|
+
6,3,0.055,0.00495,1.74E-05,1.57E-06,5.02E-06,4.27E-07,1.42E-05,1.14E-06,5.84E-06,4.96E-07
|
|
21
|
+
6,4,0.11,0.0099,1.45E-05,1.30E-06,4.28E-06,3.64E-07,1.56E-05,1.25E-06,6.40E-06,5.44E-07
|
|
22
|
+
6,5,0.209,0.01881,5.81E-05,5.23E-06,2.06E-05,1.75E-06,6.01E-05,4.81E-06,2.47E-05,2.10E-06
|
|
23
|
+
6,6,0.439,0.03951,2.06E-04,1.85E-05,8.46E-05,7.19E-06,2.06E-04,1.64E-05,8.45E-05,7.18E-06
|
|
24
|
+
7,1,0.015,0.00135,5.32E-06,4.79E-07,1.51E-06,1.29E-07,5.05E-06,4.04E-07,2.08E-06,1.76E-07
|
|
25
|
+
7,2,0.029,0.00261,1.61E-05,1.45E-06,5.15E-06,4.38E-07,1.39E-05,1.11E-06,5.70E-06,4.85E-07
|
|
26
|
+
7,3,0.055,0.00495,1.96E-05,1.77E-06,6.10E-06,5.19E-07,1.42E-05,1.14E-06,5.84E-06,4.96E-07
|
|
27
|
+
7,4,0.11,0.0099,2.08E-05,1.87E-06,6.43E-06,5.46E-07,1.65E-05,1.32E-06,6.78E-06,5.77E-07
|
|
28
|
+
7,5,0.209,0.01881,2.52E-05,2.27E-06,8.69E-06,7.39E-07,2.61E-05,2.09E-06,1.07E-05,9.11E-07
|
|
29
|
+
7,6,0.439,0.03951,1.93E-04,1.74E-05,6.94E-05,5.90E-06,1.98E-04,1.59E-05,8.15E-05,6.93E-06
|
|
30
|
+
7,7,0.872,0.07848,3.82E-04,3.44E-05,1.57E-04,1.33E-05,3.82E-04,3.05E-05,1.57E-04,1.33E-05
|
|
31
|
+
8,1,0.015,0.00135,5.28E-05,4.75E-06,2.25E-05,1.91E-06,4.10E-05,3.28E-06,1.68E-05,1.43E-06
|
|
32
|
+
8,2,0.029,0.00261,6.14E-06,5.53E-07,1.96E-06,1.66E-07,5.25E-06,4.20E-07,2.16E-06,1.83E-07
|
|
33
|
+
8,3,0.055,0.00495,1.13E-05,1.02E-06,3.39E-06,2.88E-07,9.37E-06,7.50E-07,3.85E-06,3.27E-07
|
|
34
|
+
8,4,0.11,0.0099,1.16E-05,1.04E-06,3.83E-06,3.25E-07,8.69E-06,6.95E-07,3.57E-06,3.03E-07
|
|
35
|
+
8,5,0.209,0.01881,1.09E-05,9.78E-07,3.55E-06,3.02E-07,8.41E-06,6.73E-07,3.46E-06,2.94E-07
|
|
36
|
+
8,6,0.439,0.03951,3.29E-05,2.96E-06,1.28E-05,1.08E-06,3.28E-05,2.62E-06,1.35E-05,1.15E-06
|
|
37
|
+
8,7,0.872,0.07848,3.95E-04,3.56E-05,1.44E-04,1.23E-05,4.04E-04,3.23E-05,1.66E-04,1.41E-05
|
|
38
|
+
8,8,1.821,0.16389,5.41E-04,4.87E-05,2.22E-04,1.89E-05,5.41E-04,4.33E-05,2.22E-04,1.89E-05
|
|
39
|
+
Hi_Thr,,,,,,,,,,,
|
|
40
|
+
1,1,0.016,0.00144,8.92E-05,8.03E-06,3.67E-05,3.12E-06,8.87E-05,7.10E-06,3.65E-05,3.10E-06
|
|
41
|
+
2,1,0.016,0.00144,5.16E-05,4.65E-06,2.08E-05,1.76E-06,5.15E-05,4.12E-06,2.12E-05,1.80E-06
|
|
42
|
+
2,2,0.03,0.0027,1.73E-04,1.56E-05,7.12E-05,6.06E-06,1.72E-04,1.38E-05,7.07E-05,6.01E-06
|
|
43
|
+
3,1,0.016,0.00144,6.88E-05,6.19E-06,2.80E-05,2.38E-06,6.94E-05,5.55E-06,2.85E-05,2.42E-06
|
|
44
|
+
3,2,0.03,0.0027,2.13E-04,1.91E-05,8.36E-05,7.11E-06,2.17E-04,1.74E-05,8.92E-05,7.58E-06
|
|
45
|
+
3,3,0.056,0.00504,2.65E-04,2.39E-05,1.09E-04,9.26E-06,2.64E-04,2.11E-05,1.09E-04,9.23E-06
|
|
46
|
+
4,1,0.016,0.00144,1.64E-05,1.48E-06,6.22E-06,5.29E-07,1.33E-05,1.06E-06,5.46E-06,4.64E-07
|
|
47
|
+
4,2,0.03,0.0027,2.84E-05,2.56E-06,1.09E-05,9.27E-07,2.80E-05,2.24E-06,1.15E-05,9.77E-07
|
|
48
|
+
4,3,0.056,0.00504,1.12E-04,1.01E-05,4.30E-05,3.66E-06,1.15E-04,9.22E-06,4.74E-05,4.03E-06
|
|
49
|
+
4,4,0.111,0.00999,2.98E-04,2.68E-05,1.23E-04,1.04E-05,2.96E-04,2.37E-05,1.22E-04,1.03E-05
|
|
50
|
+
5,1,0.016,0.00144,2.70E-05,2.43E-06,8.42E-06,7.15E-07,1.31E-05,1.05E-06,5.38E-06,4.58E-07
|
|
51
|
+
5,2,0.03,0.0027,2.61E-05,2.35E-06,8.61E-06,7.31E-07,1.62E-05,1.30E-06,6.65E-06,5.66E-07
|
|
52
|
+
5,3,0.056,0.00504,2.42E-05,2.18E-06,8.30E-06,7.06E-07,2.49E-05,1.99E-06,1.02E-05,8.70E-07
|
|
53
|
+
5,4,0.111,0.00999,9.69E-05,8.72E-06,3.58E-05,3.04E-06,1.00E-04,8.00E-06,4.11E-05,3.49E-06
|
|
54
|
+
5,5,0.21,0.0189,2.94E-04,2.65E-05,1.21E-04,1.03E-05,2.93E-04,2.34E-05,1.20E-04,1.02E-05
|
|
55
|
+
6,1,0.016,0.00144,2.24E-05,2.01E-06,7.22E-06,6.14E-07,1.57E-05,1.25E-06,6.44E-06,5.47E-07
|
|
56
|
+
6,2,0.03,0.0027,2.68E-05,2.41E-06,7.73E-06,6.57E-07,1.86E-05,1.49E-06,7.64E-06,6.49E-07
|
|
57
|
+
6,3,0.056,0.00504,2.91E-05,2.61E-06,8.37E-06,7.12E-07,2.37E-05,1.89E-06,9.73E-06,8.27E-07
|
|
58
|
+
6,4,0.111,0.00999,2.41E-05,2.17E-06,7.13E-06,6.06E-07,2.60E-05,2.08E-06,1.07E-05,9.07E-07
|
|
59
|
+
6,5,0.21,0.0189,9.68E-05,8.71E-06,3.44E-05,2.92E-06,1.00E-04,8.02E-06,4.12E-05,3.50E-06
|
|
60
|
+
6,6,0.44,0.0396,3.43E-04,3.09E-05,1.41E-04,1.20E-05,3.43E-04,2.74E-05,1.41E-04,1.20E-05
|
|
61
|
+
7,1,0.016,0.00144,8.87E-06,7.98E-07,2.52E-06,2.14E-07,8.42E-06,6.73E-07,3.46E-06,2.94E-07
|
|
62
|
+
7,2,0.03,0.0027,2.68E-05,2.41E-06,8.59E-06,7.30E-07,2.31E-05,1.85E-06,9.50E-06,8.08E-07
|
|
63
|
+
7,3,0.056,0.00504,3.27E-05,2.95E-06,1.02E-05,8.64E-07,2.37E-05,1.89E-06,9.73E-06,8.27E-07
|
|
64
|
+
7,4,0.111,0.00999,3.47E-05,3.12E-06,1.07E-05,9.10E-07,2.75E-05,2.20E-06,1.13E-05,9.61E-07
|
|
65
|
+
7,5,0.21,0.0189,4.20E-05,3.78E-06,1.45E-05,1.23E-06,4.35E-05,3.48E-06,1.79E-05,1.52E-06
|
|
66
|
+
7,6,0.44,0.0396,3.21E-04,2.89E-05,1.16E-04,9.84E-06,3.31E-04,2.65E-05,1.36E-04,1.16E-05
|
|
67
|
+
7,7,0.873,0.07857,6.36E-04,5.73E-05,2.61E-04,2.22E-05,6.36E-04,5.09E-05,2.61E-04,2.22E-05
|
|
68
|
+
8,1,0.016,0.00144,8.79E-05,7.91E-06,3.75E-05,3.19E-06,6.83E-05,5.46E-06,2.81E-05,2.39E-06
|
|
69
|
+
8,2,0.03,0.0027,1.02E-05,9.21E-07,3.26E-06,2.77E-07,8.75E-06,7.00E-07,3.60E-06,3.06E-07
|
|
70
|
+
8,3,0.056,0.00504,1.88E-05,1.70E-06,5.65E-06,4.80E-07,1.56E-05,1.25E-06,6.42E-06,5.46E-07
|
|
71
|
+
8,4,0.111,0.00999,1.93E-05,1.73E-06,6.38E-06,5.42E-07,1.45E-05,1.16E-06,5.95E-06,5.06E-07
|
|
72
|
+
8,5,0.21,0.0189,1.81E-05,1.63E-06,5.92E-06,5.03E-07,1.40E-05,1.12E-06,5.76E-06,4.90E-07
|
|
73
|
+
8,6,0.44,0.0396,5.48E-05,4.93E-06,2.13E-05,1.81E-06,5.46E-05,4.37E-06,2.25E-05,1.91E-06
|
|
74
|
+
8,7,0.873,0.07857,6.59E-04,5.93E-05,2.40E-04,2.04E-05,6.74E-04,5.39E-05,2.77E-04,2.35E-05
|
|
75
|
+
8,8,1.822,0.16398,9.01E-04,8.11E-05,3.70E-04,3.15E-05,9.01E-04,7.21E-05,3.70E-04,3.15E-05
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
incident_E-Step,Observed_E-Step,Cntr_E,Cntr_E_unc,GF_Dbl_all,GF_Dbl_all_unc,GF_Trpl_all,GF_Trpl_all_unc,GF_Dbl_O,GF_Dbl_O_unc,GF_Trpl_O,GF_Trpl_O_unc
|
|
2
|
+
Hi_Res,,[keV],[keV],[cm^2sr keV/keV],[cm^2sr keV/keV],[cm^2sr keV/keV],[cm^2sr keV/keV],[cm^2sr keV/keV],[cm^2sr keV/keV],[cm^2sr keV/keV],[cm^2sr keV/keV]
|
|
3
|
+
1,1,0.016,0.00144,3.8700E-04,3.4400E-04,8.9100E-05,8.0200E-05,4.2600E-04,3.4100E-04,1.0600E-04,9.1500E-05
|
|
4
|
+
2,1,0.016,0.00144,2.8700E-04,2.5600E-04,6.6100E-05,5.9500E-05,2.7700E-04,2.2100E-04,6.9200E-05,5.9500E-05
|
|
5
|
+
2,2,0.032,0.00288,4.4800E-04,3.9900E-04,9.6700E-05,8.7000E-05,4.7800E-04,3.8200E-04,1.2000E-04,1.0300E-04
|
|
6
|
+
3,1,0.016,0.00144,5.2900E-04,4.7100E-04,1.3200E-04,1.1900E-04,4.1800E-04,3.3400E-04,1.0400E-04,8.9800E-05
|
|
7
|
+
3,2,0.032,0.00288,5.9300E-04,5.2800E-04,1.4100E-04,1.2700E-04,6.3000E-04,5.0400E-04,1.5800E-04,1.3600E-04
|
|
8
|
+
3,3,0.065,0.00585,6.9900E-04,6.2200E-04,1.6600E-04,1.5000E-04,7.6400E-04,6.1100E-04,1.9100E-04,1.6400E-04
|
|
9
|
+
4,1,0.016,0.00144,6.6400E-04,5.9100E-04,1.7700E-04,1.5900E-04,4.1600E-04,3.3300E-04,1.0400E-04,8.9400E-05
|
|
10
|
+
4,2,0.032,0.00288,1.1500E-03,1.0200E-03,2.6900E-04,2.4200E-04,1.0900E-03,8.7300E-04,2.7300E-04,2.3500E-04
|
|
11
|
+
4,3,0.065,0.00585,2.3600E-03,2.1000E-03,5.1700E-04,4.6500E-04,2.5200E-03,2.0100E-03,6.2900E-04,5.4100E-04
|
|
12
|
+
4,4,0.135,0.01215,8.1500E-04,7.2600E-04,1.9100E-04,1.7200E-04,8.7400E-04,7.0000E-04,2.1900E-04,1.8800E-04
|
|
13
|
+
5,1,0.016,0.00144,2.8100E-04,2.5000E-04,8.8400E-05,7.9600E-05,1.2500E-04,9.9900E-05,3.1200E-05,2.6800E-05
|
|
14
|
+
5,2,0.032,0.00288,3.8100E-04,3.4000E-04,1.0800E-04,9.7300E-05,2.0800E-04,1.6600E-04,5.1900E-05,4.4600E-05
|
|
15
|
+
5,3,0.065,0.00585,5.8000E-04,5.1600E-04,1.3800E-04,1.2400E-04,5.7100E-04,4.5700E-04,1.4300E-04,1.2300E-04
|
|
16
|
+
5,4,0.135,0.01215,5.4100E-04,4.8100E-04,1.2100E-04,1.0800E-04,5.6900E-04,4.5500E-04,1.4200E-04,1.2200E-04
|
|
17
|
+
5,5,0.279,0.02511,8.4100E-04,7.4900E-04,2.0500E-04,1.8500E-04,8.6900E-04,6.9500E-04,2.1700E-04,1.8700E-04
|
|
18
|
+
6,1,0.016,0.00144,2.2100E-04,1.9700E-04,7.1000E-05,6.3900E-05,4.7600E-05,3.8100E-05,1.1900E-05,1.0200E-05
|
|
19
|
+
6,2,0.032,0.00288,3.1900E-04,2.8400E-04,9.7800E-05,8.8000E-05,1.3800E-04,1.1100E-04,3.4600E-05,2.9800E-05
|
|
20
|
+
6,3,0.065,0.00585,4.4900E-04,4.0000E-04,1.2400E-04,1.1100E-04,1.7000E-04,1.3600E-04,4.2500E-05,3.6500E-05
|
|
21
|
+
6,4,0.135,0.01215,6.7700E-04,6.0300E-04,1.5400E-04,1.3800E-04,5.1000E-04,4.0800E-04,1.2700E-04,1.1000E-04
|
|
22
|
+
6,5,0.279,0.02511,1.2800E-03,1.1400E-03,2.9100E-04,2.6200E-04,1.1700E-03,9.3300E-04,2.9100E-04,2.5100E-04
|
|
23
|
+
6,6,0.601,0.05409,8.3600E-04,7.4400E-04,1.9800E-04,1.7800E-04,8.2700E-04,6.6100E-04,2.0700E-04,1.7800E-04
|
|
24
|
+
7,1,0.016,0.00144,1.8500E-04,1.6500E-04,5.9600E-05,5.3700E-05,5.6700E-05,4.5400E-05,1.4200E-05,1.2200E-05
|
|
25
|
+
7,2,0.032,0.00288,2.3400E-04,2.0800E-04,7.3700E-05,6.6300E-05,9.2100E-05,7.3700E-05,2.3000E-05,1.9800E-05
|
|
26
|
+
7,3,0.065,0.00585,3.2000E-04,2.8500E-04,9.2000E-05,8.2800E-05,1.0600E-04,8.5000E-05,2.6600E-05,2.2800E-05
|
|
27
|
+
7,4,0.135,0.01215,4.4900E-04,4.0000E-04,1.2000E-04,1.0800E-04,1.7800E-04,1.4200E-04,4.4400E-05,3.8200E-05
|
|
28
|
+
7,5,0.279,0.02511,7.1800E-04,6.3900E-04,1.7600E-04,1.5800E-04,6.1600E-04,4.9300E-04,1.5400E-04,1.3200E-04
|
|
29
|
+
7,6,0.601,0.05409,1.0300E-03,9.1800E-04,2.4500E-04,2.2000E-04,9.9900E-04,7.9900E-04,2.5000E-04,2.1500E-04
|
|
30
|
+
7,7,1.206,0.10854,9.6000E-04,8.5400E-04,2.4400E-04,2.1900E-04,9.6100E-04,7.6900E-04,2.4000E-04,2.0700E-04
|
|
31
|
+
8,1,0.016,0.00144,2.8900E-04,2.5800E-04,9.1800E-05,8.2700E-05,4.4800E-05,3.5800E-05,1.1200E-05,9.6300E-06
|
|
32
|
+
8,2,0.032,0.00288,3.4200E-04,3.0500E-04,1.0500E-04,9.4300E-05,6.8300E-05,5.4600E-05,1.7100E-05,1.4700E-05
|
|
33
|
+
8,3,0.065,0.00585,1.9300E-04,1.7200E-04,5.6900E-05,5.1200E-05,4.9700E-05,3.9800E-05,1.2400E-05,1.0700E-05
|
|
34
|
+
8,4,0.135,0.01215,2.7000E-04,2.4000E-04,7.2300E-05,6.5000E-05,6.1300E-05,4.9000E-05,1.5300E-05,1.3200E-05
|
|
35
|
+
8,5,0.279,0.02511,3.7600E-04,3.3500E-04,9.7400E-05,8.7700E-05,1.5500E-04,1.2400E-04,3.8800E-05,3.3300E-05
|
|
36
|
+
8,6,0.601,0.05409,7.3600E-04,6.5500E-04,1.8400E-04,1.6600E-04,6.0000E-04,4.8000E-04,1.5000E-04,1.2900E-04
|
|
37
|
+
8,7,1.206,0.10854,1.0600E-03,9.4100E-04,2.5600E-04,2.3100E-04,9.7300E-04,7.7900E-04,2.4300E-04,2.0900E-04
|
|
38
|
+
8,8,2.361,0.21249,9.8400E-04,8.7500E-04,2.5500E-04,2.2900E-04,9.3600E-04,7.4900E-04,2.3400E-04,2.0100E-04
|
|
39
|
+
Hi_Thr,,,,,,,,,,,
|
|
40
|
+
1,1,0.017,0.00153,6.4500E-04,5.7400E-04,1.4900E-04,1.3400E-04,7.1000E-04,5.6800E-04,1.7700E-04,1.5300E-04
|
|
41
|
+
2,1,0.017,0.00153,4.7900E-04,4.2600E-04,1.1000E-04,9.9200E-05,4.6100E-04,3.6900E-04,1.1500E-04,9.9200E-05
|
|
42
|
+
2,2,0.033,0.00297,7.4600E-04,6.6400E-04,1.6100E-04,1.4500E-04,7.9700E-04,6.3700E-04,1.9900E-04,1.7100E-04
|
|
43
|
+
3,1,0.017,0.00153,8.8200E-04,7.8500E-04,2.2000E-04,1.9800E-04,6.9600E-04,5.5700E-04,1.7400E-04,1.5000E-04
|
|
44
|
+
3,2,0.033,0.00297,9.8800E-04,8.7900E-04,2.3500E-04,2.1100E-04,1.0500E-03,8.4100E-04,2.6300E-04,2.2600E-04
|
|
45
|
+
3,3,0.066,0.00594,1.1700E-03,1.0400E-03,2.7700E-04,2.4900E-04,1.2700E-03,1.0200E-03,3.1800E-04,2.7400E-04
|
|
46
|
+
4,1,0.017,0.00153,1.1100E-03,9.8600E-04,2.9500E-04,2.6600E-04,6.9300E-04,5.5400E-04,1.7300E-04,1.4900E-04
|
|
47
|
+
4,2,0.033,0.00297,1.9200E-03,1.7100E-03,4.4800E-04,4.0300E-04,1.8200E-03,1.4600E-03,4.5500E-04,3.9100E-04
|
|
48
|
+
4,3,0.066,0.00594,3.9300E-03,3.4900E-03,8.6100E-04,7.7500E-04,4.1900E-03,3.3500E-03,1.0500E-03,9.0100E-04
|
|
49
|
+
4,4,0.136,0.01224,1.3600E-03,1.2100E-03,3.1800E-04,2.8600E-04,1.4600E-03,1.1700E-03,3.6400E-04,3.1300E-04
|
|
50
|
+
5,1,0.017,0.00153,4.6800E-04,4.1700E-04,1.4700E-04,1.3300E-04,2.0800E-04,1.6700E-04,5.2000E-05,4.4700E-05
|
|
51
|
+
5,2,0.033,0.00297,6.3600E-04,5.6600E-04,1.8000E-04,1.6200E-04,3.4600E-04,2.7700E-04,8.6500E-05,7.4400E-05
|
|
52
|
+
5,3,0.066,0.00594,9.6600E-04,8.6000E-04,2.3000E-04,2.0700E-04,9.5100E-04,7.6100E-04,2.3800E-04,2.0400E-04
|
|
53
|
+
5,4,0.136,0.01224,9.0100E-04,8.0200E-04,2.0100E-04,1.8100E-04,9.4800E-04,7.5800E-04,2.3700E-04,2.0400E-04
|
|
54
|
+
5,5,0.28,0.0252,1.4000E-03,1.2500E-03,3.4200E-04,3.0800E-04,1.4500E-03,1.1600E-03,3.6200E-04,3.1100E-04
|
|
55
|
+
6,1,0.017,0.00153,3.6800E-04,3.2800E-04,1.1800E-04,1.0700E-04,7.9400E-05,6.3500E-05,1.9800E-05,1.7100E-05
|
|
56
|
+
6,2,0.033,0.00297,5.3200E-04,4.7300E-04,1.6300E-04,1.4700E-04,2.3100E-04,1.8500E-04,5.7700E-05,4.9600E-05
|
|
57
|
+
6,3,0.066,0.00594,7.4800E-04,6.6600E-04,2.0600E-04,1.8500E-04,2.8300E-04,2.2600E-04,7.0800E-05,6.0900E-05
|
|
58
|
+
6,4,0.136,0.01224,1.1300E-03,1.0000E-03,2.5600E-04,2.3000E-04,8.4900E-04,6.8000E-04,2.1200E-04,1.8300E-04
|
|
59
|
+
6,5,0.28,0.0252,2.1400E-03,1.9100E-03,4.8500E-04,4.3700E-04,1.9400E-03,1.5500E-03,4.8600E-04,4.1800E-04
|
|
60
|
+
6,6,0.602,0.05418,1.3900E-03,1.2400E-03,3.3000E-04,2.9700E-04,1.3800E-03,1.1000E-03,3.4400E-04,2.9600E-04
|
|
61
|
+
7,1,0.017,0.00153,3.0900E-04,2.7500E-04,9.9400E-05,8.9500E-05,9.4500E-05,7.5600E-05,2.3600E-05,2.0300E-05
|
|
62
|
+
7,2,0.033,0.00297,3.9000E-04,3.4700E-04,1.2300E-04,1.1100E-04,1.5400E-04,1.2300E-04,3.8400E-05,3.3000E-05
|
|
63
|
+
7,3,0.066,0.00594,5.3400E-04,4.7500E-04,1.5300E-04,1.3800E-04,1.7700E-04,1.4200E-04,4.4300E-05,3.8100E-05
|
|
64
|
+
7,4,0.136,0.01224,7.4900E-04,6.6700E-04,2.0000E-04,1.8000E-04,2.9600E-04,2.3700E-04,7.4000E-05,6.3700E-05
|
|
65
|
+
7,5,0.28,0.0252,1.2000E-03,1.0700E-03,2.9300E-04,2.6400E-04,1.0300E-03,8.2100E-04,2.5700E-04,2.2100E-04
|
|
66
|
+
7,6,0.602,0.05418,1.7200E-03,1.5300E-03,4.0800E-04,3.6700E-04,1.6700E-03,1.3300E-03,4.1600E-04,3.5800E-04
|
|
67
|
+
7,7,1.207,0.10863,1.6000E-03,1.4200E-03,4.0600E-04,3.6500E-04,1.6000E-03,1.2800E-03,4.0000E-04,3.4400E-04
|
|
68
|
+
8,1,0.017,0.00153,4.8200E-04,4.2900E-04,1.5300E-04,1.3800E-04,7.4700E-05,5.9700E-05,1.8700E-05,1.6100E-05
|
|
69
|
+
8,2,0.033,0.00297,5.7000E-04,5.0800E-04,1.7500E-04,1.5700E-04,1.1400E-04,9.1100E-05,2.8500E-05,2.4500E-05
|
|
70
|
+
8,3,0.066,0.00594,3.2100E-04,2.8600E-04,9.4800E-05,8.5300E-05,8.2900E-05,6.6300E-05,2.0700E-05,1.7800E-05
|
|
71
|
+
8,4,0.136,0.01224,4.5000E-04,4.0100E-04,1.2000E-04,1.0800E-04,1.0200E-04,8.1700E-05,2.5500E-05,2.2000E-05
|
|
72
|
+
8,5,0.28,0.0252,6.2700E-04,5.5800E-04,1.6200E-04,1.4600E-04,2.5800E-04,2.0700E-04,6.4600E-05,5.5600E-05
|
|
73
|
+
8,6,0.602,0.05418,1.2300E-03,1.0900E-03,3.0700E-04,2.7600E-04,1.0000E-03,8.0000E-04,2.5000E-04,2.1500E-04
|
|
74
|
+
8,7,1.207,0.10863,1.7600E-03,1.5700E-03,4.2700E-04,3.8400E-04,1.6200E-03,1.3000E-03,4.0600E-04,3.4900E-04
|
|
75
|
+
8,8,2.362,0.21258,1.6400E-03,1.4600E-03,4.2500E-04,3.8200E-04,1.5600E-03,1.2500E-03,3.9000E-04,3.3500E-04
|