From 1977662164483b6844bce3cd452e3ee16d6d0c23 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Fri, 19 Jul 2024 21:00:53 +0200 Subject: [PATCH 01/92] moved _get_image oustide the dl1dh reader For looping over a given dl1 table and a single dl1 event (charges, peak times and mask), we can now retrieve the 2D images (input of the CNNs) without init and running the dl1dh reader. --- dl1_data_handler/reader.py | 197 ++++++++++++++++++++++--------------- 1 file changed, 118 insertions(+), 79 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 289cca4..fcc5af4 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -21,7 +21,60 @@ ) # let us read full tables inside the DL1 output file -__all__ = ["DLDataReader"] +__all__ = ["DLDataReader", "get_unmapped_vector", "apply_image_mapper"] + + +# Get a single telescope image from a particular event, uniquely +# identified by the filename, tel_type, and image table index. +# First extract a raw 1D vector and transform it into a 2D image using a +# mapping table. When 'indexed_conv' is selected this function should +# return the unmapped vector. +def get_unmapped_vector(self, dl1_event, image_settings): + unmapped_vector = np.zeros( + shape=( + len(dl1_event["image"]), + len(image_settings["image_channels"]), + ), + dtype=np.float32, + ) + for i, channel in enumerate(image_settings["image_channels"]): + mask = dl1_event["image_mask"] + if "image" in channel: + unmapped_vector[:, i] = dl1_event["image"] + if "time" in channel: + cleaned_peak_times = dl1_event["peak_time"] * mask + unmapped_vector[:, i] = ( + dl1_event["peak_time"] + - cleaned_peak_times[np.nonzero(cleaned_peak_times)].mean() + ) + if "clean" in channel or "mask" in channel: + unmapped_vector[:, i] *= mask + # Apply the transform to recover orginal floating point values if the file were compressed + if "image" in channel: + if image_settings["image_scale"] > 0.0: + unmapped_vector[:, i] /= image_settings["image_scale"] + if image_settings["image_offset"] > 0: + unmapped_vector[:, i] -= image_settings["image_offset"] + if "time" in channel: + if image_settings["peak_time_scale"] > 0.0: + unmapped_vector[:, i] /= image_settings["peak_time_scale"] + if image_settings["peak_time_offset"] > 0: + unmapped_vector[:, i] -= image_settings["peak_time_offset"] + return unmapped_vector + + +def apply_image_mapper( + self, unmapped_vector, image_mapper, camera_type, process_type="Simulation" +): + + # If 'indexed_conv' is selected, we only need the unmapped vector. + if image_mapper.mapping_method[camera_type] == "indexed_conv": + return unmapped_vector + + image = image_mapper.map_image(unmapped_vector, camera_type) + if process_type == "Observation" and camera_type == "LSTCam": + image = np.transpose(np.flip(image, axis=(0, 1)), (1, 0, 2)) # x = -y & y = -x + return image lock = threading.Lock() @@ -266,9 +319,14 @@ def __init__( # Integrated charges and peak arrival times (DL1a) self.image_channels = None if image_settings is not None: + self.image_settings = image_settings + self.image_settings["image_scale"] = 0.0 + self.image_settings["image_offset"] = 0 + self.image_settings["peak_time_scale"] = 0.0 + self.image_settings["peak_time_offset"] = 0 + # For code readability self.image_channels = image_settings["image_channels"] - self.image_scale, self.image_offset = 0.0, 0 - self.peak_time_scale, self.peak_time_offset = 0.0, 0 + # Image parameters (DL1b) self.parameter_list = None if parameter_settings is not None: @@ -284,14 +342,20 @@ def __init__( ._v_attrs ) # Check the transform value used for the file compression - if ( - "CTAFIELD_3_TRANSFORM_SCALE" in img_table_v_attrs - ): - self.image_scale = img_table_v_attrs["CTAFIELD_3_TRANSFORM_SCALE"] - self.image_offset = img_table_v_attrs["CTAFIELD_3_TRANSFORM_OFFSET"] + if "CTAFIELD_3_TRANSFORM_SCALE" in img_table_v_attrs: + self.image_settings["image_scale"] = img_table_v_attrs[ + "CTAFIELD_3_TRANSFORM_SCALE" + ] + self.image_settings["image_offset"] = img_table_v_attrs[ + "CTAFIELD_3_TRANSFORM_OFFSET" + ] if "CTAFIELD_4_TRANSFORM_SCALE" in img_table_v_attrs: - self.peak_time_scale = img_table_v_attrs["CTAFIELD_4_TRANSFORM_SCALE"] - self.peak_time_offset = img_table_v_attrs["CTAFIELD_4_TRANSFORM_OFFSET"] + self.image_settings["peak_time_scale"] = img_table_v_attrs[ + "CTAFIELD_4_TRANSFORM_SCALE" + ] + self.image_settings["peak_time_offset"] = img_table_v_attrs[ + "CTAFIELD_4_TRANSFORM_OFFSET" + ] self.simulation_info = None self.simulated_particles = {} @@ -410,11 +474,18 @@ def __init__( if self.get_trigger_patch == "file": try: # Read csv containing the trigger patch info - trigger_patch_info_csv_file = ( - pd.read_csv( - filename.replace("r0.dl1.h5", "npe.csv") - )[["obs_id", "event_id", "tel_id", "trg_pixel_id", "trg_waveform_sample_id"]] - .astype(int) + trigger_patch_info_csv_file = pd.read_csv( + filename.replace("r0.dl1.h5", "npe.csv") + )[ + [ + "obs_id", + "event_id", + "tel_id", + "trg_pixel_id", + "trg_waveform_sample_id", + ] + ].astype( + int ) trigger_patch_info = Table.from_pandas( trigger_patch_info_csv_file @@ -483,7 +554,10 @@ def __init__( ) # Construct the example identifiers - if self.trigger_settings is not None and self.get_trigger_patch == "file": + if ( + self.trigger_settings is not None + and self.get_trigger_patch == "file" + ): for ( sim_idx, img_idx, @@ -518,7 +592,10 @@ def __init__( ) else: # Construct the example identifiers - if self.trigger_settings is not None and self.get_trigger_patch == "file": + if ( + self.trigger_settings is not None + and self.get_trigger_patch == "file" + ): for img_idx, tel_id, trg_pix_id, trg_wvf_id in zip( allevents["img_index"], allevents["tel_id"], @@ -1246,66 +1323,6 @@ def _construct_simulated_info(self, file, simulation_info): return simulation_info - # Get a single telescope image from a particular event, uniquely - # identified by the filename, tel_type, and image table index. - # First extract a raw 1D vector and transform it into a 2D image using a - # mapping table. When 'indexed_conv' is selected this function should - # return the unmapped vector. - def _get_image(self, child, tel_type, image_index): - vector = np.zeros( - shape=( - self.num_pixels[self._get_camera_type(tel_type)], - len(self.image_channels), - ), - dtype=np.float32, - ) - # If the telescope didn't trigger, the image index is -1 and a blank - # image of all zeros with be loaded - if image_index != -1 and child is not None: - with lock: - record = child[image_index] - for i, channel in enumerate(self.image_channels): - cleaning_mask = "image_mask" - mask = record[cleaning_mask] - if "image" in channel: - vector[:, i] = record["image"] - if "time" in channel: - cleaned_peak_times = record["peak_time"] * mask - vector[:, i] = ( - record["peak_time"] - - cleaned_peak_times[np.nonzero(cleaned_peak_times)].mean() - ) - if "clean" in channel or "mask" in channel: - vector[:, i] *= mask - # Apply the transform to recover orginal floating point values if the file were compressed - if "image" in channel: - if self.image_scale > 0.0: - vector[:, i] /= self.image_scale - if self.image_offset > 0: - vector[:, i] -= self.image_offset - if "time" in channel: - if self.peak_time_scale > 0.0: - vector[:, i] /= self.peak_time_scale - if self.peak_time_offset > 0: - vector[:, i] -= self.peak_time_offset - - # If 'indexed_conv' is selected, we only need the unmapped vector. - if ( - self.image_mapper.mapping_method[self._get_camera_type(tel_type)] - == "indexed_conv" - ): - return vector - - image = self.image_mapper.map_image(vector, self._get_camera_type(tel_type)) - if ( - self.process_type == "Observation" - and self._get_camera_type(tel_type) == "LSTCam" - ): - image = np.transpose( - np.flip(image, axis=(0, 1)), (1, 0, 2) - ) # x = -y & y = -x - return image - def _append_subarray_info(self, subarray_table, subarray_info, query): with lock: for row in subarray_table.where(query): @@ -1827,7 +1844,18 @@ def _load_tel_type_data( child = self.files[ filename ].root.dl1.event.telescope.images._f_get_child(tel_table) - images.append(self._get_image(child, tel_type, trigger_info[i])) + unmapped_vector = get_unmapped_vector( + self, child[trigger_info[i]], self.image_settings + ) + images.append( + apply_image_mapper( + self, + unmapped_vector, + self.image_mapper, + self._get_camera_type(tel_type), + self.process_type, + ) + ) if self.parameter_list is not None: child = None @@ -1965,7 +1993,18 @@ def __getitem__(self, idx): child = self.files[ filename ].root.dl1.event.telescope.images._f_get_child(tel_table) - example.append(self._get_image(child, self.tel_type, index)) + unmapped_vector = get_unmapped_vector( + self, child[index], self.image_settings + ) + example.append( + apply_image_mapper( + self, + unmapped_vector, + self.image_mapper, + self._get_camera_type(self.tel_type), + self.process_type, + ) + ) if self.parameter_list is not None: with lock: From 144c5f53fa132d959d4ecf8dfe204dabfe085132 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Mon, 22 Jul 2024 15:24:42 +0200 Subject: [PATCH 02/92] move _get_waveform() outside the dl1dh reader as well also create separate function for the trigger patches on R0 data --- dl1_data_handler/reader.py | 1061 +++++++++++++++--------------------- 1 file changed, 440 insertions(+), 621 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index fcc5af4..2ed4a51 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -21,7 +21,13 @@ ) # let us read full tables inside the DL1 output file -__all__ = ["DLDataReader", "get_unmapped_vector", "apply_image_mapper"] +__all__ = [ + "DLDataReader", + "get_unmapped_image", + "apply_image_mapper", + "get_unmapped_waveform", + "get_mapped_trigger_patch", +] # Get a single telescope image from a particular event, uniquely @@ -29,42 +35,297 @@ # First extract a raw 1D vector and transform it into a 2D image using a # mapping table. When 'indexed_conv' is selected this function should # return the unmapped vector. -def get_unmapped_vector(self, dl1_event, image_settings): - unmapped_vector = np.zeros( +def get_unmapped_image(dl1_event, image_channels, image_transforms): + unmapped_image = np.zeros( shape=( len(dl1_event["image"]), - len(image_settings["image_channels"]), + len(image_channels), ), dtype=np.float32, ) - for i, channel in enumerate(image_settings["image_channels"]): + for i, channel in enumerate(image_channels): mask = dl1_event["image_mask"] if "image" in channel: - unmapped_vector[:, i] = dl1_event["image"] + unmapped_image[:, i] = dl1_event["image"] if "time" in channel: cleaned_peak_times = dl1_event["peak_time"] * mask - unmapped_vector[:, i] = ( + unmapped_image[:, i] = ( dl1_event["peak_time"] - cleaned_peak_times[np.nonzero(cleaned_peak_times)].mean() ) if "clean" in channel or "mask" in channel: - unmapped_vector[:, i] *= mask + unmapped_image[:, i] *= mask # Apply the transform to recover orginal floating point values if the file were compressed if "image" in channel: - if image_settings["image_scale"] > 0.0: - unmapped_vector[:, i] /= image_settings["image_scale"] - if image_settings["image_offset"] > 0: - unmapped_vector[:, i] -= image_settings["image_offset"] + if image_transforms["image_scale"] > 0.0: + unmapped_image[:, i] /= image_transforms["image_scale"] + if image_transforms["image_offset"] > 0: + unmapped_image[:, i] -= image_transforms["image_offset"] if "time" in channel: - if image_settings["peak_time_scale"] > 0.0: - unmapped_vector[:, i] /= image_settings["peak_time_scale"] - if image_settings["peak_time_offset"] > 0: - unmapped_vector[:, i] -= image_settings["peak_time_offset"] - return unmapped_vector + if image_transforms["peak_time_scale"] > 0.0: + unmapped_image[:, i] /= image_transforms["peak_time_scale"] + if image_transforms["peak_time_offset"] > 0: + unmapped_image[:, i] -= image_transforms["peak_time_offset"] + return unmapped_image + + +# Get a single telescope waveform from a particular event, uniquely +# identified by the filename, tel_type, and waveform table index. +# First extract a raw 2D vector and transform it into a 3D waveform using a +# mapping table. When 'indexed_conv' is selected this function should +# return the unmapped vector. +def get_unmapped_waveform( + r1_event, + waveform_settings, + dl1_cleaning_mask=None, +): + + unmapped_waveform = np.float32(r1_event["waveform"]) + # Check if camera has one or two gain(s) and apply selection + if unmapped_waveform.shape[0] == 1: + unmapped_waveform = unmapped_waveform[0] + else: + selected_gain_channel = r1_event["selected_gain_channel"][:, np.newaxis] + unmapped_waveform = np.where( + selected_gain_channel == 0, unmapped_waveform[0], unmapped_waveform[1] + ) + if waveform_settings["waveform_scale"] > 0.0: + unmapped_waveform /= waveform_settings["waveform_scale"] + if waveform_settings["waveform_offset"] > 0: + unmapped_waveform -= waveform_settings["waveform_offset"] + waveform_max = np.argmax(np.sum(unmapped_waveform, axis=0)) + if dl1_cleaning_mask is not None: + waveform_max = np.argmax( + np.sum(unmapped_waveform * dl1_cleaning_mask[:, None], axis=0) + ) + if waveform_settings["max_from_simulation"]: + waveform_max = int((len(unmapped_waveform) / 2) - 1) + + # Retrieve the sequence around the shower maximum + if ( + waveform_settings["sequence_max_length"] - waveform_settings["sequence_length"] + ) < 0.001: + waveform_start = 0 + waveform_stop = waveform_settings["sequence_max_length"] + else: + waveform_start = 1 + waveform_max - waveform_settings["sequence_length"] / 2 + waveform_stop = 1 + waveform_max + waveform_settings["sequence_length"] / 2 + if waveform_stop > waveform_settings["sequence_max_length"]: + waveform_start -= waveform_stop - waveform_settings["sequence_max_length"] + waveform_stop = waveform_settings["sequence_max_length"] + if waveform_start < 0: + waveform_stop += np.abs(waveform_start) + waveform_start = 0 + + # Apply the DL1 cleaning mask if selected + if "clean" in waveform_settings["type"] or "mask" in waveform_settings["type"]: + unmapped_waveform *= dl1_cleaning_mask[:, None] + + # Crop the unmapped waveform in samples + return unmapped_waveform[:, int(waveform_start) : int(waveform_stop)] + + +# Get a single telescope waveform from a particular event, uniquely +# identified by the filename, tel_type, and waveform table index. +# First extract a raw 2D vector and transform it into a 3D waveform using a +# mapping table. When 'indexed_conv' is selected this function should +# return the unmapped vector. +def get_mapped_trigger_patch( + r0_event, + waveform_settings, + trigger_settings, + image_mapper, + camera_type, + true_image=None, + process_type="Simulation", + random_trigger_patch=False, + trg_pixel_id=None, + trg_waveform_sample_id=None, +): + waveform = np.zeros( + shape=( + waveform_settings["shapes"][camera_type][0], + waveform_settings["shapes"][camera_type][1], + waveform_settings["sequence_length"], + ), + dtype=np.float16, + ) + + # Retrieve the true image if the child of the simulated images are provided + mapped_true_image, trigger_patch_true_image_sum = None, None + if true_image is not None: + mapped_true_image = image_mapper.map_image(true_image, camera_type) + + vector = r0_event["waveform"][0] + + waveform_max = np.argmax(np.sum(vector, axis=0)) + + if waveform_settings["max_from_simulation"]: + waveform_max = int((len(vector) / 2) - 1) + if trg_waveform_sample_id is not None: + waveform_max = trg_waveform_sample_id + + # Retrieve the sequence around the shower maximum and calculate the pedestal + # level per pixel outside that sequence if R0-pedsub is selected and FADC + # offset is not provided from the simulation. + pixped_nsb, nsb_sequence_length = None, None + if "FADC_offset" in waveform_settings: + pixped_nsb = np.full( + (vector.shape[0],), waveform_settings["FADC_offset"], dtype=int + ) + if ( + waveform_settings["sequence_max_length"] - waveform_settings["sequence_length"] + ) < 0.001: + waveform_start = 0 + waveform_stop = nsb_sequence_length = waveform_settings["sequence_max_length"] + if waveform_settings["r0pedsub"] and pixped_nsb is None: + pixped_nsb = np.sum(vector, axis=1) / nsb_sequence_length + else: + waveform_start = 1 + waveform_max - waveform_settings["sequence_length"] / 2 + waveform_stop = 1 + waveform_max + waveform_settings["sequence_length"] / 2 + nsb_sequence_length = ( + waveform_settings["sequence_max_length"] + - waveform_settings["sequence_length"] + ) + if waveform_stop > waveform_settings["sequence_max_length"]: + waveform_start -= waveform_stop - waveform_settings["sequence_max_length"] + waveform_stop = waveform_settings["sequence_max_length"] + if waveform_settings["r0pedsub"] and pixped_nsb is None: + pixped_nsb = ( + np.sum(vector[:, : int(waveform_start)], axis=1) + / nsb_sequence_length + ) + if waveform_start < 0: + waveform_stop += np.abs(waveform_start) + waveform_start = 0 + if waveform_settings["r0pedsub"] and pixped_nsb is None: + pixped_nsb = ( + np.sum(vector[:, int(waveform_stop) :], axis=1) + / nsb_sequence_length + ) + if waveform_settings["r0pedsub"] and pixped_nsb is None: + pixped_nsb = np.sum(vector[:, 0 : int(waveform_start)], axis=1) + pixped_nsb += np.sum( + vector[:, int(waveform_stop) : waveform_settings["sequence_max_length"]], + axis=1, + ) + pixped_nsb = pixped_nsb / nsb_sequence_length + + # Subtract the pedestal per pixel if R0-pedsub selected + if waveform_settings["r0pedsub"]: + vector = vector - pixped_nsb[:, None] + + # Crop the waveform + vector = vector[:, int(waveform_start) : int(waveform_stop)] + + # Map the waveform snapshots through the ImageMapper + # and transform to selected returning format + mapped_waveform = image_mapper.map_image(vector, camera_type) + if process_type == "Observation" and camera_type == "LSTCam": + mapped_waveform = np.transpose( + np.flip(mapped_waveform, axis=(0, 1)), (1, 0, 2) + ) # x = -y & y = -x + + trigger_patch_center = {} + waveform_shape_x = waveform_settings["shapes"][camera_type][0] + waveform_shape_y = waveform_settings["shapes"][camera_type][1] + + # There are three different ways of retrieving the trigger patches. + # In case an external algorithm (i.e. DBScan) is used, the trigger patch + # is found by the pixel id provided in a csv file. Otherwise, we search + # for a hot spot, which can either be the pixel with the highest intensity + # of the true Cherenkov image or the integrated waveform. + if trigger_settings["get_patch_from"] == "file": + pixid_vector = np.zeros(vector.shape) + pixid_vector[trg_pixel_id, :] = 1 + mapped_pixid = image_mapper.map_image(pixid_vector, camera_type) + hot_spot = np.unravel_index( + np.argmax(mapped_pixid, axis=None), + mapped_pixid.shape, + ) + elif trigger_settings["get_patch_from"] == "simulation": + hot_spot = np.unravel_index( + np.argmax(mapped_true_image, axis=None), + mapped_true_image.shape, + ) + else: + integrated_waveform = np.sum(mapped_waveform, axis=2) + hot_spot = np.unravel_index( + np.argmax(integrated_waveform, axis=None), + integrated_waveform.shape, + ) + # Detect in which trigger patch the hot spot is located + trigger_patch_center["x"] = trigger_settings["patches_xpos"][camera_type][ + np.argmin(np.abs(trigger_settings["patches_xpos"][camera_type] - hot_spot[0])) + ] + trigger_patch_center["y"] = trigger_settings["patches_ypos"][camera_type][ + np.argmin(np.abs(trigger_settings["patches_ypos"][camera_type] - hot_spot[1])) + ] + # Select randomly if a trigger patch with (guaranteed) cherenkov signal + # or a random trigger patch are processed + if random_trigger_patch and mapped_true_image is not None: + counter = 0 + while True: + counter += 1 + n_trigger_patches = 0 + if counter < 10: + n_trigger_patches = np.random.randint( + len(trigger_settings["patches"][camera_type]) + ) + random_trigger_patch_center = trigger_settings["patches"][ + camera_type + ][n_trigger_patches] + + # Get the number of cherenkov photons in the trigger patch + trigger_patch_true_image_sum = np.sum( + mapped_true_image[ + int(random_trigger_patch_center["x"] - waveform_shape_x / 2) : int( + random_trigger_patch_center["x"] + waveform_shape_x / 2 + ), + int(random_trigger_patch_center["y"] - waveform_shape_y / 2) : int( + random_trigger_patch_center["y"] + waveform_shape_y / 2 + ), + :, + ], + dtype=int, + ) + if trigger_patch_true_image_sum < 1.0 or counter >= 10: + break + trigger_patch_center = random_trigger_patch_center + else: + # Get the number of cherenkov photons in the trigger patch + trigger_patch_true_image_sum = np.sum( + mapped_true_image[ + int(trigger_patch_center["x"] - waveform_shape_x / 2) : int( + trigger_patch_center["x"] + waveform_shape_x / 2 + ), + int(trigger_patch_center["y"] - waveform_shape_y / 2) : int( + trigger_patch_center["y"] + waveform_shape_y / 2 + ), + :, + ], + dtype=int, + ) + # Crop the waveform according to the trigger patch + mapped_waveform = mapped_waveform[ + int(trigger_patch_center["x"] - waveform_shape_x / 2) : int( + trigger_patch_center["x"] + waveform_shape_x / 2 + ), + int(trigger_patch_center["y"] - waveform_shape_y / 2) : int( + trigger_patch_center["y"] + waveform_shape_y / 2 + ), + :, + ] + waveform = mapped_waveform + + # If 'indexed_conv' is selected, we only need the unmapped vector. + if image_mapper.mapping_method[camera_type] == "indexed_conv": + return vector, trigger_patch_true_image_sum + return waveform, trigger_patch_true_image_sum def apply_image_mapper( - self, unmapped_vector, image_mapper, camera_type, process_type="Simulation" + unmapped_vector, image_mapper, camera_type, process_type="Simulation" ): # If 'indexed_conv' is selected, we only need the unmapped vector. @@ -248,36 +509,23 @@ def __init__( # AI-based trigger system self.trigger_settings = trigger_settings - self.reco_cherenkov_photons, self.include_nsb_patches = False, None + self.include_nsb_patches = None if self.trigger_settings is not None: - self.reco_cherenkov_photons = self.trigger_settings[ - "reco_cherenkov_photons" - ] self.include_nsb_patches = self.trigger_settings["include_nsb_patches"] - self.get_trigger_patch = self.trigger_settings["get_trigger_patch"] - + self.get_trigger_patch_from = self.trigger_settings["get_patch_from"] # Raw (R0) or calibrated (R1) waveform self.waveform_type = None - self.waveform_scale, self.waveform_offset = 0.0, 0 if waveform_settings is not None: - self.waveform_type = waveform_settings["waveform_type"] - self.waveform_max_from_simulation = waveform_settings[ - "waveform_max_from_simulation" - ] + self.waveform_settings = waveform_settings + self.waveform_type = waveform_settings["type"] if "raw" in self.waveform_type: first_tel_table = f"tel_{self.tel_ids[0]:03d}" - self.waveform_sequence_max_length = ( + self.waveform_settings["sequence_max_length"] = ( self.files[first_file] .root.r0.event.telescope._f_get_child(first_tel_table) .coldescrs["waveform"] .shape[-1] ) - self.waveform_r0pedsub = waveform_settings["waveform_r0pedsub"] - self.waveform_FADC_offset = None - if "waveform_FADC_offset" in waveform_settings: - self.waveform_FADC_offset = waveform_settings[ - "waveform_FADC_offset" - ] if "calibrate" in self.waveform_type: first_tel_table = f"tel_{self.tel_ids[0]:03d}" with lock: @@ -286,46 +534,40 @@ def __init__( .root.r1.event.telescope._f_get_child(first_tel_table) ._v_attrs ) - - self.waveform_sequence_max_length = ( + self.waveform_settings["sequence_max_length"] = ( self.files[first_file] .root.r1.event.telescope._f_get_child(first_tel_table) .coldescrs["waveform"] .shape[-1] ) - self.waveform_r0pedsub = False - self.waveform_FADC_offset = None + self.waveform_settings["waveform_scale"] = 0.0 + self.waveform_settings["waveform_offset"] = 0 # Check the transform value used for the file compression if "CTAFIELD_5_TRANSFORM_SCALE" in wvf_table_v_attrs: - self.waveform_scale = wvf_table_v_attrs[ + self.waveform_settings["waveform_scale"] = wvf_table_v_attrs[ "CTAFIELD_5_TRANSFORM_SCALE" ] - self.waveform_offset = wvf_table_v_attrs[ + self.waveform_settings["waveform_offset"] = wvf_table_v_attrs[ "CTAFIELD_5_TRANSFORM_OFFSET" ] - self.waveform_sequence_length = waveform_settings[ - "waveform_sequence_length" - ] - if self.waveform_sequence_length is None: - self.waveform_sequence_length = self.waveform_sequence_max_length - # Set returning format for waveforms - self.waveform_format = waveform_settings["waveform_format"] - if not ("first" in self.waveform_format or "last" in self.waveform_format): + # Check that the waveform sequence length is valid + if ( + self.waveform_settings["sequence_length"] + > self.waveform_settings["sequence_max_length"] + ): raise ValueError( - f"Invalid returning format for waveforms '{self.waveform_format}'. Valid options: " - "'timechannel_first', 'timechannel_last'" + f"Invalid sequence length '{self.waveform_settings['sequence_length']}' (must be <= '{self.waveform_settings['sequence_max_length']}')." ) # Integrated charges and peak arrival times (DL1a) self.image_channels = None + self.image_transforms = {} if image_settings is not None: - self.image_settings = image_settings - self.image_settings["image_scale"] = 0.0 - self.image_settings["image_offset"] = 0 - self.image_settings["peak_time_scale"] = 0.0 - self.image_settings["peak_time_offset"] = 0 - # For code readability self.image_channels = image_settings["image_channels"] + self.image_transforms["image_scale"] = 0.0 + self.image_transforms["image_offset"] = 0 + self.image_transforms["peak_time_scale"] = 0.0 + self.image_transforms["peak_time_offset"] = 0 # Image parameters (DL1b) self.parameter_list = None @@ -343,17 +585,17 @@ def __init__( ) # Check the transform value used for the file compression if "CTAFIELD_3_TRANSFORM_SCALE" in img_table_v_attrs: - self.image_settings["image_scale"] = img_table_v_attrs[ + self.image_transforms["image_scale"] = img_table_v_attrs[ "CTAFIELD_3_TRANSFORM_SCALE" ] - self.image_settings["image_offset"] = img_table_v_attrs[ + self.image_transforms["image_offset"] = img_table_v_attrs[ "CTAFIELD_3_TRANSFORM_OFFSET" ] if "CTAFIELD_4_TRANSFORM_SCALE" in img_table_v_attrs: - self.image_settings["peak_time_scale"] = img_table_v_attrs[ + self.image_transforms["peak_time_scale"] = img_table_v_attrs[ "CTAFIELD_4_TRANSFORM_SCALE" ] - self.image_settings["peak_time_offset"] = img_table_v_attrs[ + self.image_transforms["peak_time_offset"] = img_table_v_attrs[ "CTAFIELD_4_TRANSFORM_OFFSET" ] @@ -471,7 +713,7 @@ def __init__( self.trigger_settings is not None and "raw" in self.waveform_type ): - if self.get_trigger_patch == "file": + if self.trigger_settings["get_patch_from"] == "file": try: # Read csv containing the trigger patch info trigger_patch_info_csv_file = pd.read_csv( @@ -556,7 +798,7 @@ def __init__( # Construct the example identifiers if ( self.trigger_settings is not None - and self.get_trigger_patch == "file" + and self.get_trigger_patch_from == "file" ): for ( sim_idx, @@ -594,7 +836,7 @@ def __init__( # Construct the example identifiers if ( self.trigger_settings is not None - and self.get_trigger_patch == "file" + and self.get_trigger_patch_from == "file" ): for img_idx, tel_id, trg_pix_id, trg_wvf_id in zip( allevents["img_index"], @@ -824,7 +1066,7 @@ def __init__( self.telescopes = telescopes if self.telescopes != telescopes: raise ValueError( - f"Inconsistent telescope definition in " "{filename}" + f"Inconsistent telescope definition in {filename}" ) self.selected_telescopes = selected_telescopes @@ -854,10 +1096,7 @@ def __init__( self._nsb_prob = np.around(1 / self.num_classes, decimals=2) self._shower_prob = np.around(1 - self._nsb_prob, decimals=2) - if ( - len(self.simulated_particles) > 2 - and not self.reco_cherenkov_photons - ): + if len(self.simulated_particles) > 2: self.shower_primary_id_to_class = {} self.class_names = [] for p, particle_id in enumerate( @@ -930,88 +1169,71 @@ def __init__( ) if self.waveform_type is not None: - self.waveform_shapes = {} - self.trigger_patches_xpos, self.trigger_patches_ypos = {}, {} + self.waveform_settings["shapes"] = {} for camera_type in mapping_settings["camera_types"]: - if "first" in self.waveform_format: - self.image_mapper.image_shapes[camera_type] = ( - self.image_mapper.image_shapes[camera_type][0], - self.image_mapper.image_shapes[camera_type][1], - 1, - ) - if "last" in self.waveform_format: - self.image_mapper.image_shapes[camera_type] = ( - self.image_mapper.image_shapes[camera_type][0], - self.image_mapper.image_shapes[camera_type][1], - self.waveform_sequence_length, - ) - - self.waveform_shapes[camera_type] = self.image_mapper.image_shapes[ - camera_type - ] + self.image_mapper.image_shapes[camera_type] = ( + self.image_mapper.image_shapes[camera_type][0], + self.image_mapper.image_shapes[camera_type][1], + self.waveform_settings["sequence_length"], + ) + self.waveform_settings["shapes"][camera_type] = ( + self.image_mapper.image_shapes[camera_type] + ) # AI-based trigger system if ( self.trigger_settings is not None and "raw" in self.waveform_type ): + self.trigger_settings["patches_xpos"] = {} + self.trigger_settings["patches_ypos"] = {} # Autoset the trigger patches if ( - "trigger_patch_size" not in self.trigger_settings - or "trigger_patches" not in self.trigger_settings + "patch_size" not in self.trigger_settings + or "patches" not in self.trigger_settings ): trigger_patches_xpos = np.linspace( 0, self.image_mapper.image_shapes[camera_type][0], - num=self.trigger_settings["number_of_trigger_patches"][ - 0 - ] - + 1, + num=self.trigger_settings["number_of_patches"][0] + 1, endpoint=False, dtype=int, )[1:] trigger_patches_ypos = np.linspace( 0, self.image_mapper.image_shapes[camera_type][1], - num=self.trigger_settings["number_of_trigger_patches"][ - 0 - ] - + 1, + num=self.trigger_settings["number_of_patches"][0] + 1, endpoint=False, dtype=int, )[1:] - self.trigger_settings["trigger_patch_size"] = { + self.trigger_settings["patch_size"] = { camera_type: [ trigger_patches_xpos[0] * 2, trigger_patches_ypos[0] * 2, ] } - self.trigger_settings["trigger_patches"] = {camera_type: []} + self.trigger_settings["patches"] = {camera_type: []} for patches in np.array( np.meshgrid(trigger_patches_xpos, trigger_patches_ypos) ).T: for patch in patches: - self.trigger_settings["trigger_patches"][ + self.trigger_settings["patches"][ camera_type ].append({"x": patch[0], "y": patch[1]}) - self.waveform_shapes[camera_type] = self.trigger_settings[ - "trigger_patch_size" - ][camera_type] - self.trigger_patches_xpos[camera_type] = np.unique( + self.waveform_settings["shapes"][camera_type] = ( + self.trigger_settings["patch_size"][camera_type] + ) + self.trigger_settings["patches_xpos"][camera_type] = np.unique( [ patch["x"] - for patch in trigger_settings["trigger_patches"][ - camera_type - ] + for patch in trigger_settings["patches"][camera_type] ] ) - self.trigger_patches_ypos[camera_type] = np.unique( + self.trigger_settings["patches_ypos"][camera_type] = np.unique( [ patch["y"] - for patch in trigger_settings["trigger_patches"][ - camera_type - ] + for patch in trigger_settings["patches"][camera_type] ] ) if self.image_channels is not None: @@ -1060,43 +1282,23 @@ def _construct_unprocessed_example_description( if self.mode == "mono": self.unprocessed_example_description = [] if self.waveform_type is not None: - if "first" in self.waveform_format: - self.unprocessed_example_description.append( - { - "name": "waveform", - "tel_type": self.tel_type, - "base_name": "waveform", - "shape": ( - self.waveform_sequence_length, - self.waveform_shapes[ - self._get_camera_type(self.tel_type) - ][0], - self.waveform_shapes[ - self._get_camera_type(self.tel_type) - ][1], - 1, - ), - "dtype": np.dtype(np.float16), - } - ) - if "last" in self.waveform_format: - self.unprocessed_example_description.append( - { - "name": "waveform", - "tel_type": self.tel_type, - "base_name": "waveform", - "shape": ( - self.waveform_shapes[ - self._get_camera_type(self.tel_type) - ][0], - self.waveform_shapes[ - self._get_camera_type(self.tel_type) - ][1], - self.waveform_sequence_length, - ), - "dtype": np.dtype(np.float16), - } - ) + self.unprocessed_example_description.append( + { + "name": "waveform", + "tel_type": self.tel_type, + "base_name": "waveform", + "shape": ( + self.waveform_settings["shapes"][ + self._get_camera_type(self.tel_type) + ][0], + self.waveform_settings["shapes"][ + self._get_camera_type(self.tel_type) + ][1], + self.waveform_settings["sequence_length"], + ), + "dtype": np.dtype(np.float16), + } + ) if self.trigger_settings is not None: self.unprocessed_example_description.append( { @@ -1159,45 +1361,24 @@ def _construct_unprocessed_example_description( ] ) if self.waveform_type is not None: - if "first" in self.waveform_format: - self.unprocessed_example_description.append( - { - "name": tel_type + "_waveforms", - "tel_type": tel_type, - "base_name": "waveforms", - "shape": ( - num_tels, - self.waveform_sequence_length, - self.waveform_shapes[ - self._get_camera_type(tel_type) - ][0], - self.waveform_shapes[ - self._get_camera_type(tel_type) - ][1], - 1, - ), - "dtype": np.dtype(np.float16), - } - ) - if "last" in self.waveform_format: - self.unprocessed_example_description.append( - { - "name": tel_type + "_waveforms", - "tel_type": tel_type, - "base_name": "waveforms", - "shape": ( - num_tels, - self.waveform_shapes[ - self._get_camera_type(tel_type) - ][0], - self.waveform_shapes[ - self._get_camera_type(tel_type) - ][1], - self.waveform_sequence_length, - ), - "dtype": np.dtype(np.float16), - } - ) + self.unprocessed_example_description.append( + { + "name": tel_type + "_waveforms", + "tel_type": tel_type, + "base_name": "waveforms", + "shape": ( + num_tels, + self.waveform_settings["shapes"][ + self._get_camera_type(tel_type) + ][0], + self.waveform_settings["shapes"][ + self._get_camera_type(tel_type) + ][1], + self.waveform_settings["sequence_length"], + ), + "dtype": np.dtype(np.float16), + } + ) if self.trigger_settings is not None: self.unprocessed_example_description.append( { @@ -1331,313 +1512,6 @@ def _append_subarray_info(self, subarray_table, subarray_info, query): info.append(np.array(row[column], dtype=dtype)) return - # Get a single telescope waveform from a particular event, uniquely - # identified by the filename, tel_type, and waveform table index. - # First extract a raw 2D vector and transform it into a 3D waveform using a - # mapping table. When 'indexed_conv' is selected this function should - # return the unmapped vector. - def _get_waveform( - self, - child, - tel_type, - waveform_index, - img_child=None, - sim_child=None, - random_trigger_patch=False, - trg_pixel_id=None, - trg_waveform_sample_id=None, - ): - vector = np.zeros( - shape=( - self.num_pixels[self._get_camera_type(tel_type)], - self.waveform_sequence_length, - ), - dtype=np.float16, - ) - - if "first" in self.waveform_format: - waveform = np.zeros( - shape=( - self.waveform_sequence_length, - self.waveform_shapes[self._get_camera_type(tel_type)][0], - self.waveform_shapes[self._get_camera_type(tel_type)][1], - 1, - ), - dtype=np.float16, - ) - if "last" in self.waveform_format: - waveform = np.zeros( - shape=( - self.waveform_shapes[self._get_camera_type(tel_type)][0], - self.waveform_shapes[self._get_camera_type(tel_type)][1], - self.waveform_sequence_length, - ), - dtype=np.float16, - ) - - # Retrieve the DL1 cleaning mask if the child of the DL1 images are provided - dl1_cleaning_mask = None - if waveform_index != -1 and img_child is not None: - with lock: - dl1_cleaning_mask = np.array( - img_child[waveform_index]["image_mask"], dtype=int - ) - - # Retrieve the true image if the child of the simulated images are provided - true_image, trigger_patch_true_image_sum = None, None - if waveform_index != -1 and sim_child is not None: - with lock: - true_image = np.expand_dims( - np.array(sim_child[waveform_index]["true_image"], dtype=int), axis=1 - ) - mapped_true_image = self.image_mapper.map_image( - true_image, self._get_camera_type(tel_type) - ) - - # If the telescope didn't trigger, the waveform index is -1 and a blank - # waveform of all zeros with be loaded - if waveform_index != -1 and child is not None: - with lock: - vector = np.float32(child[waveform_index]["waveform"]) - if "calibrate" in self.waveform_type: - # Check if camera has one or two gain(s) and apply selection - if vector.shape[0] == 1: - vector = vector[0] - else: - selected_gain_channel = child[waveform_index][ - "selected_gain_channel" - ][:, np.newaxis] - vector = np.where( - selected_gain_channel == 0, vector[0], vector[1] - ) - - if self.waveform_type is not None: - if "raw" in self.waveform_type: - vector = vector[0] - if "calibrate" in self.waveform_type: - if self.waveform_scale > 0.0: - vector /= self.waveform_scale - if self.waveform_offset > 0: - vector -= self.waveform_offset - waveform_max = np.argmax(np.sum(vector, axis=0)) - if dl1_cleaning_mask is not None: - waveform_max = np.argmax( - np.sum(vector * dl1_cleaning_mask[:, None], axis=0) - ) - if self.waveform_max_from_simulation: - waveform_max = int((len(vector) / 2) - 1) - if trg_waveform_sample_id is not None: - waveform_max = trg_waveform_sample_id - - # Retrieve the sequence around the shower maximum and calculate the pedestal - # level per pixel outside that sequence if R0-pedsub is selected and FADC - # offset is not provided from the simulation. - pixped_nsb, nsb_sequence_length = None, None - if self.waveform_FADC_offset is not None: - pixped_nsb = np.full( - (vector.shape[0],), self.waveform_FADC_offset, dtype=int - ) - if ( - self.waveform_sequence_max_length - self.waveform_sequence_length - ) < 0.001: - waveform_start = 0 - waveform_stop = nsb_sequence_length = self.waveform_sequence_max_length - if self.waveform_r0pedsub and pixped_nsb is None: - pixped_nsb = np.sum(vector, axis=1) / nsb_sequence_length - else: - waveform_start = 1 + waveform_max - self.waveform_sequence_length / 2 - waveform_stop = 1 + waveform_max + self.waveform_sequence_length / 2 - nsb_sequence_length = ( - self.waveform_sequence_max_length - self.waveform_sequence_length - ) - if waveform_stop > self.waveform_sequence_max_length: - waveform_start -= waveform_stop - self.waveform_sequence_max_length - waveform_stop = self.waveform_sequence_max_length - if self.waveform_r0pedsub and pixped_nsb is None: - pixped_nsb = ( - np.sum(vector[:, : int(waveform_start)], axis=1) - / nsb_sequence_length - ) - if waveform_start < 0: - waveform_stop += np.abs(waveform_start) - waveform_start = 0 - if self.waveform_r0pedsub and pixped_nsb is None: - pixped_nsb = ( - np.sum(vector[:, int(waveform_stop) :], axis=1) - / nsb_sequence_length - ) - if self.waveform_r0pedsub and pixped_nsb is None: - pixped_nsb = np.sum(vector[:, 0 : int(waveform_start)], axis=1) - pixped_nsb += np.sum( - vector[:, int(waveform_stop) : self.waveform_sequence_max_length], - axis=1, - ) - pixped_nsb = pixped_nsb / nsb_sequence_length - - # Subtract the pedestal per pixel if R0-pedsub selected - if self.waveform_r0pedsub: - vector = vector - pixped_nsb[:, None] - - # Apply the DL1 cleaning mask if selected - if "clean" in self.waveform_type or "mask" in self.waveform_type: - vector *= dl1_cleaning_mask[:, None] - - # Crop the waveform - vector = vector[:, int(waveform_start) : int(waveform_stop)] - - # Map the waveform snapshots through the ImageMapper - # and transform to selected returning format - mapped_waveform = self.image_mapper.map_image( - vector, self._get_camera_type(tel_type) - ) - if ( - self.process_type == "Observation" - and self._get_camera_type(tel_type) == "LSTCam" - ): - mapped_waveform = np.transpose( - np.flip(mapped_waveform, axis=(0, 1)), (1, 0, 2) - ) # x = -y & y = -x - - if self.trigger_settings is not None: - trigger_patch_center = {} - waveform_shape_x = self.waveform_shapes[ - self._get_camera_type(tel_type) - ][0] - waveform_shape_y = self.waveform_shapes[ - self._get_camera_type(tel_type) - ][1] - - # There are three different ways of retrieving the trigger patches. - # In case an external algorithm (i.e. DBScan) is used, the trigger patch - # is found by the pixel id provided in a csv file. Otherwise, we search - # for a hot spot, which can either be the pixel with the highest intensity - # of the true Cherenkov image or the integrated waveform. - if self.get_trigger_patch == "file": - pixid_vector = np.zeros(vector.shape) - pixid_vector[trg_pixel_id, :] = 1 - mapped_pixid = self.image_mapper.map_image( - pixid_vector, self._get_camera_type(tel_type) - ) - hot_spot = np.unravel_index( - np.argmax(mapped_pixid, axis=None), - mapped_pixid.shape, - ) - elif self.get_trigger_patch == "simulation": - hot_spot = np.unravel_index( - np.argmax(mapped_true_image, axis=None), - mapped_true_image.shape, - ) - else: - integrated_waveform = np.sum(mapped_waveform, axis=2) - hot_spot = np.unravel_index( - np.argmax(integrated_waveform, axis=None), - integrated_waveform.shape, - ) - # Detect in which trigger patch the hot spot is located - trigger_patch_center["x"] = self.trigger_patches_xpos[ - self._get_camera_type(tel_type) - ][ - np.argmin( - np.abs( - self.trigger_patches_xpos[self._get_camera_type(tel_type)] - - hot_spot[0] - ) - ) - ] - trigger_patch_center["y"] = self.trigger_patches_ypos[ - self._get_camera_type(tel_type) - ][ - np.argmin( - np.abs( - self.trigger_patches_ypos[self._get_camera_type(tel_type)] - - hot_spot[1] - ) - ) - ] - # Select randomly if a trigger patch with (guaranteed) cherenkov signal - # or a random trigger patch are processed - if random_trigger_patch: - counter = 0 - while True: - counter += 1 - n_trigger_patches = 0 - if counter < 10: - n_trigger_patches = np.random.randint( - len( - self.trigger_settings["trigger_patches"][ - self._get_camera_type(tel_type) - ] - ) - ) - random_trigger_patch_center = self.trigger_settings[ - "trigger_patches" - ][self._get_camera_type(tel_type)][n_trigger_patches] - - # Get the number of cherenkov photons in the trigger patch - trigger_patch_true_image_sum = np.sum( - mapped_true_image[ - int( - random_trigger_patch_center["x"] - - waveform_shape_x / 2 - ) : int( - random_trigger_patch_center["x"] - + waveform_shape_x / 2 - ), - int( - random_trigger_patch_center["y"] - - waveform_shape_y / 2 - ) : int( - random_trigger_patch_center["y"] - + waveform_shape_y / 2 - ), - :, - ], - dtype=int, - ) - if trigger_patch_true_image_sum < 1.0 or counter >= 10: - break - trigger_patch_center = random_trigger_patch_center - else: - # Get the number of cherenkov photons in the trigger patch - trigger_patch_true_image_sum = np.sum( - mapped_true_image[ - int(trigger_patch_center["x"] - waveform_shape_x / 2) : int( - trigger_patch_center["x"] + waveform_shape_x / 2 - ), - int(trigger_patch_center["y"] - waveform_shape_y / 2) : int( - trigger_patch_center["y"] + waveform_shape_y / 2 - ), - :, - ], - dtype=int, - ) - # Crop the waveform according to the trigger patch - mapped_waveform = mapped_waveform[ - int(trigger_patch_center["x"] - waveform_shape_x / 2) : int( - trigger_patch_center["x"] + waveform_shape_x / 2 - ), - int(trigger_patch_center["y"] - waveform_shape_y / 2) : int( - trigger_patch_center["y"] + waveform_shape_y / 2 - ), - :, - ] - - if "first" in self.waveform_format: - for index in np.arange(0, self.waveform_sequence_length, dtype=int): - waveform[index] = np.expand_dims( - mapped_waveform[:, :, index], axis=2 - ) - if "last" in self.waveform_format: - waveform = mapped_waveform - - # If 'indexed_conv' is selected, we only need the unmapped vector. - if ( - self.image_mapper.mapping_method[self._get_camera_type(tel_type)] - == "indexed_conv" - ): - return vector, trigger_patch_true_image_sum - return waveform, trigger_patch_true_image_sum - def _construct_telescopes_selection( self, subarray_table, selected_telescope_types, selected_telescope_ids ): @@ -1745,65 +1619,13 @@ def _load_tel_type_data( filename, tel_type, trigger_info, - random_trigger_patch=False, ): - triggers = [] waveforms = [] - trigger_patch_true_image_sums = [] images = [] parameters_lists = [] subarray_info = [[] for column in self.subarray_info] for i, tel_id in enumerate(self.selected_telescopes[tel_type]): if self.waveform_type is not None: - if "raw" in self.waveform_type: - child = None - with lock: - tel_table = f"tel_{tel_id:03d}" - if tel_table in self.files[filename].root.r0.event.telescope: - child = self.files[ - filename - ].root.r0.event.telescope._f_get_child(tel_table) - img_child = None - if "dl1" in self.files[filename].root: - if ( - "images" - in self.files[filename].root.dl1.event.telescope - ): - img_child = self.files[ - filename - ].root.dl1.event.telescope.images._f_get_child( - tel_table - ) - sim_child = None - if ( - self.trigger_settings is not None - and self.process_type == "Simulation" - ): - if ( - "images" - in self.files[ - filename - ].root.simulation.event.telescope - ): - sim_child = self.files[ - filename - ].root.simulation.event.telescope.images._f_get_child( - tel_table - ) - waveform, trigger_patch_true_image_sum = self._get_waveform( - child, - tel_type, - trigger_info[i], - img_child, - sim_child, - random_trigger_patch, - ) - waveforms.append(waveform) - if trigger_patch_true_image_sum: - trigger_patch_true_image_sums.append( - trigger_patch_true_image_sum - ) - if "calibrate" in self.waveform_type: child = None with lock: @@ -1812,7 +1634,7 @@ def _load_tel_type_data( child = self.files[ filename ].root.r1.event.telescope._f_get_child(tel_table) - img_child, sim_child = None, None + dl1_cleaning_mask = None if "dl1" in self.files[filename].root: if ( "images" @@ -1823,15 +1645,22 @@ def _load_tel_type_data( ].root.dl1.event.telescope.images._f_get_child( tel_table ) - waveform, _ = self._get_waveform( - child, - tel_type, - trigger_info[i], - img_child, - sim_child, - random_trigger_patch, - ) - waveforms.append(waveform) + dl1_cleaning_mask = np.array( + img_child[trigger_info[i]]["image_mask"], dtype=int + ) + unmapped_waveform = get_unmapped_waveform( + child[trigger_info[i]], + self.waveform_settings, + dl1_cleaning_mask, + ) + waveforms.append( + apply_image_mapper( + unmapped_waveform, + self.image_mapper, + self._get_camera_type(tel_type), + self.process_type, + ) + ) if self.image_channels is not None: child = None @@ -1844,13 +1673,14 @@ def _load_tel_type_data( child = self.files[ filename ].root.dl1.event.telescope.images._f_get_child(tel_table) - unmapped_vector = get_unmapped_vector( - self, child[trigger_info[i]], self.image_settings + unmapped_image = get_unmapped_image( + child[trigger_info[i]], + self.image_channels, + self.image_transforms, ) images.append( apply_image_mapper( - self, - unmapped_vector, + unmapped_image, self.image_mapper, self._get_camera_type(tel_type), self.process_type, @@ -1879,8 +1709,6 @@ def _load_tel_type_data( example = [np.array(trigger_info >= 0, np.int8)] if self.waveform_type is not None: example.extend([np.stack(waveforms)]) - if self.reco_cherenkov_photons and "raw" in self.waveform_type: - example.extend([np.stack(trigger_patch_true_image_sums)]) if self.image_channels is not None: example.extend([np.stack(images)]) if self.parameter_list is not None: @@ -1897,46 +1725,34 @@ def __getitem__(self, idx): # Load the data and any selected array info if self.mode == "mono": # Get a single image - random_trigger_patch = False if self.process_type == "Simulation": nrow, index, tel_id = identifiers[1:4] - if self.include_nsb_patches == "auto": - random_trigger_patch = np.random.choice( - [False, True], p=[self._shower_prob, self._nsb_prob] - ) - elif self.include_nsb_patches == "all": - random_trigger_patch = True else: index, tel_id = identifiers[1:3] - trg_pixel_id, trg_waveform_sample_id = None, None - if self.trigger_settings is not None and self.get_trigger_patch == "file": - trg_pixel_id, trg_waveform_sample_id = identifiers[-2:] - + random_trigger_patch = False example = [] if self.waveform_type is not None: if "raw" in self.waveform_type: + trg_pixel_id, trg_waveform_sample_id = None, None + if ( + self.trigger_settings is not None + and self.get_trigger_patch_from == "file" + ): + trg_pixel_id, trg_waveform_sample_id = identifiers[-2:] with lock: tel_table = f"tel_{tel_id:03d}" child = self.files[ filename ].root.r0.event.telescope._f_get_child(tel_table) - img_child = None - if "dl1" in self.files[filename].root: - if ( - "images" - in self.files[filename].root.dl1.event.telescope - ): - img_child = self.files[ - filename - ].root.dl1.event.telescope.images._f_get_child( - tel_table + true_image = None + if self.process_type == "Simulation": + if self.include_nsb_patches == "auto": + random_trigger_patch = np.random.choice( + [False, True], p=[self._shower_prob, self._nsb_prob] ) - sim_child = None - if ( - self.trigger_settings is not None - and self.process_type == "Simulation" - ): + elif self.include_nsb_patches == "all": + random_trigger_patch = True if ( "images" in self.files[filename].root.simulation.event.telescope @@ -1946,27 +1762,32 @@ def __getitem__(self, idx): ].root.simulation.event.telescope.images._f_get_child( tel_table ) - waveform, trigger_patch_true_image_sum = self._get_waveform( - child, - self.tel_type, - index, - img_child, - sim_child, - random_trigger_patch, - trg_pixel_id, - trg_waveform_sample_id, - ) + true_image = np.expand_dims( + np.array(sim_child[index]["true_image"], dtype=int), + axis=1, + ) + waveform, trigger_patch_true_image_sum = get_mapped_trigger_patch( + child[index], + self.waveform_settings, + self.trigger_settings, + self.image_mapper, + self._get_camera_type(self.tel_type), + true_image, + self.process_type, + random_trigger_patch, + trg_pixel_id, + trg_waveform_sample_id, + ) example.append(waveform) if trigger_patch_true_image_sum is not None: example.append(trigger_patch_true_image_sum) - if "calibrate" in self.waveform_type: with lock: tel_table = f"tel_{tel_id:03d}" child = self.files[ filename ].root.r1.event.telescope._f_get_child(tel_table) - img_child, sim_child = None, None + dl1_cleaning_mask = None if "dl1" in self.files[filename].root: if ( "images" @@ -1977,15 +1798,22 @@ def __getitem__(self, idx): ].root.dl1.event.telescope.images._f_get_child( tel_table ) - waveform, _ = self._get_waveform( - child, - self.tel_type, - index, - img_child, - sim_child, - random_trigger_patch, + dl1_cleaning_mask = np.array( + img_child[index]["image_mask"], dtype=int + ) + unmapped_waveform = get_unmapped_waveform( + child[index], + self.waveform_settings, + dl1_cleaning_mask, + ) + example.append( + apply_image_mapper( + unmapped_waveform, + self.image_mapper, + self._get_camera_type(self.tel_type), + self.process_type, + ) ) - example.append(waveform) if self.image_channels is not None: with lock: @@ -1993,13 +1821,12 @@ def __getitem__(self, idx): child = self.files[ filename ].root.dl1.event.telescope.images._f_get_child(tel_table) - unmapped_vector = get_unmapped_vector( - self, child[index], self.image_settings + unmapped_image = get_unmapped_image( + child[index], self.image_channels, self.image_transforms ) example.append( apply_image_mapper( - self, - unmapped_vector, + unmapped_image, self.image_mapper, self._get_camera_type(self.tel_type), self.process_type, @@ -2027,16 +1854,9 @@ def __getitem__(self, idx): elif self.mode == "stereo": # Get a list of images and/or image parameters, an array of binary trigger values # for each selected telescope type - random_trigger_patch = False if self.process_type == "Simulation": nrow = identifiers[1] trigger_info = identifiers[2] - if self.include_nsb_patches == "auto": - random_trigger_patch = np.random.choice( - [False, True], p=[self._shower_prob, self._nsb_prob] - ) - elif self.include_nsb_patches == "all": - random_trigger_patch = True else: trigger_info = identifiers[1] @@ -2046,7 +1866,6 @@ def __getitem__(self, idx): filename, tel_type, trigger_info[ind], - random_trigger_patch, ) example.extend(tel_type_example) From 4b2e0ef6ef00743b4b3bbd02145987de1340f3a8 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Mon, 22 Jul 2024 15:57:39 +0200 Subject: [PATCH 03/92] removed flip for LST-1 real because it is not needed remove also apply IM functions because it can be now replace by the internal .map_image() function --- dl1_data_handler/reader.py | 68 +++++++++++--------------------------- 1 file changed, 20 insertions(+), 48 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 2ed4a51..f4ffd6a 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -24,7 +24,6 @@ __all__ = [ "DLDataReader", "get_unmapped_image", - "apply_image_mapper", "get_unmapped_waveform", "get_mapped_trigger_patch", ] @@ -323,21 +322,6 @@ def get_mapped_trigger_patch( return vector, trigger_patch_true_image_sum return waveform, trigger_patch_true_image_sum - -def apply_image_mapper( - unmapped_vector, image_mapper, camera_type, process_type="Simulation" -): - - # If 'indexed_conv' is selected, we only need the unmapped vector. - if image_mapper.mapping_method[camera_type] == "indexed_conv": - return unmapped_vector - - image = image_mapper.map_image(unmapped_vector, camera_type) - if process_type == "Observation" and camera_type == "LSTCam": - image = np.transpose(np.flip(image, axis=(0, 1)), (1, 0, 2)) # x = -y & y = -x - return image - - lock = threading.Lock() @@ -1653,14 +1637,11 @@ def _load_tel_type_data( self.waveform_settings, dl1_cleaning_mask, ) - waveforms.append( - apply_image_mapper( - unmapped_waveform, - self.image_mapper, - self._get_camera_type(tel_type), - self.process_type, - ) - ) + # Apply the ImageMapper whenever the mapping method is not indexed_conv + if self.image_mapper.mapping_method[self._get_camera_type(tel_type)] != "indexed_conv": + waveforms.append(self.image_mapper.map_image(unmapped_waveform, self._get_camera_type(tel_type))) + else: + waveforms.append(unmapped_waveform) if self.image_channels is not None: child = None @@ -1678,14 +1659,11 @@ def _load_tel_type_data( self.image_channels, self.image_transforms, ) - images.append( - apply_image_mapper( - unmapped_image, - self.image_mapper, - self._get_camera_type(tel_type), - self.process_type, - ) - ) + # Apply the ImageMapper whenever the mapping method is not indexed_conv + if self.image_mapper.mapping_method[self._get_camera_type(tel_type)] != "indexed_conv": + images.append(self.image_mapper.map_image(unmapped_image, self._get_camera_type(tel_type))) + else: + images.append(unmapped_image) if self.parameter_list is not None: child = None @@ -1806,14 +1784,11 @@ def __getitem__(self, idx): self.waveform_settings, dl1_cleaning_mask, ) - example.append( - apply_image_mapper( - unmapped_waveform, - self.image_mapper, - self._get_camera_type(self.tel_type), - self.process_type, - ) - ) + # Apply the ImageMapper whenever the mapping method is not indexed_conv + if self.image_mapper.mapping_method[self._get_camera_type(self.tel_type)] != "indexed_conv": + example.append(self.image_mapper.map_image(unmapped_waveform, self._get_camera_type(self.tel_type))) + else: + example.append(unmapped_waveform) if self.image_channels is not None: with lock: @@ -1824,14 +1799,11 @@ def __getitem__(self, idx): unmapped_image = get_unmapped_image( child[index], self.image_channels, self.image_transforms ) - example.append( - apply_image_mapper( - unmapped_image, - self.image_mapper, - self._get_camera_type(self.tel_type), - self.process_type, - ) - ) + # Apply the ImageMapper whenever the mapping method is not indexed_conv + if self.image_mapper.mapping_method[self._get_camera_type(self.tel_type)] != "indexed_conv": + example.append(self.image_mapper.map_image(unmapped_image, self._get_camera_type(self.tel_type))) + else: + example.append(unmapped_image) if self.parameter_list is not None: with lock: From c4888f6e581214d626961aed546d4487840079d4 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Mon, 22 Jul 2024 15:59:16 +0200 Subject: [PATCH 04/92] renamed get_mapped_trigger_patch to get_mapped_triggerpatch --- dl1_data_handler/reader.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index f4ffd6a..4a87874 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -1,4 +1,4 @@ -from collections import Counter, OrderedDict +from collections import OrderedDict import random import threading import numpy as np @@ -25,7 +25,7 @@ "DLDataReader", "get_unmapped_image", "get_unmapped_waveform", - "get_mapped_trigger_patch", + "get_mapped_triggerpatch", ] @@ -129,7 +129,7 @@ def get_unmapped_waveform( # First extract a raw 2D vector and transform it into a 3D waveform using a # mapping table. When 'indexed_conv' is selected this function should # return the unmapped vector. -def get_mapped_trigger_patch( +def get_mapped_triggerpatch( r0_event, waveform_settings, trigger_settings, @@ -1744,7 +1744,7 @@ def __getitem__(self, idx): np.array(sim_child[index]["true_image"], dtype=int), axis=1, ) - waveform, trigger_patch_true_image_sum = get_mapped_trigger_patch( + waveform, trigger_patch_true_image_sum = get_mapped_triggerpatch( child[index], self.waveform_settings, self.trigger_settings, From e8e930f4dd49545e6d4bf45283b7574e5aabb7a0 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Mon, 22 Jul 2024 16:02:53 +0200 Subject: [PATCH 05/92] remove trigger for stereo example description --- dl1_data_handler/reader.py | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 4a87874..cdf440f 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -1363,17 +1363,6 @@ def _construct_unprocessed_example_description( "dtype": np.dtype(np.float16), } ) - if self.trigger_settings is not None: - self.unprocessed_example_description.append( - { - "name": tel_type + "_trigger_patch_true_image_sum", - "tel_type": tel_type, - "base_name": "true_image_sum", - "shape": (num_tels,) + (1,), - "dtype": np.dtype(np.int), - } - ) - if self.image_channels is not None: self.unprocessed_example_description.extend( [ From 98821c0657598f7dcc67ba765c3f3a0786f753e3 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Mon, 22 Jul 2024 16:05:52 +0200 Subject: [PATCH 06/92] remove prefix support for camera_frame If prefix camera_frame is in the file, the user should add this prefix to the config file. --- dl1_data_handler/reader.py | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index cdf440f..c00232a 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -745,27 +745,16 @@ def __init__( if parameter_selection: for filter in parameter_selection: if "min_value" in filter: - if filter["col_name"] in allevents.colnames: - allevents = allevents[ - allevents[filter["col_name"]] - >= filter["min_value"] - ] - else: - allevents = allevents[ - allevents["camera_frame_" + filter["col_name"]] - >= filter["min_value"] - ] + allevents = allevents[ + allevents[filter["col_name"]] + >= filter["min_value"] + ] if "max_value" in filter: - if filter["col_name"] in allevents.colnames: - allevents = allevents[ - allevents[filter["col_name"]] - < filter["max_value"] - ] - else: - allevents = allevents[ - allevents["camera_frame_" + filter["col_name"]] - < filter["max_value"] - ] + allevents = allevents[ + allevents[filter["col_name"]] + < filter["max_value"] + ] + # Track number of events for each particle type if self.process_type == "Simulation": From fd5fc84e75790a049744c41053805a81444958c6 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Mon, 22 Jul 2024 18:02:35 +0200 Subject: [PATCH 07/92] rename and join parameter_selection and event_selection to quality_selection --- dl1_data_handler/reader.py | 76 +++++++++++--------------------------- 1 file changed, 22 insertions(+), 54 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index c00232a..e043a2d 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -334,8 +334,7 @@ def __init__( selected_telescope_types=None, selected_telescope_ids=None, multiplicity_selection=None, - event_selection=None, - parameter_selection=None, + quality_selection=None, shuffle=False, seed=None, trigger_settings=None, @@ -381,9 +380,9 @@ def __init__( f"Provided ctapipe data format version is '{self.data_format_version}' (must be >= v.6.0.0)." ) # Add several checks for real data processing, i.e. no quality cut applied and a single file is provided. - if self.process_type == "Observation" and parameter_selection is not None: + if self.process_type == "Observation" and quality_selection is not None: raise ValueError( - f"When processing real observational data, please do not select any quality cut (currently: '{parameter_selection}')." + f"When processing real observational data, please do not select any quality cut (currently: '{quality_selection}')." ) if self.process_type == "Observation" and len(self.files) != 1: raise ValueError( @@ -729,9 +728,9 @@ def __init__( f"There is a problem with '{filename.replace('r0.dl1.h5','npe.csv')}'!" ) - # MC event selection based on the shower simulation table - if event_selection: - for filter in event_selection: + # Quality selection based on the dl1b parameter and MC shower simulation tables + if quality_selection: + for filter in quality_selection: if "min_value" in filter: allevents = allevents[ allevents[filter["col_name"]] >= filter["min_value"] @@ -741,21 +740,6 @@ def __init__( allevents[filter["col_name"]] < filter["max_value"] ] - # Image and parameter selection based on the parameter tables - if parameter_selection: - for filter in parameter_selection: - if "min_value" in filter: - allevents = allevents[ - allevents[filter["col_name"]] - >= filter["min_value"] - ] - if "max_value" in filter: - allevents = allevents[ - allevents[filter["col_name"]] - < filter["max_value"] - ] - - # Track number of events for each particle type if self.process_type == "Simulation": self.simulated_particles["total"] += len(allevents) @@ -844,9 +828,9 @@ def __init__( keys=["obs_id", "event_id"], ) - # MC event selection based on the shower simulation table. - if event_selection: - for filter in event_selection: + # Quality selection based on the shower simulation table. + if quality_selection: + for filter in quality_selection: if "min_value" in filter: allevents = allevents[ allevents[filter["col_name"]] @@ -937,35 +921,19 @@ def __init__( tel_table.add_column( np.arange(len(tel_table)), name="img_index", index=0 ) - # MC event selection based on the parameter tables. - if parameter_selection: - for filter in parameter_selection: + # Quality selection based on the parameter tables. + if quality_selection: + for filter in quality_selection: if "min_value" in filter: - if filter["col_name"] in tel_table.colnames: - tel_table = tel_table[ - tel_table[filter["col_name"]] - >= filter["min_value"] - ] - else: - tel_table = tel_table[ - tel_table[ - "camera_frame_" + filter["col_name"] - ] - >= filter["min_value"] - ] + tel_table = tel_table[ + tel_table[filter["col_name"]] + >= filter["min_value"] + ] if "max_value" in filter: - if filter["col_name"] in tel_table.colnames: - tel_table = tel_table[ - tel_table[filter["col_name"]] - < filter["max_value"] - ] - else: - tel_table = tel_table[ - tel_table[ - "camera_frame_" + filter["col_name"] - ] - < filter["max_value"] - ] + tel_table = tel_table[ + tel_table[filter["col_name"]] + < filter["max_value"] + ] merged_table = join( left=tel_table, right=allevents[selected_events], @@ -978,8 +946,8 @@ def __init__( for trig, img in zip(tel_trigger_info, tel_img_index): img_idx[trig][np.where(tel_ids == tel_id)] = img - # Apply the multiplicity cut after the parameter cuts for a particular telescope type - if parameter_selection and multiplicity_selection[tel_type] > 0: + # Apply the multiplicity cut after the quality cuts for a particular telescope type + if quality_selection and multiplicity_selection[tel_type] > 0: aftercuts_multiplicty_mask = ( np.count_nonzero(img_idx + 1, axis=1) >= multiplicity_selection[tel_type] From 3860d876836a10d8c98323aec7a14c26c8a50799 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Mon, 22 Jul 2024 19:27:13 +0200 Subject: [PATCH 08/92] allow quality cuts for processing real data --- dl1_data_handler/reader.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index e043a2d..483b383 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -379,11 +379,7 @@ def __init__( raise IOError( f"Provided ctapipe data format version is '{self.data_format_version}' (must be >= v.6.0.0)." ) - # Add several checks for real data processing, i.e. no quality cut applied and a single file is provided. - if self.process_type == "Observation" and quality_selection is not None: - raise ValueError( - f"When processing real observational data, please do not select any quality cut (currently: '{quality_selection}')." - ) + # Add check for real data processing that only a single file is provided. if self.process_type == "Observation" and len(self.files) != 1: raise ValueError( f"When processing real observational data, please provide a single file (currently: '{len(self.files)}')." @@ -728,17 +724,19 @@ def __init__( f"There is a problem with '{filename.replace('r0.dl1.h5','npe.csv')}'!" ) + # Initialize a boolean mask to True for all events + self.quality_mask = np.ones(len(allevents), dtype=bool) # Quality selection based on the dl1b parameter and MC shower simulation tables if quality_selection: for filter in quality_selection: + # Update the mask for the minimum value condition if "min_value" in filter: - allevents = allevents[ - allevents[filter["col_name"]] >= filter["min_value"] - ] + self.quality_mask &= (allevents[filter["col_name"]] >= filter["min_value"]) + # Update the mask for the maximum value condition if "max_value" in filter: - allevents = allevents[ - allevents[filter["col_name"]] < filter["max_value"] - ] + self.quality_mask &= (allevents[filter["col_name"]] < filter["max_value"]) + # Apply the updated mask to filter events + allevents = allevents[self.quality_mask] # Track number of events for each particle type if self.process_type == "Simulation": From f1a6fb1122062450d0960da9fc900fc9b3c010e9 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Mon, 5 Aug 2024 17:47:45 +0200 Subject: [PATCH 09/92] major refactoring for batch generation added batch generator removed dl1dh transform dl1dh provide now a static batch and we get the relevant information about the labels in the data loader of ctlearn --- dl1_data_handler/reader.py | 910 ++++++++++++++----------------------- 1 file changed, 338 insertions(+), 572 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 483b383..19c82fd 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -16,9 +16,7 @@ vstack, # and vertically ) -from ctapipe.io import ( - read_table, -) # let us read full tables inside the DL1 output file +from ctapipe.io import read_table # let us read full tables inside the DL1 output file __all__ = [ @@ -271,9 +269,9 @@ def get_mapped_triggerpatch( n_trigger_patches = np.random.randint( len(trigger_settings["patches"][camera_type]) ) - random_trigger_patch_center = trigger_settings["patches"][ - camera_type - ][n_trigger_patches] + random_trigger_patch_center = trigger_settings["patches"][camera_type][ + n_trigger_patches + ] # Get the number of cherenkov photons in the trigger patch trigger_patch_true_image_sum = np.sum( @@ -322,6 +320,7 @@ def get_mapped_triggerpatch( return vector, trigger_patch_true_image_sum return waveform, trigger_patch_true_image_sum + lock = threading.Lock() @@ -335,17 +334,11 @@ def __init__( selected_telescope_ids=None, multiplicity_selection=None, quality_selection=None, - shuffle=False, - seed=None, trigger_settings=None, waveform_settings=None, image_settings=None, mapping_settings=None, parameter_settings=None, - subarray_info=None, - event_info=None, - transforms=None, - validate_processor=False, ): # Construct dict of filename:file_handle pairs @@ -455,36 +448,6 @@ def __init__( self.files[first_file], "/dl1/event/telescope/trigger", ) - elif self.process_type == "Simulation": - for tel_id in self.tel_ids: - with lock: - self.telescope_pointings[f"tel_{tel_id:03d}"] = read_table( - self.files[first_file], - f"/configuration/telescope/pointing/tel_{tel_id:03d}", - ) - - # Only fix telescope pointings valid for MCs! - # No divergent pointing implemented! - fix_pointing_alt = self.telescope_pointings[f"tel_{tel_id:03d}"][ - "telescope_pointing_altitude" - ] - fix_pointing_az = self.telescope_pointings[f"tel_{tel_id:03d}"][ - "telescope_pointing_azimuth" - ] - # Reading the pointing for the first obs_id assuming fix tel pointing - fix_pointing_az = fix_pointing_az[0] * fix_pointing_az.unit - fix_pointing_alt = fix_pointing_alt[0] * fix_pointing_alt.unit - self.fix_pointing = SkyCoord( - fix_pointing_az.to_value(u.deg), - fix_pointing_alt.to_value(u.deg), - frame="altaz", - unit="deg", - ) - # Set the telescope pointing of the SkyOffsetSeparation tranform to the fix pointing - if transforms is not None: - for transform in transforms: - if transform.name == "SkyOffsetSeparation": - transform.set_pointing(self.fix_pointing) # AI-based trigger system self.trigger_settings = trigger_settings @@ -578,10 +541,23 @@ def __init__( "CTAFIELD_4_TRANSFORM_OFFSET" ] + # Columns to keep in the the example identifiers + # This are the basic columns one need to do a + # conventional IACT analysis with CNNs + self.example_ids_keep_columns = ["img_index", "obs_id", "event_id", "tel_id"] + if self.process_type == "Simulation": + self.example_ids_keep_columns.extend( + ["true_energy", "true_alt", "true_az", "true_shower_primary_id"] + ) + if self.trigger_settings is not None and self.get_trigger_patch_from == "file": + self.example_ids_keep_columns.extend( + ["trg_pixel_id", "trg_waveform_sample_id"] + ) + self.simulation_info = None self.simulated_particles = {} self.simulated_particles["total"] = 0 - self.example_identifiers = None + self.example_identifiers = [] if example_identifiers_file is None: example_identifiers_file = {} else: @@ -618,6 +594,7 @@ def __init__( self._shower_prob = np.around(1 - self._nsb_prob, decimals=2) example_identifiers_file.close() else: + example_identifiers = [] for file_idx, (filename, f) in enumerate(self.files.items()): # Read simulation information from each observation needed for pyIRF if self.process_type == "Simulation": @@ -662,8 +639,6 @@ def __init__( 0 ] - # Construct the example identifiers for 'mono' or 'stereo' mode. - example_identifiers = [] if self.mode == "mono": # Construct the table containing all events. # First, the telescope tables are joined with the shower simulation @@ -731,10 +706,14 @@ def __init__( for filter in quality_selection: # Update the mask for the minimum value condition if "min_value" in filter: - self.quality_mask &= (allevents[filter["col_name"]] >= filter["min_value"]) + self.quality_mask &= ( + allevents[filter["col_name"]] >= filter["min_value"] + ) # Update the mask for the maximum value condition if "max_value" in filter: - self.quality_mask &= (allevents[filter["col_name"]] < filter["max_value"]) + self.quality_mask &= ( + allevents[filter["col_name"]] < filter["max_value"] + ) # Apply the updated mask to filter events allevents = allevents[self.quality_mask] @@ -750,70 +729,54 @@ def __init__( allevents ) - # Construct the example identifiers - if ( - self.trigger_settings is not None - and self.get_trigger_patch_from == "file" - ): - for ( - sim_idx, - img_idx, - tel_id, - trg_pix_id, - trg_wvf_id, - ) in zip( - allevents["sim_index"], - allevents["img_index"], - allevents["tel_id"], - allevents["trg_pixel_id"], - allevents["trg_waveform_sample_id"], - ): - example_identifiers.append( - ( - file_idx, - sim_idx, - img_idx, - tel_id, - trg_pix_id, - trg_wvf_id, - ) - ) - else: - for sim_idx, img_idx, tel_id in zip( - allevents["sim_index"], - allevents["img_index"], - allevents["tel_id"], - ): - example_identifiers.append( - (file_idx, sim_idx, img_idx, tel_id) - ) - else: - # Construct the example identifiers - if ( - self.trigger_settings is not None - and self.get_trigger_patch_from == "file" - ): - for img_idx, tel_id, trg_pix_id, trg_wvf_id in zip( - allevents["img_index"], - allevents["tel_id"], - allevents["trg_pixel_id"], - allevents["trg_waveform_sample_id"], - ): - example_identifiers.append( - ( - file_idx, - img_idx, - tel_id, - trg_pix_id, - trg_wvf_id, + # Construct the example identifiers + allevents.keep_columns(self.example_ids_keep_columns) + allevents.add_column(file_idx, name="file_index", index=0) + if self.process_type == "Simulation": + # Transform true energy into the log space + allevents.add_column( + np.log10(allevents["true_energy"]), name="log_true_energy" + ) + # Transform alt and az into spherical offsets + tel_pointing = [] + for tel_id in self.tel_ids: + with lock: + tel_pointing.append( + read_table( + f, + f"/configuration/telescope/pointing/tel_{tel_id:03d}", ) ) - else: - for img_idx, tel_id in zip( - allevents["img_index"], - allevents["tel_id"], - ): - example_identifiers.append((file_idx, img_idx, tel_id)) + allevents = join( + left=allevents, + right=vstack(tel_pointing), + keys=["obs_id", "tel_id"], + ) + # Set the telescope pointing of the SkyOffsetSeparation tranform to the fix pointing + fix_pointing = SkyCoord( + allevents["telescope_pointing_azimuth"], + allevents["telescope_pointing_altitude"], + frame="altaz", + ) + true_direction = SkyCoord( + allevents["true_az"], + allevents["true_alt"], + frame="altaz", + ) + sky_offset = fix_pointing.spherical_offsets_to(true_direction) + angular_separation = fix_pointing.separation(true_direction) + allevents.add_column(sky_offset[0], name="spherical_offset_az") + allevents.add_column(sky_offset[1], name="spherical_offset_alt") + allevents.add_column( + angular_separation, name="angular_separation" + ) + allevents.remove_columns( + [ + "telescope_pointing_azimuth", + "telescope_pointing_altitude", + ] + ) + example_identifiers.append(allevents) elif self.mode == "stereo": # Read the trigger table. @@ -937,6 +900,7 @@ def __init__( right=allevents[selected_events], keys=["obs_id", "event_id"], ) + print(allevents[selected_events]) # Get the original position of image in the telescope table. tel_img_index = np.array( merged_table["img_index"], np.int32 @@ -1000,20 +964,13 @@ def __init__( img_idx.append(image_indices[tel_type][idx]) example_identifiers.append((file_idx, img_idx)) - # Confirm that the files are consistent and merge them - if not self.telescopes: - self.telescopes = telescopes - if self.telescopes != telescopes: - raise ValueError( - f"Inconsistent telescope definition in {filename}" - ) - self.selected_telescopes = selected_telescopes - - if self.example_identifiers is None: - self.example_identifiers = example_identifiers - else: - self.example_identifiers.extend(example_identifiers) - + self.example_identifiers = vstack(example_identifiers) + # Add index column to the example identifiers to later retrieve batches + # using the loc functionality + self.example_identifiers.add_column( + np.arange(len(self.example_identifiers)), name="index", index=0 + ) + self.example_identifiers.add_index("index") # Handling the particle ids automatically and class weights calculation # Scaling by total/2 helps keep the loss to a similar magnitude. # The sum of the weights of all examples stays the same. @@ -1035,17 +992,27 @@ def __init__( self._nsb_prob = np.around(1 / self.num_classes, decimals=2) self._shower_prob = np.around(1 - self._nsb_prob, decimals=2) + self.shower_primary_id_to_class = {} + self.class_names = [] + for p, particle_id in enumerate( + list(self.simulated_particles.keys())[1:] + ): + self.shower_primary_id_to_class[particle_id] = p + self.class_names.append( + (self.shower_primary_id_to_name[particle_id]) + ) + # Caculate common transformation of MC data + # Transform shower primary id to class + # Create a vectorized function to map the values + vectorized_map = np.vectorize(self.shower_primary_id_to_class.get) + # Apply the mapping to the astropy column + true_shower_primary_class = vectorized_map( + self.example_identifiers["true_shower_primary_id"] + ) + self.example_identifiers.add_column( + true_shower_primary_class, name="true_shower_primary_class" + ) if len(self.simulated_particles) > 2: - self.shower_primary_id_to_class = {} - self.class_names = [] - for p, particle_id in enumerate( - list(self.simulated_particles.keys())[1:] - ): - self.shower_primary_id_to_class[particle_id] = p - self.class_names.append( - (self.shower_primary_id_to_name[particle_id]) - ) - self.class_weight = {} for particle_id, num_particles in self.simulated_particles.items(): if particle_id != "total": @@ -1055,12 +1022,8 @@ def __init__( self.simulated_particles["total"] / 2.0 ) - # Shuffle the examples - if shuffle: - random.seed(seed) - random.shuffle(self.example_identifiers) - # Dump example_identifiers and simulation_info to a pandas hdf5 file + """ if not isinstance(example_identifiers_file, dict): pd.DataFrame(data=self.example_identifiers).to_hdf( example_identifiers_file, key="example_identifiers", mode="a" @@ -1092,7 +1055,7 @@ def __init__( mode="a", ) example_identifiers_file.close() - + """ # ImageMapper (1D charges -> 2D images or 3D waveforms) if self.image_channels is not None or self.waveform_type is not None: @@ -1183,198 +1146,12 @@ def __init__( len(self.image_channels), # number of channels ) - if self.process_type == "Simulation": - self._construct_unprocessed_example_description( - self.subarray_layout, - self.subarray_shower, - ) - else: - self._construct_unprocessed_example_description(self.subarray_layout) - - self.processor = DL1DataProcessor( - self.mode, - self.unprocessed_example_description, - transforms, - validate_processor, - ) - - # Definition of preprocessed example - self.example_description = self.processor.output_description - def _get_camera_type(self, tel_type): return tel_type.split("_")[-1] def __len__(self): return len(self.example_identifiers) - def _construct_unprocessed_example_description( - self, subarray_table, events_table=None - ): - """ - Construct example description (before preprocessing). - - Parameters - ---------- - subarray_table (tables.Table): the table containing the subarray information - events_table (tables.Table): the table containing the simulated events information - """ - if self.mode == "mono": - self.unprocessed_example_description = [] - if self.waveform_type is not None: - self.unprocessed_example_description.append( - { - "name": "waveform", - "tel_type": self.tel_type, - "base_name": "waveform", - "shape": ( - self.waveform_settings["shapes"][ - self._get_camera_type(self.tel_type) - ][0], - self.waveform_settings["shapes"][ - self._get_camera_type(self.tel_type) - ][1], - self.waveform_settings["sequence_length"], - ), - "dtype": np.dtype(np.float16), - } - ) - if self.trigger_settings is not None: - self.unprocessed_example_description.append( - { - "name": "trigger_patch_true_image_sum", - "tel_type": self.tel_type, - "base_name": "true_image_sum", - "shape": (1,), - "dtype": np.dtype(np.int), - } - ) - - if self.image_channels is not None: - self.unprocessed_example_description.append( - { - "name": "image", - "tel_type": self.tel_type, - "base_name": "image", - "shape": self.image_mapper.image_shapes[ - self._get_camera_type(self.tel_type) - ], - "dtype": np.dtype(np.float32), - } - ) - if self.parameter_list is not None: - self.unprocessed_example_description.append( - { - "name": "parameters", - "tel_type": self.tel_type, - "base_name": "parameters", - "shape": ((1,) + (len(self.parameter_list),)), - "dtype": np.dtype(np.float32), - } - ) - - for col_name in self.subarray_info: - col = subarray_table.cols._f_col(col_name) - self.unprocessed_example_description.append( - { - "name": col_name, - "tel_type": self.tel_type, - "base_name": col_name, - "shape": (1,) + col.shape[1:], - "dtype": col.dtype, - } - ) - - elif self.mode == "stereo": - self.unprocessed_example_description = [] - for tel_type in self.selected_telescopes: - num_tels = len(self.selected_telescopes[tel_type]) - self.unprocessed_example_description.extend( - [ - { - "name": tel_type + "_HWtriggers", - "tel_type": tel_type, - "base_name": "HWtriggers", - "shape": (num_tels,), - "dtype": np.dtype(np.int8), - } - ] - ) - if self.waveform_type is not None: - self.unprocessed_example_description.append( - { - "name": tel_type + "_waveforms", - "tel_type": tel_type, - "base_name": "waveforms", - "shape": ( - num_tels, - self.waveform_settings["shapes"][ - self._get_camera_type(tel_type) - ][0], - self.waveform_settings["shapes"][ - self._get_camera_type(tel_type) - ][1], - self.waveform_settings["sequence_length"], - ), - "dtype": np.dtype(np.float16), - } - ) - if self.image_channels is not None: - self.unprocessed_example_description.extend( - [ - { - "name": tel_type + "_images", - "tel_type": tel_type, - "base_name": "images", - "shape": ( - (num_tels,) - + self.image_mapper.image_shapes[ - self._get_camera_type(tel_type) - ] - ), - "dtype": np.dtype(np.float32), - } - ] - ) - if self.parameter_list is not None: - self.unprocessed_example_description.extend( - [ - { - "name": tel_type + "_parameters", - "tel_type": tel_type, - "base_name": "parameters", - "shape": ((num_tels,) + (len(self.parameter_list),)), - "dtype": np.dtype(np.float32), - } - ] - ) - - for col_name in self.subarray_info: - col = subarray_table.cols._f_col(col_name) - self.unprocessed_example_description.append( - { - "name": tel_type + "_" + col_name, - "tel_type": tel_type, - "base_name": col_name, - "shape": (num_tels,) + col.shape[1:], - "dtype": col.dtype, - } - ) - - # Add event info to description - if self.process_type == "Simulation": - for col_name in self.event_info: - col = events_table.cols._f_col(col_name) - self.unprocessed_example_description.append( - { - "name": col_name, - "tel_type": None, - "base_name": col_name, - "shape": col.shape[1:], - "dtype": col.dtype, - } - ) - return - def _construct_simulated_info(self, file, simulation_info): """ Construct the simulated_info from the DL1 hdf5 file for the pyIRF SimulatedEventsInfo table & GammaBoard. @@ -1432,14 +1209,6 @@ def _construct_simulated_info(self, file, simulation_info): return simulation_info - def _append_subarray_info(self, subarray_table, subarray_info, query): - with lock: - for row in subarray_table.where(query): - for info, column in zip(subarray_info, self.subarray_info): - dtype = subarray_table.cols._f_col(column).dtype - info.append(np.array(row[column], dtype=dtype)) - return - def _construct_telescopes_selection( self, subarray_table, selected_telescope_types, selected_telescope_ids ): @@ -1542,261 +1311,258 @@ def _construct_pixel_positions(self, telescope_type_information): return pixel_positions, num_pixels - def _load_tel_type_data( - self, - filename, - tel_type, - trigger_info, - ): - waveforms = [] - images = [] - parameters_lists = [] - subarray_info = [[] for column in self.subarray_info] - for i, tel_id in enumerate(self.selected_telescopes[tel_type]): - if self.waveform_type is not None: - if "calibrate" in self.waveform_type: - child = None - with lock: - tel_table = f"tel_{tel_id:03d}" - if tel_table in self.files[filename].root.r1.event.telescope: - child = self.files[ - filename - ].root.r1.event.telescope._f_get_child(tel_table) - dl1_cleaning_mask = None - if "dl1" in self.files[filename].root: - if ( - "images" - in self.files[filename].root.dl1.event.telescope - ): - img_child = self.files[ - filename - ].root.dl1.event.telescope.images._f_get_child( - tel_table - ) - dl1_cleaning_mask = np.array( - img_child[trigger_info[i]]["image_mask"], dtype=int - ) - unmapped_waveform = get_unmapped_waveform( - child[trigger_info[i]], - self.waveform_settings, - dl1_cleaning_mask, - ) - # Apply the ImageMapper whenever the mapping method is not indexed_conv - if self.image_mapper.mapping_method[self._get_camera_type(tel_type)] != "indexed_conv": - waveforms.append(self.image_mapper.map_image(unmapped_waveform, self._get_camera_type(tel_type))) - else: - waveforms.append(unmapped_waveform) - + def batch_generation(self, batch_indices): + "Generates data containing batch_size samples" + features = {} + batch = self.example_identifiers.loc[batch_indices] + #TODO: Define API with subclasses for all those cases + # batch_generation should be generic and call the specific method + # for retrieving the features + #TODO: rename _get_... to _generate_features() + if self.mode == "mono": if self.image_channels is not None: - child = None - with lock: - tel_table = f"tel_{tel_id:03d}" - if ( - tel_table - in self.files[filename].root.dl1.event.telescope.images - ): - child = self.files[ - filename - ].root.dl1.event.telescope.images._f_get_child(tel_table) - unmapped_image = get_unmapped_image( - child[trigger_info[i]], - self.image_channels, - self.image_transforms, - ) - # Apply the ImageMapper whenever the mapping method is not indexed_conv - if self.image_mapper.mapping_method[self._get_camera_type(tel_type)] != "indexed_conv": - images.append(self.image_mapper.map_image(unmapped_image, self._get_camera_type(tel_type))) - else: - images.append(unmapped_image) - + features["images"] = self._get_mono_img_features( + batch["file_index"], batch["img_index"], batch["tel_id"] + ) if self.parameter_list is not None: - child = None - with lock: - tel_table = f"tel_{tel_id:03d}" - if ( - tel_table - in self.files[filename].root.dl1.event.telescope.parameters - ): - child = self.files[ - filename - ].root.dl1.event.telescope.parameters._f_get_child(tel_table) - parameter_list = [] - for parameter in self.parameter_list: - if trigger_info[i] != -1 and child: - parameter_list.append(child[trigger_info[i]][parameter]) - else: - parameter_list.append(np.nan) - parameters_lists.append(np.array(parameter_list, dtype=np.float32)) - - example = [np.array(trigger_info >= 0, np.int8)] - if self.waveform_type is not None: - example.extend([np.stack(waveforms)]) - if self.image_channels is not None: - example.extend([np.stack(images)]) - if self.parameter_list is not None: - example.extend([np.stack(parameters_lists)]) - example.extend([np.stack(info) for info in subarray_info]) - return example - - def __getitem__(self, idx): - identifiers = self.example_identifiers[idx] - - # Get record for the event - filename = list(self.files)[identifiers[0]] - - # Load the data and any selected array info - if self.mode == "mono": - # Get a single image - if self.process_type == "Simulation": - nrow, index, tel_id = identifiers[1:4] - else: - index, tel_id = identifiers[1:3] - - random_trigger_patch = False - example = [] + features["parameters"] = self._get_mono_pmt_features( + batch["file_index"], batch["img_index"], batch["tel_id"] + ) if self.waveform_type is not None: if "raw" in self.waveform_type: - trg_pixel_id, trg_waveform_sample_id = None, None if ( self.trigger_settings is not None and self.get_trigger_patch_from == "file" ): - trg_pixel_id, trg_waveform_sample_id = identifiers[-2:] - with lock: - tel_table = f"tel_{tel_id:03d}" - child = self.files[ - filename - ].root.r0.event.telescope._f_get_child(tel_table) - true_image = None - if self.process_type == "Simulation": - if self.include_nsb_patches == "auto": - random_trigger_patch = np.random.choice( - [False, True], p=[self._shower_prob, self._nsb_prob] - ) - elif self.include_nsb_patches == "all": - random_trigger_patch = True - if ( - "images" - in self.files[filename].root.simulation.event.telescope - ): - sim_child = self.files[ - filename - ].root.simulation.event.telescope.images._f_get_child( - tel_table - ) - true_image = np.expand_dims( - np.array(sim_child[index]["true_image"], dtype=int), - axis=1, - ) - waveform, trigger_patch_true_image_sum = get_mapped_triggerpatch( - child[index], - self.waveform_settings, - self.trigger_settings, - self.image_mapper, - self._get_camera_type(self.tel_type), - true_image, - self.process_type, - random_trigger_patch, - trg_pixel_id, - trg_waveform_sample_id, - ) - example.append(waveform) - if trigger_patch_true_image_sum is not None: - example.append(trigger_patch_true_image_sum) - if "calibrate" in self.waveform_type: - with lock: - tel_table = f"tel_{tel_id:03d}" - child = self.files[ - filename - ].root.r1.event.telescope._f_get_child(tel_table) - dl1_cleaning_mask = None - if "dl1" in self.files[filename].root: - if ( - "images" - in self.files[filename].root.dl1.event.telescope - ): - img_child = self.files[ - filename - ].root.dl1.event.telescope.images._f_get_child( - tel_table - ) - dl1_cleaning_mask = np.array( - img_child[index]["image_mask"], dtype=int - ) - unmapped_waveform = get_unmapped_waveform( - child[index], - self.waveform_settings, - dl1_cleaning_mask, + trigger_patches, true_cherenkov_photons = self._get_mono_trg_features( + batch["file_index"], + batch["img_index"], + batch["tel_id"], + batch["trg_pixel_id"], + batch["trg_waveform_sample_id"], ) - # Apply the ImageMapper whenever the mapping method is not indexed_conv - if self.image_mapper.mapping_method[self._get_camera_type(self.tel_type)] != "indexed_conv": - example.append(self.image_mapper.map_image(unmapped_waveform, self._get_camera_type(self.tel_type))) else: - example.append(unmapped_waveform) - - if self.image_channels is not None: - with lock: - tel_table = f"tel_{tel_id:03d}" - child = self.files[ - filename - ].root.dl1.event.telescope.images._f_get_child(tel_table) - unmapped_image = get_unmapped_image( - child[index], self.image_channels, self.image_transforms + trigger_patches, true_cherenkov_photons = self._get_mono_trg_features( + batch["file_index"], batch["img_index"], batch["tel_id"] + ) + features["waveforms"] = trigger_patches + batch.add_column(true_cherenkov_photons, name="true_cherenkov_photons") + if "calibrated" in self.waveform_type: + features["waveforms"] = self._get_mono_wvf_features( + batch["file_index"], batch["img_index"], batch["tel_id"] ) - # Apply the ImageMapper whenever the mapping method is not indexed_conv - if self.image_mapper.mapping_method[self._get_camera_type(self.tel_type)] != "indexed_conv": - example.append(self.image_mapper.map_image(unmapped_image, self._get_camera_type(self.tel_type))) - else: - example.append(unmapped_image) + elif self.mode == "stereo": + if self.image_channels is not None: + features["images"] = self._get_stereo_img_features( + batch["file_index"], batch["img_index"], batch["tel_id"] + ) if self.parameter_list is not None: - with lock: - tel_table = f"tel_{tel_id:03d}" - child = self.files[ - filename - ].root.dl1.event.telescope.parameters._f_get_child(tel_table) - parameter_list = list(child[index][self.parameter_list]) - example.extend([np.stack(parameter_list)]) - - subarray_info = [[] for column in self.subarray_info] - tel_query = f"tel_id == {tel_id}" - self._append_subarray_info( - self.files[filename].root.configuration.instrument.subarray.layout, - subarray_info, - tel_query, - ) - example.extend([np.stack(info) for info in subarray_info]) + features["parameters"] = self._get_stereo_pmt_features( + batch["file_index"], batch["img_index"], batch["tel_id"] + ) + + return features, batch - elif self.mode == "stereo": - # Get a list of images and/or image parameters, an array of binary trigger values - # for each selected telescope type - if self.process_type == "Simulation": - nrow = identifiers[1] - trigger_info = identifiers[2] + def _get_mono_img_features(self, file_idxs, img_idxs, tel_ids): + images = [] + for file_idx, img_idx, tel_id in zip(file_idxs, img_idxs, tel_ids): + filename = list(self.files)[file_idx] + with lock: + tel_table = f"tel_{tel_id:03d}" + child = self.files[ + filename + ].root.dl1.event.telescope.images._f_get_child(tel_table) + unmapped_image = get_unmapped_image( + child[img_idx], self.image_channels, self.image_transforms + ) + # Apply the ImageMapper whenever the mapping method is not indexed_conv + if ( + self.image_mapper.mapping_method[self._get_camera_type(self.tel_type)] + != "indexed_conv" + ): + images.append( + self.image_mapper.map_image( + unmapped_image, self._get_camera_type(self.tel_type) + ) + ) else: - trigger_info = identifiers[1] - - example = [] - for ind, tel_type in enumerate(self.selected_telescopes): - tel_type_example = self._load_tel_type_data( - filename, - tel_type, - trigger_info[ind], + images.append(unmapped_image) + return np.stack(images) + + def _get_mono_pmt_features(self, file_idxs, img_idxs, tel_ids): + parameters = [] + for file_idx, img_idx, tel_id in zip(file_idxs, img_idxs, tel_ids): + filename = list(self.files)[file_idx] + with lock: + tel_table = f"tel_{tel_id:03d}" + child = self.files[ + filename + ].root.dl1.event.telescope.parameters._f_get_child(tel_table) + parameter_list = list(child[img_idx][self.parameter_list]) + parameters.append([np.stack(parameter_list)]) + return np.stack(parameters) + + def _get_mono_wvf_features(self, file_idxs, img_idxs, tel_ids): + waveforms = [] + for file_idx, img_idx, tel_id in zip(file_idxs, img_idxs, tel_ids): + filename = list(self.files)[file_idx] + with lock: + tel_table = f"tel_{tel_id:03d}" + child = self.files[filename].root.r1.event.telescope._f_get_child( + tel_table + ) + dl1_cleaning_mask = None + if "dl1" in self.files[filename].root: + if "images" in self.files[filename].root.dl1.event.telescope: + img_child = self.files[ + filename + ].root.dl1.event.telescope.images._f_get_child(tel_table) + dl1_cleaning_mask = np.array( + img_child[img_idx]["image_mask"], dtype=int + ) + unmapped_waveform = get_unmapped_waveform( + child[img_idx], + self.waveform_settings, + dl1_cleaning_mask, + ) + # Apply the ImageMapper whenever the mapping method is not indexed_conv + if ( + self.image_mapper.mapping_method[self._get_camera_type(self.tel_type)] + != "indexed_conv" + ): + waveforms.append( + self.image_mapper.map_image( + unmapped_waveform, self._get_camera_type(self.tel_type) + ) ) - example.extend(tel_type_example) + else: + waveforms.append(unmapped_waveform) + return np.stack(waveforms) - # Load event info - if self.process_type == "Simulation": + def _get_mono_trg_features( + self, + file_idxs, + img_idxs, + tel_ids, + trg_pixel_ids=None, + trg_waveform_sample_ids=None, + ): + trigger_patches, true_cherenkov_photons = [], [] + random_trigger_patch = False + for i, file_idx, img_idx, tel_id in enumerate( + zip(file_idxs, img_idxs, tel_ids) + ): + filename = list(self.files)[file_idx] + trg_pixel_id, trg_waveform_sample_id = None, None + if trg_pixel_ids is not None: + trg_pixel_id = trg_pixel_ids[i] + trg_waveform_sample_id = trg_waveform_sample_ids[i] with lock: - events = self.files[filename].root.simulation.event.subarray.shower - for column in self.event_info: - dtype = events.cols._f_col(column).dtype - if random_trigger_patch and column == "true_shower_primary_id": - example.append(np.array(404, dtype=dtype)) + tel_table = f"tel_{tel_id:03d}" + child = self.files[filename].root.r0.event.telescope._f_get_child( + tel_table + ) + true_image = None + if self.process_type == "Simulation": + if self.include_nsb_patches == "auto": + random_trigger_patch = np.random.choice( + [False, True], p=[self._shower_prob, self._nsb_prob] + ) + elif self.include_nsb_patches == "all": + random_trigger_patch = True + if "images" in self.files[filename].root.simulation.event.telescope: + sim_child = self.files[ + filename + ].root.simulation.event.telescope.images._f_get_child(tel_table) + true_image = np.expand_dims( + np.array(sim_child[img_idx]["true_image"], dtype=int), + axis=1, + ) + waveform, trigger_patch_true_image_sum = get_mapped_triggerpatch( + child[img_idx], + self.waveform_settings, + self.trigger_settings, + self.image_mapper, + self._get_camera_type(self.tel_type), + true_image, + self.process_type, + random_trigger_patch, + trg_pixel_id, + trg_waveform_sample_id, + ) + trigger_patches.append(waveform) + if trigger_patch_true_image_sum is not None: + true_cherenkov_photons.append(trigger_patch_true_image_sum) + return trigger_patches, true_cherenkov_photons + + def _get_stereo_img_features(self, file_idxs, trigger_infos): + for file_idx, trigger_info in zip( + file_idxs, trigger_infos + ): + # Get a list of images and/or image parameters, an array of binary trigger values + # for each selected telescope type + filename = list(self.files)[file_idx] + features = {} + for t, tel_type in enumerate(self.selected_telescopes): + images = [] + for i, tel_id in enumerate(self.selected_telescopes[tel_type]): + child = None + with lock: + tel_table = f"tel_{tel_id:03d}" + if ( + tel_table + in self.files[filename].root.dl1.event.telescope.images + ): + child = self.files[ + filename + ].root.dl1.event.telescope.images._f_get_child(tel_table) + unmapped_image = get_unmapped_image( + child[trigger_info[t][i]], + self.image_channels, + self.image_transforms, + ) + # Apply the ImageMapper whenever the mapping method is not indexed_conv + if ( + self.image_mapper.mapping_method[self._get_camera_type(tel_type)] + != "indexed_conv" + ): + images.append( + self.image_mapper.map_image( + unmapped_image, self._get_camera_type(tel_type) + ) + ) else: - example.append(np.array(events[nrow][column], dtype=dtype)) - - # Preprocess the example - example = self.processor.process(example) - - return example + images.append(unmapped_image) + + features[f"{tel_type}_images"] = np.stack(images) + return features + + def _get_stereo_pmt_features(self, file_idxs, trigger_infos): + for file_idx, trigger_info in zip( + file_idxs, trigger_infos + ): + filename = list(self.files)[file_idx] + features = {} + for t, tel_type in enumerate(self.selected_telescopes): + parameters_lists = [] + for i, tel_id in enumerate(self.selected_telescopes[tel_type]): + child = None + with lock: + tel_table = f"tel_{tel_id:03d}" + if ( + tel_table + in self.files[filename].root.dl1.event.telescope.parameters + ): + child = self.files[ + filename + ].root.dl1.event.telescope.parameters._f_get_child(tel_table) + parameter_list = [] + for parameter in self.parameter_list: + if trigger_info[i] != -1 and child: + parameter_list.append(child[trigger_info[i]][parameter]) + else: + parameter_list.append(np.nan) + parameters_lists.append(np.array(parameter_list, dtype=np.float32)) + features[f"{tel_type}_parameters"] = np.stack(parameters_lists) + return features From 679db24a74a8d9dbcd95d714eb43c090eee992ce Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Mon, 5 Aug 2024 17:48:46 +0200 Subject: [PATCH 10/92] removed redundant event and subarray info --- dl1_data_handler/reader.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 19c82fd..828c8cb 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -405,14 +405,6 @@ def __init__( f"Invalid mode selection '{mode}'. Valid options: 'mono', 'stereo'" ) - if subarray_info is None: - subarray_info = [] - self.subarray_info = subarray_info - - if event_info is None: - event_info = [] - self.event_info = event_info - if selected_telescope_ids is None: selected_telescope_ids = [] ( From fc5562833cac0b0775bcf53dd1573046754ae29b Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Mon, 5 Aug 2024 17:52:53 +0200 Subject: [PATCH 11/92] edit path to pointing table now stored in dl0 monitoring tree --- dl1_data_handler/reader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 828c8cb..fe6ea40 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -433,7 +433,7 @@ def __init__( with lock: self.telescope_pointings[f"tel_{tel_id:03d}"] = read_table( self.files[first_file], - f"/dl1/monitoring/telescope/pointing/tel_{tel_id:03d}", + f"/dl0/monitoring/telescope/pointing/tel_{tel_id:03d}", ) with lock: self.tel_trigger_table = read_table( From a7755a3d5ef4c72140b9efc38885412a4adce319 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Tue, 6 Aug 2024 11:22:25 +0200 Subject: [PATCH 12/92] fix shape of trigger patch last dimension of sample was missing --- dl1_data_handler/reader.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index fe6ea40..f4ab7d8 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -1,12 +1,10 @@ from collections import OrderedDict -import random import threading import numpy as np import pandas as pd import tables from dl1_data_handler.image_mapper import ImageMapper -from dl1_data_handler.processor import DL1DataProcessor import astropy.units as u from astropy.coordinates import SkyCoord @@ -1116,7 +1114,9 @@ def __init__( ].append({"x": patch[0], "y": patch[1]}) self.waveform_settings["shapes"][camera_type] = ( - self.trigger_settings["patch_size"][camera_type] + self.trigger_settings["patch_size"][camera_type][0], + self.trigger_settings["patch_size"][camera_type][1], + self.waveform_settings["sequence_length"], ) self.trigger_settings["patches_xpos"][camera_type] = np.unique( [ From 93a9c09c019ea1f572ca24d1977027297cca78e6 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Tue, 6 Aug 2024 11:32:31 +0200 Subject: [PATCH 13/92] fix get trigger features --- dl1_data_handler/reader.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index f4ab7d8..eedcb0e 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -1442,7 +1442,7 @@ def _get_mono_trg_features( ): trigger_patches, true_cherenkov_photons = [], [] random_trigger_patch = False - for i, file_idx, img_idx, tel_id in enumerate( + for i, (file_idx, img_idx, tel_id) in enumerate( zip(file_idxs, img_idxs, tel_ids) ): filename = list(self.files)[file_idx] @@ -1486,7 +1486,7 @@ def _get_mono_trg_features( trigger_patches.append(waveform) if trigger_patch_true_image_sum is not None: true_cherenkov_photons.append(trigger_patch_true_image_sum) - return trigger_patches, true_cherenkov_photons + return np.stack(trigger_patches), true_cherenkov_photons def _get_stereo_img_features(self, file_idxs, trigger_infos): for file_idx, trigger_info in zip( From b3ca9ed3f43a1a716b2732e5d83b2ab625acac05 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Tue, 6 Aug 2024 11:34:39 +0200 Subject: [PATCH 14/92] remove processor and transforms replaced by new design --- dl1_data_handler/__init__.py | 2 - dl1_data_handler/processor.py | 59 ------ dl1_data_handler/transforms.py | 343 --------------------------------- 3 files changed, 404 deletions(-) delete mode 100644 dl1_data_handler/processor.py delete mode 100644 dl1_data_handler/transforms.py diff --git a/dl1_data_handler/__init__.py b/dl1_data_handler/__init__.py index f437eb5..b7da3a6 100644 --- a/dl1_data_handler/__init__.py +++ b/dl1_data_handler/__init__.py @@ -1,7 +1,5 @@ from .image_mapper import * -from .processor import * from .reader import * -from .transforms import * from .version import * __version__ = get_version(pep440=False) diff --git a/dl1_data_handler/processor.py b/dl1_data_handler/processor.py deleted file mode 100644 index 29f9723..0000000 --- a/dl1_data_handler/processor.py +++ /dev/null @@ -1,59 +0,0 @@ -import copy - - -class DL1DataProcessor: - def __init__(self, mode, input_description, transforms=None, validate=False): - if mode in ["mono", "stereo", "multi-stereo"]: - self.mode = mode - else: - raise ValueError( - "Invalid mode selection '{}'. Valid options: " - "'mono', 'stereo', 'multi-stereo'".format(mode) - ) - if transforms is None: - transforms = [] - self.transforms = transforms - self.validate = validate - self.input_description = copy.deepcopy(input_description) - for transform in self.transforms: - input_description = transform.describe(input_description) - self.output_description = input_description - - def process(self, example): - for transform in self.transforms: - example = transform(example) - if self.validate: - transform.validate(example) - return example - - -class Transform: - def __init__(self): - self.description = [] - - def __call__(self, example): - return example - - def describe(self, description): - self.description = description - return self.description - - def validate(self, example): - if len(example) != len(self.description): - raise ValueError( - "{}: Length mismatch. Description: {}. " - "Example: {}.".format( - self.__class__.__name__, len(self.description), len(example) - ) - ) - for arr, des in zip(example, self.description): - if arr.shape != des["shape"]: - raise ValueError( - "{}: Shape mismatch. Description item: {}. " - "Example item: {}.".format(self.__class__.__name__, des, arr) - ) - if arr.dtype != des["dtype"]: - raise ValueError( - "{}: Dtype mismatch. Description: {}. " - "Example: {}.".format(self.__class__.__name__, des, arr) - ) diff --git a/dl1_data_handler/transforms.py b/dl1_data_handler/transforms.py deleted file mode 100644 index 48b15ca..0000000 --- a/dl1_data_handler/transforms.py +++ /dev/null @@ -1,343 +0,0 @@ -import astropy.units as u -from astropy.coordinates import SkyCoord -import numpy as np -import itertools -from .processor import Transform - - -class ShowerPrimaryID(Transform): - def __init__(self): - super().__init__() - self.particle_id_col_name = "true_shower_primary_id" - self.shower_primary_id_to_class = { - 0: 1, - 101: 0, - 1: 2, - 255: 3, - } - self.shower_primary_id_to_name = { - 0: "gamma", - 101: "proton", - 1: "electron", - 255: "hadron", - } - - self.name = "true_shower_primary_id" - self.dtype = np.dtype("int8") - - def describe(self, description): - self.description = [ - {**des, "name": self.name, "dtype": self.dtype} - if des["name"] == self.particle_id_col_name - else des - for des in description - ] - return self.description - - def __call__(self, example): - for i, (arr, des) in enumerate(zip(example, self.description)): - if des["name"] == self.name: - particletype = np.array( - self.shower_primary_id_to_class[arr.tolist()], dtype=self.dtype - ) - example[i] = particletype - return example - - -class NormalizeTelescopePositions(Transform): - def __init__(self, norm_x=1.0, norm_y=1.0, norm_z=1.0): - super().__init__() - self.norms = {"x": norm_x, "y": norm_y, "z": norm_z} - - def transform(self, example): - for i, (arr, des) in enumerate(zip(example, self.description)): - if des["base_name"] in self.norms: - normed_pos = arr / self.norms[des["base_name"]] - example[i] = np.array(normed_pos, dtype=des["dtype"]) - return example - - -class LogEnergy(Transform): - def __init__(self): - super().__init__() - self.name = "energy" - self.shape = 1 - self.dtype = np.dtype("float32") - self.unit = "log(TeV)" - - def describe(self, description): - self.description = [ - {**des, "name": self.name, "dtype": self.dtype, "unit": self.unit} - if des["name"] == "true_energy" - else des - for des in description - ] - return self.description - - def __call__(self, example): - for i, (val, des) in enumerate(zip(example, self.description)): - if des["base_name"] == "true_energy": - example[i] = np.log10(val) - return example - - -class SkyOffsetSeparation(Transform): - def __init__(self, transform_to_rad=False): - super().__init__() - - self.name = "SkyOffsetSeparation" - self.base_name = "direction" - self.shape = 3 - self.dtype = np.dtype("float32") - self.unit = u.rad if transform_to_rad else u.deg - self.fix_pointing = None - - def describe(self, description): - self.description = description - self.description.append( - { - "name": self.base_name, - "tel_type": None, - "base_name": self.base_name, - "shape": self.shape, - "dtype": self.dtype, - "unit": str(self.unit), - } - ) - return self.description - - def set_pointing(self, fix_pointing): - self.fix_pointing = fix_pointing - - def __call__(self, example): - for i, (val, des) in enumerate( - itertools.zip_longest(example, self.description) - ): - if des["base_name"] == "true_alt": - alt = example[i] - elif des["base_name"] == "true_az": - az = example[i] - elif des["base_name"] == self.base_name: - true_direction = SkyCoord( - az * u.deg, - alt * u.deg, - frame="altaz", - unit="deg", - ) - sky_offset = self.fix_pointing.spherical_offsets_to(true_direction) - angular_separation = self.fix_pointing.separation(true_direction) - example.append( - np.array( - [ - sky_offset[0].to_value(self.unit), - sky_offset[1].to_value(self.unit), - angular_separation.to_value(self.unit), - ] - ) - ) - return example - - -class CoreXY(Transform): - def __init__(self): - super().__init__() - self.name = "impact" - self.shape = 2 - self.dtype = np.dtype("float32") - self.unit = "km" - - def describe(self, description): - self.description = description - self.description.append( - { - "name": self.name, - "tel_type": None, - "base_name": self.name, - "shape": self.shape, - "dtype": self.dtype, - "unit": self.unit, - } - ) - return self.description - - def __call__(self, example): - for i, (val, des) in enumerate( - itertools.zip_longest(example, self.description) - ): - if des["base_name"] == "true_core_x": - example[i] = val / 1000 - core_x_km = example[i] - elif des["base_name"] == "true_core_y": - example[i] = val / 1000 - core_y_km = example[i] - elif des["base_name"] == self.name: - example.append(np.array([core_x_km, core_y_km])) - return example - - -class Xmax(Transform): - def __init__(self, name="showermaximum", unit="km"): - super().__init__() - self.name = name - self.shape = 1 - self.dtype = np.dtype("float32") - self.unit = unit - - def describe(self, description): - self.description = [ - {**des, "name": self.name, "dtype": self.dtype, "unit": self.unit} - if des["name"] == "showermaximum" - else des - for des in description - ] - return self.description - - def __call__(self, example): - for i, (val, des) in enumerate(zip(example, self.description)): - if des["base_name"] == "showermaximum": - example[i] = ( - np.array([val / 1000]) if self.unit == "km" else np.array([val]) - ) - return example - - -class HfirstInt(Transform): - def __init__(self, name="true_h_first_int", unit="km"): - super().__init__() - self.name = name - self.shape = 1 - self.dtype = np.dtype("float32") - self.unit = unit - - def describe(self, description): - self.description = [ - {**des, "name": self.name, "dtype": self.dtype, "unit": self.unit} - if des["name"] == "true_h_first_int" - else des - for des in description - ] - return self.description - - def __call__(self, example): - for i, (val, des) in enumerate(zip(example, self.description)): - if des["base_name"] == "true_h_first_int": - example[i] = ( - np.array([val / 1000]) if self.unit == "km" else np.array([val]) - ) - return example - - -class TelescopePositionInKm(Transform): - def describe(self, description): - self.description = description - for des in self.description: - if des["base_name"] in ["x", "y", "z"]: - des["unit"] = "km" - return self.description - - def __call__(self, example): - for i, (val, des) in enumerate(zip(example, self.description)): - if des["base_name"] in ["x", "y", "z"]: - example[i] = val / 1000 - return example - - -class DataForGammaLearn(Transform): - def __init__(self): - super().__init__() - self.mc_infos = [ - "true_energy", - "true_core_x", - "true_core_y", - "true_alt", - "true_az", - "true_shower_primary_id", - "true_x_max", - "true_h_first_int", - ] - self.array_infos = ["x", "y", "z"] - - def describe(self, description): - self.description = description - label_description = [] - for des in self.description: - if des["base_name"] in self.mc_infos: - label_description.append(des["base_name"]) - if len(label_description) > 0: - self.description.append( - { - "name": "label", - "tel_type": None, - "base_name": "label", - "shape": None, - "dtype": None, - "label_description": label_description, - } - ) - return self.description - - def __call__(self, example): - image = None - mc_energy = None - labels = [] - array = [] - for i, (val, des) in enumerate(zip(example, self.description)): - if des["base_name"] == "image": - image = val.T - elif des["base_name"] in self.mc_infos: - if des["name"] == "class_label": - val = val.astype(np.float32) - labels.append(val) - if des["base_name"] == "true_energy": - mc_energy = val - elif des["base_name"] in self.array_infos: - array.append(val) - sample = {"image": image} - if len(labels) > 0: - sample["label"] = np.stack(labels) - if mc_energy is not None: - sample["true_energy"] = mc_energy - if len(array) > 0: - sample["telescope"] = np.stack(array) - return sample - - -class SortTelescopes(Transform): - def __init__(self, sorting="trigger", tel_desc="LST_LST_LSTCam"): - super().__init__() - self.name = "sortTelescopes" - self.tel_desc = tel_desc - params = { - # List triggered telescopes first - "trigger": { - "reverse": True, - "key": lambda x: x[self.tel_desc + "_triggers"], - }, - # List from largest to smallest sum of pixel charges - "size": { - "reverse": True, - "key": lambda x: np.sum(x[self.tel_desc + "_images"][..., 0], (1, 2)), - }, - } - if sorting in params: - self.step = -1 if params[sorting]["reverse"] else 1 - self.key = params[sorting]["key"] - else: - raise ValueError( - "Invalid image sorting method: {}. Select " - "'trigger' or 'size'.".format(sorting) - ) - - def __call__(self, example): - outputs = {des["name"]: arr for arr, des in zip(example, self.description)} - indices = np.argsort(self.key(outputs)) - for i, (arr, des) in enumerate(zip(example, self.description)): - if des["name"] in [ - self.tel_desc + "_images", - self.tel_desc + "_triggers", - "x", - "y", - "z", - ]: - example[i] = arr[indices[:: self.step]] - return example From 31d6b53b1f92a004edb5a9981dc43ff319899cb6 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Thu, 8 Aug 2024 12:02:16 +0200 Subject: [PATCH 15/92] fix stereo reading mode Mainly astropy table operations are now used to retrieve the exmaple identifiers for the stereo reading mode. Code base is therefore heavily reduced and operations are more efficient. Moved parameter settings outside the dl1dh. User can request to also the read dl1b parameters by passing a list of column names in the batch_generation() Removed init skip when pandas hdf5 with example identifiers is provided. It is not needed anymore since we are now fast and efficient with astropy tables and their operations. split transformation into sub-functions for better readability. --- dl1_data_handler/reader.py | 1020 ++++++++++++++---------------------- 1 file changed, 402 insertions(+), 618 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index eedcb0e..4cf1ee2 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -10,6 +10,7 @@ from astropy.coordinates import SkyCoord from astropy.table import ( Table, + unique, join, # let us merge tables horizontally vstack, # and vertically ) @@ -389,7 +390,6 @@ def __init__( 0: "gamma", 101: "proton", 1: "electron", - 255: "hadron", 404: "nsb", } @@ -502,9 +502,12 @@ def __init__( self.image_transforms["peak_time_offset"] = 0 # Image parameters (DL1b) - self.parameter_list = None - if parameter_settings is not None: - self.parameter_list = parameter_settings["parameter_list"] + # Retrieve the column names for the DL1b parameter table + with lock: + self.dl1b_parameter_colnames = read_table( + self.files[first_file], + f"/dl1/event/telescope/parameters/tel_{self.tel_ids[0]:03d}", + ).colnames # Get offset and scaling of images if self.image_channels is not None: @@ -539,513 +542,292 @@ def __init__( self.example_ids_keep_columns.extend( ["true_energy", "true_alt", "true_az", "true_shower_primary_id"] ) + if mode == "stereo": + self.example_ids_keep_columns.extend( + ["tels_with_trigger", "hillas_intensity"] + ) + if self.process_type == "Observation": + self.example_ids_keep_columns.extend(["time", "event_type"]) if self.trigger_settings is not None and self.get_trigger_patch_from == "file": self.example_ids_keep_columns.extend( ["trg_pixel_id", "trg_waveform_sample_id"] ) self.simulation_info = None - self.simulated_particles = {} - self.simulated_particles["total"] = 0 - self.example_identifiers = [] - if example_identifiers_file is None: - example_identifiers_file = {} - else: - example_identifiers_file = pd.HDFStore(example_identifiers_file) - - if "/example_identifiers" in list(example_identifiers_file.keys()): - self.example_identifiers = pd.read_hdf( - example_identifiers_file, key="/example_identifiers" - ).to_numpy() - if "/simulation_info" in list(example_identifiers_file.keys()): - self.simulation_info = pd.read_hdf( - example_identifiers_file, key="/simulation_info" - ).to_dict("records")[0] - if "/simulated_particles" in list(example_identifiers_file.keys()): - self.simulated_particles = pd.read_hdf( - example_identifiers_file, key="/simulated_particles" - ).to_dict("records")[0] - if "/class_weight" in list(example_identifiers_file.keys()): - self.class_weight = pd.read_hdf( - example_identifiers_file, key="/class_weight" - ).to_dict("records")[0] - if "/class_names" in list(example_identifiers_file.keys()): - class_names = pd.read_hdf( - example_identifiers_file, key="/class_names" - ).to_dict("records") - self.class_names = [name[0] for name in class_names] - if "/shower_primary_id_to_class" in list(example_identifiers_file.keys()): - self.shower_primary_id_to_class = pd.read_hdf( - example_identifiers_file, key="/shower_primary_id_to_class" - ).to_dict("records")[0] - self.num_classes = len(self.simulated_particles) - 1 - if self.include_nsb_patches == "auto": - self._nsb_prob = np.around(1 / self.num_classes, decimals=2) - self._shower_prob = np.around(1 - self._nsb_prob, decimals=2) - example_identifiers_file.close() - else: - example_identifiers = [] - for file_idx, (filename, f) in enumerate(self.files.items()): - # Read simulation information from each observation needed for pyIRF - if self.process_type == "Simulation": - self.simulation_info = self._construct_simulated_info( - f, self.simulation_info - ) - # Telescope selection - ( - telescopes, - selected_telescopes, - camera2index, - ) = self._construct_telescopes_selection( - f.root.configuration.instrument.subarray.layout, - selected_telescope_types, - selected_telescope_ids, + example_identifiers = [] + for file_idx, (filename, f) in enumerate(self.files.items()): + # Read simulation information from each observation needed for pyIRF + if self.process_type == "Simulation": + self.simulation_info = self._construct_simulated_info( + f, self.simulation_info ) + # Telescope selection + ( + telescopes, + selected_telescopes, + camera2index, + ) = self._construct_telescopes_selection( + f.root.configuration.instrument.subarray.layout, + selected_telescope_types, + selected_telescope_ids, + ) - # Multiplicity selection - if "Subarray" not in multiplicity_selection: - multiplicity_selection["Subarray"] = 1 - for tel_type in selected_telescopes: - if tel_type in multiplicity_selection: - multiplicity_selection["Subarray"] = multiplicity_selection[ - tel_type - ] - if len(selected_telescopes) > 1: - for tel_type in selected_telescopes: - if tel_type not in multiplicity_selection: - multiplicity_selection[tel_type] = 0 - else: - multiplicity_selection[list(selected_telescopes.keys())[0]] = ( - multiplicity_selection["Subarray"] + # Construct the shower simulation table + if self.process_type == "Simulation": + simshower_table = read_table(f, "/simulation/event/subarray/shower") + + if self.mode == "mono": + # Construct the table containing all events. + # First, the telescope tables are joined with the shower simulation + # table and then those joined/merged tables are vertically stacked. + tel_tables = [] + for tel_id in self.selected_telescopes[self.tel_type]: + tel_table = read_table( + f, f"/dl1/event/telescope/parameters/tel_{tel_id:03d}" ) - - # Construct the shower simulation table - if self.process_type == "Simulation": - simshower_table = read_table(f, "/simulation/event/subarray/shower") - simshower_table.add_column( - np.arange(len(simshower_table)), name="sim_index", index=0 + tel_table.add_column( + np.arange(len(tel_table)), name="img_index", index=0 ) - true_shower_primary_id = simshower_table["true_shower_primary_id"][ - 0 - ] - - if self.mode == "mono": - # Construct the table containing all events. - # First, the telescope tables are joined with the shower simulation - # table and then those joined/merged tables are vertically stacked. - tel_tables = [] - for tel_id in selected_telescopes[self.tel_type]: - tel_table = read_table( - f, f"/dl1/event/telescope/parameters/tel_{tel_id:03d}" - ) - tel_table.add_column( - np.arange(len(tel_table)), name="img_index", index=0 + if self.process_type == "Simulation": + tel_table = join( + left=tel_table, + right=simshower_table, + keys=["obs_id", "event_id"], ) - - if self.process_type == "Simulation": - tel_table = join( - left=tel_table, - right=simshower_table, - keys=["obs_id", "event_id"], + tel_tables.append(tel_table) + events = vstack(tel_tables) + + # AI-based trigger system + # Obtain trigger patch info from an external algorithm (i.e. DBScan) + if self.trigger_settings is not None and "raw" in self.waveform_type: + if self.trigger_settings["get_patch_from"] == "file": + try: + # Read csv containing the trigger patch info + trigger_patch_info_csv_file = pd.read_csv( + filename.replace("r0.dl1.h5", "npe.csv") + )[ + [ + "obs_id", + "event_id", + "tel_id", + "trg_pixel_id", + "trg_waveform_sample_id", + ] + ].astype( + int + ) + trigger_patch_info = Table.from_pandas( + trigger_patch_info_csv_file + ) + # Join the events table ith the trigger patch info + events = join( + left=trigger_patch_info, + right=events, + keys=["obs_id", "event_id", "tel_id"], + ) + # Remove non-trigger events with negative pixel ids + events = events[events["trg_pixel_id"] >= 0] + except: + raise IOError( + f"There is a problem with '{filename.replace('r0.dl1.h5','npe.csv')}'!" ) - tel_tables.append(tel_table) - allevents = vstack(tel_tables) - # AI-based trigger system - # Obtain trigger patch info from an external algorithm (i.e. DBScan) - if ( - self.trigger_settings is not None - and "raw" in self.waveform_type - ): - if self.trigger_settings["get_patch_from"] == "file": - try: - # Read csv containing the trigger patch info - trigger_patch_info_csv_file = pd.read_csv( - filename.replace("r0.dl1.h5", "npe.csv") - )[ - [ - "obs_id", - "event_id", - "tel_id", - "trg_pixel_id", - "trg_waveform_sample_id", - ] - ].astype( - int - ) - trigger_patch_info = Table.from_pandas( - trigger_patch_info_csv_file - ) - # Join the events table ith the trigger patch info - allevents = join( - left=trigger_patch_info, - right=allevents, - keys=["obs_id", "event_id", "tel_id"], - ) - # Remove non-trigger events with negative pixel ids - allevents = allevents[allevents["trg_pixel_id"] >= 0] - except: - raise IOError( - f"There is a problem with '{filename.replace('r0.dl1.h5','npe.csv')}'!" - ) - - # Initialize a boolean mask to True for all events - self.quality_mask = np.ones(len(allevents), dtype=bool) - # Quality selection based on the dl1b parameter and MC shower simulation tables - if quality_selection: - for filter in quality_selection: - # Update the mask for the minimum value condition - if "min_value" in filter: - self.quality_mask &= ( - allevents[filter["col_name"]] >= filter["min_value"] - ) - # Update the mask for the maximum value condition - if "max_value" in filter: - self.quality_mask &= ( - allevents[filter["col_name"]] < filter["max_value"] - ) - # Apply the updated mask to filter events - allevents = allevents[self.quality_mask] - - # Track number of events for each particle type - if self.process_type == "Simulation": - self.simulated_particles["total"] += len(allevents) - if true_shower_primary_id in self.simulated_particles: - self.simulated_particles[true_shower_primary_id] += len( - allevents + # Initialize a boolean mask to True for all events + self.quality_mask = np.ones(len(events), dtype=bool) + # Quality selection based on the dl1b parameter and MC shower simulation tables + if quality_selection: + for filter in quality_selection: + # Update the mask for the minimum value condition + if "min_value" in filter: + self.quality_mask &= ( + events[filter["col_name"]] >= filter["min_value"] ) - else: - self.simulated_particles[true_shower_primary_id] = len( - allevents + # Update the mask for the maximum value condition + if "max_value" in filter: + self.quality_mask &= ( + events[filter["col_name"]] < filter["max_value"] ) + # Apply the updated mask to filter events + events = events[self.quality_mask] + + # Construct the example identifiers + events.keep_columns(self.example_ids_keep_columns) + tel_pointing = self._get_tel_pointing(f, self.tel_ids) + events = join( + left=events, + right=tel_pointing, + keys=["obs_id", "tel_id"], + ) + events = self._transform_to_spherical_offsets(events) + # Add telescope type id which is always 0 in mono mode + # Needed to share code with stereo reading mode + events.add_column(file_idx, name="file_index", index=0) + events.add_column(0, name="tel_type_id", index=3) + example_identifiers.append(events) + + elif self.mode == "stereo": + # Read the trigger table. + trigger_table = read_table(f, "/dl1/event/subarray/trigger") + if self.process_type == "Simulation": + # The shower simulation table is joined with the subarray trigger table. + trigger_table = join( + left=trigger_table, + right=simshower_table, + keys=["obs_id", "event_id"], + ) + events = [] - # Construct the example identifiers - allevents.keep_columns(self.example_ids_keep_columns) - allevents.add_column(file_idx, name="file_index", index=0) - if self.process_type == "Simulation": - # Transform true energy into the log space - allevents.add_column( - np.log10(allevents["true_energy"]), name="log_true_energy" - ) - # Transform alt and az into spherical offsets - tel_pointing = [] - for tel_id in self.tel_ids: - with lock: - tel_pointing.append( - read_table( - f, - f"/configuration/telescope/pointing/tel_{tel_id:03d}", - ) - ) - allevents = join( - left=allevents, - right=vstack(tel_pointing), - keys=["obs_id", "tel_id"], - ) - # Set the telescope pointing of the SkyOffsetSeparation tranform to the fix pointing - fix_pointing = SkyCoord( - allevents["telescope_pointing_azimuth"], - allevents["telescope_pointing_altitude"], - frame="altaz", - ) - true_direction = SkyCoord( - allevents["true_az"], - allevents["true_alt"], - frame="altaz", - ) - sky_offset = fix_pointing.spherical_offsets_to(true_direction) - angular_separation = fix_pointing.separation(true_direction) - allevents.add_column(sky_offset[0], name="spherical_offset_az") - allevents.add_column(sky_offset[1], name="spherical_offset_alt") - allevents.add_column( - angular_separation, name="angular_separation" - ) - allevents.remove_columns( - [ - "telescope_pointing_azimuth", - "telescope_pointing_altitude", - ] + for tel_type_id, tel_type in enumerate(self.selected_telescopes): + table_per_type = [] + for tel_id in self.selected_telescopes[tel_type]: + # The telescope table is joined with the selected and merged table. + tel_table = read_table( + f, + f"/dl1/event/telescope/parameters/tel_{tel_id:03d}", ) - example_identifiers.append(allevents) - - elif self.mode == "stereo": - # Read the trigger table. - allevents = read_table(f, "/dl1/event/subarray/trigger") - if self.process_type == "Simulation": - # The shower simulation table is joined with the subarray trigger table. - allevents = join( - left=allevents, - right=simshower_table, - keys=["obs_id", "event_id"], + tel_table.add_column( + np.arange(len(tel_table)), name="img_index", index=0 ) - - # Quality selection based on the shower simulation table. + # Initialize a boolean mask to True for all events + quality_mask = np.ones(len(tel_table), dtype=bool) + # Quality selection based on the dl1b parameter and MC shower simulation tables if quality_selection: for filter in quality_selection: + # Update the mask for the minimum value condition if "min_value" in filter: - allevents = allevents[ - allevents[filter["col_name"]] + quality_mask &= ( + tel_table[filter["col_name"]] >= filter["min_value"] - ] + ) + # Update the mask for the maximum value condition if "max_value" in filter: - allevents = allevents[ - allevents[filter["col_name"]] + quality_mask &= ( + tel_table[filter["col_name"]] < filter["max_value"] - ] - - # Apply the multiplicity cut on the subarray. - # Therefore, two telescope types have to be selected at least. - event_id = allevents["event_id"] - tels_with_trigger = np.array(allevents["tels_with_trigger"]) - tel_id_to_trigger_idx = { - tel_id: idx for idx, tel_id in enumerate(self.tel_ids) - } + ) + # Merge the telescope table with the trigger table + merged_table = join( + left=tel_table[quality_mask], + right=trigger_table, + keys=["obs_id", "event_id"], + ) + table_per_type.append(merged_table) + table_per_type = vstack(table_per_type) + table_per_type = table_per_type.group_by(["obs_id", "event_id"]) + table_per_type.keep_columns(self.example_ids_keep_columns) if self.process_type == "Simulation": - sim_indices = np.array(allevents["sim_index"], np.int32) - if len(selected_telescopes) > 1: - # Get all tel ids from the subarray - selection_mask = np.zeros_like(tels_with_trigger) - tel_ids = np.array(selected_telescopes.values()) - for tel_id in tel_ids: - selection_mask[:, tel_id_to_trigger_idx[tel_id]] = 1 - # Construct the telescope trigger information restricted to allowed telescopes - allowed_tels_with_trigger = tels_with_trigger * selection_mask - # Get the multiplicity and apply the subarray multiplicity cut - subarray_multiplicity, _ = allowed_tels_with_trigger.nonzero() - events, multiplicity = np.unique( - subarray_multiplicity, axis=0, return_counts=True + tel_pointing = self._get_tel_pointing(f, self.tel_ids) + table_per_type = join( + left=table_per_type, + right=tel_pointing, + keys=["obs_id", "tel_id"], ) - selected_events = events[ - np.where(multiplicity >= multiplicity_selection["Subarray"]) - ] - event_id = event_id[selected_events] - if self.process_type == "Simulation": - sim_indices = sim_indices[selected_events] - - image_indices = {} - for tel_type in selected_telescopes: - # Get all selected tel ids of this telescope type - selection_mask = np.zeros_like(tels_with_trigger) - tel_ids = np.array(selected_telescopes[tel_type]) - for tel_id in tel_ids: - selection_mask[:, tel_id_to_trigger_idx[tel_id]] = 1 - # Construct the telescope trigger information restricted to allowed telescopes of this telescope type - allowed_tels_with_trigger = tels_with_trigger * selection_mask - # Apply the multiplicity cut on the telescope type only. - if len(selected_telescopes) == 1: - # Get the multiplicity of this telescope type and apply the multiplicity cut - ( - tel_type_multiplicity, - _, - ) = allowed_tels_with_trigger.nonzero() - events, multiplicity = np.unique( - tel_type_multiplicity, axis=0, return_counts=True - ) - selected_events = events[ - np.where( - multiplicity >= multiplicity_selection[tel_type] - ) - ] - event_id = event_id[selected_events] - if self.process_type == "Simulation": - sim_indices = sim_indices[selected_events] - selected_events_trigger = allowed_tels_with_trigger[ - selected_events - ] - - # Get the position of each images of telescopes of this telescope type that triggered - img_idx = -np.ones( - (len(selected_events), len(tel_ids)), np.int32 + table_per_type = self._transform_to_spherical_offsets( + table_per_type ) + # Apply the multiplicity cut based on the telescope type + if tel_type in multiplicity_selection: + table_per_type = table_per_type.group_by(["obs_id", "event_id"]) - for tel_id in tel_ids: - # Get the trigger information of this telescope - tel_trigger_info = selected_events_trigger[ - :, tel_id_to_trigger_idx[tel_id] - ] - tel_trigger_info = np.where(tel_trigger_info)[0] - # The telescope table is joined with the selected and merged table. - tel_table = read_table( - f, - f"/dl1/event/telescope/parameters/tel_{tel_id:03d}", - ) - tel_table.add_column( - np.arange(len(tel_table)), name="img_index", index=0 - ) - # Quality selection based on the parameter tables. - if quality_selection: - for filter in quality_selection: - if "min_value" in filter: - tel_table = tel_table[ - tel_table[filter["col_name"]] - >= filter["min_value"] - ] - if "max_value" in filter: - tel_table = tel_table[ - tel_table[filter["col_name"]] - < filter["max_value"] - ] - merged_table = join( - left=tel_table, - right=allevents[selected_events], - keys=["obs_id", "event_id"], - ) - print(allevents[selected_events]) - # Get the original position of image in the telescope table. - tel_img_index = np.array( - merged_table["img_index"], np.int32 - ) - for trig, img in zip(tel_trigger_info, tel_img_index): - img_idx[trig][np.where(tel_ids == tel_id)] = img - - # Apply the multiplicity cut after the quality cuts for a particular telescope type - if quality_selection and multiplicity_selection[tel_type] > 0: - aftercuts_multiplicty_mask = ( - np.count_nonzero(img_idx + 1, axis=1) - >= multiplicity_selection[tel_type] - ) - img_idx = img_idx[aftercuts_multiplicty_mask] - event_id = event_id[aftercuts_multiplicty_mask] - if self.process_type == "Simulation": - sim_indices = sim_indices[aftercuts_multiplicty_mask] - image_indices[tel_type] = img_idx - - # Apply the multiplicity cut after the parameter cuts for the subarray - if multiplicity_selection["Subarray"] > 1: - subarray_triggers = np.zeros(len(event_id)) - for tel_type in selected_telescopes: - subarray_triggers += np.count_nonzero( - image_indices[tel_type] + 1, axis=1 - ) - aftercuts_multiplicty_mask = ( - subarray_triggers >= multiplicity_selection["Subarray"] + def _multiplicity_cut_tel_type(table, key_colnames): + return len(table) >= multiplicity_selection[tel_type] + + table_per_type = table_per_type.groups.filter( + _multiplicity_cut_tel_type ) - if self.process_type == "Simulation": - sim_indices = sim_indices[aftercuts_multiplicty_mask] - for tel_type in selected_telescopes: - image_indices[tel_type] = image_indices[tel_type][ - aftercuts_multiplicty_mask - ] + table_per_type.add_column(tel_type_id, name="tel_type_id", index=3) + events.append(table_per_type) + events = vstack(events) + # Apply the multiplicity cut based on the subarray + if "Subarray" in multiplicity_selection: + events = events.group_by(["obs_id", "event_id"]) - if self.process_type == "Simulation": - # Track number of events for each particle type - self.simulated_particles["total"] += len(sim_indices) - if true_shower_primary_id in self.simulated_particles: - self.simulated_particles[true_shower_primary_id] += len( - sim_indices - ) - else: - self.simulated_particles[true_shower_primary_id] = len( - sim_indices - ) + def _multiplicity_cut_subarray(table, key_colnames): + return len(table) >= multiplicity_selection["Subarray"] - # Construct the example identifiers - # TODO: Find a better way!? - for idx, sim_idx in enumerate(sim_indices): - img_idx = [] - for tel_type in selected_telescopes: - img_idx.append(image_indices[tel_type][idx]) - example_identifiers.append((file_idx, sim_idx, img_idx)) - else: - # Construct the example identifiers - for idx in range(len(allevents)): - img_idx = [] - for tel_type in selected_telescopes: - img_idx.append(image_indices[tel_type][idx]) - example_identifiers.append((file_idx, img_idx)) - - self.example_identifiers = vstack(example_identifiers) - # Add index column to the example identifiers to later retrieve batches - # using the loc functionality + events = events.groups.filter(_multiplicity_cut_subarray) + events.add_column(file_idx, name="file_index", index=0) + example_identifiers.append(events) + + self.example_identifiers = vstack(example_identifiers) + + # Add index column to the example identifiers to later retrieve batches + # using the loc functionality + if self.mode == "mono": self.example_identifiers.add_column( np.arange(len(self.example_identifiers)), name="index", index=0 ) self.example_identifiers.add_index("index") - # Handling the particle ids automatically and class weights calculation - # Scaling by total/2 helps keep the loss to a similar magnitude. - # The sum of the weights of all examples stays the same. - self.num_classes = len(self.simulated_particles) - 1 + elif self.mode == "stereo": + self.unique_example_identifiers = unique( + self.example_identifiers, keys=["obs_id", "event_id"] + ) + # # Need this PR https://github.com/astropy/astropy/pull/15826 + # # waiting astropy v7.0.0 + # # self.example_identifiers.add_index(["obs_id", "event_id"]) - if self.process_type == "Simulation": - # Include NSB patches is selected - if self.include_nsb_patches == "auto": - for particle_id in list(self.simulated_particles.keys())[1:]: - self.simulated_particles[particle_id] = int( - self.simulated_particles[particle_id] - * self.num_classes - / (self.num_classes + 1) - ) - self.simulated_particles[404] = int( - self.simulated_particles["total"] / (self.num_classes + 1) + # Handling the particle ids automatically and class weights calculation + # Scaling by total/2 helps keep the loss to a similar magnitude. + # The sum of the weights of all examples stays the same. + self.simulated_particles = {} + if self.process_type == "Simulation": + # Track number of events for each particle type + self.simulated_particles["total"] = self.__len__() + for primary_id in self.shower_primary_id_to_name: + if self.mode == "mono": + n_particles = np.count_nonzero( + self.example_identifiers["true_shower_primary_id"] == primary_id ) - self.num_classes += 1 - self._nsb_prob = np.around(1 / self.num_classes, decimals=2) - self._shower_prob = np.around(1 - self._nsb_prob, decimals=2) - - self.shower_primary_id_to_class = {} - self.class_names = [] - for p, particle_id in enumerate( - list(self.simulated_particles.keys())[1:] - ): - self.shower_primary_id_to_class[particle_id] = p - self.class_names.append( - (self.shower_primary_id_to_name[particle_id]) + elif self.mode == "stereo": + n_particles = np.count_nonzero( + self.unique_example_identifiers["true_shower_primary_id"] + == primary_id ) - # Caculate common transformation of MC data - # Transform shower primary id to class - # Create a vectorized function to map the values - vectorized_map = np.vectorize(self.shower_primary_id_to_class.get) - # Apply the mapping to the astropy column - true_shower_primary_class = vectorized_map( - self.example_identifiers["true_shower_primary_id"] - ) - self.example_identifiers.add_column( - true_shower_primary_class, name="true_shower_primary_class" + # Store the number of events for each particle type if there are any + if n_particles > 0 and primary_id != 404: + self.simulated_particles[primary_id] = n_particles + self.n_classes = len(self.simulated_particles) - 1 + # Include NSB patches is selected + if self.include_nsb_patches == "auto": + for particle_id in list(self.simulated_particles.keys())[1:]: + self.simulated_particles[particle_id] = int( + self.simulated_particles[particle_id] + * self.n_classes + / (self.n_classes + 1) + ) + self.simulated_particles[404] = int( + self.simulated_particles["total"] / (self.n_classes + 1) ) - if len(self.simulated_particles) > 2: - self.class_weight = {} - for particle_id, num_particles in self.simulated_particles.items(): - if particle_id != "total": - self.class_weight[ - self.shower_primary_id_to_class[particle_id] - ] = (1 / num_particles) * ( - self.simulated_particles["total"] / 2.0 - ) + self.n_classes += 1 + self._nsb_prob = np.around(1 / self.n_classes, decimals=2) + self._shower_prob = np.around(1 - self._nsb_prob, decimals=2) - # Dump example_identifiers and simulation_info to a pandas hdf5 file - """ - if not isinstance(example_identifiers_file, dict): - pd.DataFrame(data=self.example_identifiers).to_hdf( - example_identifiers_file, key="example_identifiers", mode="a" - ) - if self.simulation_info: - pd.DataFrame( - data=pd.DataFrame(self.simulation_info, index=[0]) - ).to_hdf(example_identifiers_file, key="simulation_info", mode="a") - if self.simulated_particles: - pd.DataFrame( - data=pd.DataFrame(self.simulated_particles, index=[0]) - ).to_hdf( - example_identifiers_file, key="simulated_particles", mode="a" - ) - if self.class_weight: - pd.DataFrame( - data=pd.DataFrame(self.class_weight, index=[0]) - ).to_hdf(example_identifiers_file, key="class_weight", mode="a") - pd.DataFrame(data=pd.DataFrame(self.class_names)).to_hdf( - example_identifiers_file, key="class_names", mode="a" - ) - pd.DataFrame( - data=pd.DataFrame( - self.shower_primary_id_to_class, index=[0] - ) - ).to_hdf( - example_identifiers_file, - key="shower_primary_id_to_class", - mode="a", + self.shower_primary_id_to_class = {} + self.class_names = [] + for p, particle_id in enumerate(list(self.simulated_particles.keys())[1:]): + self.shower_primary_id_to_class[particle_id] = p + self.class_names.append((self.shower_primary_id_to_name[particle_id])) + # Calculate class weights if there are more than 2 classes (particle classification task) + if len(self.simulated_particles) > 2: + self.class_weight = {} + for particle_id, n_particles in self.simulated_particles.items(): + if particle_id != "total": + self.class_weight[ + self.shower_primary_id_to_class[particle_id] + ] = (1 / n_particles) * ( + self.simulated_particles["total"] / 2.0 ) - example_identifiers_file.close() - """ + + # Apply common transformation of MC data + # Transform shower primary id to class + self.example_identifiers = self._transform_to_primary_class( + self.example_identifiers + ) + # Transform true energy into the log space + self.example_identifiers = self._transform_to_log_energy( + self.example_identifiers + ) + # ImageMapper (1D charges -> 2D images or 3D waveforms) if self.image_channels is not None or self.waveform_type is not None: @@ -1142,7 +924,10 @@ def _get_camera_type(self, tel_type): return tel_type.split("_")[-1] def __len__(self): - return len(self.example_identifiers) + if self.mode == "mono": + return len(self.example_identifiers) + elif self.mode == "stereo": + return len(self.unique_example_identifiers) def _construct_simulated_info(self, file, simulation_info): """ @@ -1303,62 +1088,132 @@ def _construct_pixel_positions(self, telescope_type_information): return pixel_positions, num_pixels - def batch_generation(self, batch_indices): + def _get_tel_pointing(self, file, tel_ids): + tel_pointing = [] + for tel_id in tel_ids: + with lock: + tel_pointing.append( + read_table( + file, + f"/configuration/telescope/pointing/tel_{tel_id:03d}", + ) + ) + return vstack(tel_pointing) + + def _transform_to_primary_class(self, table): + # Transform shower primary id to class + # Create a vectorized function to map the values + vectorized_map = np.vectorize(self.shower_primary_id_to_class.get) + # Apply the mapping to the astropy column + true_shower_primary_class = vectorized_map(table["true_shower_primary_id"]) + table.add_column(true_shower_primary_class, name="true_shower_primary_class") + return table + + def _transform_to_log_energy(self, table): + # Transform true energy into the log space + table.add_column(np.log10(table["true_energy"]), name="log_true_energy") + return table + + def _transform_to_spherical_offsets(self, table): + # Transform alt and az into spherical offsets + # Set the telescope pointing of the SkyOffsetSeparation tranform to the fix pointing + fix_pointing = SkyCoord( + table["telescope_pointing_azimuth"], + table["telescope_pointing_altitude"], + frame="altaz", + ) + true_direction = SkyCoord( + table["true_az"], + table["true_alt"], + frame="altaz", + ) + sky_offset = fix_pointing.spherical_offsets_to(true_direction) + angular_separation = fix_pointing.separation(true_direction) + table.add_column(sky_offset[0], name="spherical_offset_az") + table.add_column(sky_offset[1], name="spherical_offset_alt") + table.add_column(angular_separation, name="angular_separation") + table.remove_columns( + [ + "telescope_pointing_azimuth", + "telescope_pointing_altitude", + ] + ) + return table + + def batch_generation(self, batch_indices, dl1b_parameter_list=None): "Generates data containing batch_size samples" features = {} - batch = self.example_identifiers.loc[batch_indices] - #TODO: Define API with subclasses for all those cases + # TODO: Define API with subclasses for all those cases # batch_generation should be generic and call the specific method # for retrieving the features - #TODO: rename _get_... to _generate_features() + # TODO: rename _get_... to _generate_features() if self.mode == "mono": - if self.image_channels is not None: - features["images"] = self._get_mono_img_features( - batch["file_index"], batch["img_index"], batch["tel_id"] - ) - if self.parameter_list is not None: - features["parameters"] = self._get_mono_pmt_features( - batch["file_index"], batch["img_index"], batch["tel_id"] - ) - if self.waveform_type is not None: - if "raw" in self.waveform_type: - if ( - self.trigger_settings is not None - and self.get_trigger_patch_from == "file" - ): - trigger_patches, true_cherenkov_photons = self._get_mono_trg_features( - batch["file_index"], - batch["img_index"], - batch["tel_id"], - batch["trg_pixel_id"], - batch["trg_waveform_sample_id"], - ) - else: - trigger_patches, true_cherenkov_photons = self._get_mono_trg_features( - batch["file_index"], batch["img_index"], batch["tel_id"] - ) - features["waveforms"] = trigger_patches - batch.add_column(true_cherenkov_photons, name="true_cherenkov_photons") - if "calibrated" in self.waveform_type: - features["waveforms"] = self._get_mono_wvf_features( - batch["file_index"], batch["img_index"], batch["tel_id"] - ) + batch = self.example_identifiers.loc[batch_indices] elif self.mode == "stereo": - - if self.image_channels is not None: - features["images"] = self._get_stereo_img_features( - batch["file_index"], batch["img_index"], batch["tel_id"] - ) - if self.parameter_list is not None: - features["parameters"] = self._get_stereo_pmt_features( - batch["file_index"], batch["img_index"], batch["tel_id"] + # Workaround for the missing feature in astropy: + # Need this PR https://github.com/astropy/astropy/pull/15826 + # waiting astropy v7.0.0 + example_identifiers_grouped = self.example_identifiers.group_by( + ["obs_id", "event_id"] + ) + batch = example_identifiers_grouped.groups[batch_indices] + # Sort events based on their telescope types by the hillas intensity in a given batch + batch.sort( + ["obs_id", "event_id", "tel_type_id", "hillas_intensity"], reverse=True + ) + batch.sort(["obs_id", "event_id", "tel_type_id"]) + if self.image_channels is not None: + features["images"] = self._get_img_features( + batch["file_index"], + batch["img_index"], + batch["tel_type_id"], + batch["tel_id"], + ) + if dl1b_parameter_list is not None: + features["parameters"] = self._get_pmt_features( + batch["file_index"], + batch["img_index"], + batch["tel_id"], + dl1b_parameter_list, + ) + if self.waveform_type is not None: + if "raw" in self.waveform_type: + if ( + self.trigger_settings is not None + and self.get_trigger_patch_from == "file" + ): + trigger_patches, true_cherenkov_photons = self._get_trg_features( + batch["file_index"], + batch["img_index"], + batch["tel_type_id"], + batch["tel_id"], + batch["trg_pixel_id"], + batch["trg_waveform_sample_id"], + ) + else: + trigger_patches, true_cherenkov_photons = self._get_trg_features( + batch["file_index"], + batch["img_index"], + batch["tel_type_id"], + batch["tel_id"], + ) + features["waveforms"] = trigger_patches + batch.add_column(true_cherenkov_photons, name="true_cherenkov_photons") + if "calibrated" in self.waveform_type: + features["waveforms"] = self._get_wvf_features( + batch["file_index"], + batch["img_index"], + batch["tel_type_id"], + batch["tel_id"], ) - + return features, batch - def _get_mono_img_features(self, file_idxs, img_idxs, tel_ids): + def _get_img_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids): images = [] - for file_idx, img_idx, tel_id in zip(file_idxs, img_idxs, tel_ids): + for file_idx, img_idx, tel_type_id, tel_id in zip( + file_idxs, img_idxs, tel_type_ids, tel_ids + ): filename = list(self.files)[file_idx] with lock: tel_table = f"tel_{tel_id:03d}" @@ -1369,21 +1224,17 @@ def _get_mono_img_features(self, file_idxs, img_idxs, tel_ids): child[img_idx], self.image_channels, self.image_transforms ) # Apply the ImageMapper whenever the mapping method is not indexed_conv - if ( - self.image_mapper.mapping_method[self._get_camera_type(self.tel_type)] - != "indexed_conv" - ): - images.append( - self.image_mapper.map_image( - unmapped_image, self._get_camera_type(self.tel_type) - ) - ) + camera_type = self._get_camera_type( + list(self.selected_telescopes.keys())[tel_type_id] + ) + if self.image_mapper.mapping_method[camera_type] != "indexed_conv": + images.append(self.image_mapper.map_image(unmapped_image, camera_type)) else: images.append(unmapped_image) - return np.stack(images) + return np.array(images) - def _get_mono_pmt_features(self, file_idxs, img_idxs, tel_ids): - parameters = [] + def _get_pmt_features(self, file_idxs, img_idxs, tel_ids, dl1b_parameter_list): + dl1b_parameters = [] for file_idx, img_idx, tel_id in zip(file_idxs, img_idxs, tel_ids): filename = list(self.files)[file_idx] with lock: @@ -1391,13 +1242,15 @@ def _get_mono_pmt_features(self, file_idxs, img_idxs, tel_ids): child = self.files[ filename ].root.dl1.event.telescope.parameters._f_get_child(tel_table) - parameter_list = list(child[img_idx][self.parameter_list]) - parameters.append([np.stack(parameter_list)]) - return np.stack(parameters) + parameters = list(child[img_idx][dl1b_parameter_list]) + dl1b_parameters.append([np.stack(parameters)]) + return np.array(dl1b_parameters) - def _get_mono_wvf_features(self, file_idxs, img_idxs, tel_ids): + def _get_wvf_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids): waveforms = [] - for file_idx, img_idx, tel_id in zip(file_idxs, img_idxs, tel_ids): + for file_idx, img_idx, tel_type_id, tel_id in zip( + file_idxs, img_idxs, tel_type_ids, tel_ids + ): filename = list(self.files)[file_idx] with lock: tel_table = f"tel_{tel_id:03d}" @@ -1419,31 +1272,30 @@ def _get_mono_wvf_features(self, file_idxs, img_idxs, tel_ids): dl1_cleaning_mask, ) # Apply the ImageMapper whenever the mapping method is not indexed_conv - if ( - self.image_mapper.mapping_method[self._get_camera_type(self.tel_type)] - != "indexed_conv" - ): + camera_type = self._get_camera_type( + list(self.selected_telescopes.keys())[tel_type_id] + ) + if self.image_mapper.mapping_method[camera_type] != "indexed_conv": waveforms.append( - self.image_mapper.map_image( - unmapped_waveform, self._get_camera_type(self.tel_type) - ) + self.image_mapper.map_image(unmapped_waveform, camera_type) ) else: waveforms.append(unmapped_waveform) - return np.stack(waveforms) + return np.array(waveforms) - def _get_mono_trg_features( + def _get_trg_features( self, file_idxs, img_idxs, + tel_type_ids, tel_ids, trg_pixel_ids=None, trg_waveform_sample_ids=None, ): trigger_patches, true_cherenkov_photons = [], [] random_trigger_patch = False - for i, (file_idx, img_idx, tel_id) in enumerate( - zip(file_idxs, img_idxs, tel_ids) + for i, (file_idx, img_idx, tel_type_id, tel_id) in enumerate( + zip(file_idxs, img_idxs, tel_type_ids, tel_ids) ): filename = list(self.files)[file_idx] trg_pixel_id, trg_waveform_sample_id = None, None @@ -1471,12 +1323,15 @@ def _get_mono_trg_features( np.array(sim_child[img_idx]["true_image"], dtype=int), axis=1, ) + camera_type = self._get_camera_type( + list(self.selected_telescopes.keys())[tel_type_id] + ) waveform, trigger_patch_true_image_sum = get_mapped_triggerpatch( child[img_idx], self.waveform_settings, self.trigger_settings, self.image_mapper, - self._get_camera_type(self.tel_type), + camera_type, true_image, self.process_type, random_trigger_patch, @@ -1486,75 +1341,4 @@ def _get_mono_trg_features( trigger_patches.append(waveform) if trigger_patch_true_image_sum is not None: true_cherenkov_photons.append(trigger_patch_true_image_sum) - return np.stack(trigger_patches), true_cherenkov_photons - - def _get_stereo_img_features(self, file_idxs, trigger_infos): - for file_idx, trigger_info in zip( - file_idxs, trigger_infos - ): - # Get a list of images and/or image parameters, an array of binary trigger values - # for each selected telescope type - filename = list(self.files)[file_idx] - features = {} - for t, tel_type in enumerate(self.selected_telescopes): - images = [] - for i, tel_id in enumerate(self.selected_telescopes[tel_type]): - child = None - with lock: - tel_table = f"tel_{tel_id:03d}" - if ( - tel_table - in self.files[filename].root.dl1.event.telescope.images - ): - child = self.files[ - filename - ].root.dl1.event.telescope.images._f_get_child(tel_table) - unmapped_image = get_unmapped_image( - child[trigger_info[t][i]], - self.image_channels, - self.image_transforms, - ) - # Apply the ImageMapper whenever the mapping method is not indexed_conv - if ( - self.image_mapper.mapping_method[self._get_camera_type(tel_type)] - != "indexed_conv" - ): - images.append( - self.image_mapper.map_image( - unmapped_image, self._get_camera_type(tel_type) - ) - ) - else: - images.append(unmapped_image) - - features[f"{tel_type}_images"] = np.stack(images) - return features - - def _get_stereo_pmt_features(self, file_idxs, trigger_infos): - for file_idx, trigger_info in zip( - file_idxs, trigger_infos - ): - filename = list(self.files)[file_idx] - features = {} - for t, tel_type in enumerate(self.selected_telescopes): - parameters_lists = [] - for i, tel_id in enumerate(self.selected_telescopes[tel_type]): - child = None - with lock: - tel_table = f"tel_{tel_id:03d}" - if ( - tel_table - in self.files[filename].root.dl1.event.telescope.parameters - ): - child = self.files[ - filename - ].root.dl1.event.telescope.parameters._f_get_child(tel_table) - parameter_list = [] - for parameter in self.parameter_list: - if trigger_info[i] != -1 and child: - parameter_list.append(child[trigger_info[i]][parameter]) - else: - parameter_list.append(np.nan) - parameters_lists.append(np.array(parameter_list, dtype=np.float32)) - features[f"{tel_type}_parameters"] = np.stack(parameters_lists) - return features + return np.array(trigger_patches), np.array(true_cherenkov_photons) From 89643280f9dd73e557391d5000a6e018e7258151 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Thu, 8 Aug 2024 12:23:21 +0200 Subject: [PATCH 16/92] keep simulation info in an astropy table this is removing redundant code astopy table operations should be used a retrieved sum(), min or max etc. --- dl1_data_handler/reader.py | 100 ++++++++----------------------------- 1 file changed, 21 insertions(+), 79 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 4cf1ee2..877e458 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -553,14 +553,9 @@ def __init__( ["trg_pixel_id", "trg_waveform_sample_id"] ) - self.simulation_info = None + simulation_info = [] example_identifiers = [] for file_idx, (filename, f) in enumerate(self.files.items()): - # Read simulation information from each observation needed for pyIRF - if self.process_type == "Simulation": - self.simulation_info = self._construct_simulated_info( - f, self.simulation_info - ) # Telescope selection ( telescopes, @@ -572,8 +567,10 @@ def __init__( selected_telescope_ids, ) - # Construct the shower simulation table if self.process_type == "Simulation": + # Read simulation information for each observation + simulation_info.append(read_table(f, "/configuration/simulation/run")) + # Construct the shower simulation table simshower_table = read_table(f, "/simulation/event/subarray/shower") if self.mode == "mono": @@ -751,26 +748,13 @@ def _multiplicity_cut_subarray(table, key_colnames): self.example_identifiers = vstack(example_identifiers) - # Add index column to the example identifiers to later retrieve batches - # using the loc functionality - if self.mode == "mono": - self.example_identifiers.add_column( - np.arange(len(self.example_identifiers)), name="index", index=0 - ) - self.example_identifiers.add_index("index") - elif self.mode == "stereo": - self.unique_example_identifiers = unique( - self.example_identifiers, keys=["obs_id", "event_id"] - ) - # # Need this PR https://github.com/astropy/astropy/pull/15826 - # # waiting astropy v7.0.0 - # # self.example_identifiers.add_index(["obs_id", "event_id"]) - # Handling the particle ids automatically and class weights calculation # Scaling by total/2 helps keep the loss to a similar magnitude. # The sum of the weights of all examples stays the same. self.simulated_particles = {} if self.process_type == "Simulation": + # Construct simulation information for all observations + self.simulation_info = vstack(simulation_info) # Track number of events for each particle type self.simulated_particles["total"] = self.__len__() for primary_id in self.shower_primary_id_to_name: @@ -828,6 +812,21 @@ def _multiplicity_cut_subarray(table, key_colnames): self.example_identifiers ) + # Add index column to the example identifiers to later retrieve batches + # using the loc functionality + if self.mode == "mono": + self.example_identifiers.add_column( + np.arange(len(self.example_identifiers)), name="index", index=0 + ) + self.example_identifiers.add_index("index") + elif self.mode == "stereo": + self.unique_example_identifiers = unique( + self.example_identifiers, keys=["obs_id", "event_id"] + ) + # Need this PR https://github.com/astropy/astropy/pull/15826 + # waiting astropy v7.0.0 + # self.example_identifiers.add_index(["obs_id", "event_id"]) + # ImageMapper (1D charges -> 2D images or 3D waveforms) if self.image_channels is not None or self.waveform_type is not None: @@ -929,63 +928,6 @@ def __len__(self): elif self.mode == "stereo": return len(self.unique_example_identifiers) - def _construct_simulated_info(self, file, simulation_info): - """ - Construct the simulated_info from the DL1 hdf5 file for the pyIRF SimulatedEventsInfo table & GammaBoard. - Parameters - ---------- - file (hdf5 file): file containing the simulation information - simulation_info (dict): dictionary of pyIRF simulation info - - Returns - ------- - simulation_info (dict): updated dictionary of pyIRF simulation info - - """ - - simulation_table = file.root.configuration.simulation - runs = simulation_table._f_get_child("run") - shower_reuse = max(np.array(runs.cols._f_col("shower_reuse"))) - n_showers = sum(np.array(runs.cols._f_col("n_showers"))) * shower_reuse - energy_range_min = min(np.array(runs.cols._f_col("energy_range_min"))) - energy_range_max = max(np.array(runs.cols._f_col("energy_range_max"))) - max_scatter_range = max(np.array(runs.cols._f_col("max_scatter_range"))) - spectral_index = np.array(runs.cols._f_col("spectral_index"))[0] - min_viewcone_radius = max(np.array(runs.cols._f_col("min_viewcone_radius"))) - max_viewcone_radius = max(np.array(runs.cols._f_col("max_viewcone_radius"))) - min_alt = min(np.array(runs.cols._f_col("min_alt"))) - max_alt = max(np.array(runs.cols._f_col("max_alt"))) - - if simulation_info: - simulation_info["n_showers"] += float(n_showers) - if simulation_info["energy_range_min"] > energy_range_min: - simulation_info["energy_range_min"] = energy_range_min - if simulation_info["energy_range_max"] < energy_range_max: - simulation_info["energy_range_max"] = energy_range_max - if simulation_info["max_scatter_range"] < max_scatter_range: - simulation_info["max_scatter_range"] = max_scatter_range - if simulation_info["min_viewcone_radius"] > min_viewcone_radius: - simulation_info["min_viewcone_radius"] = min_viewcone_radius - if simulation_info["max_viewcone_radius"] < max_viewcone_radius: - simulation_info["max_viewcone_radius"] = max_viewcone_radius - if simulation_info["min_alt"] > min_alt: - simulation_info["min_alt"] = min_alt - if simulation_info["max_alt"] < max_alt: - simulation_info["max_alt"] = max_alt - else: - simulation_info = {} - simulation_info["n_showers"] = float(n_showers) - simulation_info["energy_range_min"] = energy_range_min - simulation_info["energy_range_max"] = energy_range_max - simulation_info["max_scatter_range"] = max_scatter_range - simulation_info["spectral_index"] = spectral_index - simulation_info["min_viewcone_radius"] = min_viewcone_radius - simulation_info["max_viewcone_radius"] = max_viewcone_radius - simulation_info["min_alt"] = min_alt - simulation_info["max_alt"] = max_alt - - return simulation_info - def _construct_telescopes_selection( self, subarray_table, selected_telescope_types, selected_telescope_ids ): From f174575ffaffc6157451dbf6c0d11bae5e19e2d1 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Thu, 8 Aug 2024 13:00:22 +0200 Subject: [PATCH 17/92] removed v5.0.0 support for real data and images --- dl1_data_handler/reader.py | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 877e458..78d8901 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -358,20 +358,12 @@ def __init__( self.process_type = self._v_attrs["CTA PROCESS TYPE"] self.data_format_version = self._v_attrs["CTA PRODUCT DATA MODEL VERSION"] - # Temp fix until ctapipe can process LST-1 data writing into data format v6.0.0. - # For dl1 images we can process real data with version v5.0.0 without any problems. - # TODO: Remove v5.0.0 once v6.0.0 is available - if self.process_type == "Observation" and image_settings is not None: - if int(self.data_format_version.split(".")[0].replace("v", "")) < 5: - raise IOError( - f"Provided ctapipe data format version is '{self.data_format_version}' (must be >= v.5.0.0 for LST-1 data)." - ) - else: - if int(self.data_format_version.split(".")[0].replace("v", "")) < 6: - raise IOError( - f"Provided ctapipe data format version is '{self.data_format_version}' (must be >= v.6.0.0)." - ) - # Add check for real data processing that only a single file is provided. + # Check for the minimum ctapipe data format version (v6.0.0) + if int(self.data_format_version.split(".")[0].replace("v", "")) < 6: + raise IOError( + f"Provided ctapipe data format version is '{self.data_format_version}' (must be >= v.6.0.0)." + ) + # Check for real data processing that only a single file is provided. if self.process_type == "Observation" and len(self.files) != 1: raise ValueError( f"When processing real observational data, please provide a single file (currently: '{len(self.files)}')." From 55bb05a856fb3c26814e427304570908c6ba658b Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Fri, 9 Aug 2024 12:15:45 +0200 Subject: [PATCH 18/92] use ctapipe SubarrayDescription for setting up Everything related to the selection of the subarray is done with ctapipe now Whenever a new file is processed, it checks the consistency of the SubarrayDescription to the reference which is the first provided file; this ensures that all files have the subarray. --- dl1_data_handler/image_mapper.py | 78 +++------- dl1_data_handler/reader.py | 258 ++++++++++++------------------- 2 files changed, 123 insertions(+), 213 deletions(-) diff --git a/dl1_data_handler/image_mapper.py b/dl1_data_handler/image_mapper.py index 31c426e..a2cb4a1 100644 --- a/dl1_data_handler/image_mapper.py +++ b/dl1_data_handler/image_mapper.py @@ -14,15 +14,14 @@ class ImageMapper: def __init__( self, - camera_types=None, - pixel_positions=None, + pixel_positions, mapping_method=None, padding=None, interpolation_image_shape=None, mask_interpolation=False, ): - # image_shapes should be a non static field to prevent problems + # Default image_shapes should be a non static field to prevent problems # when multiple instances of ImageMapper are created self.image_shapes = { "LSTCam": (110, 110, 1), @@ -41,15 +40,7 @@ def __init__( } # Camera types - if camera_types: - self.camera_types = [] - for camera_type in camera_types: - if camera_type in self.image_shapes: - self.camera_types.append(camera_type) - else: - logger.error("Camera type {} isn't supported.".format(camera_type)) - else: - self.camera_types = [cam for cam in self.image_shapes] + self.camera_types = list(pixel_positions.keys()) # Mapping method if mapping_method is None: @@ -80,40 +71,11 @@ def __init__( self.num_pixels = {} self.mapping_tables = {} self.index_matrixes = {} + for camera_type in self.camera_types: + self.pixel_positions[camera_type] = pixel_positions[camera_type] + self.num_pixels[camera_type] = pixel_positions[camera_type].shape[1] - for camtype in self.camera_types: - # Get a corresponding pixel positions - if pixel_positions is None: - try: - from ctapipe.instrument.camera import CameraGeometry - except ImportError: - raise ImportError( - "The `ctapipe.instrument.camera` python module is required, if pixel_positions is `None`." - ) - camgeo = CameraGeometry.from_name(camtype) - self.num_pixels[camtype] = len(camgeo.pix_id) - self.pixel_positions[camtype] = np.column_stack( - [camgeo.pix_x.value, camgeo.pix_y.value] - ).T - if camtype in ["LSTCam", "NectarCam", "MAGICCam"]: - rotation_angle = -camgeo.pix_rotation.value * np.pi / 180.0 - rotation_matrix = np.matrix( - [ - [np.cos(rotation_angle), -np.sin(rotation_angle)], - [np.sin(rotation_angle), np.cos(rotation_angle)], - ], - dtype=float, - ) - self.pixel_positions[camtype] = np.squeeze( - np.asarray( - np.dot(rotation_matrix, self.pixel_positions[camtype]) - ) - ) - else: - self.pixel_positions[camtype] = pixel_positions[camtype] - self.num_pixels[camtype] = pixel_positions[camtype].shape[1] - - map_method = self.mapping_method[camtype] + map_method = self.mapping_method[camera_type] if map_method not in [ "oversampling", "rebinning", @@ -131,7 +93,7 @@ def __init__( "image_shifting", "axial_addressing", "indexed_conv", - ] and camtype in ["ASTRICam", "CHEC", "SCTCam"]: + ] and camera_type in ["ASTRICam", "CHEC", "SCTCam"]: raise ValueError( "{} (hexagonal convolution) is not available for square pixel cameras.".format( map_method @@ -144,7 +106,7 @@ def __init__( "bilinear_interpolation", "bicubic_interpolation", ]: - self.image_shapes[camtype] = self.interpolation_image_shape[camtype] + self.image_shapes[camera_type] = self.interpolation_image_shape[camera_type] # At the edges of the cameras the mapping methods run into issues. # Therefore, we are using a default padding to ensure that the camera pixels aren't affected. @@ -156,27 +118,27 @@ def __init__( else: self.default_pad = 2 - if map_method != "oversampling" or camtype in [ + if map_method != "oversampling" or camera_type in [ "ASTRICam", "CHEC", "SCTCam", ]: - self.image_shapes[camtype] = ( - self.image_shapes[camtype][0] + self.default_pad * 2, - self.image_shapes[camtype][1] + self.default_pad * 2, - self.image_shapes[camtype][2], + self.image_shapes[camera_type] = ( + self.image_shapes[camera_type][0] + self.default_pad * 2, + self.image_shapes[camera_type][1] + self.default_pad * 2, + self.image_shapes[camera_type][2], ) else: - self.image_shapes[camtype] = ( - self.image_shapes[camtype][0] + self.default_pad * 4, - self.image_shapes[camtype][1] + self.default_pad * 4, - self.image_shapes[camtype][2], + self.image_shapes[camera_type] = ( + self.image_shapes[camera_type][0] + self.default_pad * 4, + self.image_shapes[camera_type][1] + self.default_pad * 4, + self.image_shapes[camera_type][2], ) # Initializing the indexed matrix - self.index_matrixes[camtype] = None + self.index_matrixes[camera_type] = None # Calculating the mapping tables for the selected camera types - self.mapping_tables[camtype] = self.generate_table(camtype) + self.mapping_tables[camera_type] = self.generate_table(camera_type) def map_image(self, pixels, camera_type): """ diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 78d8901..3a67ca2 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -15,6 +15,7 @@ vstack, # and vertically ) +from ctapipe.instrument import SubarrayDescription from ctapipe.io import read_table # let us read full tables inside the DL1 output file @@ -327,10 +328,9 @@ class DLDataReader: def __init__( self, file_list, - example_identifiers_file=None, mode="mono", - selected_telescope_types=None, - selected_telescope_ids=None, + tel_types=None, + tel_ids=None, multiplicity_selection=None, quality_selection=None, trigger_settings=None, @@ -339,6 +339,21 @@ def __init__( mapping_settings=None, parameter_settings=None, ): + # Set data loading mode + # Mono: single images of one telescope type + # Stereo: events including multiple telescope types + if mode in ["mono", "stereo"]: + self.mode = mode + else: + raise ValueError( + f"Invalid mode selection '{mode}'. Valid options: 'mono', 'stereo'" + ) + + if multiplicity_selection is None: + multiplicity_selection = {} + + if mapping_settings is None: + mapping_settings = {} # Construct dict of filename:file_handle pairs self.files = OrderedDict() @@ -348,15 +363,11 @@ def __init__( with lock: self.files[filename] = tables.open_file(filename, mode="r") first_file = list(self.files)[0] - - # Save the user attributes and useful information retrieved from the first file + # Save the user attributes and useful information retrieved from the first file as a reference self._v_attrs = self.files[first_file].root._v_attrs - self.subarray_layout = self.files[ - first_file - ].root.configuration.instrument.subarray.layout - self.tel_ids = self.subarray_layout.cols._f_col("tel_id") self.process_type = self._v_attrs["CTA PROCESS TYPE"] self.data_format_version = self._v_attrs["CTA PRODUCT DATA MODEL VERSION"] + self.instrument_id = self._v_attrs["CTA INSTRUMENT ID"] # Check for the minimum ctapipe data format version (v6.0.0) if int(self.data_format_version.split(".")[0].replace("v", "")) < 6: @@ -368,14 +379,54 @@ def __init__( raise ValueError( f"When processing real observational data, please provide a single file (currently: '{len(self.files)}')." ) - self.subarray_shower = None - if self.process_type == "Simulation": - self.subarray_shower = self.files[ - first_file - ].root.simulation.event.subarray.shower - self.instrument_id = self._v_attrs["CTA INSTRUMENT ID"] - # Set class weights to None - self.class_weight = None + + self.subarray = SubarrayDescription.from_hdf(first_file) + selected_tel_ids = None + if tel_ids is not None: + selected_tel_ids = np.array(tel_ids, dtype=np.int16) + else: + if tel_types is not None: + selected_tel_ids = np.ravel( + [ + np.array(self.subarray.get_tel_ids_for_type(str(tel_type))) + for tel_type in tel_types + ] + ) + + # Filter subarray by selected telescopes + if selected_tel_ids is not None: + self.subarray = self.subarray.select_subarray(selected_tel_ids) + self.tel_ids = self.subarray.tel_ids + self.selected_telescopes = {} + for tel_type in self.subarray.telescope_types: + # If is needed here for some sims where the same tel_type is stored twice + if str(tel_type) not in self.selected_telescopes: + self.selected_telescopes[str(tel_type)] = np.array( + self.subarray.get_tel_ids_for_type(str(tel_type)) + ) + + # Check if only one telescope type is selected when reading in mono mode + if self.mode == "mono" and len(self.selected_telescopes) > 1: + raise ValueError( + f"Mono mode selected but multiple telescope types are provided: '{self.selected_telescopes}'." + ) + # Set the telescope type as class attribute for mono mode for convenience + self.tel_type = None + if self.mode == "mono": + self.tel_type = list(self.selected_telescopes)[0] + # Get the camera index for the different telescope types + camera2index = {} + for t in self.subarray.tels.values(): + camera_index = self.subarray.camera_types.index(t.camera) + if f"{t.camera.name}" not in camera2index: + camera2index[f"{t.camera.name}"] = camera_index + # Retrieve the camera geometry from the file + pixel_positions = self._construct_pixel_positions( + self.files[first_file].root.configuration.instrument.telescope, camera2index + ) + self.image_mapper = ImageMapper( + pixel_positions=pixel_positions, **mapping_settings + ) # Translate from CORSIKA shower primary ID to the particle name self.shower_primary_id_to_name = { @@ -385,34 +436,6 @@ def __init__( 404: "nsb", } - # Set data loading mode - # Mono: single images of one telescope type - # Stereo: events including multiple telescope types - if mode in ["mono", "stereo"]: - self.mode = mode - else: - raise ValueError( - f"Invalid mode selection '{mode}'. Valid options: 'mono', 'stereo'" - ) - - if selected_telescope_ids is None: - selected_telescope_ids = [] - ( - self.telescopes, - self.selected_telescopes, - self.camera2index, - ) = self._construct_telescopes_selection( - self.subarray_layout, - selected_telescope_types, - selected_telescope_ids, - ) - - if multiplicity_selection is None: - multiplicity_selection = {} - - if mapping_settings is None: - mapping_settings = {} - # Telescope pointings self.telescope_pointings = {} self.fix_pointing = None @@ -548,16 +571,15 @@ def __init__( simulation_info = [] example_identifiers = [] for file_idx, (filename, f) in enumerate(self.files.items()): - # Telescope selection - ( - telescopes, - selected_telescopes, - camera2index, - ) = self._construct_telescopes_selection( - f.root.configuration.instrument.subarray.layout, - selected_telescope_types, - selected_telescope_ids, - ) + # Read SubarrayDescription from the new file and + subarray = SubarrayDescription.from_hdf(filename) + # Filter subarray by selected telescopes + subarray = subarray.select_subarray(self.tel_ids) + # Check if it matches the reference + if not subarray.__eq__(self.subarray): + raise ValueError( + f"Subarray description of file '{filename}' does not match the reference subarray description." + ) if self.process_type == "Simulation": # Read simulation information for each observation @@ -665,7 +687,6 @@ def __init__( keys=["obs_id", "event_id"], ) events = [] - for tel_type_id, tel_type in enumerate(self.selected_telescopes): table_per_type = [] for tel_id in self.selected_telescopes[tel_type]: @@ -740,10 +761,25 @@ def _multiplicity_cut_subarray(table, key_colnames): self.example_identifiers = vstack(example_identifiers) + # Add index column to the example identifiers to later retrieve batches + # using the loc functionality + if self.mode == "mono": + self.example_identifiers.add_column( + np.arange(len(self.example_identifiers)), name="index", index=0 + ) + self.example_identifiers.add_index("index") + elif self.mode == "stereo": + self.unique_example_identifiers = unique( + self.example_identifiers, keys=["obs_id", "event_id"] + ) + # Need this PR https://github.com/astropy/astropy/pull/15826 + # waiting astropy v7.0.0 + # self.example_identifiers.add_index(["obs_id", "event_id"]) + # Handling the particle ids automatically and class weights calculation # Scaling by total/2 helps keep the loss to a similar magnitude. # The sum of the weights of all examples stays the same. - self.simulated_particles = {} + self.simulated_particles, self.class_weight = {}, {} if self.process_type == "Simulation": # Construct simulation information for all observations self.simulation_info = vstack(simulation_info) @@ -779,13 +815,10 @@ def _multiplicity_cut_subarray(table, key_colnames): self._shower_prob = np.around(1 - self._nsb_prob, decimals=2) self.shower_primary_id_to_class = {} - self.class_names = [] for p, particle_id in enumerate(list(self.simulated_particles.keys())[1:]): self.shower_primary_id_to_class[particle_id] = p - self.class_names.append((self.shower_primary_id_to_name[particle_id])) # Calculate class weights if there are more than 2 classes (particle classification task) if len(self.simulated_particles) > 2: - self.class_weight = {} for particle_id, n_particles in self.simulated_particles.items(): if particle_id != "total": self.class_weight[ @@ -804,38 +837,12 @@ def _multiplicity_cut_subarray(table, key_colnames): self.example_identifiers ) - # Add index column to the example identifiers to later retrieve batches - # using the loc functionality - if self.mode == "mono": - self.example_identifiers.add_column( - np.arange(len(self.example_identifiers)), name="index", index=0 - ) - self.example_identifiers.add_index("index") - elif self.mode == "stereo": - self.unique_example_identifiers = unique( - self.example_identifiers, keys=["obs_id", "event_id"] - ) - # Need this PR https://github.com/astropy/astropy/pull/15826 - # waiting astropy v7.0.0 - # self.example_identifiers.add_index(["obs_id", "event_id"]) - # ImageMapper (1D charges -> 2D images or 3D waveforms) if self.image_channels is not None or self.waveform_type is not None: - # Retrieve the camera geometry from the file - self.pixel_positions, self.num_pixels = self._construct_pixel_positions( - self.files[first_file].root.configuration.instrument.telescope - ) - - if "camera_types" not in mapping_settings: - mapping_settings["camera_types"] = self.pixel_positions.keys() - self.image_mapper = ImageMapper( - pixel_positions=self.pixel_positions, **mapping_settings - ) - if self.waveform_type is not None: self.waveform_settings["shapes"] = {} - for camera_type in mapping_settings["camera_types"]: + for camera_type in self.image_mapper.camera_types: self.image_mapper.image_shapes[camera_type] = ( self.image_mapper.image_shapes[camera_type][0], self.image_mapper.image_shapes[camera_type][1], @@ -904,7 +911,7 @@ def _multiplicity_cut_subarray(table, key_colnames): ] ) if self.image_channels is not None: - for camera_type in mapping_settings["camera_types"]: + for camera_type in self.image_mapper.camera_types: self.image_mapper.image_shapes[camera_type] = ( self.image_mapper.image_shapes[camera_type][0], self.image_mapper.image_shapes[camera_type][1], @@ -920,64 +927,7 @@ def __len__(self): elif self.mode == "stereo": return len(self.unique_example_identifiers) - def _construct_telescopes_selection( - self, subarray_table, selected_telescope_types, selected_telescope_ids - ): - """ - Construct the selection of the telescopes from the args (`selected_telescope_types`, `selected_telescope_ids`). - Parameters - ---------- - subarray_table (tables.table): - selected_telescope_type (array of str): - selected_telescope_ids (array of int): - - Returns - ------- - telescopes (dict): dictionary of `{: }` - selected_telescopes (dict): dictionary of `{: }` - camera2index (dict): dictionary of `{: }` - - """ - - # Get dict of all the tel_types in the file mapped to their tel_ids - telescopes = {} - camera2index = {} - for row in subarray_table: - tel_type = row["tel_description"].decode() - if tel_type not in telescopes: - telescopes[tel_type] = [] - camera_index = row["camera_index"] - if self._get_camera_type(tel_type) not in camera2index: - camera2index[self._get_camera_type(tel_type)] = camera_index - telescopes[tel_type].append(row["tel_id"]) - - # Enforce an automatic minimal telescope selection cut: - # there must be at least one triggered telescope of a - # selected type in the event - # Users can include stricter cuts in the selection string - if selected_telescope_types is None: - # Default: use the first tel type in the file - default = subarray_table[0]["tel_description"].decode() - selected_telescope_types = [default] - if self.mode == "mono": - self.tel_type = selected_telescope_types[0] - - # Select which telescopes from the full dataset to include in each - # event by a telescope type and an optional list of telescope ids. - selected_telescopes = {} - for tel_type in selected_telescope_types: - available_tel_ids = telescopes[tel_type] - # Keep only the selected tel ids for the tel type - if selected_telescope_ids: - selected_telescopes[tel_type] = np.intersect1d( - available_tel_ids, selected_telescope_ids - ) - else: - selected_telescopes[tel_type] = available_tel_ids - - return telescopes, selected_telescopes, camera2index - - def _construct_pixel_positions(self, telescope_type_information): + def _construct_pixel_positions(self, telescope_type_information, camera2index): """ Construct the pixel position of the cameras from the DL1 hdf5 file. Parameters @@ -987,27 +937,25 @@ def _construct_pixel_positions(self, telescope_type_information): Returns ------- pixel_positions (dict): dictionary of `{cameras: pixel_positions}` - num_pixels (dict): dictionary of `{cameras: num_pixels}` """ pixel_positions = {} - num_pixels = {} - for camera in self.camera2index.keys(): + for camera in camera2index.keys(): cam_geom = telescope_type_information.camera._f_get_child( - f"geometry_{self.camera2index[camera]}" + f"geometry_{camera2index[camera]}" ) pix_x = np.array(cam_geom.cols._f_col("pix_x")) pix_y = np.array(cam_geom.cols._f_col("pix_y")) - num_pixels[camera] = len(pix_x) pixel_positions[camera] = np.stack((pix_x, pix_y)) # For now hardcoded, since this information is not in the h5 files. # The official CTA DL1 format will contain this information. - if camera in ["LSTCam", "LSTSiPMCam", "NectarCam", "MAGICCam"]: + camera_prefix = camera.split("_")[0] + if camera_prefix in ["LSTCam", "LSTSiPMCam", "NectarCam", "MAGICCam"]: rotation_angle = -cam_geom._v_attrs["PIX_ROT"] * np.pi / 180.0 - if camera == "MAGICCam": + if camera_prefix == "MAGICCam": rotation_angle = -100.893 * np.pi / 180.0 - if self.process_type == "Observation" and camera == "LSTCam": + if self.process_type == "Observation" and camera_prefix == "LSTCam": rotation_angle = -40.89299998552154 * np.pi / 180.0 rotation_matrix = np.matrix( [ @@ -1020,7 +968,7 @@ def _construct_pixel_positions(self, telescope_type_information): np.asarray(np.dot(rotation_matrix, pixel_positions[camera])) ) - return pixel_positions, num_pixels + return pixel_positions def _get_tel_pointing(self, file, tel_ids): tel_pointing = [] From 1e3a86a4fa108842b1d1d63a0481c5a7a0eb2b4c Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Fri, 9 Aug 2024 17:22:46 +0200 Subject: [PATCH 19/92] define reading API It defines a reading API with two childs for reading in mono and stereo mode. Then, the Image and Waveform childs inherits from both child classes (mono and stereo). Finally, the trigger child only inherits from the mono child --- dl1_data_handler/reader.py | 1261 ++++++++++++++++++++---------------- 1 file changed, 701 insertions(+), 560 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 3a67ca2..53136f4 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -1,7 +1,7 @@ +from abc import abstractmethod from collections import OrderedDict import threading import numpy as np -import pandas as pd import tables from dl1_data_handler.image_mapper import ImageMapper @@ -328,33 +328,10 @@ class DLDataReader: def __init__( self, file_list, - mode="mono", tel_types=None, tel_ids=None, - multiplicity_selection=None, - quality_selection=None, - trigger_settings=None, - waveform_settings=None, - image_settings=None, mapping_settings=None, - parameter_settings=None, ): - # Set data loading mode - # Mono: single images of one telescope type - # Stereo: events including multiple telescope types - if mode in ["mono", "stereo"]: - self.mode = mode - else: - raise ValueError( - f"Invalid mode selection '{mode}'. Valid options: 'mono', 'stereo'" - ) - - if multiplicity_selection is None: - multiplicity_selection = {} - - if mapping_settings is None: - mapping_settings = {} - # Construct dict of filename:file_handle pairs self.files = OrderedDict() # Order the file_list @@ -362,9 +339,9 @@ def __init__( for filename in file_list: with lock: self.files[filename] = tables.open_file(filename, mode="r") - first_file = list(self.files)[0] + self.first_file = list(self.files)[0] # Save the user attributes and useful information retrieved from the first file as a reference - self._v_attrs = self.files[first_file].root._v_attrs + self._v_attrs = self.files[self.first_file].root._v_attrs self.process_type = self._v_attrs["CTA PROCESS TYPE"] self.data_format_version = self._v_attrs["CTA PRODUCT DATA MODEL VERSION"] self.instrument_id = self._v_attrs["CTA INSTRUMENT ID"] @@ -380,7 +357,7 @@ def __init__( f"When processing real observational data, please provide a single file (currently: '{len(self.files)}')." ) - self.subarray = SubarrayDescription.from_hdf(first_file) + self.subarray = SubarrayDescription.from_hdf(self.first_file) selected_tel_ids = None if tel_ids is not None: selected_tel_ids = np.array(tel_ids, dtype=np.int16) @@ -410,6 +387,18 @@ def __init__( raise ValueError( f"Mono mode selected but multiple telescope types are provided: '{self.selected_telescopes}'." ) + # Check that all files have the same SubarrayDescription + for filename in self.files: + # Read SubarrayDescription from the new file and + subarray = SubarrayDescription.from_hdf(filename) + # Filter subarray by selected telescopes + subarray = subarray.select_subarray(self.tel_ids) + # Check if it matches the reference + if not subarray.__eq__(self.subarray): + raise ValueError( + f"Subarray description of file '{filename}' does not match the reference subarray description." + ) + # Set the telescope type as class attribute for mono mode for convenience self.tel_type = None if self.mode == "mono": @@ -422,8 +411,13 @@ def __init__( camera2index[f"{t.camera.name}"] = camera_index # Retrieve the camera geometry from the file pixel_positions = self._construct_pixel_positions( - self.files[first_file].root.configuration.instrument.telescope, camera2index + self.files[self.first_file].root.configuration.instrument.telescope, + camera2index, ) + + # Initialize the ImageMapper with the pixel positions and mapping settings + if mapping_settings is None: + mapping_settings = {} self.image_mapper = ImageMapper( pixel_positions=pixel_positions, **mapping_settings ) @@ -445,479 +439,23 @@ def __init__( for tel_id in self.tel_ids: with lock: self.telescope_pointings[f"tel_{tel_id:03d}"] = read_table( - self.files[first_file], + self.files[self.first_file], f"/dl0/monitoring/telescope/pointing/tel_{tel_id:03d}", ) with lock: self.tel_trigger_table = read_table( - self.files[first_file], + self.files[self.first_file], "/dl1/event/telescope/trigger", ) - # AI-based trigger system - self.trigger_settings = trigger_settings - self.include_nsb_patches = None - if self.trigger_settings is not None: - self.include_nsb_patches = self.trigger_settings["include_nsb_patches"] - self.get_trigger_patch_from = self.trigger_settings["get_patch_from"] - # Raw (R0) or calibrated (R1) waveform - self.waveform_type = None - if waveform_settings is not None: - self.waveform_settings = waveform_settings - self.waveform_type = waveform_settings["type"] - if "raw" in self.waveform_type: - first_tel_table = f"tel_{self.tel_ids[0]:03d}" - self.waveform_settings["sequence_max_length"] = ( - self.files[first_file] - .root.r0.event.telescope._f_get_child(first_tel_table) - .coldescrs["waveform"] - .shape[-1] - ) - if "calibrate" in self.waveform_type: - first_tel_table = f"tel_{self.tel_ids[0]:03d}" - with lock: - wvf_table_v_attrs = ( - self.files[first_file] - .root.r1.event.telescope._f_get_child(first_tel_table) - ._v_attrs - ) - self.waveform_settings["sequence_max_length"] = ( - self.files[first_file] - .root.r1.event.telescope._f_get_child(first_tel_table) - .coldescrs["waveform"] - .shape[-1] - ) - self.waveform_settings["waveform_scale"] = 0.0 - self.waveform_settings["waveform_offset"] = 0 - # Check the transform value used for the file compression - if "CTAFIELD_5_TRANSFORM_SCALE" in wvf_table_v_attrs: - self.waveform_settings["waveform_scale"] = wvf_table_v_attrs[ - "CTAFIELD_5_TRANSFORM_SCALE" - ] - self.waveform_settings["waveform_offset"] = wvf_table_v_attrs[ - "CTAFIELD_5_TRANSFORM_OFFSET" - ] - # Check that the waveform sequence length is valid - if ( - self.waveform_settings["sequence_length"] - > self.waveform_settings["sequence_max_length"] - ): - raise ValueError( - f"Invalid sequence length '{self.waveform_settings['sequence_length']}' (must be <= '{self.waveform_settings['sequence_max_length']}')." - ) - - # Integrated charges and peak arrival times (DL1a) - self.image_channels = None - self.image_transforms = {} - if image_settings is not None: - self.image_channels = image_settings["image_channels"] - self.image_transforms["image_scale"] = 0.0 - self.image_transforms["image_offset"] = 0 - self.image_transforms["peak_time_scale"] = 0.0 - self.image_transforms["peak_time_offset"] = 0 - # Image parameters (DL1b) # Retrieve the column names for the DL1b parameter table with lock: self.dl1b_parameter_colnames = read_table( - self.files[first_file], + self.files[self.first_file], f"/dl1/event/telescope/parameters/tel_{self.tel_ids[0]:03d}", ).colnames - # Get offset and scaling of images - if self.image_channels is not None: - first_tel_table = f"tel_{self.tel_ids[0]:03d}" - with lock: - img_table_v_attrs = ( - self.files[first_file] - .root.dl1.event.telescope.images._f_get_child(first_tel_table) - ._v_attrs - ) - # Check the transform value used for the file compression - if "CTAFIELD_3_TRANSFORM_SCALE" in img_table_v_attrs: - self.image_transforms["image_scale"] = img_table_v_attrs[ - "CTAFIELD_3_TRANSFORM_SCALE" - ] - self.image_transforms["image_offset"] = img_table_v_attrs[ - "CTAFIELD_3_TRANSFORM_OFFSET" - ] - if "CTAFIELD_4_TRANSFORM_SCALE" in img_table_v_attrs: - self.image_transforms["peak_time_scale"] = img_table_v_attrs[ - "CTAFIELD_4_TRANSFORM_SCALE" - ] - self.image_transforms["peak_time_offset"] = img_table_v_attrs[ - "CTAFIELD_4_TRANSFORM_OFFSET" - ] - - # Columns to keep in the the example identifiers - # This are the basic columns one need to do a - # conventional IACT analysis with CNNs - self.example_ids_keep_columns = ["img_index", "obs_id", "event_id", "tel_id"] - if self.process_type == "Simulation": - self.example_ids_keep_columns.extend( - ["true_energy", "true_alt", "true_az", "true_shower_primary_id"] - ) - if mode == "stereo": - self.example_ids_keep_columns.extend( - ["tels_with_trigger", "hillas_intensity"] - ) - if self.process_type == "Observation": - self.example_ids_keep_columns.extend(["time", "event_type"]) - if self.trigger_settings is not None and self.get_trigger_patch_from == "file": - self.example_ids_keep_columns.extend( - ["trg_pixel_id", "trg_waveform_sample_id"] - ) - - simulation_info = [] - example_identifiers = [] - for file_idx, (filename, f) in enumerate(self.files.items()): - # Read SubarrayDescription from the new file and - subarray = SubarrayDescription.from_hdf(filename) - # Filter subarray by selected telescopes - subarray = subarray.select_subarray(self.tel_ids) - # Check if it matches the reference - if not subarray.__eq__(self.subarray): - raise ValueError( - f"Subarray description of file '{filename}' does not match the reference subarray description." - ) - - if self.process_type == "Simulation": - # Read simulation information for each observation - simulation_info.append(read_table(f, "/configuration/simulation/run")) - # Construct the shower simulation table - simshower_table = read_table(f, "/simulation/event/subarray/shower") - - if self.mode == "mono": - # Construct the table containing all events. - # First, the telescope tables are joined with the shower simulation - # table and then those joined/merged tables are vertically stacked. - tel_tables = [] - for tel_id in self.selected_telescopes[self.tel_type]: - tel_table = read_table( - f, f"/dl1/event/telescope/parameters/tel_{tel_id:03d}" - ) - tel_table.add_column( - np.arange(len(tel_table)), name="img_index", index=0 - ) - if self.process_type == "Simulation": - tel_table = join( - left=tel_table, - right=simshower_table, - keys=["obs_id", "event_id"], - ) - tel_tables.append(tel_table) - events = vstack(tel_tables) - - # AI-based trigger system - # Obtain trigger patch info from an external algorithm (i.e. DBScan) - if self.trigger_settings is not None and "raw" in self.waveform_type: - if self.trigger_settings["get_patch_from"] == "file": - try: - # Read csv containing the trigger patch info - trigger_patch_info_csv_file = pd.read_csv( - filename.replace("r0.dl1.h5", "npe.csv") - )[ - [ - "obs_id", - "event_id", - "tel_id", - "trg_pixel_id", - "trg_waveform_sample_id", - ] - ].astype( - int - ) - trigger_patch_info = Table.from_pandas( - trigger_patch_info_csv_file - ) - # Join the events table ith the trigger patch info - events = join( - left=trigger_patch_info, - right=events, - keys=["obs_id", "event_id", "tel_id"], - ) - # Remove non-trigger events with negative pixel ids - events = events[events["trg_pixel_id"] >= 0] - except: - raise IOError( - f"There is a problem with '{filename.replace('r0.dl1.h5','npe.csv')}'!" - ) - - # Initialize a boolean mask to True for all events - self.quality_mask = np.ones(len(events), dtype=bool) - # Quality selection based on the dl1b parameter and MC shower simulation tables - if quality_selection: - for filter in quality_selection: - # Update the mask for the minimum value condition - if "min_value" in filter: - self.quality_mask &= ( - events[filter["col_name"]] >= filter["min_value"] - ) - # Update the mask for the maximum value condition - if "max_value" in filter: - self.quality_mask &= ( - events[filter["col_name"]] < filter["max_value"] - ) - # Apply the updated mask to filter events - events = events[self.quality_mask] - - # Construct the example identifiers - events.keep_columns(self.example_ids_keep_columns) - tel_pointing = self._get_tel_pointing(f, self.tel_ids) - events = join( - left=events, - right=tel_pointing, - keys=["obs_id", "tel_id"], - ) - events = self._transform_to_spherical_offsets(events) - # Add telescope type id which is always 0 in mono mode - # Needed to share code with stereo reading mode - events.add_column(file_idx, name="file_index", index=0) - events.add_column(0, name="tel_type_id", index=3) - example_identifiers.append(events) - - elif self.mode == "stereo": - # Read the trigger table. - trigger_table = read_table(f, "/dl1/event/subarray/trigger") - if self.process_type == "Simulation": - # The shower simulation table is joined with the subarray trigger table. - trigger_table = join( - left=trigger_table, - right=simshower_table, - keys=["obs_id", "event_id"], - ) - events = [] - for tel_type_id, tel_type in enumerate(self.selected_telescopes): - table_per_type = [] - for tel_id in self.selected_telescopes[tel_type]: - # The telescope table is joined with the selected and merged table. - tel_table = read_table( - f, - f"/dl1/event/telescope/parameters/tel_{tel_id:03d}", - ) - tel_table.add_column( - np.arange(len(tel_table)), name="img_index", index=0 - ) - # Initialize a boolean mask to True for all events - quality_mask = np.ones(len(tel_table), dtype=bool) - # Quality selection based on the dl1b parameter and MC shower simulation tables - if quality_selection: - for filter in quality_selection: - # Update the mask for the minimum value condition - if "min_value" in filter: - quality_mask &= ( - tel_table[filter["col_name"]] - >= filter["min_value"] - ) - # Update the mask for the maximum value condition - if "max_value" in filter: - quality_mask &= ( - tel_table[filter["col_name"]] - < filter["max_value"] - ) - # Merge the telescope table with the trigger table - merged_table = join( - left=tel_table[quality_mask], - right=trigger_table, - keys=["obs_id", "event_id"], - ) - table_per_type.append(merged_table) - table_per_type = vstack(table_per_type) - table_per_type = table_per_type.group_by(["obs_id", "event_id"]) - table_per_type.keep_columns(self.example_ids_keep_columns) - if self.process_type == "Simulation": - tel_pointing = self._get_tel_pointing(f, self.tel_ids) - table_per_type = join( - left=table_per_type, - right=tel_pointing, - keys=["obs_id", "tel_id"], - ) - table_per_type = self._transform_to_spherical_offsets( - table_per_type - ) - # Apply the multiplicity cut based on the telescope type - if tel_type in multiplicity_selection: - table_per_type = table_per_type.group_by(["obs_id", "event_id"]) - - def _multiplicity_cut_tel_type(table, key_colnames): - return len(table) >= multiplicity_selection[tel_type] - - table_per_type = table_per_type.groups.filter( - _multiplicity_cut_tel_type - ) - table_per_type.add_column(tel_type_id, name="tel_type_id", index=3) - events.append(table_per_type) - events = vstack(events) - # Apply the multiplicity cut based on the subarray - if "Subarray" in multiplicity_selection: - events = events.group_by(["obs_id", "event_id"]) - - def _multiplicity_cut_subarray(table, key_colnames): - return len(table) >= multiplicity_selection["Subarray"] - - events = events.groups.filter(_multiplicity_cut_subarray) - events.add_column(file_idx, name="file_index", index=0) - example_identifiers.append(events) - - self.example_identifiers = vstack(example_identifiers) - - # Add index column to the example identifiers to later retrieve batches - # using the loc functionality - if self.mode == "mono": - self.example_identifiers.add_column( - np.arange(len(self.example_identifiers)), name="index", index=0 - ) - self.example_identifiers.add_index("index") - elif self.mode == "stereo": - self.unique_example_identifiers = unique( - self.example_identifiers, keys=["obs_id", "event_id"] - ) - # Need this PR https://github.com/astropy/astropy/pull/15826 - # waiting astropy v7.0.0 - # self.example_identifiers.add_index(["obs_id", "event_id"]) - - # Handling the particle ids automatically and class weights calculation - # Scaling by total/2 helps keep the loss to a similar magnitude. - # The sum of the weights of all examples stays the same. - self.simulated_particles, self.class_weight = {}, {} - if self.process_type == "Simulation": - # Construct simulation information for all observations - self.simulation_info = vstack(simulation_info) - # Track number of events for each particle type - self.simulated_particles["total"] = self.__len__() - for primary_id in self.shower_primary_id_to_name: - if self.mode == "mono": - n_particles = np.count_nonzero( - self.example_identifiers["true_shower_primary_id"] == primary_id - ) - elif self.mode == "stereo": - n_particles = np.count_nonzero( - self.unique_example_identifiers["true_shower_primary_id"] - == primary_id - ) - # Store the number of events for each particle type if there are any - if n_particles > 0 and primary_id != 404: - self.simulated_particles[primary_id] = n_particles - self.n_classes = len(self.simulated_particles) - 1 - # Include NSB patches is selected - if self.include_nsb_patches == "auto": - for particle_id in list(self.simulated_particles.keys())[1:]: - self.simulated_particles[particle_id] = int( - self.simulated_particles[particle_id] - * self.n_classes - / (self.n_classes + 1) - ) - self.simulated_particles[404] = int( - self.simulated_particles["total"] / (self.n_classes + 1) - ) - self.n_classes += 1 - self._nsb_prob = np.around(1 / self.n_classes, decimals=2) - self._shower_prob = np.around(1 - self._nsb_prob, decimals=2) - - self.shower_primary_id_to_class = {} - for p, particle_id in enumerate(list(self.simulated_particles.keys())[1:]): - self.shower_primary_id_to_class[particle_id] = p - # Calculate class weights if there are more than 2 classes (particle classification task) - if len(self.simulated_particles) > 2: - for particle_id, n_particles in self.simulated_particles.items(): - if particle_id != "total": - self.class_weight[ - self.shower_primary_id_to_class[particle_id] - ] = (1 / n_particles) * ( - self.simulated_particles["total"] / 2.0 - ) - - # Apply common transformation of MC data - # Transform shower primary id to class - self.example_identifiers = self._transform_to_primary_class( - self.example_identifiers - ) - # Transform true energy into the log space - self.example_identifiers = self._transform_to_log_energy( - self.example_identifiers - ) - - # ImageMapper (1D charges -> 2D images or 3D waveforms) - if self.image_channels is not None or self.waveform_type is not None: - - if self.waveform_type is not None: - self.waveform_settings["shapes"] = {} - for camera_type in self.image_mapper.camera_types: - self.image_mapper.image_shapes[camera_type] = ( - self.image_mapper.image_shapes[camera_type][0], - self.image_mapper.image_shapes[camera_type][1], - self.waveform_settings["sequence_length"], - ) - self.waveform_settings["shapes"][camera_type] = ( - self.image_mapper.image_shapes[camera_type] - ) - - # AI-based trigger system - if ( - self.trigger_settings is not None - and "raw" in self.waveform_type - ): - self.trigger_settings["patches_xpos"] = {} - self.trigger_settings["patches_ypos"] = {} - # Autoset the trigger patches - if ( - "patch_size" not in self.trigger_settings - or "patches" not in self.trigger_settings - ): - trigger_patches_xpos = np.linspace( - 0, - self.image_mapper.image_shapes[camera_type][0], - num=self.trigger_settings["number_of_patches"][0] + 1, - endpoint=False, - dtype=int, - )[1:] - trigger_patches_ypos = np.linspace( - 0, - self.image_mapper.image_shapes[camera_type][1], - num=self.trigger_settings["number_of_patches"][0] + 1, - endpoint=False, - dtype=int, - )[1:] - self.trigger_settings["patch_size"] = { - camera_type: [ - trigger_patches_xpos[0] * 2, - trigger_patches_ypos[0] * 2, - ] - } - self.trigger_settings["patches"] = {camera_type: []} - for patches in np.array( - np.meshgrid(trigger_patches_xpos, trigger_patches_ypos) - ).T: - for patch in patches: - self.trigger_settings["patches"][ - camera_type - ].append({"x": patch[0], "y": patch[1]}) - - self.waveform_settings["shapes"][camera_type] = ( - self.trigger_settings["patch_size"][camera_type][0], - self.trigger_settings["patch_size"][camera_type][1], - self.waveform_settings["sequence_length"], - ) - self.trigger_settings["patches_xpos"][camera_type] = np.unique( - [ - patch["x"] - for patch in trigger_settings["patches"][camera_type] - ] - ) - self.trigger_settings["patches_ypos"][camera_type] = np.unique( - [ - patch["y"] - for patch in trigger_settings["patches"][camera_type] - ] - ) - if self.image_channels is not None: - for camera_type in self.image_mapper.camera_types: - self.image_mapper.image_shapes[camera_type] = ( - self.image_mapper.image_shapes[camera_type][0], - self.image_mapper.image_shapes[camera_type][1], - len(self.image_channels), # number of channels - ) - def _get_camera_type(self, tel_type): return tel_type.split("_")[-1] @@ -930,6 +468,8 @@ def __len__(self): def _construct_pixel_positions(self, telescope_type_information, camera2index): """ Construct the pixel position of the cameras from the DL1 hdf5 file. + + # TODO: Converge further with ctapipe Parameters ---------- telescope_type_information (tables.Table): @@ -983,6 +523,55 @@ def _get_tel_pointing(self, file, tel_ids): return vstack(tel_pointing) def _transform_to_primary_class(self, table): + # Handling the particle ids automatically and class weights calculation + # Scaling by total/2 helps keep the loss to a similar magnitude. + # The sum of the weights of all examples stays the same. + self.simulated_particles, self.class_weight = {}, {} + if self.process_type == "Simulation": + # Track number of events for each particle type + self.simulated_particles["total"] = self.__len__() + for primary_id in self.shower_primary_id_to_name: + if self.mode == "mono": + n_particles = np.count_nonzero( + self.example_identifiers["true_shower_primary_id"] == primary_id + ) + elif self.mode == "stereo": + n_particles = np.count_nonzero( + self.unique_example_identifiers["true_shower_primary_id"] + == primary_id + ) + # Store the number of events for each particle type if there are any + if n_particles > 0 and primary_id != 404: + self.simulated_particles[primary_id] = n_particles + self.n_classes = len(self.simulated_particles) - 1 + # Include NSB patches is selected + if self.include_nsb_patches == "auto": + for particle_id in list(self.simulated_particles.keys())[1:]: + self.simulated_particles[particle_id] = int( + self.simulated_particles[particle_id] + * self.n_classes + / (self.n_classes + 1) + ) + self.simulated_particles[404] = int( + self.simulated_particles["total"] / (self.n_classes + 1) + ) + self.n_classes += 1 + self._nsb_prob = np.around(1 / self.n_classes, decimals=2) + self._shower_prob = np.around(1 - self._nsb_prob, decimals=2) + + self.shower_primary_id_to_class = {} + for p, particle_id in enumerate(list(self.simulated_particles.keys())[1:]): + self.shower_primary_id_to_class[particle_id] = p + # Calculate class weights if there are more than 2 classes (particle classification task) + if len(self.simulated_particles) > 2: + for particle_id, n_particles in self.simulated_particles.items(): + if particle_id != "total": + self.class_weight[ + self.shower_primary_id_to_class[particle_id] + ] = (1 / n_particles) * ( + self.simulated_particles["total"] / 2.0 + ) + # Transform shower primary id to class # Create a vectorized function to map the values vectorized_map = np.vectorize(self.shower_primary_id_to_class.get) @@ -1022,76 +611,439 @@ def _transform_to_spherical_offsets(self, table): ) return table - def batch_generation(self, batch_indices, dl1b_parameter_list=None): - "Generates data containing batch_size samples" - features = {} - # TODO: Define API with subclasses for all those cases - # batch_generation should be generic and call the specific method - # for retrieving the features - # TODO: rename _get_... to _generate_features() - if self.mode == "mono": - batch = self.example_identifiers.loc[batch_indices] - elif self.mode == "stereo": - # Workaround for the missing feature in astropy: - # Need this PR https://github.com/astropy/astropy/pull/15826 - # waiting astropy v7.0.0 - example_identifiers_grouped = self.example_identifiers.group_by( - ["obs_id", "event_id"] + def _get_parameters(self, file_idxs, img_idxs, tel_ids, dl1b_parameter_list): + dl1b_parameters = [] + for file_idx, img_idx, tel_id in zip(file_idxs, img_idxs, tel_ids): + filename = list(self.files)[file_idx] + with lock: + tel_table = f"tel_{tel_id:03d}" + child = self.files[ + filename + ].root.dl1.event.telescope.parameters._f_get_child(tel_table) + parameters = list(child[img_idx][dl1b_parameter_list]) + dl1b_parameters.append([np.stack(parameters)]) + return np.array(dl1b_parameters) + + @abstractmethod + def batch_generation( + self, batch_indices, dl1b_parameter_list=None + ) -> (dict, Table): + pass + + +class DLMonoReader(DLDataReader): + def __init__( + self, + file_list, + tel_types=None, + tel_ids=None, + mapping_settings=None, + quality_selection=None, + ): + + DLDataReader.__init__( + self, + file_list=file_list, + tel_types=tel_types, + tel_ids=tel_ids, + mapping_settings=mapping_settings, + ) + + # Columns to keep in the the example identifiers + # This are the basic columns one need to do a + # conventional IACT analysis with CNNs + self.example_ids_keep_columns = ["img_index", "obs_id", "event_id", "tel_id"] + if self.process_type == "Simulation": + self.example_ids_keep_columns.extend( + ["true_energy", "true_alt", "true_az", "true_shower_primary_id"] ) - batch = example_identifiers_grouped.groups[batch_indices] - # Sort events based on their telescope types by the hillas intensity in a given batch - batch.sort( - ["obs_id", "event_id", "tel_type_id", "hillas_intensity"], reverse=True + + simulation_info = [] + example_identifiers = [] + for file_idx, (filename, f) in enumerate(self.files.items()): + if self.process_type == "Simulation": + # Read simulation information for each observation + simulation_info.append(read_table(f, "/configuration/simulation/run")) + # Construct the shower simulation table + simshower_table = read_table(f, "/simulation/event/subarray/shower") + + # Construct the table containing all events. + # First, the telescope tables are joined with the shower simulation + # table and then those joined/merged tables are vertically stacked. + tel_tables = [] + for tel_id in self.selected_telescopes[self.tel_type]: + tel_table = read_table( + f, f"/dl1/event/telescope/parameters/tel_{tel_id:03d}" + ) + tel_table.add_column( + np.arange(len(tel_table)), name="img_index", index=0 + ) + if self.process_type == "Simulation": + tel_table = join( + left=tel_table, + right=simshower_table, + keys=["obs_id", "event_id"], + ) + tel_tables.append(tel_table) + events = vstack(tel_tables) + + # Initialize a boolean mask to True for all events + self.quality_mask = np.ones(len(events), dtype=bool) + # Quality selection based on the dl1b parameter and MC shower simulation tables + if quality_selection: + for filter in quality_selection: + # Update the mask for the minimum value condition + if "min_value" in filter: + self.quality_mask &= ( + events[filter["col_name"]] >= filter["min_value"] + ) + # Update the mask for the maximum value condition + if "max_value" in filter: + self.quality_mask &= ( + events[filter["col_name"]] < filter["max_value"] + ) + # Apply the updated mask to filter events + events = events[self.quality_mask] + + # Construct the example identifiers + events.keep_columns(self.example_ids_keep_columns) + tel_pointing = self._get_tel_pointing(f, self.tel_ids) + events = join( + left=events, + right=tel_pointing, + keys=["obs_id", "tel_id"], ) - batch.sort(["obs_id", "event_id", "tel_type_id"]) - if self.image_channels is not None: - features["images"] = self._get_img_features( + events = DLDataReader._transform_to_spherical_offsets(self, table=events) + # Add telescope type id which is always 0 in mono mode + # Needed to share code with stereo reading mode + events.add_column(file_idx, name="file_index", index=0) + events.add_column(0, name="tel_type_id", index=3) + example_identifiers.append(events) + + # Constrcut the example identifiers for all files + self.example_identifiers = vstack(example_identifiers) + # Construct simulation information for all files + if self.process_type == "Simulation": + self.simulation_info = vstack(simulation_info) + # Add index column to the example identifiers to later retrieve batches + # using the loc functionality + self.example_identifiers.add_column( + np.arange(len(self.example_identifiers)), name="index", index=0 + ) + self.example_identifiers.add_index("index") + # Apply common transformation of MC data + # Transform shower primary id to class + self.example_identifiers = DLDataReader._transform_to_primary_class( + self, table=self.example_identifiers + ) + # Transform true energy into the log space + self.example_identifiers = DLDataReader._transform_to_log_energy( + self, table=self.example_identifiers + ) + + def batch_generation(self, batch_indices, dl1b_parameter_list=None): + "Generates data containing batch_size samples" + # Retrieve the batch from the example identifiers via indexing + batch = self.example_identifiers.loc[batch_indices] + # Retrieve the features from child classes + features = self._get_features( + batch["file_index"], + batch["img_index"], + batch["tel_type_id"], + batch["tel_id"], + ) + # Retrieve the dl1b parameters if requested + if dl1b_parameter_list is not None: + features["parameters"] = DLDataReader._get_parameters( batch["file_index"], batch["img_index"], - batch["tel_type_id"], batch["tel_id"], + dl1b_parameter_list, ) + return features, batch + + @abstractmethod + def _get_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids) -> dict: + pass + + +class DLStereoReader(DLDataReader): + def __init__( + self, + file_list, + tel_types=None, + tel_ids=None, + mapping_settings=None, + quality_selection=None, + multiplicity_selection=None, + ): + DLDataReader.__init__( + self, + file_list=file_list, + tel_types=tel_types, + tel_ids=tel_ids, + mapping_settings=mapping_settings, + ) + + # Columns to keep in the the example identifiers + # This are the basic columns one need to do a + # conventional IACT analysis with CNNs + self.example_ids_keep_columns = [ + "img_index", + "obs_id", + "event_id", + "tel_id", + "tels_with_trigger", + "hillas_intensity", + ] + if self.process_type == "Simulation": + self.example_ids_keep_columns.extend( + ["true_energy", "true_alt", "true_az", "true_shower_primary_id"] + ) + elif self.process_type == "Observation": + self.example_ids_keep_columns.extend(["time", "event_type"]) + + simulation_info = [] + example_identifiers = [] + for file_idx, (filename, f) in enumerate(self.files.items()): + if self.process_type == "Simulation": + # Read simulation information for each observation + simulation_info.append(read_table(f, "/configuration/simulation/run")) + # Construct the shower simulation table + simshower_table = read_table(f, "/simulation/event/subarray/shower") + # Read the trigger table. + trigger_table = read_table(f, "/dl1/event/subarray/trigger") + if self.process_type == "Simulation": + # The shower simulation table is joined with the subarray trigger table. + trigger_table = join( + left=trigger_table, + right=simshower_table, + keys=["obs_id", "event_id"], + ) + events = [] + for tel_type_id, tel_type in enumerate(self.selected_telescopes): + table_per_type = [] + for tel_id in self.selected_telescopes[tel_type]: + # The telescope table is joined with the selected and merged table. + tel_table = read_table( + f, + f"/dl1/event/telescope/parameters/tel_{tel_id:03d}", + ) + tel_table.add_column( + np.arange(len(tel_table)), name="img_index", index=0 + ) + # Initialize a boolean mask to True for all events + quality_mask = np.ones(len(tel_table), dtype=bool) + # Quality selection based on the dl1b parameter and MC shower simulation tables + if quality_selection: + for filter in quality_selection: + # Update the mask for the minimum value condition + if "min_value" in filter: + quality_mask &= ( + tel_table[filter["col_name"]] >= filter["min_value"] + ) + # Update the mask for the maximum value condition + if "max_value" in filter: + quality_mask &= ( + tel_table[filter["col_name"]] < filter["max_value"] + ) + # Merge the telescope table with the trigger table + merged_table = join( + left=tel_table[quality_mask], + right=trigger_table, + keys=["obs_id", "event_id"], + ) + table_per_type.append(merged_table) + table_per_type = vstack(table_per_type) + table_per_type = table_per_type.group_by(["obs_id", "event_id"]) + table_per_type.keep_columns(self.example_ids_keep_columns) + if self.process_type == "Simulation": + tel_pointing = self._get_tel_pointing(f, self.tel_ids) + table_per_type = join( + left=table_per_type, + right=tel_pointing, + keys=["obs_id", "tel_id"], + ) + table_per_type = self._transform_to_spherical_offsets( + self, table=table_per_type + ) + # Apply the multiplicity cut based on the telescope type + if tel_type in multiplicity_selection: + table_per_type = table_per_type.group_by(["obs_id", "event_id"]) + + def _multiplicity_cut_tel_type(table, key_colnames): + return len(table) >= multiplicity_selection[tel_type] + + table_per_type = table_per_type.groups.filter( + _multiplicity_cut_tel_type + ) + table_per_type.add_column(tel_type_id, name="tel_type_id", index=3) + events.append(table_per_type) + events = vstack(events) + # Apply the multiplicity cut based on the subarray + if "Subarray" in multiplicity_selection: + events = events.group_by(["obs_id", "event_id"]) + + def _multiplicity_cut_subarray(table, key_colnames): + return len(table) >= multiplicity_selection["Subarray"] + + events = events.groups.filter(_multiplicity_cut_subarray) + events.add_column(file_idx, name="file_index", index=0) + example_identifiers.append(events) + + # Constrcut the example identifiers for all files + self.example_identifiers = vstack(example_identifiers) + # Construct simulation information for all files + if self.process_type == "Simulation": + self.simulation_info = vstack(simulation_info) + # Unique example identifiers by events + self.unique_example_identifiers = unique( + self.example_identifiers, keys=["obs_id", "event_id"] + ) + # Workaround for the missing multicolumn indexing in astropy: + # Need this PR https://github.com/astropy/astropy/pull/15826 + # waiting astropy v7.0.0 + # self.example_identifiers.add_index(["obs_id", "event_id"]) + + # Apply common transformation of MC data + # Transform shower primary id to class + self.simulated_particles, self.class_weight = {}, {} + self.example_identifiers = DLDataReader._transform_to_primary_class( + self, table=self.example_identifiers + ) + # Transform true energy into the log space + self.example_identifiers = DLDataReader._transform_to_log_energy( + self, table=self.example_identifiers + ) + + def batch_generation(self, batch_indices, dl1b_parameter_list=None): + "Generates data containing batch_size samples" + # Retrieve the batch from the example identifiers via groupd by + # Workaround for the missing multicolumn indexing in astropy: + # Need this PR https://github.com/astropy/astropy/pull/15826 + # waiting astropy v7.0.0 + # Once available, the batch_gereration can be shared with "mono subclass" + example_identifiers_grouped = self.example_identifiers.group_by( + ["obs_id", "event_id"] + ) + batch = example_identifiers_grouped.groups[batch_indices] + # Sort events based on their telescope types by the hillas intensity in a given batch + batch.sort( + ["obs_id", "event_id", "tel_type_id", "hillas_intensity"], reverse=True + ) + batch.sort(["obs_id", "event_id", "tel_type_id"]) + # Retrieve the features from child classes + features = self._get_features( + batch["file_index"], + batch["img_index"], + batch["tel_type_id"], + batch["tel_id"], + ) + # Retrieve the dl1b parameters if requested if dl1b_parameter_list is not None: - features["parameters"] = self._get_pmt_features( + features["parameters"] = DLDataReader._get_parameters( batch["file_index"], batch["img_index"], batch["tel_id"], dl1b_parameter_list, ) - if self.waveform_type is not None: - if "raw" in self.waveform_type: - if ( - self.trigger_settings is not None - and self.get_trigger_patch_from == "file" - ): - trigger_patches, true_cherenkov_photons = self._get_trg_features( - batch["file_index"], - batch["img_index"], - batch["tel_type_id"], - batch["tel_id"], - batch["trg_pixel_id"], - batch["trg_waveform_sample_id"], - ) - else: - trigger_patches, true_cherenkov_photons = self._get_trg_features( - batch["file_index"], - batch["img_index"], - batch["tel_type_id"], - batch["tel_id"], - ) - features["waveforms"] = trigger_patches - batch.add_column(true_cherenkov_photons, name="true_cherenkov_photons") - if "calibrated" in self.waveform_type: - features["waveforms"] = self._get_wvf_features( - batch["file_index"], - batch["img_index"], - batch["tel_type_id"], - batch["tel_id"], - ) - return features, batch - def _get_img_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids): + @abstractmethod + def _get_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids) -> dict: + pass + + +class DLImageReader(DLMonoReader, DLStereoReader): + def __init__( + self, + file_list, + image_settings, + tel_types=None, + tel_ids=None, + mapping_settings=None, + mode=None, + quality_selection=None, + multiplicity_selection=None, + ): + + # Set data loading mode + # Mono: single images of one telescope type + # Stereo: events including multiple telescope types + if mode in ["mono", "stereo"]: + self.mode = mode + else: + raise ValueError( + f"Invalid mode selection '{mode}'. Valid options: 'mono', 'stereo'" + ) + + # temp fix + self.include_nsb_patches = "off" + if self.mode == "mono": + DLMonoReader.__init__( + self, + file_list=file_list, + tel_types=tel_types, + tel_ids=tel_ids, + quality_selection=quality_selection, + mapping_settings=mapping_settings, + ) + elif self.mode == "stereo": + DLStereoReader.__init__( + self, + file_list=file_list, + tel_types=tel_types, + tel_ids=tel_ids, + mapping_settings=mapping_settings, + quality_selection=quality_selection, + multiplicity_selection=multiplicity_selection, + ) + + # Integrated charges and peak arrival times (DL1a) + self.image_channels = image_settings["image_channels"] + for camera_type in self.image_mapper.camera_types: + self.image_mapper.image_shapes[camera_type] = ( + self.image_mapper.image_shapes[camera_type][0], + self.image_mapper.image_shapes[camera_type][1], + len(self.image_channels), # number of channels + ) + # Get offset and scaling of images + self.image_transforms = {} + self.image_transforms["image_scale"] = 0.0 + self.image_transforms["image_offset"] = 0 + self.image_transforms["peak_time_scale"] = 0.0 + self.image_transforms["peak_time_offset"] = 0 + first_tel_table = f"tel_{self.tel_ids[0]:03d}" + with lock: + img_table_v_attrs = ( + self.files[self.first_file] + .root.dl1.event.telescope.images._f_get_child(first_tel_table) + ._v_attrs + ) + # Check the transform value used for the file compression + if "CTAFIELD_3_TRANSFORM_SCALE" in img_table_v_attrs: + self.image_transforms["image_scale"] = img_table_v_attrs[ + "CTAFIELD_3_TRANSFORM_SCALE" + ] + self.image_transforms["image_offset"] = img_table_v_attrs[ + "CTAFIELD_3_TRANSFORM_OFFSET" + ] + if "CTAFIELD_4_TRANSFORM_SCALE" in img_table_v_attrs: + self.image_transforms["peak_time_scale"] = img_table_v_attrs[ + "CTAFIELD_4_TRANSFORM_SCALE" + ] + self.image_transforms["peak_time_offset"] = img_table_v_attrs[ + "CTAFIELD_4_TRANSFORM_OFFSET" + ] + for camera_type in self.image_mapper.camera_types: + self.image_mapper.image_shapes[camera_type] = ( + self.image_mapper.image_shapes[camera_type][0], + self.image_mapper.image_shapes[camera_type][1], + len(self.image_channels), # number of channels + ) + + def _get_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids) -> dict: + features = {} images = [] for file_idx, img_idx, tel_type_id, tel_id in zip( file_idxs, img_idxs, tel_type_ids, tel_ids @@ -1113,22 +1065,104 @@ def _get_img_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids): images.append(self.image_mapper.map_image(unmapped_image, camera_type)) else: images.append(unmapped_image) - return np.array(images) + features["images"] = np.array(images) + return features - def _get_pmt_features(self, file_idxs, img_idxs, tel_ids, dl1b_parameter_list): - dl1b_parameters = [] - for file_idx, img_idx, tel_id in zip(file_idxs, img_idxs, tel_ids): - filename = list(self.files)[file_idx] - with lock: - tel_table = f"tel_{tel_id:03d}" - child = self.files[ - filename - ].root.dl1.event.telescope.parameters._f_get_child(tel_table) - parameters = list(child[img_idx][dl1b_parameter_list]) - dl1b_parameters.append([np.stack(parameters)]) - return np.array(dl1b_parameters) - def _get_wvf_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids): +class DLWaveformReader(DLMonoReader, DLStereoReader): + def __init__( + self, + file_list, + waveform_settings, + tel_types=None, + tel_ids=None, + mapping_settings=None, + mode=None, + multiplicity_selection=None, + quality_selection=None, + ): + + # Set data loading mode + # Mono: single images of one telescope type + # Stereo: events including multiple telescope types + if mode in ["mono", "stereo"]: + self.mode = mode + else: + raise ValueError( + f"Invalid mode selection '{mode}'. Valid options: 'mono', 'stereo'" + ) + + # temp fix + self.include_nsb_patches = "off" + if self.mode == "mono": + DLMonoReader.__init__( + self, + file_list=file_list, + tel_types=tel_types, + tel_ids=tel_ids, + mapping_settings=mapping_settings, + quality_selection=quality_selection, + ) + elif self.mode == "stereo": + DLStereoReader.__init__( + self, + file_list=file_list, + tel_types=tel_types, + tel_ids=tel_ids, + mapping_settings=mapping_settings, + quality_selection=quality_selection, + multiplicity_selection=multiplicity_selection, + ) + + # Calibrated waveform (R1) + self.waveform_settings = waveform_settings + self.waveform_type = waveform_settings["type"] + + first_tel_table = f"tel_{self.tel_ids[0]:03d}" + with lock: + wvf_table_v_attrs = ( + self.files[self.first_file] + .root.r1.event.telescope._f_get_child(first_tel_table) + ._v_attrs + ) + self.waveform_settings["sequence_max_length"] = ( + self.files[self.first_file] + .root.r1.event.telescope._f_get_child(first_tel_table) + .coldescrs["waveform"] + .shape[-1] + ) + self.waveform_settings["waveform_scale"] = 0.0 + self.waveform_settings["waveform_offset"] = 0 + # Check the transform value used for the file compression + if "CTAFIELD_5_TRANSFORM_SCALE" in wvf_table_v_attrs: + self.waveform_settings["waveform_scale"] = wvf_table_v_attrs[ + "CTAFIELD_5_TRANSFORM_SCALE" + ] + self.waveform_settings["waveform_offset"] = wvf_table_v_attrs[ + "CTAFIELD_5_TRANSFORM_OFFSET" + ] + # Check that the waveform sequence length is valid + if ( + self.waveform_settings["sequence_length"] + > self.waveform_settings["sequence_max_length"] + ): + raise ValueError( + f"Invalid sequence length '{self.waveform_settings['sequence_length']}' (must be <= '{self.waveform_settings['sequence_max_length']}')." + ) + # Set the shapes of the waveforms + self.waveform_settings["shapes"] = {} + for camera_type in self.image_mapper.camera_types: + self.image_mapper.image_shapes[camera_type] = ( + self.image_mapper.image_shapes[camera_type][0], + self.image_mapper.image_shapes[camera_type][1], + self.waveform_settings["sequence_length"], + ) + self.waveform_settings["shapes"][camera_type] = ( + self.image_mapper.image_shapes[camera_type] + ) + + def _get_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids) -> dict: + features = {} waveforms = [] for file_idx, img_idx, tel_type_id, tel_id in zip( file_idxs, img_idxs, tel_type_ids, tel_ids @@ -1163,9 +1197,112 @@ def _get_wvf_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids): ) else: waveforms.append(unmapped_waveform) - return np.array(waveforms) + features["waveforms"] = np.array(waveforms) + return features - def _get_trg_features( + +class DLTriggerReader(DLMonoReader): + def __init__( + self, + file_list, + waveform_settings, + trigger_settings, + tel_types=None, + tel_ids=None, + mapping_settings=None, + ): + + # Set data loading mode to mono + self.mode = "mono" + DLMonoReader.__init__( + self, + file_list=file_list, + tel_types=tel_types, + tel_ids=tel_ids, + mapping_settings=mapping_settings, + ) + + # AI-based trigger system + self.trigger_settings = trigger_settings + self.include_nsb_patches = self.trigger_settings["include_nsb_patches"] + self.get_trigger_patch_from = self.trigger_settings["get_patch_from"] + # Raw waveform (R0) + self.waveform_settings = waveform_settings + self.waveform_type = waveform_settings["type"] + first_tel_table = f"tel_{self.tel_ids[0]:03d}" + self.waveform_settings["sequence_max_length"] = ( + self.files[self.first_file] + .root.r0.event.telescope._f_get_child(first_tel_table) + .coldescrs["waveform"] + .shape[-1] + ) + # Check that the waveform sequence length is valid + if ( + self.waveform_settings["sequence_length"] + > self.waveform_settings["sequence_max_length"] + ): + raise ValueError( + f"Invalid sequence length '{self.waveform_settings['sequence_length']}' (must be <= '{self.waveform_settings['sequence_max_length']}')." + ) + self.waveform_settings["shapes"] = {} + for camera_type in self.image_mapper.camera_types: + self.image_mapper.image_shapes[camera_type] = ( + self.image_mapper.image_shapes[camera_type][0], + self.image_mapper.image_shapes[camera_type][1], + self.waveform_settings["sequence_length"], + ) + self.waveform_settings["shapes"][camera_type] = ( + self.image_mapper.image_shapes[camera_type] + ) + self.trigger_settings["patches_xpos"] = {} + self.trigger_settings["patches_ypos"] = {} + # Autoset the trigger patches + if ( + "patch_size" not in self.trigger_settings + or "patches" not in self.trigger_settings + ): + trigger_patches_xpos = np.linspace( + 0, + self.image_mapper.image_shapes[camera_type][0], + num=self.trigger_settings["number_of_patches"][0] + 1, + endpoint=False, + dtype=int, + )[1:] + trigger_patches_ypos = np.linspace( + 0, + self.image_mapper.image_shapes[camera_type][1], + num=self.trigger_settings["number_of_patches"][0] + 1, + endpoint=False, + dtype=int, + )[1:] + self.trigger_settings["patch_size"] = { + camera_type: [ + trigger_patches_xpos[0] * 2, + trigger_patches_ypos[0] * 2, + ] + } + self.trigger_settings["patches"] = {camera_type: []} + for patches in np.array( + np.meshgrid(trigger_patches_xpos, trigger_patches_ypos) + ).T: + for patch in patches: + self.trigger_settings["patches"][camera_type].append( + {"x": patch[0], "y": patch[1]} + ) + + self.waveform_settings["shapes"][camera_type] = ( + self.trigger_settings["patch_size"][camera_type][0], + self.trigger_settings["patch_size"][camera_type][1], + self.waveform_settings["sequence_length"], + ) + self.trigger_settings["patches_xpos"][camera_type] = np.unique( + [patch["x"] for patch in trigger_settings["patches"][camera_type]] + ) + self.trigger_settings["patches_ypos"][camera_type] = np.unique( + [patch["y"] for patch in trigger_settings["patches"][camera_type]] + ) + + def _get_features( self, file_idxs, img_idxs, @@ -1174,6 +1311,7 @@ def _get_trg_features( trg_pixel_ids=None, trg_waveform_sample_ids=None, ): + features = {} trigger_patches, true_cherenkov_photons = [], [] random_trigger_patch = False for i, (file_idx, img_idx, tel_type_id, tel_id) in enumerate( @@ -1223,4 +1361,7 @@ def _get_trg_features( trigger_patches.append(waveform) if trigger_patch_true_image_sum is not None: true_cherenkov_photons.append(trigger_patch_true_image_sum) - return np.array(trigger_patches), np.array(true_cherenkov_photons) + features["waveforms"] = np.array(trigger_patches) + + # batch.add_column(true_cherenkov_photons, name="true_cherenkov_photons") + return features, np.array(true_cherenkov_photons) From 98862ef3265317c470d3230a355470d9f38e33b1 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Fri, 9 Aug 2024 17:26:32 +0200 Subject: [PATCH 20/92] added classes into __all__ --- dl1_data_handler/reader.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 53136f4..b36adae 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -21,6 +21,11 @@ __all__ = [ "DLDataReader", + "DLMonoReader", + "DLStereoReader", + "DLImageReader", + "DLWaveformReader", + "DLTriggerReader", "get_unmapped_image", "get_unmapped_waveform", "get_mapped_triggerpatch", From c7f525e0d27374ed00ddaf511f5e35d71d552722 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Sun, 11 Aug 2024 12:30:26 +0200 Subject: [PATCH 21/92] pass batch to _get_features() and return feature dict and batch Table this is somehow needed because we modify the batch Table for the Trigger subclass fix trigger subclass --- dl1_data_handler/reader.py | 145 ++++++++++++++++++++++++------------- 1 file changed, 94 insertions(+), 51 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index b36adae..dbe7330 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -180,7 +180,7 @@ def get_mapped_triggerpatch( ) < 0.001: waveform_start = 0 waveform_stop = nsb_sequence_length = waveform_settings["sequence_max_length"] - if waveform_settings["r0pedsub"] and pixped_nsb is None: + if trigger_settings["pedsub"] and pixped_nsb is None: pixped_nsb = np.sum(vector, axis=1) / nsb_sequence_length else: waveform_start = 1 + waveform_max - waveform_settings["sequence_length"] / 2 @@ -192,7 +192,7 @@ def get_mapped_triggerpatch( if waveform_stop > waveform_settings["sequence_max_length"]: waveform_start -= waveform_stop - waveform_settings["sequence_max_length"] waveform_stop = waveform_settings["sequence_max_length"] - if waveform_settings["r0pedsub"] and pixped_nsb is None: + if trigger_settings["pedsub"] and pixped_nsb is None: pixped_nsb = ( np.sum(vector[:, : int(waveform_start)], axis=1) / nsb_sequence_length @@ -200,12 +200,12 @@ def get_mapped_triggerpatch( if waveform_start < 0: waveform_stop += np.abs(waveform_start) waveform_start = 0 - if waveform_settings["r0pedsub"] and pixped_nsb is None: + if trigger_settings["pedsub"] and pixped_nsb is None: pixped_nsb = ( np.sum(vector[:, int(waveform_stop) :], axis=1) / nsb_sequence_length ) - if waveform_settings["r0pedsub"] and pixped_nsb is None: + if trigger_settings["pedsub"] and pixped_nsb is None: pixped_nsb = np.sum(vector[:, 0 : int(waveform_start)], axis=1) pixped_nsb += np.sum( vector[:, int(waveform_stop) : waveform_settings["sequence_max_length"]], @@ -214,7 +214,7 @@ def get_mapped_triggerpatch( pixped_nsb = pixped_nsb / nsb_sequence_length # Subtract the pedestal per pixel if R0-pedsub selected - if waveform_settings["r0pedsub"]: + if trigger_settings["pedsub"]: vector = vector - pixped_nsb[:, None] # Crop the waveform @@ -616,9 +616,11 @@ def _transform_to_spherical_offsets(self, table): ) return table - def _get_parameters(self, file_idxs, img_idxs, tel_ids, dl1b_parameter_list): + def _get_parameters(self, batch, dl1b_parameter_list) -> np.array: dl1b_parameters = [] - for file_idx, img_idx, tel_id in zip(file_idxs, img_idxs, tel_ids): + for file_idx, img_idx, tel_id in zip( + batch["file_index"], batch["img_index"], batch["tel_id"] + ): filename = list(self.files)[file_idx] with lock: tel_table = f"tel_{tel_id:03d}" @@ -751,24 +753,17 @@ def batch_generation(self, batch_indices, dl1b_parameter_list=None): # Retrieve the batch from the example identifiers via indexing batch = self.example_identifiers.loc[batch_indices] # Retrieve the features from child classes - features = self._get_features( - batch["file_index"], - batch["img_index"], - batch["tel_type_id"], - batch["tel_id"], - ) + features, batch = self._get_features(batch) # Retrieve the dl1b parameters if requested if dl1b_parameter_list is not None: features["parameters"] = DLDataReader._get_parameters( - batch["file_index"], - batch["img_index"], - batch["tel_id"], + batch, dl1b_parameter_list, ) return features, batch @abstractmethod - def _get_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids) -> dict: + def _get_features(self, batch) -> (dict, Table): pass @@ -798,7 +793,6 @@ def __init__( "obs_id", "event_id", "tel_id", - "tels_with_trigger", "hillas_intensity", ] if self.process_type == "Simulation": @@ -938,24 +932,17 @@ def batch_generation(self, batch_indices, dl1b_parameter_list=None): ) batch.sort(["obs_id", "event_id", "tel_type_id"]) # Retrieve the features from child classes - features = self._get_features( - batch["file_index"], - batch["img_index"], - batch["tel_type_id"], - batch["tel_id"], - ) + features, batch = self._get_features(batch) # Retrieve the dl1b parameters if requested if dl1b_parameter_list is not None: features["parameters"] = DLDataReader._get_parameters( - batch["file_index"], - batch["img_index"], - batch["tel_id"], + batch, dl1b_parameter_list, ) return features, batch @abstractmethod - def _get_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids) -> dict: + def _get_features(self, batch) -> (dict, Table): pass @@ -1047,11 +1034,14 @@ def __init__( len(self.image_channels), # number of channels ) - def _get_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids) -> dict: + def _get_features(self, batch) -> (dict, Table): features = {} images = [] for file_idx, img_idx, tel_type_id, tel_id in zip( - file_idxs, img_idxs, tel_type_ids, tel_ids + batch["file_index"], + batch["img_index"], + batch["tel_type_id"], + batch["tel_id"], ): filename = list(self.files)[file_idx] with lock: @@ -1071,7 +1061,7 @@ def _get_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids) -> dict: else: images.append(unmapped_image) features["images"] = np.array(images) - return features + return features, batch class DLWaveformReader(DLMonoReader, DLStereoReader): @@ -1166,11 +1156,14 @@ def __init__( self.image_mapper.image_shapes[camera_type] ) - def _get_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids) -> dict: + def _get_features(self, batch) -> (dict, Table): features = {} waveforms = [] for file_idx, img_idx, tel_type_id, tel_id in zip( - file_idxs, img_idxs, tel_type_ids, tel_ids + batch["file_index"], + batch["img_index"], + batch["tel_type_id"], + batch["tel_id"], ): filename = list(self.files)[file_idx] with lock: @@ -1203,7 +1196,7 @@ def _get_features(self, file_idxs, img_idxs, tel_type_ids, tel_ids) -> dict: else: waveforms.append(unmapped_waveform) features["waveforms"] = np.array(waveforms) - return features + return features, batch class DLTriggerReader(DLMonoReader): @@ -1219,6 +1212,11 @@ def __init__( # Set data loading mode to mono self.mode = "mono" + # AI-based trigger system settings + self.trigger_settings = trigger_settings + self.include_nsb_patches = self.trigger_settings["include_nsb_patches"] + self.get_trigger_patch_from = self.trigger_settings["get_patch_from"] + DLMonoReader.__init__( self, file_list=file_list, @@ -1228,9 +1226,50 @@ def __init__( ) # AI-based trigger system - self.trigger_settings = trigger_settings - self.include_nsb_patches = self.trigger_settings["include_nsb_patches"] - self.get_trigger_patch_from = self.trigger_settings["get_patch_from"] + # Obtain trigger patch info from an external algorithm (i.e. DBScan) + # TODO: Make a better iterface to read the trigger patch info + # Either append the hdf5 file with the trigger patch info or implement + # the DBscan algorithm here in the reader. + if self.get_trigger_patch_from == "file": + trigger_patch_info = [] + for filename in self.files: + try: + # Read csv containing the trigger patch info + import pandas as pd + + trigger_patch_info_csv_file = pd.read_csv( + filename.replace("r0.dl1.h5", "npe.csv") + )[ + [ + "obs_id", + "event_id", + "tel_id", + "trg_pixel_id", + "trg_waveform_sample_id", + ] + ].astype( + int + ) + trigger_patch_info.append( + Table.from_pandas(trigger_patch_info_csv_file) + ) + except: + raise IOError( + f"There is a problem with '{filename.replace('r0.dl1.h5','npe.csv')}'!" + ) + + # Join the events table ith the trigger patch info + self.example_identifiers = join( + left=vstack(trigger_patch_info), + right=self.example_identifiers, + keys=["obs_id", "event_id", "tel_id"], + ) + # Remove non-trigger events from the self.example_identifiers + # identified by negative pixel ids + self.example_identifiers = self.example_identifiers[ + self.example_identifiers["trg_pixel_id"] >= 0 + ] + # Raw waveform (R0) self.waveform_settings = waveform_settings self.waveform_type = waveform_settings["type"] @@ -1307,24 +1346,26 @@ def __init__( [patch["y"] for patch in trigger_settings["patches"][camera_type]] ) - def _get_features( - self, - file_idxs, - img_idxs, - tel_type_ids, - tel_ids, - trg_pixel_ids=None, - trg_waveform_sample_ids=None, - ): + def _get_features(self, batch) -> (dict, Table): features = {} + + # Get the trigger patches from + trg_pixel_id, trg_waveform_sample_id = None, None + if self.get_trigger_patch_from == "file": + trg_pixel_ids = batch["trg_pixel_id"] + trg_waveform_sample_ids = batch["trg_waveform_sample_id"] trigger_patches, true_cherenkov_photons = [], [] random_trigger_patch = False for i, (file_idx, img_idx, tel_type_id, tel_id) in enumerate( - zip(file_idxs, img_idxs, tel_type_ids, tel_ids) + zip( + batch["file_index"], + batch["img_index"], + batch["tel_type_id"], + batch["tel_id"], + ) ): filename = list(self.files)[file_idx] - trg_pixel_id, trg_waveform_sample_id = None, None - if trg_pixel_ids is not None: + if self.get_trigger_patch_from == "file": trg_pixel_id = trg_pixel_ids[i] trg_waveform_sample_id = trg_waveform_sample_ids[i] with lock: @@ -1367,6 +1408,8 @@ def _get_features( if trigger_patch_true_image_sum is not None: true_cherenkov_photons.append(trigger_patch_true_image_sum) features["waveforms"] = np.array(trigger_patches) + # Add the true cherenkov photons to the batch if available + if len(true_cherenkov_photons) > 0: + batch.add_column(true_cherenkov_photons, name="true_cherenkov_photons") - # batch.add_column(true_cherenkov_photons, name="true_cherenkov_photons") - return features, np.array(true_cherenkov_photons) + return features, batch From cdb4674e4c14a39e245e6f2fe382e391b52865b9 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Sun, 11 Aug 2024 12:36:11 +0200 Subject: [PATCH 22/92] remove redundant flip --- dl1_data_handler/reader.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index dbe7330..59bc9c0 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -139,7 +139,6 @@ def get_mapped_triggerpatch( image_mapper, camera_type, true_image=None, - process_type="Simulation", random_trigger_patch=False, trg_pixel_id=None, trg_waveform_sample_id=None, @@ -223,10 +222,6 @@ def get_mapped_triggerpatch( # Map the waveform snapshots through the ImageMapper # and transform to selected returning format mapped_waveform = image_mapper.map_image(vector, camera_type) - if process_type == "Observation" and camera_type == "LSTCam": - mapped_waveform = np.transpose( - np.flip(mapped_waveform, axis=(0, 1)), (1, 0, 2) - ) # x = -y & y = -x trigger_patch_center = {} waveform_shape_x = waveform_settings["shapes"][camera_type][0] @@ -1399,7 +1394,6 @@ def _get_features(self, batch) -> (dict, Table): self.image_mapper, camera_type, true_image, - self.process_type, random_trigger_patch, trg_pixel_id, trg_waveform_sample_id, From 7bacf27d5b69db387374bed286b94cba771ec25b Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Tue, 10 Sep 2024 21:36:09 +0200 Subject: [PATCH 23/92] make image mapper methos as API --- dl1_data_handler/image_mapper.py | 2015 +++++++++++++------------ notebooks/test_image_mapper.ipynb | 2265 ++++++++--------------------- 2 files changed, 1569 insertions(+), 2711 deletions(-) diff --git a/dl1_data_handler/image_mapper.py b/dl1_data_handler/image_mapper.py index a2cb4a1..681e6e9 100644 --- a/dl1_data_handler/image_mapper.py +++ b/dl1_data_handler/image_mapper.py @@ -1,706 +1,949 @@ import numpy as np -import logging -import bisect - from scipy import spatial from scipy.sparse import csr_matrix -from scipy.ndimage import rotate -from astropy import units as u from collections import Counter -logger = logging.getLogger(__name__) - +from ctapipe.instrument.camera import PixelShape +from ctapipe.core import TelescopeComponent +from ctapipe.core.traits import Bool, Int + +__all__ = [ + "ImageMapper", + "AxialMapper", + "BicubicMapper", + "BilinearMapper", + "NearestNeighborMapper", + "OversamplingMapper", + "RebinMapper", + "ShiftingMapper", + "SquareMapper", +] + + +class ImageMapper(TelescopeComponent): + """ + Base component for mapping raw 1D vectors into 2D mapped images. + + This class handles the transformation of raw telescope image or waveform data + into a format suitable for further analysis. It supports various telescope + types and applies necessary scaling and offset adjustments to the image data. + + + Attributes + ---------- + geometry : ctapipe.instrument.CameraGeometry + The geometry of the camera, including pixel positions and camera type. + camera_type : str + The type of the camera, derived from the geometry. + image_shape : int + The shape of the 2D image, based on the camera type. + n_pixels : int + The number of pixels in the camera. + pix_x : numpy.ndarray + The x-coordinates of the pixels rounded to three decimal places. + pix_y : numpy.ndarray + The y-coordinates of the pixels rounded to three decimal places. + x_ticks : list + Unique x-coordinates of the pixels. + y_ticks : list + Unique y-coordinates of the pixels. + internal_pad : int + Padding used to ensure that the camera pixels aren't affected at the edges. + rebinning_mult_factor : int + Multiplication factor used for rebinning. + index_matrix : numpy.ndarray or None + Matrix used for indexing, initialized to None. + + Methods + ------- + map_image(raw_vector) + Transform the raw 1D vector data into the 2D mapped image. + """ -class ImageMapper: def __init__( self, - pixel_positions, - mapping_method=None, - padding=None, - interpolation_image_shape=None, - mask_interpolation=False, + geometry, + config=None, + parent=None, + **kwargs, ): + """ + Parameters + ---------- + config : traitlets.loader.Config + Configuration specified by config file or cmdline arguments. + Used to set traitlet values. + This is mutually exclusive with passing a ``parent``. + parent : ctapipe.core.Component or ctapipe.core.Tool + Parent of this component in the configuration hierarchy, + this is mutually exclusive with passing ``config`` + """ # Default image_shapes should be a non static field to prevent problems # when multiple instances of ImageMapper are created - self.image_shapes = { - "LSTCam": (110, 110, 1), - "LSTSiPMCam": (234, 234, 1), - "FlashCam": (112, 112, 1), - "NectarCam": (110, 110, 1), - "SCTCam": (120, 120, 1), - "DigiCam": (96, 96, 1), - "CHEC": (48, 48, 1), - "ASTRICam": (56, 56, 1), - "VERITAS": (54, 54, 1), - "MAGICCam": (78, 78, 1), - "FACT": (90, 90, 1), - "HESS-I": (72, 72, 1), - "HESS-II": (104, 104, 1), + self.default_image_shapes = { + "LSTCam": 110, + "LSTSiPMCam": 234, + "FlashCam": 112, + "NectarCam": 110, + "SCTCam": 120, + "DigiCam": 96, + "CHEC": 48, + "ASTRICam": 56, + "VERITAS": 54, + "MAGICCam": 78, + "FACT": 92, + "HESS-I": 72, + "HESS-II": 104, } # Camera types - self.camera_types = list(pixel_positions.keys()) - - # Mapping method - if mapping_method is None: - mapping_method = {} - self.mapping_method = { - **{c: "oversampling" for c in self.camera_types}, - **mapping_method, - } + self.geometry = geometry + self.camera_type = self.geometry.name + self.image_shape = self.default_image_shapes[self.camera_type] + self.n_pixels = self.geometry.n_pixels + # Rotate the pixel positions by the pixel to align + self.geometry.rotate(self.geometry.pix_rotation) + + self.pix_x = np.around(self.geometry.pix_x.value, decimals=3) + self.pix_y = np.around(self.geometry.pix_y.value, decimals=3) + + self.x_ticks = np.unique(self.pix_x).tolist() + self.y_ticks = np.unique(self.pix_y).tolist() + + # Additional smooth the ticks for 'DigiCam' and 'CHEC' cameras + if self.camera_type == "DigiCam": + self.pix_y, self.y_ticks = self._smooth_ticks(self.pix_y, self.y_ticks) + if self.camera_type == "CHEC": + self.pix_x, self.x_ticks = self._smooth_ticks(self.pix_x, self.x_ticks) + self.pix_y, self.y_ticks = self._smooth_ticks(self.pix_y, self.y_ticks) + + # At the edges of the cameras the mapping methods run into issues. + # Therefore, we are using a default padding to ensure that the camera pixels aren't affected. + # The default padding is removed after the conversion is finished. + self.internal_pad = 3 + + # Only needed for rebinnig + self.rebinning_mult_factor = 1 + + # Set the indexed matrix to None + self.index_matrix = None + + def map_image(self, raw_vector): + """ + :param raw_vector: a numpy array of values for each pixel, in order of pixel index. + :return: a numpy array of shape [img_width, img_length, N_channels] + """ - # Interpolation image shape - if interpolation_image_shape is None: - interpolation_image_shape = {} - self.interpolation_image_shape = { - **{c: self.image_shapes[c] for c in self.camera_types}, - **interpolation_image_shape, - } + # We reshape each channel and then stack the result + result = [] + for channel in range(raw_vector.shape[1]): + vector = raw_vector[:, channel] + image_2d = (vector.T @ self.mapping_table).reshape( + self.image_shape, self.image_shape, 1 + ) + result.append(image_2d) + telescope_image = np.concatenate(result, axis=-1) + return telescope_image - # Padding - if padding is None: - padding = {} - self.padding = {**{c: 0 for c in self.camera_types}, **padding} - - # Mask interpolation - self.mask = True if mask_interpolation else False - - # Pixel positions, number of pixels, mapping tables and index matrixes initialization - self.pixel_positions = {} - self.num_pixels = {} - self.mapping_tables = {} - self.index_matrixes = {} - for camera_type in self.camera_types: - self.pixel_positions[camera_type] = pixel_positions[camera_type] - self.num_pixels[camera_type] = pixel_positions[camera_type].shape[1] - - map_method = self.mapping_method[camera_type] - if map_method not in [ - "oversampling", - "rebinning", - "nearest_interpolation", - "bilinear_interpolation", - "bicubic_interpolation", - "image_shifting", - "axial_addressing", - "indexed_conv", - ]: - raise ValueError( - "Hex conversion algorithm {} is not implemented.".format(map_method) - ) - elif map_method in [ - "image_shifting", - "axial_addressing", - "indexed_conv", - ] and camera_type in ["ASTRICam", "CHEC", "SCTCam"]: - raise ValueError( - "{} (hexagonal convolution) is not available for square pixel cameras.".format( - map_method - ) - ) + def _get_virtual_pixels(self, x_ticks, y_ticks, pix_x, pix_y): + gridpoints = np.array(np.meshgrid(x_ticks, y_ticks)).T.reshape(-1, 2) + gridpoints = [tuple(l) for l in gridpoints.tolist()] + virtual_pixels = set(gridpoints) - set(zip(pix_x, pix_y)) + virtual_pixels = np.array(list(virtual_pixels)) + return virtual_pixels - if map_method in [ - "rebinning", - "nearest_interpolation", - "bilinear_interpolation", - "bicubic_interpolation", - ]: - self.image_shapes[camera_type] = self.interpolation_image_shape[camera_type] - - # At the edges of the cameras the mapping methods run into issues. - # Therefore, we are using a default padding to ensure that the camera pixels aren't affected. - # The default padding is removed after the conversion is finished. - if map_method in ["image_shifting", "axial_addressing", "indexed_conv"]: - self.default_pad = 0 - elif map_method == "bicubic_interpolation": - self.default_pad = 3 - else: - self.default_pad = 2 - - if map_method != "oversampling" or camera_type in [ - "ASTRICam", - "CHEC", - "SCTCam", - ]: - self.image_shapes[camera_type] = ( - self.image_shapes[camera_type][0] + self.default_pad * 2, - self.image_shapes[camera_type][1] + self.default_pad * 2, - self.image_shapes[camera_type][2], - ) - else: - self.image_shapes[camera_type] = ( - self.image_shapes[camera_type][0] + self.default_pad * 4, - self.image_shapes[camera_type][1] + self.default_pad * 4, - self.image_shapes[camera_type][2], - ) + def _create_virtual_hex_pixels( + self, first_ticks, second_ticks, first_pos, second_pos + ): + dist_first = np.around(abs(first_ticks[0] - first_ticks[1]), decimals=3) + dist_second = np.around(abs(second_ticks[0] - second_ticks[1]), decimals=3) + + tick_diff = len(first_ticks) * 2 - len(second_ticks) + tick_diff_each_side = tick_diff // 2 + # Extend second_ticks + for _ in range(tick_diff_each_side + self.internal_pad * 2): + second_ticks = ( + [np.around(second_ticks[0] - dist_second, decimals=3)] + + second_ticks + + [np.around(second_ticks[-1] + dist_second, decimals=3)] + ) + # Extend first_ticks + for _ in range(self.internal_pad): + first_ticks = ( + [np.around(first_ticks[0] - dist_first, decimals=3)] + + first_ticks + + [np.around(first_ticks[-1] + dist_first, decimals=3)] + ) + # Adjust for odd tick_diff + if tick_diff % 2 != 0: + second_ticks.insert(0, np.around(second_ticks[0] - dist_second, decimals=3)) + + # Create the virtual pixels outside of the camera + virtual_pixels = [] + for i in np.arange(2): + vp1 = self._get_virtual_pixels( + first_ticks[i::2], second_ticks[0::2], first_pos, second_pos + ) + vp2 = self._get_virtual_pixels( + first_ticks[i::2], second_ticks[1::2], first_pos, second_pos + ) + ( + virtual_pixels.append(vp1) + if vp1.shape[0] < vp2.shape[0] + else virtual_pixels.append(vp2) + ) + virtual_pixels = np.concatenate(virtual_pixels) + first_pos = np.concatenate((first_pos, virtual_pixels[:, 0])) + second_pos = np.concatenate((second_pos, virtual_pixels[:, 1])) + + return first_pos, second_pos, dist_first, dist_second + + def _generate_nearestneighbor_table(self, input_grid, output_grid, pixel_weight): + # Finding the nearest point in the hexagonal input grid + # for each point in the square utü grid + tree = spatial.cKDTree(input_grid) + nn_index = np.reshape( + tree.query(output_grid)[1], (self.internal_shape, self.internal_shape) + ) - # Initializing the indexed matrix - self.index_matrixes[camera_type] = None - # Calculating the mapping tables for the selected camera types - self.mapping_tables[camera_type] = self.generate_table(camera_type) + mapping_matrix = np.zeros( + (input_grid.shape[0], self.internal_shape, self.internal_shape), + dtype=np.float32, + ) + for y_grid in np.arange(self.internal_shape): + for x_grid in np.arange(self.internal_shape): + mapping_matrix[nn_index[y_grid][x_grid]][y_grid][x_grid] = pixel_weight + return self._get_sparse_mapping_matrix(mapping_matrix) + + def _get_sparse_mapping_matrix(self, mapping_matrix, normalize=False): + # Cutting the mapping table after n_pixels, since the virtual pixels have intensity zero. + mapping_matrix = mapping_matrix[: self.n_pixels] + # Normalization (approximation) of the mapping table + if normalize: + norm_factor = np.sum(mapping_matrix) / float(self.n_pixels) + mapping_matrix /= norm_factor + # Slice the mapping table to the correct shape + mapping_matrix = mapping_matrix[ + :, + self.internal_pad : self.internal_shape - self.internal_pad, + self.internal_pad : self.internal_shape - self.internal_pad, + ] + # Applying a flip to all mapping tables so that the image indexing starts from the top left corner + mapping_matrix = np.flip(mapping_matrix, axis=1) + # Reshape and convert to sparse matrix + sparse_mapping_matrix = csr_matrix( + mapping_matrix.reshape( + mapping_matrix.shape[0], self.image_shape * self.image_shape + ), + dtype=np.float32, + ) + return sparse_mapping_matrix - def map_image(self, pixels, camera_type): + def _get_weights(self, p, target): """ - :param pixels: a numpy array of values for each pixel, in order of pixel index. - :param camera_type: a string specifying the telescope type. - :return: a numpy array of shape [img_width, img_length, N_channels] + Calculate barycentric weights for multiple triangles and target points. - Usage: + :param p: a numpy array of shape (i, 3, 2) for three points (one triangle). The index i means that one can calculate the weights for multiple triangles with one function call. + :param target: a numpy array of shape (i, 2) for one target 2D point. + :return: a numpy array of shape (i, 3) containing the three weights. + """ + x1, y1 = p[:, 0, 0], p[:, 0, 1] + x2, y2 = p[:, 1, 0], p[:, 1, 1] + x3, y3 = p[:, 2, 0], p[:, 2, 1] + xt, yt = target[:, 0], target[:, 1] - >>> IM = dl1_data_handler.image_mapper.ImageMapper(camera_types=['LSTCam']) - >>> one_channel = np.expand_dims(np.arange(1855), axis=1) - >>> # Use the ImageMapper with one channel (charge or peak position): - >>> image = IM.map_image(one_channel, 'LSTCam') - >>> # Use the ImageMapper with two channels (charge and peak position): - >>> two_channels = np.concatenate((one_channel, one_channel[::-1]),axis=1) - >>> images = IM.map_image(two_channels, 'LSTCam') + divisor = (y2 - y3) * (x1 - x3) + (x3 - x2) * (y1 - y3) + w1 = ((y2 - y3) * (xt - x3) + (x3 - x2) * (yt - y3)) / divisor + w2 = ((y3 - y1) * (xt - x3) + (x1 - x3) * (yt - y3)) / divisor + w3 = 1 - w1 - w2 + + weights = np.stack((w1, w2, w3), axis=-1) + return weights.astype(np.float32) + + def _get_grids_for_interpolation( + self, + ): + """ + :return: two 2D numpy arrays (hexagonal input grid and squared output grid) """ - # Get relevant parameters - map_tab = self.mapping_tables[camera_type] - n_channels = pixels.shape[1] - if n_channels != self.image_shapes[camera_type][2]: - self.image_shapes[camera_type] = ( - self.image_shapes[camera_type][0], - self.image_shapes[camera_type][1], - n_channels, # number of channels - ) + # Check orientation of the hexagonal pixels + first_ticks, first_pos, second_ticks, second_pos = ( + (self.x_ticks, self.pix_x, self.y_ticks, self.pix_y) + if len(self.x_ticks) < len(self.y_ticks) + else (self.y_ticks, self.pix_y, self.x_ticks, self.pix_x) + ) + # Create the virtual pixels outside of the camera with hexagonal pixels + ( + first_pos, + second_pos, + dist_first, + dist_second, + ) = self._create_virtual_hex_pixels( + first_ticks, second_ticks, first_pos, second_pos + ) + # Create the input grid + input_grid = ( + np.column_stack([first_pos, second_pos]) + if len(self.x_ticks) < len(self.y_ticks) + else np.column_stack([second_pos, first_pos]) + ) + # Create the square grid + grid_first = np.linspace( + np.min(first_pos), + np.max(first_pos), + num=self.internal_shape * self.rebinning_mult_factor, + endpoint=True, + ) + grid_second = np.linspace( + np.min(second_pos), + np.max(second_pos), + num=self.internal_shape * self.rebinning_mult_factor, + endpoint=True, + ) + if len(self.x_ticks) < len(self.y_ticks): + x_grid, y_grid = np.meshgrid(grid_first, grid_second) + else: + x_grid, y_grid = np.meshgrid(grid_second, grid_first) + output_grid = np.column_stack([x_grid.ravel(), y_grid.ravel()]) + return input_grid, output_grid + + def _smooth_ticks(self, pix_pos, ticks): + remove_val, change_val = [], [] + for i in range(len(ticks) - 1): + if abs(ticks[i] - ticks[i + 1]) <= 0.002: + remove_val.append(ticks[i]) + change_val.append(ticks[i + 1]) + + ticks = [tick for tick in ticks if tick not in remove_val] + pix_pos = [ + change_val[remove_val.index(pos)] if pos in remove_val else pos + for pos in pix_pos + ] + return pix_pos, ticks + + +class SquareMapper(ImageMapper): + def __init__( + self, + geometry, + config=None, + parent=None, + **kwargs, + ): + super().__init__( + geometry=geometry, + config=config, + parent=parent, + **kwargs, + ) - # We reshape each channel and then stack the result - result = [] - for channel in range(n_channels): - vector = pixels[:, channel] - image_2d = (vector.T @ map_tab).reshape( - self.image_shapes[camera_type][0], self.image_shapes[camera_type][1], 1 + if geometry.pix_type != PixelShape.SQUARE: + raise ValueError( + "SquareMapper is only available for square pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) - result.append(image_2d) - telescope_image = np.concatenate(result, axis=-1) - return telescope_image - def get_indexmatrix(self, camera_type): + # Set shape and padding for the square camera + self.internal_pad = 0 + self.internal_shape = self.image_shape + + # Create square grid + input_grid, output_grid = self._get_square_grid() + # Calculate the mapping table + self.mapping_table = super()._generate_nearestneighbor_table( + input_grid, output_grid, pixel_weight=1.0 + ) + + def _get_square_grid( + self, + ): """ - :param camera_type: a string specifying the telescope type. - :return: a 2D numpy array [img_width,img_length] + :return: two 2D numpy arrays (input grid and squared output grid) """ - # Check if axial addressing is selected in the image_mapper - if self.index_matrixes[camera_type] is None: + # Create the virtual pixels outside of the camera with square pixels + virtual_pixels = super()._get_virtual_pixels( + self.x_ticks, self.y_ticks, self.pix_x, self.pix_y + ) + pix_x = np.concatenate((self.pix_x, virtual_pixels[:, 0])) + pix_y = np.concatenate((self.pix_y, virtual_pixels[:, 1])) + # Stack the pixel positions to create the input grid and set output grid + input_grid = np.column_stack([pix_x, pix_y]) + # Create the squared output grid + x_grid = np.linspace( + np.min(pix_x), np.max(pix_x), num=self.image_shape, endpoint=True + ) + y_grid = np.linspace( + np.min(pix_y), np.max(pix_y), num=self.image_shape, endpoint=True + ) + x_grid, y_grid = np.meshgrid(x_grid, y_grid) + output_grid = np.column_stack([x_grid.ravel(), y_grid.ravel()]) + return input_grid, output_grid + + +class AxialMapper(ImageMapper): + set_index_matrix = Bool( + default_value=False, + help=( + "Whether to calculate and store the index matrix or not. " + "For the 'IndexedConv' package, the index matrix is needed " + "and the DLDataReader will return an unmapped image." + ), + ).tag(config=True) + + def __init__( + self, + geometry, + config=None, + parent=None, + **kwargs, + ): + super().__init__( + geometry=geometry, + config=config, + parent=parent, + **kwargs, + ) + + if geometry.pix_type != PixelShape.HEXAGON: raise ValueError( - "The function get_indexmatrix() can only be called, when 'indexed_conv' is selected in the ImageMapper." + "AxialMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) - # Return the index matrix, which has been calculated in 'generate_table()' - return self.index_matrixes[camera_type] - - def generate_table(self, camera_type): - # Get relevant parameters - output_dim = self.image_shapes[camera_type][0] - num_pixels = self.num_pixels[camera_type] - # Get telescope pixel positions and padding for the given tel type - pos = self.pixel_positions[camera_type] - pad = self.padding[camera_type] - default_pad = self.default_pad - map_method = self.mapping_method[camera_type] - # Creating the hexagonal and the output grid for the conversion methods. - grid_size_factor = 1 - if map_method == "rebinning": - grid_size_factor = 10 - hex_grid, table_grid = self.get_grids(pos, camera_type, grid_size_factor) - # Updating output_dim, since it could be modified in self.get_grid() - output_dim = self.image_shapes[camera_type][0] - - # Oversampling and nearest interpolation - if map_method in [ - "oversampling", - "nearest_interpolation", - "image_shifting", - "axial_addressing", - "indexed_conv", - ]: - # Finding the nearest point in the hexagonal grid for each point in the square grid - tree = spatial.cKDTree(hex_grid) - nn_index = np.reshape(tree.query(table_grid)[1], (output_dim, output_dim)) - # Store the nn_index array in the index_matrix. Replace virtual pixel indexes with -1. - if map_method == "indexed_conv": - index_matrix = nn_index - index_matrix[index_matrix >= num_pixels] = -1 - index_matrix = np.flip(index_matrix, axis=0) - self.index_matrixes[camera_type] = index_matrix - if map_method == "oversampling" and camera_type not in [ - "ASTRICam", - "CHEC", - "SCTCam", - ]: - pixel_weight = 1 / 4 - else: - pixel_weight = 1 - mapping_matrix3d = np.zeros( - (hex_grid.shape[0], output_dim + pad * 2, output_dim + pad * 2), - dtype=np.float32, - ) - for y_grid in np.arange(output_dim): - for x_grid in np.arange(output_dim): - mapping_matrix3d[nn_index[y_grid][x_grid]][y_grid + pad][ - x_grid + pad - ] = pixel_weight - - # Rebinning (approximation) - elif map_method == "rebinning": - # Finding the nearest point in the hexagonal grid for each point in the square grid - tree = spatial.cKDTree(hex_grid) + ( + input_grid, + output_grid, + ) = self._get_grids() + # Set shape and padding for the axial addressing method + self.internal_pad = 0 + self.internal_shape = self.image_shape + # Calculate the mapping table + self.mapping_table = super()._generate_nearestneighbor_table( + input_grid, output_grid, pixel_weight=1.0 + ) + # Calculate and store the index matrix for the 'IndexedConv' package + if self.set_index_matrix: + tree = spatial.cKDTree(input_grid) nn_index = np.reshape( - tree.query(table_grid)[1], - (output_dim * grid_size_factor, output_dim * grid_size_factor), + tree.query(output_grid)[1], (self.internal_shape, self.internal_shape) ) + nn_index[nn_index >= self.n_pixels] = -1 + self.index_matrix = np.flip(nn_index, axis=0) + + def _get_grids( + self, + ): + """ + :param pos: a 2D numpy array of pixel positions, which were taken from the CTApipe. + :param camera_type: a string specifying the camera type + :param grid_size_factor: a number specifying the grid size of the output grid. Only if 'rebinning' is selected, this factor differs from 1. + :return: two 2D numpy arrays (hexagonal grid and squared output grid) + """ + + # Check orientation of the hexagonal pixels + first_ticks, first_pos, second_ticks, second_pos = ( + (self.x_ticks, self.pix_x, self.y_ticks, self.pix_y) + if len(self.x_ticks) < len(self.y_ticks) + else (self.y_ticks, self.pix_y, self.x_ticks, self.pix_x) + ) + + dist_first = np.around(abs(first_ticks[0] - first_ticks[1]), decimals=3) + dist_second = np.around(abs(second_ticks[0] - second_ticks[1]), decimals=3) + + # manipulate y ticks with extra ticks + num_extra_ticks = len(self.y_ticks) + for i in np.arange(num_extra_ticks): + second_ticks.append(np.around(second_ticks[-1] + dist_second, decimals=3)) + first_ticks = reversed(first_ticks) + for shift, ticks in enumerate(first_ticks): + for i in np.arange(len(second_pos)): + if first_pos[i] == ticks and second_pos[i] in second_ticks: + second_pos[i] = second_ticks[ + second_ticks.index(second_pos[i]) + shift + ] + + grid_first = np.unique(first_pos).tolist() + grid_second = np.unique(second_pos).tolist() + + # Squaring the output image if grid axes have not the same length. + if len(grid_first) > len(grid_second): + for i in np.arange(len(grid_first) - len(grid_second)): + grid_second.append(np.around(grid_second[-1] + dist_second, decimals=3)) + elif len(grid_first) < len(grid_second): + for i in np.arange(len(grid_second) - len(grid_first)): + grid_first.append(np.around(grid_first[-1] + dist_first, decimals=3)) + + # Overwrite image_shape with the new shape of axial addressing + self.image_shape = len(grid_first) + + # Create the virtual pixels outside of the camera. + # This can not be done with general super()._create_virtual_hex_pixels() method + # because for axial addressing the image is tilted and we need add extra ticks + # to one axis (y-axis). + virtual_pixels = super()._get_virtual_pixels( + grid_first, grid_second, first_pos, second_pos + ) - # Calculating the overlapping area/weights for each square pixel - mapping_matrix3d = np.zeros( - (hex_grid.shape[0], output_dim + pad * 2, output_dim + pad * 2), - dtype=np.float32, + first_pos = np.concatenate((first_pos, np.array(virtual_pixels[:, 0]))) + second_pos = np.concatenate((second_pos, np.array(virtual_pixels[:, 1]))) + + if len(self.x_ticks) < len(self.y_ticks): + input_grid = np.column_stack([first_pos, second_pos]) + x_grid, y_grid = np.meshgrid(grid_first, grid_second) + else: + input_grid = np.column_stack([second_pos, first_pos]) + x_grid, y_grid = np.meshgrid(grid_second, grid_first) + output_grid = np.column_stack([x_grid.ravel(), y_grid.ravel()]) + + return input_grid, output_grid + + +class ShiftingMapper(ImageMapper): + def __init__( + self, + geometry, + config=None, + parent=None, + **kwargs, + ): + super().__init__( + geometry=geometry, + config=config, + parent=parent, + **kwargs, + ) + + if geometry.pix_type != PixelShape.HEXAGON: + raise ValueError( + "ShiftingMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) - for y_grid in np.arange(0, output_dim * grid_size_factor, grid_size_factor): - for x_grid in np.arange( - 0, output_dim * grid_size_factor, grid_size_factor - ): - counter = Counter( - np.reshape( - nn_index[ - y_grid : y_grid + grid_size_factor, - x_grid : x_grid + grid_size_factor, - ], - -1, - ) - ) - pixel_index = np.array(list(counter.keys())) - weights = list(counter.values()) / np.sum(list(counter.values())) - for key in np.arange(len(pixel_index)): - mapping_matrix3d[pixel_index[key]][ - int(y_grid / grid_size_factor) + pad - ][int(x_grid / grid_size_factor) + pad] = weights[key] - - # Bilinear interpolation - elif map_method == "bilinear_interpolation": - # Finding the nearest point in the hexagonal grid for each point in the square grid - tree = spatial.cKDTree(hex_grid) - nn_index = np.reshape(tree.query(table_grid)[1], (output_dim, output_dim)) - - if camera_type in ["ASTRICam", "CHEC", "SCTCam"]: - hex_grid_transpose = hex_grid.T - x_ticks = np.unique(hex_grid_transpose[0]).tolist() - y_ticks = np.unique(hex_grid_transpose[1]).tolist() - - dict_hex_grid = {tuple(coord): i for i, coord in enumerate(hex_grid)} - - dict_corner_indexes = {} - dict_corner_points = {} - for i, x_val in enumerate(x_ticks): - for j, y_val in enumerate(y_ticks): - if i == len(x_ticks) - 1 and j < len(y_ticks) - 1: - square_points = [[x_ticks[i - 1], y_val]] - square_points.append([x_ticks[i - 1], y_ticks[j + 1]]) - square_points.append([x_val, y_val]) - square_points.append([x_val, y_ticks[j + 1]]) - elif j == len(y_ticks) - 1 and i < len(x_ticks) - 1: - square_points = [[x_val, y_ticks[j - 1]]] - square_points.append([x_val, y_val]) - square_points.append([x_ticks[i + 1], y_ticks[j - 1]]) - square_points.append([x_ticks[i + 1], y_val]) - elif i == len(x_ticks) - 1 and j == len(y_ticks) - 1: - square_points = [[x_ticks[i - 1], y_ticks[j - 1]]] - square_points.append([x_ticks[i - 1], y_val]) - square_points.append([x_val, y_ticks[j - 1]]) - square_points.append([x_val, y_val]) - else: - square_points = [[x_val, y_val]] - square_points.append([x_val, y_ticks[j + 1]]) - square_points.append([x_ticks[i + 1], y_val]) - square_points.append([x_ticks[i + 1], y_ticks[j + 1]]) - - square_points = np.array(square_points) - square_indexes = [] - for k in np.arange(square_points.shape[0]): - square_indexes.append( - dict_hex_grid[ - (square_points[k][0], square_points[k][1]) - ] - ) - square_indexes = np.array(square_indexes) - dict_corner_points[(i, j)] = square_points - dict_corner_indexes[(i, j)] = square_indexes - - corner_points = [] - corner_indexes = [] # index in hexgrid - for i in np.arange(table_grid.shape[0]): - x_index = bisect.bisect_left(x_ticks, table_grid[i][0]) - y_index = bisect.bisect_left(y_ticks, table_grid[i][1]) - if x_index != 0: - x_index = x_index - 1 - if y_index != 0: - y_index = y_index - 1 - - corner_points.append(dict_corner_points[(x_index, y_index)]) - corner_indexes.append(dict_corner_indexes[(x_index, y_index)]) - - corner_points = np.array(corner_points) - corner_indexes = np.array(corner_indexes) + self.internal_pad = 0 + # Creating the hexagonal and the output grid for the conversion methods. + input_grid, output_grid = self._get_grids() + # Set shape for the axial addressing method + self.internal_shape = self.image_shape + # Calculate the mapping table + self.mapping_table = super()._generate_nearestneighbor_table( + input_grid, output_grid, pixel_weight=1.0 + ) - else: - # Drawing Delaunay triangulation on the hex grid - tri = spatial.Delaunay(hex_grid) + def _get_grids( + self, + ): + """ + :param pos: a 2D numpy array of pixel positions, which were taken from the CTApipe. + :param camera_type: a string specifying the camera type + :param grid_size_factor: a number specifying the grid size of the output grid. Only if 'rebinning' is selected, this factor differs from 1. + :return: two 2D numpy arrays (hexagonal grid and squared output grid) + """ + + # Check orientation of the hexagonal pixels + first_ticks, first_pos, second_ticks, second_pos = ( + (self.x_ticks, self.pix_x, self.y_ticks, self.pix_y) + if len(self.x_ticks) < len(self.y_ticks) + else (self.y_ticks, self.pix_y, self.x_ticks, self.pix_x) + ) + # Create the virtual pixels outside of the camera with hexagonal pixels + ( + first_pos, + second_pos, + dist_first, + dist_second, + ) = super()._create_virtual_hex_pixels( + first_ticks, second_ticks, first_pos, second_pos + ) + # Get the number of extra ticks + tick_diff = len(first_ticks) * 2 - len(second_ticks) + tick_diff_each_side = tick_diff // 2 + # Extend second_ticks on both sides + for _ in np.arange(tick_diff_each_side): + second_ticks.append(np.around(second_ticks[-1] + dist_second, decimals=3)) + second_ticks.insert(0, np.around(second_ticks[0] - dist_second, decimals=3)) + # If tick_diff is odd, add one more tick to the beginning + if tick_diff % 2 != 0: + second_ticks.insert(0, np.around(second_ticks[0] - dist_second, decimals=3)) + # Create the input and output grid + for i in np.arange(len(second_pos)): + if second_pos[i] in second_ticks[::2]: + second_pos[i] = second_ticks[second_ticks.index(second_pos[i]) + 1] + grid_first = np.unique(first_pos).tolist() + # Overwrite image_shape with the new shape of axial addressing + self.image_shape = len(grid_first) + grid_second = np.unique(second_pos).tolist() + if len(self.x_ticks) < len(self.y_ticks): + input_grid = np.column_stack([first_pos, second_pos]) + x_grid, y_grid = np.meshgrid(grid_first, grid_second) + else: + input_grid = np.column_stack([second_pos, first_pos]) + x_grid, y_grid = np.meshgrid(grid_second, grid_first) + output_grid = np.column_stack([x_grid.ravel(), y_grid.ravel()]) + return input_grid, output_grid - corner_indexes = tri.simplices[tri.find_simplex(table_grid)] - corner_points = hex_grid[corner_indexes] - weights = self.get_weights(corner_points, table_grid) - weights = np.reshape(weights, (output_dim, output_dim, weights.shape[1])) - corner_indexes = np.reshape( - corner_indexes, (output_dim, output_dim, corner_indexes.shape[1]) +class OversamplingMapper(ImageMapper): + def __init__( + self, + geometry, + config=None, + parent=None, + **kwargs, + ): + super().__init__( + geometry=geometry, + config=config, + parent=parent, + **kwargs, + ) + + if geometry.pix_type != PixelShape.HEXAGON: + raise ValueError( + "OversamplingMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) + self.internal_pad = 0 + self.internal_shape = self.image_shape + # Creating the hexagonal and the output grid for the conversion methods. + input_grid, output_grid = self._get_grids() + # Calculate the mapping table + self.mapping_table = super()._generate_nearestneighbor_table( + input_grid, output_grid, pixel_weight=0.25 + ) + + def _get_grids( + self, + ): + """ + :param pos: a 2D numpy array of pixel positions, which were taken from the CTApipe. + :param camera_type: a string specifying the camera type + :param grid_size_factor: a number specifying the grid size of the output grid. Only if 'rebinning' is selected, this factor differs from 1. + :return: two 2D numpy arrays (hexagonal grid and squared output grid) + """ + + # Check orientation of the hexagonal pixels + first_ticks, first_pos, second_ticks, second_pos = ( + (self.x_ticks, self.pix_x, self.y_ticks, self.pix_y) + if len(self.x_ticks) < len(self.y_ticks) + else (self.y_ticks, self.pix_y, self.x_ticks, self.pix_x) + ) + # Create the virtual pixels outside of the camera with hexagonal pixels + ( + first_pos, + second_pos, + dist_first, + dist_second, + ) = super()._create_virtual_hex_pixels( + first_ticks, second_ticks, first_pos, second_pos + ) - mapping_matrix3d = np.zeros( - (hex_grid.shape[0], output_dim + pad * 2, output_dim + pad * 2), - dtype=np.float32, + # Create the output grid + grid_first = [] + for i in first_ticks: + grid_first.append(i - dist_first / 4.0) + grid_first.append(i + dist_first / 4.0) + grid_second = [second_ticks[0] - dist_second / 2.0] + for j in second_ticks: + grid_second.append(j + dist_second / 2.0) + + tick_diff = (len(grid_first) - len(grid_second)) // 2 + # Extend second_ticks + for _ in range(tick_diff): + grid_second = ( + [np.around(grid_second[0] - dist_second, decimals=3)] + + grid_second + + [np.around(grid_second[-1] + dist_second, decimals=3)] ) - for i in np.arange(output_dim): - for j in np.arange(output_dim): - for k in np.arange(corner_indexes.shape[2]): - mapping_matrix3d[corner_indexes[j][i][k]][j + pad][ - i + pad - ] = weights[j][i][k] - - # Bicubic interpolation - elif map_method == "bicubic_interpolation": - # Finding the nearest point in the hexagonal grid for each point in the square grid - tree = spatial.cKDTree(hex_grid) - nn_index = np.reshape(tree.query(table_grid)[1], (output_dim, output_dim)) - - if camera_type in ["ASTRICam", "CHEC", "SCTCam"]: - # Drawing four bigger squares (*,+,-,~) around the target point (.) - # and then calculate the weights. - # - # +____~____+____~ - # | | | | - # *____-____*____- - # | | . | | - # +____~____+____~ - # | | | | - # *____-____*____- - # - hex_grid_transpose = hex_grid.T - x_ticks = np.unique(hex_grid_transpose[0]).tolist() - y_ticks = np.unique(hex_grid_transpose[1]).tolist() - dict_hex_grid = {tuple(coord): i for i, coord in enumerate(hex_grid)} - - dict_corner_indexes = {} - dict_corner_points = {} - invalid_x_val = x_ticks[0] - 1 - invalid_y_val = y_ticks[0] - 1 - for i, x_val in enumerate(x_ticks): - for j, y_val in enumerate(y_ticks): - square_points = [] - if ( - i == 0 - or j == 0 - or i >= len(x_ticks) - 2 - or j >= len(y_ticks) - 2 - ): - for k in np.arange(16): - square_points.append([invalid_x_val, invalid_y_val]) - else: - # The square marked as '*' in the drawing above. - square_points.append([x_ticks[i - 1], y_ticks[j - 1]]) - square_points.append([x_ticks[i - 1], y_ticks[j + 1]]) - square_points.append([x_ticks[i + 1], y_ticks[j - 1]]) - square_points.append([x_ticks[i + 1], y_ticks[j + 1]]) - # The square marked as '+' in the drawing above. - square_points.append([x_ticks[i - 1], y_val]) - square_points.append([x_ticks[i - 1], y_ticks[j + 2]]) - square_points.append([x_ticks[i + 1], y_val]) - square_points.append([x_ticks[i + 1], y_ticks[j + 2]]) - # The square marked as '-' in the drawing above. - square_points.append([x_val, y_ticks[j - 1]]) - square_points.append([x_val, y_ticks[j + 1]]) - square_points.append([x_ticks[i + 2], y_ticks[j - 1]]) - square_points.append([x_ticks[i + 2], y_ticks[j + 1]]) - # The square marked as '~' in the drawing above. - square_points.append([x_val, y_val]) - square_points.append([x_val, y_ticks[j + 2]]) - square_points.append([x_ticks[i + 2], y_val]) - square_points.append([x_ticks[i + 2], y_ticks[j + 2]]) - - square_points = np.array(square_points) - square_indexes = [] - for k in np.arange(square_points.shape[0]): - if square_points[k][0] == invalid_x_val: - square_indexes.append(-1) - else: - square_indexes.append( - dict_hex_grid[ - (square_points[k][0], square_points[k][1]) - ] - ) - square_indexes = np.array(square_indexes) - # reshape square_points and square_indexes - square_indexes = np.reshape(square_indexes, (4, 4)) - square_points = np.reshape( - square_points, (4, 4, square_points.shape[1]) - ) + # Adjust for odd tick_diff + # TODO: Check why MAGICCam and VERITAS do not need this adjustment + if tick_diff % 2 != 0 and self.camera_type not in ["MAGICCam", "VERITAS"]: + grid_second.insert(0, np.around(grid_second[0] - dist_second, decimals=3)) + + if len(self.x_ticks) < len(self.y_ticks): + input_grid = np.column_stack([first_pos, second_pos]) + x_grid, y_grid = np.meshgrid(grid_first, grid_second) + else: + input_grid = np.column_stack([second_pos, first_pos]) + x_grid, y_grid = np.meshgrid(grid_second, grid_first) + output_grid = np.column_stack([x_grid.ravel(), y_grid.ravel()]) - dict_corner_points[(i, j)] = square_points - dict_corner_indexes[(i, j)] = square_indexes - - weights = [] - corner_indexes = [] # index in hexgrid - for i in np.arange(table_grid.shape[0]): - x_index = bisect.bisect_left(x_ticks, table_grid[i][0]) - y_index = bisect.bisect_left(y_ticks, table_grid[i][1]) - if x_index != 0: - x_index = x_index - 1 - if y_index != 0: - y_index = y_index - 1 - - corner_points = dict_corner_points[(x_index, y_index)] - target = table_grid[i] - target = np.expand_dims(target, axis=0) - weights_temp = [] - for j in np.arange(0, corner_points.shape[0], 1): - if corner_points[j][0][0] == invalid_x_val: - w = np.array([0, 0, 0, 0]) - else: - cp = np.expand_dims(corner_points[j], axis=0) - w = self.get_weights(cp, target) - w = np.squeeze(w, axis=0) - weights_temp.append(w) - - weights_temp = np.array(weights_temp) - weights.append(weights_temp) - corner_indexes.append(dict_corner_indexes[(x_index, y_index)]) - - weights = np.array(weights) - corner_indexes = np.array(corner_indexes) - weights = np.reshape( - weights, - (output_dim, output_dim, weights.shape[1], weights.shape[2]), - ) - corner_indexes = np.reshape( - corner_indexes, - ( - output_dim, - output_dim, - corner_indexes.shape[1], - corner_indexes.shape[2], - ), - ) + return input_grid, output_grid - else: - # - # /\ /\ - # / \ / \ - # / \ / \ - # / 2NN \ / 2NN \ - # /________\/________\ - # /\ /\ /\ - # / \ NN / \ NN / \ - # / \ / \ / \ - # / 2NN \ / . \ / 2NN \ - # /________\/________\/________\ - # /\ /\ - # / \ NN / \ - # / \ / \ - # / 2NN \ / 2NN \ - # /________\/________\ - # - - tri = spatial.Delaunay(hex_grid) - - # Get all relevant simplex indices - simplex_index = tri.find_simplex(table_grid) - simplex_index_NN = tri.neighbors[simplex_index] - simplex_index_2NN = tri.neighbors[simplex_index_NN] - - table_simplex = tri.simplices[simplex_index] - table_simplex_points = hex_grid[table_simplex] - - # NN - weights_NN = [] - simplexes_NN = [] - for i in np.arange(simplex_index.shape[0]): - if -1 in simplex_index_NN[i] or all( - ind >= num_pixels for ind in table_simplex[i] - ): - w = np.array([0, 0, 0]) - weights_NN.append(w) - corner_simplexes_2NN = np.array([-1, -1, -1]) - simplexes_NN.append(corner_simplexes_2NN) - else: - corner_points_NN, corner_simplexes_NN = self.get_triangle( - tri, hex_grid, simplex_index_NN[i], table_simplex[i] - ) - target = table_grid[i] - target = np.expand_dims(target, axis=0) - w = self.get_weights(corner_points_NN, target) - w = np.squeeze(w, axis=0) - weights_NN.append(w) - simplexes_NN.append(corner_simplexes_NN) - - weights_NN = np.array(weights_NN) - simplexes_NN = np.array(simplexes_NN) - - # 2NN - weights_2NN = [] - simplexes_2NN = [] - for i in np.arange(3): - weights = [] - simplexes = [] - for j in np.arange(simplex_index.shape[0]): - table_simplex_NN = tri.simplices[simplex_index_NN[j][i]] - if ( - -1 in simplex_index_2NN[j][i] - or -1 in simplex_index_NN[j] - or all(ind >= num_pixels for ind in table_simplex_NN) - ): - w = np.array([0, 0, 0]) - weights.append(w) - corner_simplexes_2NN = np.array([-1, -1, -1]) - simplexes.append(corner_simplexes_2NN) - else: - corner_points_2NN, corner_simplexes_2NN = self.get_triangle( - tri, hex_grid, simplex_index_2NN[j][i], table_simplex_NN - ) - target = table_grid[j] - target = np.expand_dims(target, axis=0) - w = self.get_weights(corner_points_2NN, target) - w = np.squeeze(w, axis=0) - weights.append(w) - simplexes.append(corner_simplexes_2NN) - - weights = np.array(weights) - simplexes = np.array(simplexes) - weights_2NN.append(weights) - simplexes_2NN.append(simplexes) - - weights_2NN.append(weights_NN) - simplexes_2NN.append(simplexes_NN) - weights_2NN = np.array(weights_2NN) - simplexes_2NN = np.array(simplexes_2NN) - weights = np.reshape( - weights_2NN, - ( - weights_2NN.shape[0], - output_dim, - output_dim, - weights_2NN.shape[2], - ), - ) - corner_indexes = np.reshape( - simplexes_2NN, - ( - simplexes_2NN.shape[0], - output_dim, - output_dim, - simplexes_2NN.shape[2], - ), - ) - mapping_matrix3d = np.zeros( - (hex_grid.shape[0], output_dim + pad * 2, output_dim + pad * 2), - dtype=np.float32, +class NearestNeighborMapper(ImageMapper): + interpolation_image_shape = Int( + default_value=None, + allow_none=True, + help=( + "Integer to overwrite the default shape of the resulting mapped image." + "Only available for interpolation and rebinning methods." + ), + ).tag(config=True) + + def __init__( + self, + geometry, + config=None, + parent=None, + **kwargs, + ): + super().__init__( + geometry=geometry, + config=config, + parent=parent, + **kwargs, + ) + + if geometry.pix_type != PixelShape.HEXAGON: + raise ValueError( + "NearestNeighborMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) - for i in np.arange(4): - for j in np.arange(output_dim): - for k in np.arange(output_dim): - for l in np.arange(weights.shape[3]): - if weights.shape[3] == 3: - mapping_matrix3d[corner_indexes[i][k][j][l]][k + pad][ - j + pad - ] = (weights[i][k][j][l] / 4) - elif weights.shape[3] == 4: - mapping_matrix3d[corner_indexes[k][j][i][l]][k + pad][ - j + pad - ] = (weights[k][j][i][l] / 4) - - # Cutting the mapping table after num_pixels, since the virtual pixels have intensity zero. - mapping_matrix3d = mapping_matrix3d[:num_pixels] - # Mask interpolation - if self.mask and map_method in [ - "bilinear_interpolation", - "bicubic_interpolation", - ]: - mapping_matrix3d = self.apply_mask_interpolation( - mapping_matrix3d, nn_index, num_pixels, pad + + self.internal_pad = 3 + if self.interpolation_image_shape is not None: + self.image_shape = self.interpolation_image_shape + self.internal_shape = self.image_shape + self.internal_pad * 2 + # Creating the hexagonal and the output grid for the conversion methods. + input_grid, output_grid = super()._get_grids_for_interpolation() + # Calculate the mapping table + self.mapping_table = super()._generate_nearestneighbor_table( + input_grid, output_grid, pixel_weight=1.0 + ) + + +class BilinearMapper(ImageMapper): + interpolation_image_shape = Int( + default_value=None, + allow_none=True, + help=( + "Integer to overwrite the default shape of the resulting mapped image." + "Only available for interpolation and rebinning methods." + ), + ).tag(config=True) + + def __init__( + self, + geometry, + config=None, + parent=None, + **kwargs, + ): + super().__init__( + geometry=geometry, + config=config, + parent=parent, + **kwargs, + ) + + if geometry.pix_type != PixelShape.HEXAGON: + raise ValueError( + "BilinearMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) - # Normalization (approximation) of the mapping table - if map_method in [ - "rebinning", - "nearest_interpolation", - "bilinear_interpolation", - "bicubic_interpolation", - ]: - mapping_matrix3d = self.normalize_mapping_matrix( - mapping_matrix3d, num_pixels + self.internal_pad = 3 + if self.interpolation_image_shape is not None: + self.image_shape = self.interpolation_image_shape + self.internal_shape = self.image_shape + self.internal_pad * 2 + # Creating the hexagonal and the output grid for the conversion methods. + input_grid, output_grid = super()._get_grids_for_interpolation() + # Calculate the mapping table + self.mapping_table = self._generate_table(input_grid, output_grid) + + def _generate_table(self, input_grid, output_grid): + # Drawing Delaunay triangulation on the hex grid + tri = spatial.Delaunay(input_grid) + corner_indexes = tri.simplices[tri.find_simplex(output_grid)] + corner_points = input_grid[corner_indexes] + weights = super()._get_weights(corner_points, output_grid) + weights = weights.reshape(self.internal_shape, self.internal_shape, -1) + corner_indexes = corner_indexes.reshape( + self.internal_shape, self.internal_shape, -1 + ) + # Construct the mapping matrix from the calculated weights + mapping_matrix = np.zeros( + (input_grid.shape[0], self.internal_shape, self.internal_shape), + dtype=np.float32, + ) + for j in range(self.internal_shape): + for i in range(self.internal_shape): + mapping_matrix[corner_indexes[j, i], j, i] = weights[j, i] + return super()._get_sparse_mapping_matrix(mapping_matrix, normalize=True) + + +class BicubicMapper(ImageMapper): + """ + BicubicMapper is a class that extends the ImageMapper class to provide + bicubic interpolation mapping functionality. + + This class is used to generate a mapping table that maps input grid points + to output grid points using bicubic interpolation. It leverages Delaunay + triangulation to find the nearest neighbors and second nearest neighbors + for the interpolation process. + """ + + interpolation_image_shape = Int( + default_value=None, + allow_none=True, + help=( + "Integer to overwrite the default shape of the resulting mapped image." + "Only available for interpolation and rebinning methods." + ), + ).tag(config=True) + + def __init__( + self, + geometry, + config=None, + parent=None, + **kwargs, + ): + super().__init__( + geometry=geometry, + config=config, + parent=parent, + **kwargs, + ) + + if geometry.pix_type != PixelShape.HEXAGON: + raise ValueError( + "BicubicMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) + self.internal_pad = 3 + if self.interpolation_image_shape is not None: + self.image_shape = self.interpolation_image_shape + self.internal_shape = self.image_shape + self.internal_pad * 2 - if (pad + default_pad) != 0: - if map_method != "oversampling" or camera_type in [ - "ASTRICam", - "CHEC", - "SCTCam", - ]: - map_mat = np.zeros( - ( - mapping_matrix3d.shape[0], - output_dim + (pad - default_pad) * 2, - output_dim + (pad - default_pad) * 2, - ), - dtype=np.float32, - ) - for i in np.arange(mapping_matrix3d.shape[0]): - map_mat[i] = mapping_matrix3d[i][ - default_pad : output_dim + pad * 2 - default_pad, - default_pad : output_dim + pad * 2 - default_pad, - ] - self.image_shapes[camera_type] = ( - self.image_shapes[camera_type][0] + (pad - default_pad) * 2, - self.image_shapes[camera_type][1] + (pad - default_pad) * 2, - self.image_shapes[camera_type][2], - ) - else: - map_mat = np.zeros( - ( - mapping_matrix3d.shape[0], - output_dim + pad * 2 - default_pad * 4, - output_dim + pad * 2 - default_pad * 4, - ), - dtype=np.float32, - ) - for i in np.arange(mapping_matrix3d.shape[0]): - map_mat[i] = mapping_matrix3d[i][ - default_pad * 2 : output_dim + pad * 2 - default_pad * 2, - default_pad * 2 : output_dim + pad * 2 - default_pad * 2, - ] - self.image_shapes[camera_type] = ( - self.image_shapes[camera_type][0] + pad * 2 - default_pad * 4, - self.image_shapes[camera_type][1] + pad * 2 - default_pad * 4, - self.image_shapes[camera_type][2], - ) - else: - map_mat = mapping_matrix3d + # Creating the hexagonal and the output grid for the conversion methods. + input_grid, output_grid = super()._get_grids_for_interpolation() + # Calculate the mapping table + self.mapping_table = self._generate_table(input_grid, output_grid) - # Applying a flip to all mapping tables that the image indexing starts from the top left corner. - for i in np.arange(map_mat.shape[0]): - map_mat[i] = np.flip(map_mat[i], axis=0) + def _generate_table(self, input_grid, output_grid): + # + # /\ /\ + # / \ / \ + # / \ / \ + # / 2NN \ / 2NN \ + # /________\/________\ + # /\ /\ /\ + # / \ NN / \ NN / \ + # / \ / \ / \ + # / 2NN \ / . \ / 2NN \ + # /________\/________\/________\ + # /\ /\ + # / \ NN / \ + # / \ / \ + # / 2NN \ / 2NN \ + # /________\/________\ + # - sparse_map_mat = csr_matrix( - map_mat.reshape( - map_mat.shape[0], - self.image_shapes[camera_type][0] * self.image_shapes[camera_type][1], + # Drawing Delaunay triangulation on the hex grid + tri = spatial.Delaunay(input_grid) + + # Get all relevant simplex indices + simplex_index = tri.find_simplex(output_grid) + simplex_index_NN = tri.neighbors[simplex_index] + simplex_index_2NN = tri.neighbors[simplex_index_NN] + table_simplex = tri.simplices[simplex_index] + + # NN + weights_NN = [] + simplexes_NN = [] + for i in np.arange(simplex_index.shape[0]): + if -1 in simplex_index_NN[i] or all( + ind >= self.n_pixels for ind in table_simplex[i] + ): + w = np.array([0, 0, 0]) + weights_NN.append(w) + corner_simplexes_2NN = np.array([-1, -1, -1]) + simplexes_NN.append(corner_simplexes_2NN) + else: + corner_points_NN, corner_simplexes_NN = self._get_triangle( + tri, input_grid, simplex_index_NN[i], table_simplex[i] + ) + target = output_grid[i] + target = np.expand_dims(target, axis=0) + w = super()._get_weights(corner_points_NN, target) + w = np.squeeze(w, axis=0) + weights_NN.append(w) + simplexes_NN.append(corner_simplexes_NN) + + weights_NN = np.array(weights_NN) + simplexes_NN = np.array(simplexes_NN) + + # 2NN + weights_2NN = [] + simplexes_2NN = [] + for i in np.arange(3): + weights = [] + simplexes = [] + for j in np.arange(simplex_index.shape[0]): + table_simplex_NN = tri.simplices[simplex_index_NN[j][i]] + if ( + -1 in simplex_index_2NN[j][i] + or -1 in simplex_index_NN[j] + or all(ind >= self.n_pixels for ind in table_simplex_NN) + ): + w = np.array([0, 0, 0]) + weights.append(w) + corner_simplexes_2NN = np.array([-1, -1, -1]) + simplexes.append(corner_simplexes_2NN) + else: + corner_points_2NN, corner_simplexes_2NN = self._get_triangle( + tri, input_grid, simplex_index_2NN[j][i], table_simplex_NN + ) + target = output_grid[j] + target = np.expand_dims(target, axis=0) + w = super()._get_weights(corner_points_2NN, target) + w = np.squeeze(w, axis=0) + weights.append(w) + simplexes.append(corner_simplexes_2NN) + + weights = np.array(weights) + simplexes = np.array(simplexes) + weights_2NN.append(weights) + simplexes_2NN.append(simplexes) + + weights_2NN.append(weights_NN) + simplexes_2NN.append(simplexes_NN) + weights_2NN = np.array(weights_2NN) + simplexes_2NN = np.array(simplexes_2NN) + weights = np.reshape( + weights_2NN, + ( + weights_2NN.shape[0], + self.internal_shape, + self.internal_shape, + weights_2NN.shape[2], + ), + ) + corner_indexes = np.reshape( + simplexes_2NN, + ( + simplexes_2NN.shape[0], + self.internal_shape, + self.internal_shape, + simplexes_2NN.shape[2], ), + ) + # Construct the mapping matrix from the calculated weights + mapping_matrix = np.zeros( + (input_grid.shape[0], self.internal_shape, self.internal_shape), dtype=np.float32, ) + for i in range(4): + for j in range(self.internal_shape): + for k in range(self.internal_shape): + for l in range(weights.shape[3]): + index = ( + corner_indexes[i][k][j][l] + if weights.shape[3] == 3 + else corner_indexes[k][j][i][l] + ) + mapping_matrix[index][k][j] = ( + weights[i][k][j][l] / 4 + if weights.shape[3] == 3 + else weights[k][j][i][l] / 4 + ) + return super()._get_sparse_mapping_matrix(mapping_matrix) - return sparse_map_mat - - def get_triangle(self, tri, hex_grid, simplex_index_NN, table_simplex): + def _get_triangle(self, tri, hex_grid, simplex_index_NN, table_simplex): """ :param tri: a Delaunay triangulation. :param hex_grid: a 2D numpy array (hexagonal grid). @@ -738,398 +981,100 @@ def get_triangle(self, tri, hex_grid, simplex_index_NN, table_simplex): corner_points = np.expand_dims(corner_points, axis=0) return corner_points, corner_simplexes - def get_weights(self, p, target): - """ - :param p: a numpy array of shape (i,3 or 4,2) for three or four 2D points (one triangual or square). The index i means that one can calculate the weights for multiply trianguals or squares with one function call. - :param target: a numpy array of shape (i,2) for one target 2D point. - :return: a numpy array of shape (i,3) containing the three or four weights. - """ - weights = [] - if p.shape[1] == 3: - # - # Barycentric coordinates: - # (x3,y3) - # . - # / \ - # / \ - # / \ - # / \ - # / \ - # / . \ - # / (x,y) \ - # (x1,y1)._______________.(x2,y2) - # - # x = w1*x1 + w2*x2 + w3*x3 - # y = w1*y1 + w2*y2 + w3*y3 - # 1 = w1 + w2 + w3 - # - # -> Rearranging: - # (y2-y3)*(x-x3)+(x3-x2)*(y-y3) - # w1 = --------------------------------- - # (y2-y3)*(x1-x3)+(x3-x2)*(y1-y3) - # - # (y3-y1)*(x-x3)+(x1-x3)*(y-y3) - # w2 = --------------------------------- - # (y2-y3)*(x1-x3)+(x3-x2)*(y1-y3) - # - # w3 = 1 - w1 - w2 - # - for i in np.arange(p.shape[0]): - w = [0, 0, 0] - divisor = float( - ( - (p[i][1][1] - p[i][2][1]) * (p[i][0][0] - p[i][2][0]) - + (p[i][2][0] - p[i][1][0]) * (p[i][0][1] - p[i][2][1]) - ) - ) - w[0] = ( - float( - ( - (p[i][1][1] - p[i][2][1]) * (target[i][0] - p[i][2][0]) - + (p[i][2][0] - p[i][1][0]) * (target[i][1] - p[i][2][1]) - ) - ) - / divisor - ) - w[1] = ( - float( - ( - (p[i][2][1] - p[i][0][1]) * (target[i][0] - p[i][2][0]) - + (p[i][0][0] - p[i][2][0]) * (target[i][1] - p[i][2][1]) - ) - ) - / divisor - ) - w[2] = 1 - w[0] - w[1] - weights.append(w) - - elif p.shape[1] == 4: - # - # (x1,y2) (x2,y2) - # w2._______________.w4 - # | | - # | | - # | | - # | . | - # | (x,y) | - # w1._______________.w3 - # (x1,y1) (x2,y1) - # - # (x2-x)*(y2-y) - # w1 = ----------------- - # (x2-x1)*(y2-y1) - # - # (x2-x)*(y-y1) - # w2 = ----------------- - # (x2-x1)*(y2-y1) - # - # (x-x1)*(y2-y) - # w3 = ----------------- - # (x2-x1)*(y2-y1) - # - # (x-x1)*(y-y1) - # w4 = ----------------- - # (x2-x1)*(y2-y1) - # - for i in np.arange(p.shape[0]): - w = [0, 0, 0, 0] - divisor = float((p[i][3][0] - p[i][0][0]) * (p[i][3][1] - p[i][0][1])) - w[0] = ( - float((p[i][3][0] - target[i][0]) * (p[i][3][1] - target[i][1])) - / divisor - ) - w[1] = ( - float((p[i][3][0] - target[i][0]) * (target[i][1] - p[i][0][1])) - / divisor - ) - w[2] = ( - float((target[i][0] - p[i][0][0]) * (p[i][3][1] - target[i][1])) - / divisor - ) - w[3] = ( - float((target[i][0] - p[i][0][0]) * (target[i][1] - p[i][0][1])) - / divisor - ) - weights.append(w) - return np.array(weights, dtype=np.float32) +class RebinMapper(ImageMapper): + interpolation_image_shape = Int( + default_value=None, + allow_none=True, + help=( + "Integer to overwrite the default shape of the resulting mapped image." + "Only available for interpolation and rebinning methods." + ), + ).tag(config=True) - def get_grids(self, pos, camera_type, grid_size_factor): + def __init__( + self, + geometry, + config=None, + parent=None, + **kwargs, + ): """ - :param pos: a 2D numpy array of pixel positions, which were taken from the CTApipe. - :param camera_type: a string specifying the camera type - :param grid_size_factor: a number specifying the grid size of the output grid. Only if 'rebinning' is selected, this factor differs from 1. - :return: two 2D numpy arrays (hexagonal grid and squared output grid) + Parameters + ---------- + config : traitlets.loader.Config + Configuration specified by config file or cmdline arguments. + Used to set traitlet values. + This is mutually exclusive with passing a ``parent``. + parent : ctapipe.core.Component or ctapipe.core.Tool + Parent of this component in the configuration hierarchy, + this is mutually exclusive with passing ``config`` """ - # Get relevant parameters - output_dim = self.image_shapes[camera_type][0] - default_pad = self.default_pad - map_method = self.mapping_method[camera_type] - - x = np.around(pos[0], decimals=3) - y = np.around(pos[1], decimals=3) - - x_ticks = np.unique(x).tolist() - y_ticks = np.unique(y).tolist() - - if camera_type in ["CHEC", "ASTRICam", "SCTCam"]: - - if camera_type == "CHEC": - # The algorithm doesn't work with the CHEC camera. Additional smoothing - # for the 'x_ticks' and 'y_ticks' array for CHEC pixel positions. - num_x_ticks = len(x_ticks) - remove_x_val = [] - change_x_val = [] - for i in np.arange(num_x_ticks - 1): - if np.abs(x_ticks[i] - x_ticks[i + 1]) <= 0.002: - remove_x_val.append(x_ticks[i]) - change_x_val.append(x_ticks[i + 1]) - for j in np.arange(len(remove_x_val)): - x_ticks.remove(remove_x_val[j]) - for k in np.arange(len(x)): - if x[k] == remove_x_val[j]: - x[k] = change_x_val[j] - - num_y_ticks = len(y_ticks) - remove_y_val = [] - change_y_val = [] - for i in np.arange(num_y_ticks - 1): - if np.abs(y_ticks[i] - y_ticks[i + 1]) <= 0.002: - remove_y_val.append(y_ticks[i]) - change_y_val.append(y_ticks[i + 1]) - - for j in np.arange(len(remove_y_val)): - y_ticks.remove(remove_y_val[j]) - for k in np.arange(len(y)): - if y[k] == remove_y_val[j]: - y[k] = change_y_val[j] - - x_dist = np.around(abs(x_ticks[0] - x_ticks[1]), decimals=3) - y_dist = np.around(abs(y_ticks[0] - y_ticks[1]), decimals=3) - for i in np.arange(default_pad): - x_ticks.append(np.around(x_ticks[-1] + x_dist, decimals=3)) - x_ticks.insert(0, np.around(x_ticks[0] - x_dist, decimals=3)) - y_ticks.append(np.around(y_ticks[-1] + y_dist, decimals=3)) - y_ticks.insert(0, np.around(y_ticks[0] - y_dist, decimals=3)) - - virtual_pixels = self.get_virtual_pixels(x_ticks, y_ticks, x, y) - x = np.concatenate((x, virtual_pixels[:, 0])) - y = np.concatenate((y, virtual_pixels[:, 1])) - hex_grid = np.column_stack([x, y]) - - xx = np.linspace( - np.min(x), np.max(x), num=output_dim * grid_size_factor, endpoint=True - ) - yy = np.linspace( - np.min(y), np.max(y), num=output_dim * grid_size_factor, endpoint=True - ) - x_grid, y_grid = np.meshgrid(xx, yy) - x_grid = np.reshape(x_grid, -1) - y_grid = np.reshape(y_grid, -1) - output_grid = np.column_stack([x_grid, y_grid]) - - else: - if camera_type == "LSTCam": - # Additional smoothing of the 'y_ticks' array for LSTCam pixel positions. - num_y_ticks = len(y_ticks) - remove_y_val = [] - change_y_val = [] - for i in np.arange(num_y_ticks - 1): - if np.abs(y_ticks[i] - y_ticks[i + 1]) <= 0.002: - remove_y_val.append(y_ticks[i]) - change_y_val.append(y_ticks[i + 1]) - for j in np.arange(len(remove_y_val)): - y_ticks.remove(remove_y_val[j]) - for k in np.arange(len(y)): - if y[k] == remove_y_val[j]: - y[k] = change_y_val[j] - - if len(x_ticks) < len(y_ticks): - first_ticks = x_ticks - first_pos = x - second_ticks = y_ticks - second_pos = y - else: - first_ticks = y_ticks - first_pos = y - second_ticks = x_ticks - second_pos = x - - dist_first = np.around(abs(first_ticks[0] - first_ticks[1]), decimals=3) - dist_second = np.around(abs(second_ticks[0] - second_ticks[1]), decimals=3) - - if map_method in ["oversampling", "image_shifting"]: - tick_diff = len(first_ticks) * 2 - len(second_ticks) - tick_diff_each_side = np.array(int(tick_diff / 2)) - else: - tick_diff = 0 - tick_diff_each_side = 0 - for i in np.arange(tick_diff_each_side + default_pad * 2): - second_ticks.append( - np.around(second_ticks[-1] + dist_second, decimals=3) - ) - second_ticks.insert( - 0, np.around(second_ticks[0] - dist_second, decimals=3) - ) - for i in np.arange(default_pad): - first_ticks.append(np.around(first_ticks[-1] + dist_first, decimals=3)) - first_ticks.insert( - 0, np.around(first_ticks[0] - dist_first, decimals=3) - ) - - if tick_diff % 2 != 0: - second_ticks.insert( - 0, np.around(second_ticks[0] - dist_second, decimals=3) - ) - - # Create the virtual pixels outside of the camera - if map_method not in ["axial_addressing", "indexed_conv"]: - virtual_pixels = [] - for i in np.arange(2): - vp1 = self.get_virtual_pixels( - first_ticks[i::2], second_ticks[0::2], first_pos, second_pos - ) - vp2 = self.get_virtual_pixels( - first_ticks[i::2], second_ticks[1::2], first_pos, second_pos - ) - virtual_pixels.append(vp1) if vp1.shape[0] < vp2.shape[ - 0 - ] else virtual_pixels.append(vp2) - - virtual_pixels = np.concatenate(virtual_pixels) - - first_pos = np.concatenate((first_pos, np.array(virtual_pixels[:, 0]))) - second_pos = np.concatenate( - (second_pos, np.array(virtual_pixels[:, 1])) - ) - - if map_method == "oversampling": - grid_first = [] - for i in first_ticks: - grid_first.append(i - dist_first / 4.0) - grid_first.append(i + dist_first / 4.0) - grid_second = [] - for j in second_ticks: - grid_second.append(j + dist_second / 2.0) - - elif map_method == "image_shifting": - for i in np.arange(len(second_pos)): - if second_pos[i] in second_ticks[::2]: - second_pos[i] = second_ticks[ - second_ticks.index(second_pos[i]) + 1 - ] - - grid_first = np.unique(first_pos).tolist() - grid_second = np.unique(second_pos).tolist() - self.image_shapes[camera_type] = ( - len(grid_first), - len(grid_second), - self.image_shapes[camera_type][2], - ) - - elif map_method in ["axial_addressing", "indexed_conv"]: - virtual_pixels = [] - # manipulate y ticks with extra ticks - num_extra_ticks = len(y_ticks) - for i in np.arange(num_extra_ticks): - second_ticks.append( - np.around(second_ticks[-1] + dist_second, decimals=3) - ) - first_ticks = reversed(first_ticks) - for shift, ticks in enumerate(first_ticks): - for i in np.arange(len(second_pos)): - if first_pos[i] == ticks and second_pos[i] in second_ticks: - second_pos[i] = second_ticks[ - second_ticks.index(second_pos[i]) + shift - ] - - grid_first = np.unique(first_pos).tolist() - grid_second = np.unique(second_pos).tolist() - - # Squaring the output image if grid axes have not the same length. - if len(grid_first) > len(grid_second): - for i in np.arange(len(grid_first) - len(grid_second)): - grid_second.append( - np.around(grid_second[-1] + dist_second, decimals=3) - ) - elif len(grid_first) < len(grid_second): - for i in np.arange(len(grid_second) - len(grid_first)): - grid_first.append( - np.around(grid_first[-1] + dist_first, decimals=3) - ) - - # Creating the virtual pixels outside of the camera. - virtual_pixels.append( - self.get_virtual_pixels( - grid_first, grid_second, first_pos, second_pos - ) - ) - virtual_pixels = np.concatenate(virtual_pixels) - - first_pos = np.concatenate((first_pos, np.array(virtual_pixels[:, 0]))) - second_pos = np.concatenate( - (second_pos, np.array(virtual_pixels[:, 1])) - ) - self.image_shapes[camera_type] = ( - len(grid_first), - len(grid_second), - self.image_shapes[camera_type][2], - ) - - else: - # Add corner - minimum = min([np.min(first_pos), np.min(second_pos)]) - maximum = max([np.max(first_pos), np.max(second_pos)]) - - first_pos = np.concatenate((first_pos, [minimum])) - second_pos = np.concatenate((second_pos, [minimum])) - first_pos = np.concatenate((first_pos, [minimum])) - second_pos = np.concatenate((second_pos, [maximum])) - first_pos = np.concatenate((first_pos, [maximum])) - second_pos = np.concatenate((second_pos, [minimum])) - first_pos = np.concatenate((first_pos, [maximum])) - second_pos = np.concatenate((second_pos, [maximum])) - - grid_first = grid_second = np.linspace( - minimum, maximum, num=output_dim * grid_size_factor, endpoint=True - ) - - if len(x_ticks) < len(y_ticks): - hex_grid = np.column_stack([first_pos, second_pos]) - x_grid, y_grid = np.meshgrid(grid_first, grid_second) - else: - hex_grid = np.column_stack([second_pos, first_pos]) - x_grid, y_grid = np.meshgrid(grid_second, grid_first) - x_grid = np.reshape(x_grid, -1) - y_grid = np.reshape(y_grid, -1) - output_grid = np.column_stack([x_grid, y_grid]) - - return hex_grid, output_grid - - @staticmethod - def get_virtual_pixels(x_ticks, y_ticks, x, y): - gridpoints = np.array(np.meshgrid(x_ticks, y_ticks)).T.reshape(-1, 2) - gridpoints = [tuple(l) for l in gridpoints.tolist()] - virtual_pixels = set(gridpoints) - set(zip(x, y)) - virtual_pixels = np.array(list(virtual_pixels)) - return virtual_pixels - - @staticmethod - def normalize_mapping_matrix(mapping_matrix3d, num_pixels): - norm_factor = np.sum(mapping_matrix3d) / float(num_pixels) - mapping_matrix3d /= norm_factor - return mapping_matrix3d + super().__init__( + geometry=geometry, + config=config, + parent=parent, + **kwargs, + ) - @staticmethod - def apply_mask_interpolation(mapping_matrix3d, nn_index, num_pixels, pad): - mask = np.zeros( - (nn_index.shape[0] + pad * 2, nn_index.shape[1] + pad * 2), dtype=np.float32 + if geometry.pix_type != PixelShape.HEXAGON: + raise ValueError( + "RebinMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." + ) + self.internal_pad = 3 + if self.interpolation_image_shape is not None: + self.image_shape = self.interpolation_image_shape + self.internal_shape = self.image_shape + self.internal_pad * 2 + self.rebinning_mult_factor = 10 + # Creating the hexagonal and the output grid for the conversion methods. + input_grid, output_grid = super()._get_grids_for_interpolation() + # Calculate the mapping table + self.mapping_table = self._generate_table(input_grid, output_grid) + + def _generate_table(self, input_grid, output_grid): + # Finding the nearest point in the hexagonal grid for each point in the square grid + tree = spatial.cKDTree(input_grid) + nn_index = np.reshape( + tree.query(output_grid)[1], + ( + self.internal_shape * self.rebinning_mult_factor, + self.internal_shape * self.rebinning_mult_factor, + ), + ) + # Calculating the overlapping area/weights for each square pixel + mapping_matrix = np.zeros( + (output_grid.shape[0], self.internal_shape, self.internal_shape), + dtype=np.float32, ) - for i in range(nn_index.shape[0]): - for j in range(nn_index.shape[1]): - if nn_index[j][i] < num_pixels: - mask[j + pad][i + pad] = 1.0 - for i in range(1, mapping_matrix3d.shape[0]): - mapping_matrix3d[i] *= mask - return mapping_matrix3d + # Create a grid of indices + y_indices, x_indices = np.meshgrid( + np.arange( + 0, + self.internal_shape * self.rebinning_mult_factor, + self.rebinning_mult_factor, + ), + np.arange( + 0, + self.internal_shape * self.rebinning_mult_factor, + self.rebinning_mult_factor, + ), + indexing="ij", + ) + # Flatten the grid indices + y_indices = y_indices.flatten() + x_indices = x_indices.flatten() + # Iterate over the flattened grid indices + for y_grid, x_grid in zip(y_indices, x_indices): + counter = Counter( + nn_index[ + y_grid : y_grid + self.rebinning_mult_factor, + x_grid : x_grid + self.rebinning_mult_factor, + ].flatten() + ) + pixel_index = np.array(list(counter.keys())) + weights = np.array(list(counter.values())) / np.sum(list(counter.values())) + y_idx = int(y_grid / self.rebinning_mult_factor) + x_idx = int(x_grid / self.rebinning_mult_factor) + mapping_matrix[pixel_index, y_idx, x_idx] = weights + return super()._get_sparse_mapping_matrix(mapping_matrix) diff --git a/notebooks/test_image_mapper.ipynb b/notebooks/test_image_mapper.ipynb index c1c9bc7..7ca0040 100644 --- a/notebooks/test_image_mapper.ipynb +++ b/notebooks/test_image_mapper.ipynb @@ -10,2563 +10,1476 @@ "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", - "# If ctapipe >= v0.8.0 is used, please install ctapipe-extra.\n", + "from ctapipe.instrument import SubarrayDescription\n", "from ctapipe.instrument.camera import CameraGeometry\n", - "\n", - "from dl1_data_handler.image_mapper import ImageMapper" + "from dl1_data_handler.imagemapper import ImageMapper" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], - "source": [ - "# Define the camera types and mapping methods\n", - "hex_cams = ['LSTCam', 'FlashCam', 'NectarCam', 'DigiCam', 'VERITAS',\n", - " 'MAGICCam', 'FACT', 'HESS-I', 'HESS-II']\n", - "square_cams = ['SCTCam', 'CHEC', 'ASTRICam']\n", - "camera_types = hex_cams + square_cams\n", - "hex_methods = ['oversampling', 'rebinning', 'nearest_interpolation',\n", - " 'bilinear_interpolation', 'bicubic_interpolation', \n", - " 'image_shifting', 'axial_addressing']\n", - "square_methods = ['oversampling', 'rebinning', 'nearest_interpolation',\n", - " 'bilinear_interpolation', 'bicubic_interpolation']" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Initialization time (total for all telescopes):\n", - "oversampling\n", - "4.22 s ± 82.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", - "rebinning\n", - "16.1 s ± 355 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", - "nearest_interpolation\n", - "4.4 s ± 474 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", - "bilinear_interpolation\n", - "8.46 s ± 356 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", - "bicubic_interpolation\n", - "32.3 s ± 723 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", - "image_shifting\n", - "2.93 s ± 133 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", - "axial_addressing\n", - "3.01 s ± 34.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" - ] - } - ], - "source": [ - "# Load the image mappers\n", - "mappers = {}\n", - "print(\"Initialization time (total for all telescopes):\")\n", - "for method in hex_methods:\n", - " print(method)\n", - " mapping_method = {cam: method for cam in hex_cams}\n", - " for cam in square_cams:\n", - " mapping_method[cam] = method if method in square_methods else 'oversampling'\n", - " %timeit mappers[method] = ImageMapper(mapping_method=mapping_method)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Initialization time for individual telescopes (oversampling):\n", - "LSTCam\n", - "322 ms ± 6.49 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", - "FlashCam\n", - "318 ms ± 9.86 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", - "NectarCam\n", - "325 ms ± 10.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", - "DigiCam\n", - "188 ms ± 141 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", - "VERITAS\n", - "42.6 ms ± 161 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", - "MAGICCam\n", - "113 ms ± 118 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", - "FACT\n", - "182 ms ± 450 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", - "HESS-I\n", - "86 ms ± 654 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", - "HESS-II\n", - "310 ms ± 529 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", - "SCTCam\n", - "1.98 s ± 31.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", - "CHEC\n", - "97 ms ± 188 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", - "ASTRICam\n", - "128 ms ± 3.66 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" - ] - } - ], - "source": [ - "print(\"Initialization time for individual telescopes (oversampling):\")\n", - "for cam in camera_types:\n", - " print(cam)\n", - " %timeit ImageMapper(camera_types=[cam])" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# Generate test pixel values (value is the pixel number)\n", - "test_pixel_values = {}\n", - "for cam in camera_types:\n", - " num_pixels = len(CameraGeometry.from_name(cam).pix_id)\n", - " test_pixel_values[cam] = np.arange(num_pixels)\n", - " test_pixel_values[cam] = np.expand_dims(test_pixel_values[cam], axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "def plot_image(image):\n", - " fig, ax = plt.subplots(1)\n", - " ax.set_aspect(1)\n", - " ax.pcolor(image[:,:,0], cmap='viridis')\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "LSTCam: Default\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "LSTCam: Padding\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "FlashCam: Default\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "FlashCam: Padding\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "NectarCam: Default\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "NectarCam: Padding\n" + "/opt/anaconda3/lib/python3.11/site-packages/ctapipe/instrument/camera/geometry.py:616: FromNameWarning: .from_name uses pre-defined data that is likely different from the data being analyzed. Access instrument information via the SubarrayDescription instead.\n", + " warn_from_name()\n" ] }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "DigiCam: Default\n" + "ASTRICam - SquareMapper:\n", + "Initialization time: \n", + "44.3 ms ± 235 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "24.4 µs ± 52.7 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAEg5JREFUeJzt3X2MHdV5x/Hv4/XLYsDFpjUsNsVQHF4a4ZJugg1Ri+JQGgfF9A8EldxaLer+AwlJkYLdRkJIVUWkFAU1bSUXElkBBahBseXQOOAEpCTExbwWZzE2YPzCgsGKDeHF69379I8d0p2dje/s7rycuef3kUbXZ/bsvc9a89zn3DPnzpi7IyLxmVZ3ACJSDyW/SKSU/CKRUvKLRErJLxIpJb9IpJT8IpFS8otESskvEqnpVb7YTJvl3ZxY5UuKROVdfvW2u/9enr6VJn83J3KJLa/yJUWi8qhveC1vXw37RSKl5BeJlJJfJFJKfpFIKflFIqXkF4mUkl8kUkp+kUgp+UUipeQXiZSSXyRSSn6RSCn5RSKl5BeJlJJfJFJKfpFIKflFIqXkF4mUkl8kUkp+kUgp+UUipeQXiZSSXyRSSn6RSCn5RSKl5BeJVKW36+pUK3YcSbUf/sPfyfRZvH1Wqr2r92imT/fjp6faH/7pG5k+h3+wOLPvlM/vSrX33L8k02fRtc+l2i/95yczfT72d0+m2i/fsSzT5w/+/olUe+9tl2b6/P6tP0+1B27O9un5l3SfQ33ZPqeuS/f59bVLM31Ouv8XqfaxK7N/14wtT2b2iSq/SLTM3St7sTk2zzvxRp1jK//bx07K9PnV0OxU+8ixEzJ93hnsTrXfHZyV6fPe4MzMvvfH7BsczA7oho52pdqtMW0AO5quBdMGs7Vh2lFLtbsGM13oGjOomZYd5GR+b+zvAEz/0Mf0yR6rmT4ftrKv9eFwZt+0x5/OvmAHeNQ3POXuvXn6qvKLRErJLxKpXMlvZl8xsx1m9oKZfc/Mus1snpk9Yma7kse5ZQcbqmEstdXNPbsFz8fZpFRtk9/MFgBfAnrd/eNAF3AdsAbY6u6Lga1JW0QaIu+pvunACWZ2DJgNvA6sBS5Pfr4eeAy4peD4grNq54HMvreGTq4hkolxr39EkqLKXru2ld/dDwDfAPYCA8ARd/8RcJq7DyR9BoD5ZQYqIsVqW/mTz/IrgbOBw8B/mdmqvC9gZn1AH0A3s9v0lk5kAVZ5u+SiVNu3PV9TJPXJM+H3WeBVd3/L3Y8BDwGXAm+aWQ9A8nhwvF9293Xu3uvuvTPInrcWkXrkSf69wFIzm21mBiwH+oFNwOqkz2pgYzkhhmXYp2W2ugU3s69Z+0ZoO+x3921mtgF4GhgCngHWAScBD5jZ9Yy8QVxTZqAiUqxcs/3ufitw65jdRxkZBYhIA+lbfW3cuDv9jblDQ9l1+1VqBbCIKCW0YX0Qn3uaof4PrCJSC1X+gAVX5Zsqx2ig66ILMvuGn+8vI5pgqPKLREqVPyAtLcE9Lst+VX/yNDegyi8SK1X+Ub72ynOZfYdb5SxJDq7K5xTcUl1V8ElT5ReJlJJfJFIa9rcxXNDwPLhhfmjxBGj6eeem2kM7d9cUSTlU+UUipco/SgjX36tVaKMBzeWVSpVfJFJRV/6v79mWah9uZW+kkUcrgO/0jxbc9fpyCO4UYgTCOmpFpDJRV/6yDIf4nhpYZW1ipZ9+1pmZfUOv7ashkmIEeJSKSBWU/CKR0rBfytfAIX4MVPlFIhVN5f/Waz/L7HvPJ/7nh3h1neBO7TWx0kf47UBVfpFIRVP5xxPkKbk2QqvyoZ2yKzSeVvsnm95zeqo9NPBGgQGUq3lHv4gUQskvEqmoh/2hC+4aAA0V2keTUKjyi0SqYyv/t/f9NNV+vxV+FQ3tNGJHV8wiLwPeUKr8IpHq2MofutCuAZBbYKOB0EYn0089NbNv6NChGiJpr6FHoIhMlSp/G0UtBAqt0odWMXNpYswBC+uIFJHKKPlFItURw/779j+R2ff+JIaIw4ENzasW2keB0OLpNHEf7SIRy5X8ZnaKmW0wsxfNrN/MlpnZPDN7xMx2JY9zyw42VMNYapNJ8HG2DtF18smpLRR5K/+dwA/d/XxgCdAPrAG2uvtiYGvSFpGGaJv8ZjYH+BPgbgB3H3T3w8BKYH3SbT1wdVlBttPCM9tYY6tzmRW65ZbZ6mdjtpo1scq7Z7cGy1P5zwHeAr5jZs+Y2V1mdiJwmrsPACSP80uMU0QKlme2fzrwCeCL7r7NzO5kAkN8M+sD+gC6mT2pIMd6cH/6NltHC3nWDhLESGOUZhfIjpWn8u8H9rv7Rxm3gZE3gzfNrAcgeTw43i+7+zp373X33hnMKiJmESlA2+R39zeAfWZ2XrJrOfBLYBOwOtm3GthYSoQiUoq8i3y+CNxrZjOBV4C/YeSN4wEzux7YC1xTTohhCXEhkC7qWYAKJ++mnZC9G3Trgw8qe/2P5Ep+d38W6B3nR8uLDUdEqtIRy3vHM5zjjTyMU3ATE1zMoVX5IuNp+Km8dsIbw4pIJYKv/JsPPJXZd7Sz35B/I7TP8o1VYQV3b87FAVX5RSIVfOWPiT7PV8eKGg20iqn002bOTD/t4GAhz3vc1yz9FUQkSEp+kUgFP+wf7xt6nSC4IX5OwS3gCS2eBlHlF4lUcJX/v19/JtU+VvM7e1GX3A7tVlxNrJjBjToK5K3q/zhVfpFIBVf56xRcda5aaJU1tHgqZF1dmX0+PFzoa6jyi0RKyS8SKQ37CxDaffiaqLAVdyEK9G/TUSsSqVor/5bXn8vsm8xK6eEc76xV3kyjFeJ7amDFp5Gn7Yo6HZfjeao49RfgUSoiVWjkZ/5OXfJblNA+YkZ+AjVYqvwikWpk5a/TcIDvl4EV+mYKbbhUgfCOZBGphJJfJFKVDvs/dtH7bNmSPb1XhjynDKs8/VeU4EangcVT6GKh4P6zi6XKLxIpTfgFrKlX+wluNFDl1bRr+F7+ZKnyi0QquMo/3KCbHhQtuErfnCI2cUV9nm/wvIAqv0ikgqv8Y7Um9VUfKU1gha6RXxAKhCq/SKSU/CKRqnTY/9Lzs7nyjCW/aY/3ff7QFLWWfzi4ybzA4smjwZNrbdUw0a3KLxKpWif8QpvMq/Ibe9FfJjwHTeaVS5VfJFLBn+prgmFdvXfqOrjKeyusEe5Hch+1ZtZlZs+Y2eakPc/MHjGzXcnj3PLCFJGiTaTy3wT0A3OS9hpgq7vfbmZrkvYtE3nxz51xcWbf5gNPTeQpgMld8bdMwc3sQ3iVNbR48ihsSXCOI7aC2f9cld/MFgKfB+4atXslsD7593rg6mJDE5Ey5R32fxP4Kukie5q7DwAkj/PH+0Uz6zOz7Wa2/RhHpxSsiBSnbfKb2VXAQXef+HgccPd17t7r7r0zmDWZp8gYxlObjOHjbHUKLR4B8n3mvwz4gpmtALqBOWZ2D/CmmfW4+4CZ9QAHywxURIrVtvK7+1p3X+jui4DrgB+7+ypgE7A66bYa2FhalAVouWW2Op+nSO6W2mQSWuNsHW4qJ6hvB64ws13AFUlbRBpiQot83P0x4LHk34eA5UUHdNWCP061v3/gfyb1PHmuzNvExTmhVfaOXoLbyV8kQst7RaKl5b0BC63K5xZawayygjdotKDKLxIpJb9IpDTsD0gIpw1Ha+RkXt5TdIFdutuHhwt5nolQ5ReJVPCV/+oFn8rsu2//EzVEIkB4k3kNuj1WaFT5RSIVfOXvFK0GLigKTSPnIAKmI1IkUkp+kUhp2D9KlWv9QzutBwEOqxu0Wm4iWoODdYcAqPKLRKuRlf+6hctS7fX7flbaa+W5GGcjb8ARWFENbtRRpEBHMKr8IpFqZOUfa/zr+NVXjUP8PB/ajTkbWekDreCTpcovEqmOqPySFtp1ABpZ5QvU+uCDukMYlyq/SKSU/CKR6ohh/9+e+enMvn/fmz79l+eCnnkMh/h+GfmwugjWYZN5eQR4JItIFTqi8o8nz9e8Ww187wttMq+jRx0dfq2A5h39IlKIjq38nSDIxUI5BHdqr8J4ho8cqe7FpkiVXyRSHVv5bzzrslT763u21RRJfsFV+tDiySH3rH1RN+Js8LyAKr9IpJT8IpHq2GG/lCPmybxOo8ovEilV/ooEN5nXRAFW+aFDh+oOYdJU+UUiFU3lv2XRJZl9X3vluVS7yuW+QY4EAospuPmFDqPKLxKpaCr/ZOUZDVR5vf/ChFZVQ4snAm2PWjM708x+Ymb9ZrbDzG5K9s8zs0fMbFfyOLf8cEWkKHlK1hBws7tfACwFbjCzC4E1wFZ3XwxsTdoi0hBth/3uPgAMJP9+18z6gQXASuDypNt64DHgllKibJgQ78g7dsl7WFN7zTD0+kDdIRRqQkepmS0CLga2AaclbwwfvUHMLzo4ESlP7gk/MzsJeBD4sru/Y5avdphZH9AH0M3sycRYmn86Z0mqfePuXTVFUrDQJs9Ci0eAnJXfzGYwkvj3uvtDye43zawn+XkPcHC833X3de7e6+69M5hVRMwiUoA8s/0G3A30u/sdo360CVid/Hs1sLH48MLT8mmZrW7ultoawcdsdXPPbh0uz7D/MuCvgP81s2eTff8A3A48YGbXA3uBa8oJUUTKkGe2/6f89snh5cWGIyJV0Qq/hgntOwGdvP5+aM9rdYdQqvo/sIpILVT5R/nWuYsz+1btPFBDJA0X2Gggxltx5aHKLxIpVf6ABHearokFM2fMGg2o8otES5U/YCpO7RV1tmFo5+5inqhBVPlFIqXkF4mUhv1t3HPeglR7xY7J3YW1pW/QT1knLyiqgyq/SKRU+WsS2jJdILxTe6HF02FU+UUipcpfgF8sSf83nr892+fgssOpdvfjp2f6zLhizBdJfpBdbnzGX+zI7Ntzf/qKROf+9dOZPi/d9clUe/EN2zJ9Xr5jWap99tqfZ/rsve3SVHvBP2f7DNyc7jP/X7N9DvWl+5yy/olMn19fuzTV7t6YjfnYlem/a9rj2b+dSy7K7Bp+vj/bLzKq/CKRMq9wJckcm+eXmC4BIFKWR33DU+7em6evKr9IpJT8IpFS8otESskvEiklv0iklPwikVLyi0RKyS8SKSW/SKSU/CKRUvKLRErJLxIpJb9IpJT8IpFS8otESskvEiklv0iklPwikVLyi0RKyS8SqSklv5n9uZntNLPdZramqKBEpHyTTn4z6wL+DfgccCHwl2Z2YVGBiUi5plL5PwXsdvdX3H0QuA9YWUxYIlK2qST/AmDfqPb+ZJ+INMBUbtc13p0mM3cAMbM+oC9pHn3UN7wwhdesw+8Cb9cdxCQ0MW7FPHVn5e04leTfD5w5qr0QeH1sJ3dfB6wDMLPtee8mEoomxgzNjFsxV2sqw/4ngcVmdraZzQSuAzYVE5aIlG3Sld/dh8zsRmAL0AV8292zt5AVkSBN6Rbd7v4w8PAEfmXdVF6vJk2MGZoZt2KuUKV36RWRcGh5r0ikKkn+piwDNrMzzewnZtZvZjvM7KZk/zwze8TMdiWPc+uOdSwz6zKzZ8xsc9IOOmYzO8XMNpjZi8n/97IGxPyV5Lh4wcy+Z2bdocd8PKUnf8OWAQ8BN7v7BcBS4IYk1jXAVndfDGxN2qG5Cegf1Q495juBH7r7+cASRmIPNmYzWwB8Ceh1948zMsl9HQHH3Ja7l7oBy4Ato9prgbVlv25BsW8ErgB2Aj3Jvh5gZ92xjYlzISMH3meAzcm+YGMG5gCvksw5jdofcswfrWidx8hE+Wbgz0KOud1WxbC/kcuAzWwRcDGwDTjN3QcAksf59UU2rm8CXwVao/aFHPM5wFvAd5KPKneZ2YkEHLO7HwC+AewFBoAj7v4jAo65nSqSP9cy4JCY2UnAg8CX3f2duuM5HjO7Cjjo7k/VHcsETAc+AfyHu18MvEfgw+Xks/xK4GzgDOBEM1tVb1RTU0Xy51oGHAozm8FI4t/r7g8lu980s57k5z3AwbriG8dlwBfMbA8j36z8jJndQ9gx7wf2u/u2pL2BkTeDkGP+LPCqu7/l7seAh4BLCTvm46oi+RuzDNjMDLgb6Hf3O0b9aBOwOvn3akbmAoLg7mvdfaG7L2Lk//bH7r6KsGN+A9hnZuclu5YDvyTgmBkZ7i81s9nJcbKckUnKkGM+voomS1YALwEvA/9Y90THceL8NCMfSZ4Hnk22FcCpjEyo7Uoe59Ud62+J/3L+f8Iv6JiBPwK2J//X3wfmNiDm24AXgReA7wKzQo/5eJtW+IlESiv8RCKl5BeJlJJfJFJKfpFIKflFIqXkF4mUkl8kUkp+kUj9H7zIm4NjO5d2AAAAAElFTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAz00lEQVR4nO3de3RU5b3/8c/kNgkQoiBkEogYbRQVQQUFgpgIkh4E1HJqxXAUxXoU0MJCwSLKRWkCaLPQxkJFELwgthW5nWJhCQQspQ0KgniDYxStxBQEEhACSZ7fHx7m55CETJLJkz0z79dasxaz95OZZ3+zZ/hkz/7OdhljjAAAACyJaO4JAACA8EL4AAAAVhE+AACAVYQPAABgFeEDAABYRfgAAABWET4AAIBVhA8AAGAV4QMAAFhF+EDQe+655+RyudSlS5daxxw8eFCTJk3SZZddppYtWyohIUGdO3fWnXfeqZ07d0qSXC6XX7eNGzfqiy++8FkWERGhc889V/3799fatWurPf+0adPkcrl04MCBautWrVqlIUOGKDExUTExMWrTpo369++v1157TadOnQpcoSw6duyYZs2apW7duql169aKj4/XRRddpF/84hcqKCho7ukFzMaNG737wKJFi2oc069fP7lcLl1wwQVW5wY4WVRzTwBorIULF0qSdu/erX/84x/q2bOnz/qjR4+qV69eOnr0qCZMmKBu3brp+PHj+uyzz7Rs2TLt2LFDXbt21d///nefn3vqqae0YcMGrV+/3mf5ZZddpu+++06S9NBDDyk7O1uVlZX65JNPNH36dN10001av369rr/++rPO2xijkSNHatGiRbrpppuUl5enlJQUHTlyRBs2bNDo0aN14MABjR07trElsqqyslJZWVnatWuXJkyYoGuvvVaStGfPHq1atUqbN29WRkZGM88ysOLj47VgwQLdfffdPsuLioq0ceNGtW7dunkmBjiVAYJYYWGhkWQGDRpkJJn77ruv2piFCxcaSWb9+vU1PkZlZWWNy0eMGGFatmxZ47qioiIjyTz99NM+ywsKCowkc9ddd/ksnzp1qpFk/v3vf3uXzZo1y0gy06dPr/E59u/fbzZv3lzjOidbv369kWQWLlxY4/ra6u0EFRUV5sSJE36P37Bhg5FkfvnLXxpJ5rPPPvNZ//jjj5uOHTuagQMHmk6dOgV4ts3j5MmT5tSpU809DQQ5PnZBUFuwYIEkaebMmUpPT9fSpUv1/fff+4w5ePCgJCkpKanGx4iICNzLoEePHpKkb7/99qzjTp06pVmzZqlz58564oknahzj8Xh03XXXee9Pnz5dPXv2VJs2bdS6dWtdffXVWrBggcwZ14a84IILNHjwYK1evVpXXXWV4uLidOmll2r16tWSpEWLFunSSy9Vy5Ytde2112rbtm2N2eRq6lvvrVu3qk+fPoqNjVVycrImTZqk+fPny+Vy6YsvvvCOc7lcmjZtWrXHu+CCC3yOOPz73//W6NGjddlll6lVq1Zq3769+vXrp82bN/v83OmPzmbPnq0ZM2YoNTVVbrdbGzZskCRt27ZNN998s9q0aaPY2FhdddVV+uMf/1jjNg0YMEApKSneo3CSVFVVpcWLF2vEiBE17mPPP/+8rr/+erVv314tW7bUFVdcodmzZ1f7qC0zM1NdunTR5s2b1atXL8XFxalDhw564oknVFlZWeP2/OY3v9H555+v2NhY9ejRQ++8806159+zZ4+ys7PVvn17ud1uXXrppXr++ed9xpz+WOmVV17Rww8/rA4dOsjtdmvv3r011gHwF+EDQev48eN6/fXXdc0116hLly4aOXKkysrK9Kc//clnXO/evSVJd911l5YvX+79z7EpFBUVSZIuvvjis47btm2bvvvuO91yyy1yuVx+PfYXX3yh+++/X3/84x+1bNkyDR06VA899JCeeuqpamM/+OADTZo0SY8++qiWLVumhIQEDR06VFOnTtWLL76onJwcvfbaazpy5IgGDx6s48eP139ja9GjRw9FR0dr7Nixeu2117R///5ax3700Ufq37+/Dh8+rEWLFmnevHnavn27ZsyY0eDnP/2R2NSpU/U///M/eumll3ThhRcqMzNTGzdurDb+ueee0/r16/XMM89ozZo16ty5szZs2KA+ffro8OHDmjdvnlasWKErr7xSt99+e43ndkREROjuu+/Wyy+/7A0Ea9eu1ddff6177rmnxnn+7//+r7Kzs/XKK69o9erVuvfee/X000/r/vvvrza2uLhYw4YN0/Dhw7VixQr9/Oc/14wZM2r8SC4/P19vv/225syZo1dffVUREREaOHCgz8eKH330ka655hp9+OGH+u1vf6vVq1dr0KBB+tWvfqXp06dXe8xJkyZp3759mjdvnlatWqX27dvXuE2A35r70AvQUC+//LKRZObNm2eMMaasrMy0atXK9O3bt9rYJ5980sTExBhJRpJJTU01DzzwgPnggw9qfXx/PnaZNWuWOXXqlDlx4oTZsWOH6d27t0lKSjJFRUU+48/82GXp0qU+c6+vyspKc+rUKfPkk0+atm3bmqqqKu+6Tp06mbi4OPP11197l+3YscNIMklJSebYsWPe5cuXLzeSzMqVKxs0j9osWLDAtGrVylvvpKQkc9ddd5lNmzb5jLv99ttNXFycKS4u9i6rqKgwnTt3NpJ86ijJTJ06tdpzderUyYwYMaLWuVRUVJhTp06Z/v37m5/97Gfe5ad/hxdddJE5efKkz8907tzZXHXVVdU+Xhg8eLBJSkryfnR0+mOXP/3pT+bzzz83LpfLrF692hhjzG233WYyMzONMcYMGjTorB+7nP59vvzyyyYyMtJ899133nUZGRlGklmxYoXPz9x3330mIiLCfPnllz7bk5ycbI4fP+4dV1paatq0aWNuvPFG77Kf/vSnpmPHjubIkSM+j/nggw+a2NhY7/Of3r7rr7++1rkDDcGRDwStBQsWKC4uTsOGDZMktWrVSrfddps2b96sPXv2+Ix94okntG/fPi1cuFD333+/WrVqpXnz5ql79+56/fXXGzyHRx99VNHR0YqNjdWVV16pDz/8UKtWrWqSzob169frxhtvVEJCgiIjIxUdHa0pU6bo4MGDKikp8Rl75ZVXqkOHDt77l156qaQfDuG3aNGi2vIvv/zyrM9dUVHhczNnfNRzppEjR+rrr7/WkiVL9Ktf/UopKSl69dVXlZGRoaeffto7bsOGDerfv78SExO9yyIjI3X77bfXUY2zmzdvnq6++mrFxsYqKipK0dHReuedd/Txxx9XG3vzzTcrOjrae3/v3r365JNPNHz48GrbftNNN2n//v369NNPqz1OamqqMjMztXDhQh08eFArVqzQyJEja53j9u3bdfPNN6tt27be3+ddd92lyspKffbZZz5j4+PjdfPNN/ssy87OVlVVlTZt2uSzfOjQoYqNjfX52SFDhmjTpk2qrKzUiRMn9M477+hnP/uZWrRoUW37Tpw4oa1bt/o85n/+53/Wuh1AQxA+EJT27t2rTZs2adCgQTLG6PDhwzp8+LB+/vOfS5LPZ++nJSYm6p577tG8efO0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CgsLq61jH268nj176uWXX9bFF1+sb7/9VjNmzFB6erp2794d1vV1TPg4zeVy+dw3xlRbhsCh3oHx4IMPaufOnXr33XerraPGDXfJJZdox44dOnz4sN58802NGDFCBQUF3vXUtnG++uorjR07VmvXrlVsbGyt46hzww0cOND77yuuuEK9e/fWRRddpMWLF6tXr16SwrO+jvnY5bzzzlNkZGS1oxwlJSXVUiEa7/TZ1tS78R566CGtXLlSGzZsUMeOHb3LqXHjxcTE6Cc/+Yl69Oih3NxcdevWTc8++yy1DZD33ntPJSUl6t69u6KiohQVFaWCggI999xzioqK8taSOgdOy5YtdcUVV2jPnj1hvR87JnzExMSoe/fuWrdunc/ydevWKT09vZlmFbpSU1Pl8Xh86n3y5EkVFBRQbz8ZY/Tggw9q2bJlWr9+vVJTU33WU+PAM8aovLyc2gZI//79tWvXLu3YscN769Gjh4YPH64dO3bowgsvpM4BVl5ero8//lhJSUnhvR8326muNVi6dKmJjo42CxYsMB999JEZN26cadmypfniiy+ae2pBqayszGzfvt1s377dSDJ5eXlm+/bt5ssvvzTGGDNz5kyTkJBgli1bZnbt2mXuuOMOk5SUZEpLS5t55sFh1KhRJiEhwWzcuNHs37/fe/v++++9Y6hxw02aNMls2rTJFBUVmZ07d5rHHnvMREREmLVr1xpjqG1T+XG3izHUubEefvhhs3HjRvP555+brVu3msGDB5v4+Hjv/2vhWl9HhQ9jjHn++edNp06dTExMjLn66qu9bYuovw0bNhhJ1W4jRowwxvzQ5jV16lTj8XiM2+02119/vdm1a1fzTjqI1FRbSeall17yjqHGDTdy5Ejve0G7du1M//79vcHDGGrbVM4MH9S5cW6//XaTlJRkoqOjTXJyshk6dKjZvXu3d3241tdljDHNc8wFAACEI8ec8wEAAMID4QMAAFhF+AAAAFYRPgAAgFWEDwAAYBXhAwAAWEX4AAAAVhE+AACAVYQPAABgFeEDAABYRfgAAABW/T9jLQE9/aUoigAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "DigiCam: Padding\n" + "CHEC - SquareMapper:\n", + "Initialization time: \n", + "29.6 ms ± 83.9 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "23.8 µs ± 51.9 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAoh0lEQVR4nO3de3DU9b3/8dc3CdlcCOEmWSIhBI1YjagllMIoiQKpUSlIdUrxKAo6cnNMOZUKWIgdTSjnHA52UvHgBbHTFKZVUVuEpBWCNYc2IBGKt2JzIE6JEeQSArmQfH5/8MsO6wb4Lmw+m8DzMbMz7Of73s/n893PZvfF97sXxxhjBAAAYElEuCcAAAAuLYQPAABgFeEDAABYRfgAAABWET4AAIBVhA8AAGAV4QMAAFhF+AAAAFYRPgAAgFWED+A0O3fu1IMPPqi0tDTFxMSoe/fu+va3v62lS5fq66+/9tVlZ2crIyOj3T4OHDggx3GUn5/va9u8ebMcxznj5ZVXXvHro7W1Vb/+9a81duxY9e3bV926dVO/fv1055136u2331Zra2tI93vjxo3KyclRcnKyPB6PkpOTlZ2drSVLloR0nHAbNGiQHMdRdnZ2u9tfffVV35ps3rzZ6tyAS0lUuCcAdBYvvPCCZs2apSFDhujxxx/XNddco+bmZm3btk3PP/+8/vd//1dvvPHGBY1RUFCgW265JaD9iiuu8P27oaFBEydOVElJiSZPnqwVK1bI6/Xqq6++0oYNG3TPPfdo7dq1mjBhwgXNpc3zzz+vmTNn6gc/+IGKiorUu3dvVVdXq7y8XL///e/1xBNPhGScziIhIUFbtmzR559/7ne/S9LLL7+sHj166OjRo2GaHXCJMABMeXm5iYyMNLfddptpaGgI2N7Y2GjefPNN3/WsrCxz7bXXttvXV199ZSSZxYsX+9o2bdpkJJnf/e5355zLzJkzjSSzevXqdrd/9tln5sMPPzxnP24NHDjQjB49ut1tLS0tIRunI9TX1wdVn5qaanJzc82AAQPMggUL/Lbt2bPHOI5jHn74YSPJbNq0KYQzDZ/jx4+HewpAAE67ADp1RMJxHK1cuVIejydge3R0tL7//e93+Dxqamr04osv6nvf+57uv//+dmvS09M1dOjQkI158OBB9e/fv91tERH+TxFHjx7Vww8/rD59+qh79+667bbb9NlnnwWcZnrggQc0aNCggP7y8/PlOI5f269+9SuNHj1a/fr1U3x8vK677jotXbpUzc3NfnVtp7q2bNmiUaNGKS4uTtOmTfPN6yc/+YnS0tIUHR2tyy+/XHl5eaqvr293n+6//36tXr3a7/TVyy+/rJSUFI0dOzbgNtu2bdPkyZM1aNAgxcbGatCgQfrRj36kvXv3+tW98sorchxHpaWlevDBB9W7d2/Fx8dr/Pjx+uc//9nu/rz33nv67ne/q9jYWF1++eX62c9+ppaWFr/apqYmPf3007r66qvl8Xh02WWX6cEHH9RXX33lVzdo0CDdeeedev3113XjjTcqJiZGTz31VMD+AOHGaRdc8lpaWvTuu+9q2LBhSklJCeq2J0+ebLe/M2ltbW33NlFRp/4UN23apObmZk2cODGoeVyIkSNH6rXXXlN+fr7uuusuZWRkKDIyMqDOGKOJEyeqvLxcixYt0vDhw/X+++8rNzf3gsb//PPPNWXKFF9w+PDDD/XMM8/ok08+0csvv+xXu3//fv3bv/2b5s2bp4KCAkVEROj48ePKysrSF198oQULFmjo0KHavXu3Fi1apF27dulPf/pTQOCZNm2aCgsLtXHjRuXm5qqlpUWrV6/W9OnTAwKXJP3f//2fhgwZosmTJ6t3797av3+/VqxYoeHDh+ujjz5S3759/eqnT5+ucePGqbi4WNXV1XryySeVnZ2tnTt3qmfPnr66mpoaTZ48WU888YR+/vOf649//KOefvppHTp0SEVFRZJOPWYmTJig9957T/PmzdOoUaO0d+9eLV68WNnZ2dq2bZtiY2N9fX7wwQf6+OOP9eSTTyotLU3x8fEXtD5Ahwj3oRcg3GpqaowkM3nyZNe3ycrKMpLOemnvtMuZLtXV1cYYY5YsWWIkmQ0bNoR6N89oz549JiMjwzeX2NhYM2bMGFNUVGSampp8de+8846RZJ599lm/2z/zzDMB+zt16lSTmpoaMNbixYvN2Z52WlpaTHNzs3n11VdNZGSk+frrr33b2u7zP//5z363KSwsNBEREaaiosKv/fe//72RZNavX+9rS01NNXfccYevv7vvvtsYY8wf//hH4ziOqaqqMr/73e/Oedrl5MmT5tixYyY+Pt7v/li1apWRZO666y6/+vfff99IMk8//XTA/px+Os8YYx5++GETERFh9u7da4wx5re//a2RZF577TW/uoqKCiPJPPfcc377FxkZaT799NMzzh3oDDjtApynK664QhUVFQGXP/3pT2e8zS9+8Yt2b5OUlBSyebUdXWm7nO1ITNt+fPjhhyorK9NTTz2lsWPHqqKiQnPmzNHIkSPV0NAg6dRRGUm69957/W4/ZcqUC5rvjh079P3vf199+vRRZGSkunXrpvvvv18tLS367LPP/Gp79eqlW2+91a/tD3/4gzIyMnTDDTf47ff3vve9s35qZdq0aXrrrbd08OBBvfTSS7rlllvaPVUkSceOHdNPf/pTXXnllYqKilJUVJS6d++u+vp6ffzxxwH137yPRo0apdTUVN992CYhISHgdN6UKVPU2tqqLVu2+PavZ8+eGj9+vN/+3XDDDfJ6vQH7N3ToUF111VXt7gfQWXDaBZe8vn37Ki4uTlVVVUHdLiYmRpmZmQHtBw4cOONtBg8e3O5t2gwcOFCSgp7L6aZNm6bVq1f7rmdlZZ3zY6MREREaPXq0Ro8eLUmqr6/X9OnTtXbtWr388suaNWuWDh48qKioKPXp08fvtl6v97znum/fPt18880aMmSInn32WQ0aNEgxMTH629/+ptmzZ+vEiRN+9e29N+XLL7/Unj171K1bt3bHONN63H333Xr00Uf13//933r77bcDPu58uilTpujPf/6zfvazn2n48OHq0aOHHMfR7bffHjBHqf37xOv16uDBg35t7YXOttu21X755Zc6fPiwoqOjXe3fmd6/A3QmhA9c8iIjIzVmzBi98847+uKLLzRgwICwzeWWW25Rt27dtG7dOs2YMeO8+sjPz9ecOXN81xMSEoLuIz4+XvPnz9fatWv197//XZLUp08fnTx5UgcPHvQLIDU1NQG3j4mJUWNjY0D7N18o161bp/r6er3++utKTU31tVdWVrY7r2++d0M6FR5jY2MD3h9y+vb2xMXFafLkySosLFSPHj00adKkduuOHDmiP/zhD1q8eLHfx44bGxv9vvvldO3dJzU1Nbryyiv92r788ssz3rbtPu7bt6/69OmjDRs2tDvWN9e3vfsI6Gw47QJImj9/vowxevjhh9XU1BSwvbm5WW+//XaHz8Pr9eqhhx7Sxo0b9eqrr7Zb8/nnn2vnzp1n7GPQoEHKzMz0XYYMGXLWMffv399ue9vphOTkZEnyfT/Jb37zG7+64uLi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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "VERITAS: Default\n" + "SCTCam - SquareMapper:\n", + "Initialization time: \n", + "900 ms ± 2.46 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "39.3 µs ± 242 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjUAAAGxCAYAAACa3EfLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3+0lEQVR4nO3de3wU9bnH8e/mtoSQRAKSJVxC0FSwUBRQDkglCnIRoUIRARUs2JcIWiJegNJKRE0UT5FTKXhURBQRakWkrVUCYpRiJQRQgQpYAkQljRdMwi3k8jt/cNi6bIAAM5vM5PP2ta+XO/vLzLM/NsmT55nfjMcYYwQAAOBwYbUdAAAAgBVIagAAgCuQ1AAAAFcgqQEAAK5AUgMAAFyBpAYAALgCSQ0AAHAFkhoAAOAKJDUAAMAVSGpQr3300UcaMmSIWrduLa/Xq8TERHXv3l333Xdf0Niqqiq9/PLL6tOnj5o2barIyEg1a9ZMN9xwg/785z+rqqpKaWlp8ng8Z3xkZGRIksrKyjR37lz17NlTjRs3VlRUlFq0aKHhw4crJycnxLNhnYKCAk2YMEE/+tGPFB0drYSEBHXs2FG//OUvVVBQUNvhWSYjI0Mej0dhYWHavXt30OuHDh1SXFycPB6Pbr/99tAHCNQzEbUdAFBb/vrXv2rw4MFKS0vTrFmz1Lx5c+3fv18bN27U0qVL9bvf/c4/9ujRo7rxxhu1atUqjRgxQvPnz5fP59PXX3+tt99+WzfddJOWLVumefPmqaSkJOAYjz76qBYuXKh27dr5t7ds2VLffPON+vfvr08++URjx47VAw88oISEBH355Zd688031bt3b+Xl5alTp04hnZfz9cUXX6hz58664IILdN999+mSSy5RcXGxtm/frj/+8Y/avXu3WrVqVdthWqpRo0ZauHChHnnkkYDtr732msrLyxUZGVlLkQH1jAHqqauvvtpcdNFFpry8POi1ysrKgOd33XWXkWQWLVpU7b527txpPv7446DtCxcuNJJMbm5u0GsDBgwwERERZs2aNdXuc8OGDWbv3r01eSt1ykMPPWQkmd27d1f7+slzW5ccPnzYVFVV1Xj8jBkzjCRzxx13mFatWgW9t549e5qRI0eamJgYM2bMGIujrR2HDh2q7RCAU6L9hHrr22+/VdOmTRUREVywDAv7z7dGYWGhnn/+efXr10+jR4+udl+pqan6yU9+UuNj5+Xl6W9/+5vGjRuna6+9ttoxV1xxhVq3bi1J+vrrrzVhwgRdeumlatSokZo1a6Zrr71WH3zwQcDX7NmzRx6PR08++aSeeOIJtWnTRtHR0UpLS9POnTtVXl6uqVOnKikpSfHx8RoyZIiKiopqHHdNfPvttwoLC1OzZs2qff2HcytJL774oi655BJ5vV61b99eL730km6//Xa1adPGP+a9996Tx+PRe++9V+37ffHFF/3bNm7cqBEjRvjfe5s2bTRy5Ejt3bs36Lgej0erVq3S2LFjdeGFF6phw4YqKyuTJC1btkzdu3dXTEyMGjVqpH79+mnz5s3VvqexY8eqoKBA2dnZ/m07d+7UunXrNHbs2KDxR48e1X333afLLrtM8fHxSkhIUPfu3fXmm28GjfV4PLr77rv1v//7v/rRj34kr9erSy+9VEuXLq32/WRnZ+sXv/iFEhISFBMTo0GDBlXbGlu9erV69+6tuLg4NWzYUFdddZXWrFkTMOZEe23Tpk0aNmyYGjdurIsuuqjaOQDqApIa1Fvdu3fXRx99pF/96lf66KOPVF5eXu24tWvXqry8XDfeeKNlx161apUk1Xif3333nSRpxowZ+utf/6qFCxeqbdu2SktLC/pFL0l/+MMf9Pe//11/+MMf9Pzzz+uzzz7ToEGDNG7cOH399dd64YUXNGvWLK1evVp33HGHVW9L0vF5raqq0tChQ/XOO+8EtONO9uKLL+oXv/iF2rdvr9dff12/+c1v9Mgjj+jdd9895+Pv2bNHl1xyiebMmaN33nlHTzzxhPbv368rrrhC33zzTdD4sWPHKjIyUi+//LL+9Kc/KTIyUpmZmRo5cqQuvfRS/fGPf9TLL7+s0tJS/fSnP9X27duD9pGamqqf/vSneuGFF/zbXnjhBbVp00a9e/cOGl9WVqbvvvtO999/v1asWKFXX31VPXv21NChQ/XSSy8FjV+5cqV+//vfa+bMmfrTn/6k5ORkjRw5Un/605+Cxo4bN05hYWFasmSJ5syZow0bNigtLU3ff/+9f8zixYvVt29fxcXFadGiRfrjH/+ohIQE9evXLyixkaShQ4fq4osv1muvvaZnnnnmlHMP1LraLhUBteWbb74xPXv2NJKMJBMZGWl69OhhsrKyTGlpqX/c448/biSZt99++6yPcar20/jx440k89lnn51T7BUVFaa8vNz07t3bDBkyxL89Pz/fSDKdOnUKaIXMmTPHSDKDBw8O2E96erqRZIqLi88pjupUVVWZO++804SFhRlJxuPxmPbt25t7773X5Ofn+8dVVlaapKQk07lz54CWz549e0xkZKRJTk72b1u7dq2RZNauXRtwrBPvd+HChaeMp6Kiwhw8eNDExMSY//mf//FvP/FvM3r06IDx+/btMxEREeaee+4J2F5aWmp8Pp8ZPny4f9uJ9tPXX39tFi5caLxer/n2229NRUWFad68ucnIyDDGmDO2n078e44bN85cfvnlAa9JMtHR0aawsDBgfLt27czFF18c9H5++Hkwxpi///3vRpJ59NFHjTHH20cJCQlm0KBBAeMqKytNp06dzJVXXhn0/h566KFTxg7UJVRqUG81adJEH3zwgXJzc/X444/rZz/7mXbu3Klp06apY8eO1f5VX5ueeeYZde7cWQ0aNFBERIQiIyO1Zs0a/fOf/wwae/311we0edq3by9JGjhwYMC4E9v37dt3yuMaY1RRURHwOB2Px6NnnnlGu3fv1rx58/SLX/xC5eXleuqpp/TjH//Yv6prx44d+uqrrzRq1Ch5PB7/1ycnJ6tHjx5nmI1TO3jwoKZMmaKLL75YERERioiIUKNGjXTo0KFq5+rnP/95wPN33nlHFRUVGj16dMB7btCggXr16lVtZUySbrrpJkVFRemVV17RW2+9pcLCwtOueHrttdd01VVXqVGjRv5/zwULFlQbY+/evZWYmOh/Hh4erptvvlmff/65vvjii4Cxt9xyS8DzHj16KDk5WWvXrpUkrV+/Xt99953GjBkT8P6qqqrUv39/5ebm6tChQ6edI6CuIqlBvde1a1dNmTJFr732mr766ivde++92rNnj2bNmiVJ/vNa8vPzLTvm2e5z9uzZuuuuu9StWze9/vrr+sc//qHc3Fz1799fR44cCRqfkJAQ8DwqKuq0248ePXrKY+fk5CgyMjLgsWfPnjPGnJycrLvuuksLFizQrl27tGzZMh09elQPPPCApOPn3kiSz+cL+trqttXUqFGjNHfuXN1xxx165513tGHDBuXm5urCCy+sdq6aN28e8Pzf//63pOPnNJ38vpctW3bKZDcmJkY333yzXnjhBS1YsEB9+vRRcnJytWOXL1+u4cOHq0WLFlq8eLE+/PBD5ebmauzYsdX+W5xujk7M45nGnhh34v0NGzYs6P098cQTMsb4252nmiOgrmJJN/ADkZGRmjFjhp566ilt3bpVknTNNdcoMjJSK1as0Pjx4y05Tr9+/fTrX/9aK1asUP/+/c84fvHixUpLS9P8+fMDtpeWlloSz+l06dJFubm5AduSkpLOej/Dhw9XVlaWf16bNGki6fiJ2Cc7eVuDBg0kyX8S7wknJxjFxcX6y1/+ohkzZmjq1Kn+7SfOYanOD6tEktS0aVNJ8p+7cjbGjh2r559/Xp988oleeeWVU45bvHixUlJStGzZsoDjn/z+TjjdHJ2YxzONvfjiiyX95/09/fTT+q//+q9qj/fDqpAUPEdAXUWlBvXW/v37q91+ovx/4he3z+fz/9Vf3UmckvSvf/1Ln3zySY2P3blzZw0YMEALFiw45UmxGzdu9LeFPB6PvF5vwOuffPKJPvzwwxof81zFxsaqa9euAY8TFZ7qnGpeDx48qIKCAv+8XnLJJWrevLleffVVGWP84/bu3av169cHfO2JlVAnz/HKlSsDnns8Hhljgubq+eefV2Vl5enf6P/r16+fIiIi9K9//SvofZ94nEr37t01duxYDRkyREOGDDnlOI/Ho6ioqIBkobCwsNrVT5K0Zs0af4VFkiorK7Vs2TJddNFFatmyZcDYk5Op9evXa+/evUpLS5MkXXXVVbrgggu0ffv2U76/0/37AnUZlRrUW/369VPLli01aNAgtWvXTlVVVdqyZYt+97vfqVGjRpo0aZJ/7OzZs7V7927dfvvteueddzRkyBAlJibqm2++UXZ2thYuXKilS5ee1bLul156Sf3799eAAQM0duxYDRgwQI0bN9b+/fv15z//Wa+++qry8vLUunVr3XDDDXrkkUc0Y8YM9erVSzt27NDMmTOVkpJyxnNcQu2xxx7T3//+d91888267LLLFB0drfz8fM2dO1fffvutnnzySUnHl3Y/8sgjuuOOOzRkyBD98pe/1Pfff6+MjIygForP51OfPn2UlZWlxo0bKzk5WWvWrNHy5csDxsXFxenqq6/Wk08+qaZNm6pNmzbKycnRggULdMEFF9Qo/jZt2mjmzJmaPn26du/erf79+6tx48b697//rQ0bNigmJkYPP/zwKb9+wYIFZzzGDTfcoOXLl2vChAkaNmyYCgoK9Mgj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JUXR0dFq27atZs6cqaqq/9xglbms3vvvv69BgwYpKSlJHo9HK1asCHi9JvNWVlame+65R02bNlVMTIwGDx6sL774IoTvom443VyWl5drypQp6tixo2JiYpSUlKTRo0frq6++CtiHJXNpHGbp0qUmMjLSPPfcc2b79u1m0qRJJiYmxuzdu7e2Q6uz+vXrZxYuXGi2bt1qtmzZYgYOHGhat25tDh486B/z+OOPm9jYWPP666+bTz/91Nx8882mefPmpqSkpBYjr7s2bNhg2rRpY37yk5+YSZMm+bczjzXz3XffmeTkZHP77bebjz76yOTn55vVq1ebzz//3D+GuayZRx991DRp0sT85S9/Mfn5+ea1114zjRo1MnPmzPGPYS6r99Zbb5np06eb119/3Ugyb7zxRsDrNZm38ePHmxYtWpjs7GyzadMmc80115hOnTqZioqKEL+b2nW6ufz+++9Nnz59zLJly8xnn31mPvzwQ9OtWzfTpUuXgH1YMZeOS2quvPJKM378+IBt7dq1M1OnTq2liJynqKjISDI5OTnGGGOqqqqMz+czjz/+uH/M0aNHTXx8vHnmmWdqK8w6q7S01KSmpprs7GzTq1cvf1LDPNbclClTTM+ePU/5OnNZcwMHDjRjx44N2DZ06FBz6623GmOYy5o6+RdxTebt+++/N5GRkWbp0qX+MV9++aUJCwszb7/9dshir2uqSxBPtmHDBiPJX5Cwai4d1X46duyY8vLy1Ldv34Dtffv21fr162spKucpLi6WJP9dUvPz81VYWBgwr16vV7169WJeqzFx4kQNHDhQffr0CdjOPNbcypUr1bVrV910001q1qyZLr/8cj333HP+15nLmuvZs6fWrFmjnTt3SpI+/vhjrVu3Ttdff70k5vJc1WTe8vLyVF5eHjAmKSlJHTp0YG7PoLi4WB6PRxdccIEk6+ay1m6TcC6++eYbVVZWBt3JOzExMeiO36ieMUaTJ09Wz5491aFDB0nyz11187p3796Qx1iXLV26VJs2bVJubm7Qa8xjze3evVvz58/X5MmT9etf/1obNmzQr371K3m9Xo0ePZq5PAtTpkxRcXGx2rVrp/DwcFVWVuqxxx7TyJEjJfG5PFc1mbfCwkJFRUWpcePGQWP4nXRqR48e1dSpUzVq1Cj/Hc+tmktHJTUneDyegOfGmKBtqN7dd9+tTz75ROvWrQt6jXk9vYKCAk2aNEmrVq1SgwYNTjmOeTyzqqoqde3aVZmZmZKkyy+/XNu2bdP8+fM1evRo/zjm8syWLVumxYsXa8mSJfrxj3+sLVu2KD09XUlJSRozZox/HHN5bs5l3pjbUysvL9eIESNUVVWlefPmnXH82c6lo9pPTZs2VXh4eFDWVlRUFJRNI9g999yjlStXau3atWrZsqV/u8/nkyTm9Qzy8vJUVFSkLl26KCIiQhEREcrJydHvf/97RURE+OeKeTyz5s2b69JLLw3Y1r59e+3bt08Sn8mz8cADD2jq1KkaMWKEOnbsqNtuu0333nuvsrKyJDGX56om8+bz+XTs2DEdOHDglGPwH+Xl5Ro+fLjy8/OVnZ3tr9JI1s2lo5KaqKgodenSRdnZ2QHbs7Oz1aNHj1qKqu4zxujuu+/W8uXL9e677yolJSXg9ZSUFPl8voB5PXbsmHJycpjXH+jdu7c+/fRTbdmyxf/o2rWrbrnlFm3ZskVt27ZlHmvoqquuCrqswM6dO5WcnCyJz+TZOHz4sMLCAn+Uh4eH+5d0M5fnpibz1qVLF0VGRgaM2b9/v7Zu3crcnuREQrNr1y6tXr1aTZo0CXjdsrk8ixOa64QTS7oXLFhgtm/fbtLT001MTIzZs2dPbYdWZ911110mPj7evPfee2b//v3+x+HDh/1jHn/8cRMfH2+WL19uPv30UzNy5EiWfNbAD1c/GcM81tSGDRtMRESEeeyxx8yuXbvMK6+8Yho2bGgWL17sH8Nc1syYMWNMixYt/Eu6ly9fbpo2bWoefPBB/xjmsnqlpaVm8+bNZvPmzUaSmT17ttm8ebN/RU5N5m38+PGmZcuWZvXq1WbTpk3m2muvrZdLuk83l+Xl5Wbw4MGmZcuWZsuWLQG/h8rKyvz7sGIuHZfUGGPMH/7wB5OcnGyioqJM586d/UuTUT1J1T4WLlzoH1NVVWVmzJhhfD6f8Xq95uqrrzaffvpp7QXtECcnNcxjzf35z382HTp0MF6v17Rr1848++yzAa8zlzVTUlJiJk2aZFq3bm0aNGhg2rZta6ZPnx7wy4K5rN7atWur/dk4ZswYY0zN5u3IkSPm7rvvNgkJCSY6OtrccMMNZt++fbXwbmrX6eYyPz//lL+H1q5d69+HFXPpMcaYsy0jAQAA1DWOOqcGAADgVEhqAACAK5DUAAAAVyCpAQAArkBSAwAAXIGkBgAAuAJJDQAAcAWSGgAA4AokNQAAwBVIagAAgCuQ1AAAAFf4P9R9bM+pjLWrAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "square_cameras = ['ASTRICam', 'CHEC', 'SCTCam']\n", + "\n", + "mapper_class_name = \"SquareMapper\"\n", + "subarray = SubarrayDescription.read(\"dataset://gamma_prod5.simtel.zst\")\n", + "for camera in square_cameras:\n", + " cam_geom = CameraGeometry.from_name(camera)\n", + " print(f\"{camera} - {mapper_class_name}:\")\n", + " image_mapper = ImageMapper.from_name(mapper_class_name, geometry=cam_geom, subarray=subarray)\n", + " print(\"Initialization time: \")\n", + " %timeit image_mapper = ImageMapper.from_name(mapper_class_name, geometry=cam_geom, subarray=subarray)\n", + " test_pixel_values = np.expand_dims(np.arange(image_mapper.n_pixels), axis=1)\n", + " image = image_mapper.map_image(test_pixel_values)\n", + " print(\"Mapping time: \")\n", + " %timeit image = image_mapper.map_image(test_pixel_values)\n", + "\n", + " fig, ax = plt.subplots(1)\n", + " ax.pcolor(image[:,:,0], cmap='viridis')\n", + " ax.set_title(f\"{camera} - {mapper_class_name}\")\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": false + }, + "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "VERITAS: Padding\n" + "/opt/anaconda3/lib/python3.11/site-packages/ctapipe/instrument/camera/geometry.py:616: FromNameWarning: .from_name uses pre-defined data that is likely different from the data being analyzed. Access instrument information via the SubarrayDescription instead.\n", + " warn_from_name()\n" ] }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "MAGICCam: Default\n" + "LSTCam - AxialMapper:\n", + "Initialization time: \n", + "47.1 ms ± 177 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "23.7 µs ± 42.6 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6zUlEQVR4nO3de3SV1b3u8efNhUUSkkC45AIRIgQQEFRQCGhha6EielTqFYeHSvVogVpKu6lKd43WgqVnU2zZ2FYB6RCKteJlt1ZJq8QLUgOCIFgLEiFcQrgmIUACyTx/eFjbZYA1A5NJEr+fMdYY5F0zv3eumZXwy7vWkxkYY4wAAAA8iTnXEwAAAF8tNB8AAMArmg8AAOAVzQcAAPCK5gMAAHhF8wEAALyi+QAAAF7RfAAAAK9oPgAAgFc0H/jKe+aZZxQEgVauXHnKcSUlJRo/fry6d++uhIQEpaWl6cILL9Q999yjkpISffbZZwqCwOr22WefSZI2b96siRMnhmsmJiaqd+/e+vGPf6zt27d7ePRn1+TJkxUEga699tozqrNs2TIFQaBly5Y5+dz8/HwFQaCYmBht3ry53udUVVUpJSVFQRDoW9/61ulPHMAJxZ3rCQBNwbZt23TJJZeodevW+sEPfqAePXqovLxcGzZs0B//+Edt3rxZgwYN0nvvvRfxeePHj1d5ebkWLlwYcTwzM1N//vOfddttt6ldu3aaOHGiLr74YgVBoHXr1mnevHn6y1/+otWrV/t8mE4dPXpUzz77rCTptdde0/bt29WxY8fTqnXJJZfovffeU69evVxOUa1atdL8+fP105/+NOL4888/r6NHjyo+Pt7p+QB8juYDsPDUU09pz549ev/995WTkxM+fsMNN+ihhx5SXV2dYmJiNGjQoIjPS0lJUU1NTb3jxcXFuu2229S9e3e9+eabSk1NDd935ZVX6v7779eLL754dh/UWfbyyy9r9+7dGjVqlP7yl79owYIFeuihh06rVkpKSr01dOHWW2/VggUL9Mgjjygm5n8uBM+dO1c33nijXnnlFefnPFcOHTqkxMTEcz0NQBIvuwBW9u7dq5iYGHXo0OGE93/xPy4bM2fOVFVVlebMmRPReBwXBIFGjx4d/rigoEDXX3+9OnXqpJYtW6pbt2669957tWfPnojPO/5ywtq1a3XzzTcrNTVVaWlpmjx5so4dO6ZPPvlEV199tZKTk9WlSxfNmDGjQfNuiLlz56pFixaaP3++srOzNX/+fH15H8v77rtPLVu21KpVq8LH6urqdNVVVyk9PV07d+6UdOKXTlauXKnbbrtNXbp0UUJCgrp06aLbb79dW7ZssZ7juHHjVFJSooKCgvCxf/3rX3rnnXc0bty4euOPHDmiH/zgB7rooovCa5uXl6eXX3653tggCDRx4kT99re/Vffu3RUKhdSrVy8tXrw4Ytzxl/0KCgp01113KS0tTUlJSbruuutO+JLQ3/72N1111VVKSUlRYmKihgwZor///e8RY44/Dz744APddNNNatOmjbp27Wq9LsDZRvMBWMjLy1NdXZ1Gjx6t119/XRUVFWdUb+nSpUpPT7f+bf7TTz9VXl6ennzySS1dulQ/+clP9I9//EOXX365jh49Wm/8Lbfcon79+umFF17QPffco1/+8pf6/ve/rxtuuEGjRo3Siy++qCuvvFI/+tGPtGTJkjN6LCeybds2LV26VNdff73at2+vsWPHatOmTXrrrbcixs2aNUsXXHCBbrnlFh04cECS9Mgjj2jZsmV69tlnlZmZedJzfPbZZ+rRo4dmzZql119/XT//+c+1c+dOXXrppfWaspPJzc3VFVdcoXnz5oWPzZs3T126dNFVV11Vb3x1dbX27dunH/7wh3rppZf0hz/8QZdffrlGjx6t3//+9/XGv/LKK/rVr36lRx99VH/605/UuXNn3X777frTn/5Ub+y3v/1txcTEaNGiRZo1a5bef/99DRs2LLwukvTss89qxIgRSklJ0YIFC/THP/5RaWlp+sY3vlGvAZGk0aNHq1u3bnr++ef1m9/8xmpNAC8M8BU3f/58I8kUFRWddExdXZ259957TUxMjJFkgiAwF1xwgfn+979viouLT/p5Q4cONb179653vGXLlmbQoEGnNd+6ujpz9OhRs2XLFiPJvPzyy+H7Hn74YSPJ/Od//mfE51x00UVGklmyZEn42NGjR0379u3N6NGjT2sep/Loo48aSea1114zxhizefNmEwSBufPOO+uN3bhxo0lJSTE33HCD+dvf/mZiYmLMj3/844gxb775ppFk3nzzzZOe89ixY+bgwYMmKSnJPPHEE6f83OPrtHv3bjN//nwTCoXM3r17zbFjx0xmZqbJz883xhiTlJRkxo4de8pzHj161Hz72982F198ccR9kkxCQoIpLS2NGN+zZ0/TrVu38LHjz78bb7wx4vPfffddI8k89thjxhhjqqqqTFpamrnuuusixtXW1pp+/fqZyy67rN7j+8lPfnLSuQPnElc+AAtBEOg3v/mNNm/erDlz5uiuu+7S0aNH9ctf/lK9e/dWYWHhWT1/WVmZ7rvvPmVnZysuLk7x8fHq3LmzJOnjjz+uN/7L6ZILLrhAQRBo5MiR4WNxcXHq1q1b1Jcp6urqdOzYsfCttrb2lOONMeGXWoYPHy5JysnJ0bBhw/TCCy/Uu2rUrVs3PfXUU3rppZd07bXX6oorrlB+fv4pzyFJBw8e1I9+9CN169ZNcXFxiouLU6tWrVRVVXXCNTmZm2++WS1atNDChQv16quvqrS09JQJl+eff15DhgxRq1atwl+LuXPnnvCcx18+Oi42Nla33nqrNm3apG3btkWMveOOOyI+Hjx4sDp37qw333xTkrR8+XLt27dPY8eOjfh61NXV6eqrr1ZRUZGqqqoianzzm9+0XgfAJ5oPoAE6d+6s73znO5o7d642btyo5557TkeOHNG///u/N6jOeeedp+LiYquxdXV1GjFihJYsWaIpU6bo73//u95//32tWLFCknT48OF6n5OWlhbxcYsWLZSYmKiWLVvWO37kyJFTnn/cuHGKj48P3070csQXvfHGGyouLtbNN9+siooKHThwQAcOHNAtt9yiQ4cO6Q9/+EO9zxk1apTS09N15MgRTZ48WbGxsac8hySNGTNGs2fP1t13363XX39d77//voqKitS+ffsTrsnJJCUl6dZbb9W8efM0d+5cff3rXw83dl+2ZMkS3XLLLerYsaOeffZZvffeeyoqKtK4ceNOuI4ZGRknPbZ3716rscfH7dq1S5J00003RXw94uPj9fOf/1zGGO3bty/i80/1shVwLpF2Ac7ALbfcounTp+ujjz5q0Od94xvf0K9//WutWLEi6vs+PvroI3344Yd65plnNHbs2PDxTZs2ndacGyo/P18TJ04Mf5ycnHzK8XPnzpX0+ZtqZ86cecL777333ohj9913nyorK9W7d2/df//9uuKKK9SmTZuTnqO8vFx//vOf9fDDD+uBBx4IHz/+noyGGjdunJ5++mmtXbu2Xiz6i5599lnl5OToueeeUxAEEec9kdLS0pMea9u2rdXYbt26SZLatWsnSfr1r3990ufMF6+ySIqYI9CY0HwAFnbu3HnC3yIPHjyokpISZWVlNaje97//fc2bN0/jx4+vF7WVPn/p4qWXXtKNN94Y/g8kFApFjPntb3/bwEdxerp06aIuXbpYjd2/f79efPFFDRkyRI899li9+59++mktXLhQH330kfr06RM+9uyzz2revHkaOnSoLrnkEt1111166aWXTnqeIAhkjKm3Jk8//XTUl4VOJC8vT+PGjVN5ebluvPHGU563RYsWEf+pl5aWnjDtIkl///vftWvXrnBTUFtbq+eee05du3ZVp06dIsYuXLgw4mWS5cuXa8uWLbr77rslSUOGDFHr1q21YcOGiGYQaIpoPoD/74033gj/5dEvuuaaa/Szn/1M7777rm699VZddNFFSkhIUHFxsWbPnq29e/fqF7/4RYPOlZOTo8WLF4frHf8jY5K0YcMGzZs3T8YY3XjjjerZs6e6du2qBx54QMYYpaWl6b//+78j4qGNxcKFC3XkyBHdf//9GjZsWL3727Ztq4ULF2ru3Ln65S9/qXXr1un+++/X2LFjddddd0n6/MrITTfdpFmzZmnSpEknPE9KSoq+9rWv6Re/+IXatWunLl26qLCwUHPnzlXr1q1Pa+7Hr9icyrXXXqslS5Zo/Pjxuummm1RSUqKf/vSnyszM1MaNG+uNb9euna688kr9x3/8h5KSkjRnzhz985//rBe3lT6PDt999926+eabVVJSoqlTp6pjx44aP368pM//INqvf/1rjR07Vvv27dNNN92kDh06aPfu3frwww+1e/duPfnkk6f12AHvzuW7XYHG4Hja4GS34uJis2LFCjNhwgTTr18/k5aWZmJjY0379u3N1VdfbV599dWT1j5Z2uW4Tz/91IwfP95069bNhEIhk5CQYHr16mUmT54ckaLZsGGDGT58uElOTjZt2rQxN998s9m6dauRZB5++OHwuC+mOL5o7NixJikpqcHza6iLLrrIdOjQwVRXV590zKBBg0y7du3MgQMHTM+ePU2vXr1MVVVVxJgJEyaY+Ph4849//MMYc+LEyrZt28w3v/lN06ZNG5OcnGyuvvpq89FHH5nOnTtHJFSipV1O5URpl8cff9x06dLFhEIhc8EFF5innnoqXO+LJJkJEyaYOXPmmK5du5r4+HjTs2dPs3Dhwohxx59/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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "MAGICCam: Padding\n" + "FlashCam - AxialMapper:\n", + "Initialization time: \n", + "46.5 ms ± 1.12 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "23.5 µs ± 20.9 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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j687Zs+vaUbOP/9884tf/CJh2ZlnnmkeeOCBozSj1kOSee211+Jfx2IxE41GzfTp0+PLDhw4YDIyMswf/vCHozDDlq+srMxIMsXFxcYYznFTOP74482zzz7LuQ1YRUWF6dGjhykqKjK5ubnmnnvuMcbwGg7C1KlTzTnnnHPIdcfy+W02Vz6qqqr00UcfaejQoQnLhw4dqlWrVh2lWbVemzZtUmlpacL5jkQiys3N5XwfoT179kiSOnbsKIlzHKTa2lotXLhQe/fu1YABAzi3Abvzzjt1+eWX69JLL01YznkOxsaNG5WVlaWcnByNGjVKX3zxhaRj+/w2yX+vfiR27Nih2traOp1vMzMz63TIReMdPKeHOt+bN28+GlNq0YwxmjBhggYNGqSePXtK4hwHYf369RowYIAOHDig9u3b67XXXtOPfvSj+Acz57bxFi5cqI8//lglJSV11vEabrz+/fvr+eef1+mnn65vvvlGjz32mAYOHKgNGzYc0+e32RQfB4VCoYSvjTF1liE4nO9g3HXXXfrkk0/03nvv1VnHOT5yZ5xxhtatW6fdu3fr1Vdf1ejRo1VcXBxfz7ltnK1bt+qee+7R0qVL1aZNm8OO4zwfuWHDhsX/3atXLw0YMECnnnqq5s+frwsuuEDSsXl+m82fXU444QQlJSXVucpRVlZWpypE4x2825rz3Xh333233njjDS1btkxdu3aNL+ccN15qaqpOO+009evXT4WFhTrnnHP0xBNPcG4D8tFHH6msrEx9+/ZVcnKykpOTVVxcrN/97ndKTk6On0vOc3DatWunXr16aePGjcf067jZFB+pqanq27evioqKEpYXFRVp4MCBR2lWrVdOTo6i0WjC+a6qqlJxcTHn25ExRnfddZcWLVqkd999Vzk5OQnrOcfBM8aosrKScxuQSy65ROvXr9e6devij379+umGG27QunXrdMopp3CeA1ZZWalPP/1UXbp0ObZfx0ftVtdDWLhwoUlJSTFz5swxf/vb38z48eNNu3btzJdffnm0p9YiVVRUmLVr15q1a9caSWbmzJlm7dq1ZvPmzcYYY6ZPn24yMjLMokWLzPr16831119vunTpYsrLy4/yzFuGO+64w2RkZJjly5eb7du3xx/79u2Lj+EcH7nJkyebFStWmE2bNplPPvnEPPjggyYcDpulS5caYzi3TeVf0y7GcJ4b69577zXLly83X3zxhVm9erW54oorTHp6evzn2rF6fptV8WGMMb///e9Nt27dTGpqqvnxj38cjy2i4ZYtW2Yk1XmMHj3aGPN9zGvq1KkmGo2aSCRiBg8ebNavX390J92CHOrcSjLPPfdcfAzn+MiNGTMm/llw4oknmksuuSReeBjDuW0qPyw+OM+Nc91115kuXbqYlJQUk5WVZUaOHGk2bNgQX3+snt+QMcYcnWsuAADgWNRs7vkAAADHBooPAADgFcUHAADwiuIDAAB4RfEBAAC8ovgAAABeUXwAAACvKD4AAIBXFB8AAMArig8AAOAVxQcAAPDq/wfy6fAIdruM+gAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FACT: Default\n" + "NectarCam - AxialMapper:\n", + "Initialization time: \n", + "46.9 ms ± 62.3 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "23.8 µs ± 53.8 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA7cklEQVR4nO3df3RU1b3//9fk1yRAEvmZEEWMilSBYAU/CFaDSGjxR21Z1Sq2xVptFewqoqVS2hpsL0F6m2IvilcKiNqU1oo/v4ikBaNepAYERfTTggSISIxgkgmBJCTZ3z/8MNcxyOzAziYTno+1Zi1zZmeffc4M8Z2T855XwBhjBAAA4EnciV4AAAA4uVB8AAAAryg+AACAVxQfAADAK4oPAADgFcUHAADwiuIDAAB4RfEBAAC8ovgAAABeUXyg03j00UcVCASUnJysnTt3tnp+9OjRGjx4cLvtf8WKFcrPz2+3+SWppaVFjz/+uMaOHatevXopMTFRffr00VVXXaXnn39eLS0t7br/9rZ3714Fg0EFAgGtX7/+uOYaPXq0Ro8e7ex7A4GAAoGAbrrppiN+z3333Rces2PHjmPaL3CyoPhAp9PQ0KBf/OIX3ve7YsUKzZo1q93mr6+v1xVXXKFJkyapT58+WrBggVavXq2HH35YWVlZuvbaa/X888+32/59ePzxx9XY2ChJWrRo0XHN9dBDD+mhhx5ysayw1NRUPfnkk6qtrY3YbozRo48+qrS0NKf7Azorig90Ol/72tdUVFSkt95660QvxYkDBw5IkqZNm6aXXnpJjz76qIqKinTttdfqkksu0YQJE/TII49o8+bNys7OPsGrPT6LFy9Wnz59dOGFF+rPf/6zDh48eMxznXfeeTrvvPMcrk665pprZIzRsmXLIravXr1aZWVl+va3v+10fyeSMea4zj9wNBQf6HSmT5+unj176mc/+1nUscYYPfTQQzr//POVkpKi7t2761vf+pa2b9/eauzKlSt1+eWXKz09XV26dNG5556rgoICSdJNN92kBx98UNL/Xp7/7OX3Bx98UJdeeqn69Omjrl27asiQIZo7d64OHToUsY/Dfxp65ZVXNGrUKHXp0kU333yzKioq9Mc//lFf/epX9b3vfe+IxzJgwADl5ORI+vQqyV133aXzzz9f6enp6tGjh0aOHKlnn3221fcFAgHdcccdWrJkiQYOHKiUlBQNHz5c69atkzFGv/3tb5Wdna1u3bppzJgx2rZtW9Tzeiz++c9/6p133tF3v/td3XrrraqpqdFTTz0VMWbr1q1KS0vTtddeG7F99erVio+P1y9/+cvwtiP96WTWrFkaMWKEevToobS0NF1wwQVatGiRbPM109PT9c1vflOLFy+O2L548WJdfPHFOuecc1p9T3Fxsa655hqddtppSk5O1tlnn60f/ehH2rt3b8S4/Px8BQIBbdy4URMmTFBaWprS09P1ne98Rx9//HHE2DPOOENXXXWVnn76aeXk5Cg5OVlnnnmm/vCHP7TafygU0t13363s7GwlJSXp1FNP1dSpU1VXVxcx7vD74OGHH9a5556rYDCopUuXWp0XoM0M0EksWbLESDKlpaXmgQceMJLMP/7xj/Dzubm5ZtCgQRHfc+utt5rExERz1113mZUrV5qioiLzpS99yWRkZJiKiorwuD/+8Y8mEAiY0aNHm6KiIvP3v//dPPTQQ2by5MnGGGO2bdtmvvWtbxlJ5vXXXw8/6uvrjTHG3HnnnWbBggVm5cqVZvXq1eb3v/+96dWrl/n+978fsZ7c3FzTo0cP069fP/Nf//VfZs2aNaakpMQUFRUZSWbBggVW56K6utrcdNNN5vHHHzerV682K1euNHfffbeJi4szS5cujRgryfTv39+MGjXKLF++3Dz99NPmnHPOMT169DB33nmnueaaa8wLL7xg/vSnP5mMjAyTk5NjWlpa7F8YS7feequRZLZs2WJCoZDp0qWLGT16dKtxy5YtM5LMAw88YIwxZs+ePSYjI8Pk5uaapqam8Ljc3FyTm5sb8b033XSTWbRokSkuLjbFxcXm17/+tUlJSTGzZs2KGHek75VkpkyZYv7xj38YSebdd981xhhTVVVlkpOTzeLFi81vf/tbI8mUlZWFv2/BggWmoKDAPPfcc6akpMQsXbrUDB061AwcONA0NjaGx917773h1+KnP/2peemll0xhYaHp2rWr+fKXvxwxtn///ubUU081p59+ulm8eLFZsWKFufHGG40k89vf/jY8rq6uzpx//vmmV69eprCw0Pz97383DzzwgElPTzdjxoyJeB0lmVNPPdXk5OSYoqIis3r1avPOO+9EedWAY0PxgU7js8VHQ0ODOfPMM83w4cPDP2A/X3y8/vrrRpL53e9+FzFPeXm5SUlJMdOnTzfGGFNbW2vS0tLMV77ylaP+T3fKlCnGpp5vbm42hw4dMo899piJj483n3zySfi53NzcVkWTMcbMmTPHSDIrV66MfiKOoKmpyRw6dMj84Ac/MF/+8pcjnpNkMjMzzf79+8PbnnnmGSPJnH/++RHHPG/ePCPJvP3228e0ji9SV1dn0tLSzEUXXRTeNmnSJBMIBMy2bdtajb/99ttNUlKSef31182YMWNMnz59zIcffhgx5kgFxGcdfh3uu+8+07Nnz4jjPFrx0dLSYrKzs83dd99tjDHmwQcfNN26dTO1tbVHLD4+q6WlxRw6dMjs3LnTSDLPPvts+LnDxcedd94Z8T1/+tOfjCTzxBNPhLf179/fBAIBs2nTpoixeXl5Ji0tzdTV1RljjCkoKDBxcXGmtLQ0Ytzf/vY3I8msWLEi4vjS09Mj3o9Ae+HPLuiUkpKS9Jvf/Ebr16/XX//61yOOeeGFFxQIBPSd73xHTU1N4UdmZqaGDh2ql19+WZK0du1ahUIhTZ48WYFA4JjWs3HjRn39619Xz549FR8fr8TERH3ve99Tc3Oz/v3vf0eM7d69u8aMGXNM+/msJ598UhdffLG6deumhIQEJSYmatGiRXrvvfdajb3sssvUtWvX8NfnnnuuJGn8+PERx3x4+5G6iT7rs+ezqakp6p81/vrXvyoUCunmm28Ob7v55ptljNGSJUtajf/973+vQYMG6bLLLtPLL7+sJ554Qn379j3qPqRP/zwzduxYpaenh1+HX/3qV9q3b58qKyujfr+kcMfL448/rqamJi1atEjXXXedunXrdsTxlZWVuu2229SvX7/w69C/f39JOuJrceONN0Z8fd111ykhIUFr1qyJ2D5o0CANHTo0YtvEiRMVCoX05ptvSvr0PT548GCdf/75Ea/HV7/6VQUCgfB7/LAxY8aoe/fuVucBOB4UH+i0rr/+el1wwQWaOXNmq3srJOmjjz6SMUYZGRlKTEyMeKxbty78N/nDf28/7bTTjmkdu3bt0iWXXKLdu3frgQce0KuvvqrS0tLwPSKfv6nvSP8TPf300yVJZWVlVvtcvny5rrvuOp166ql64okn9Prrr6u0tFQ333yz6uvrW43v0aNHxNdJSUlH3X6kOQ7bsWNHq/NZUlJy1PUuWrRIycnJ+trXvqbq6mpVV1crJydHZ5xxhh599FE1NzdHjA8Gg5o4caLq6+t1/vnnKy8v76jzS9Ibb7yhcePGSZIWLlyo//mf/1FpaalmzpwpqfXrcDTf//739fHHH2v27Nl688039YMf/OCI41paWjRu3DgtX75c06dP1z/+8Q+98cYbWrdu3RfuMzMzM+LrhIQE9ezZU/v27TvquM9uOzz2o48+0ttvv93q9UhNTZUxptV9JzYFHOBCwoleANBeAoGA7r//fuXl5emRRx5p9XyvXr0UCAT06quvKhgMtnr+8LbevXtLkj744INjWsczzzyjuro6LV++PPwbryRt2rTpC9f9eZdddpkSExP1zDPP6Lbbbou6zyeeeELZ2dn6y1/+EjFfQ0ND2w+gjbKyslRaWhqxbeDAgV84/t///rdee+01Sf9bZH3eSy+9pCuuuCL89TvvvKNf/epXuvDCC1VaWqrCwkJNmzbtqOtatmyZEhMT9cILLyg5OTm8/Zlnnol2SK3069dPY8eO1axZszRw4ECNGjXqiOPeeecdvfXWW3r00Uc1adKk8Paj3bRbUVGhU089Nfx1U1OT9u3bp549e7Yad6TvlRQe26tXL6WkpLS6QfawXr16RXx9rFf2gLai+ECnNnbsWOXl5em+++5Tv379Ip676qqrNGfOHO3evVvXXXfdF84xatQopaen6+GHH9b111//hT+gDxcrBw8eVEpKSnj74fGfLXCMMVq4cKH1cWRmZuqWW27RggUL9Nhjjx2x4+X9999XXV2dcnJyFAgElJSUFLHWioqKI3a7uJaUlKThw4dbjz/8eR4LFy7U2WefHfHcwYMHdc0112jx4sXh4qOurk7XXnutzjjjDK1Zs0b33HOP7rnnHl188cUaMWLEF+4nEAgoISFB8fHxEfM//vjjbTm8sLvuukspKSmtOm8+v09JrYrb//7v//7C7/nTn/6kYcOGhb/+61//qqampladO1u2bNFbb70V8aeXoqIipaam6oILLpD06Xt89uzZ6tmzZ8y3YaNzofhAp3f//fdr2LBhqqys1KBBg8LbL774Yv3whz/U97//fa1fv16XXnqpunbtqj179ui1117TkCFDdPvtt6tbt2763e9+p1tuuUVjx47VrbfeqoyMDG3btk1vvfWW5s+fL0kaMmRIeH/jx49XfHy8cnJylJeXp6SkJN1www2aPn266uvrtWDBAlVVVbXpOAoLC7V9+3bddNNNeumll/TNb35TGRkZ2rt3r4qLi7VkyRItW7ZMOTk5uuqqq7R8+XJNnjxZ3/rWt1ReXq5f//rX6tu3r7Zu3eru5B6npqYmPfbYYzr33HN1yy23HHHM1Vdfreeee04ff/yxevfurdtuu027du3SG2+8oa5du+p3v/udXn/9dV1//fXauHGjTjnllCPOc+WVV6qwsFATJ07UD3/4Q+3bt0//+Z//ecSrXjbGjRsX/jPOF/nSl76ks846S/fcc4+MMerRo4eef/55FRcXf+H3LF++XAkJCcrLy9OWLVv0y1/+UkOHDm1VIGdlZenrX/+68vPz1bdvXz3xxBMqLi7W/fffry5dukiSpk6dqqeeekqXXnqp7rzzTuXk5KilpUW7du3SqlWrdNdddx21YAPazYm82xVw6bPdLp83ceJEI6lVq60xxixevNiMGDHCdO3a1aSkpJizzjrLfO973zPr16+PGLdixQqTm5trunbtarp06WLOO+88c//994efb2hoMLfccovp3bu3CQQCEV0Pzz//vBk6dKhJTk42p556qvnpT39qXnzxRSPJrFmzJjzHkdqBP6upqcksXbrUjBkzxvTo0cMkJCSY3r17m/Hjx5uioiLT3NwcHjtnzhxzxhlnmGAwaM4991yzcOHCcEfFZ+n/dXF8VllZWau2TWOMWbNmjZFknnzyyS9cY1sc7qqZN2/eF45ZuXJluCtp4cKFRpJZsmRJxJht27aZtLQ0841vfCO87UgdK4sXLzYDBw40wWDQnHnmmaagoMAsWrSoVYfK0bpdjuZI3S7vvvuuycvLM6mpqaZ79+7m2muvNbt27TKSzL333hsed/i12bBhg7n66qtNt27dTGpqqrnhhhvMRx99FLGf/v37myuvvNL87W9/M4MGDTJJSUnmjDPOMIWFha3WtH//fvOLX/zCDBw40CQlJZn09HQzZMgQc+edd0a0k9scH+BKwBjLT9cBALSb/Px8zZo1Sx9//HGrezE+74wzztDgwYP1wgsveFod4BbdLgAAwCuKDwAA4BV/dgEAAF5x5QMAAHhF8QEAALyi+AAAAF51uA8Za2lp0YcffqjU1FQ+6hcAgBhhjFFtba2ysrIUF3f0axsdrvj48MMPW30MNgAAiA3l5eVRgzg7XPGRmpoqSfqKrlCCEk/wagCg81j0f//pZJ4ffImPZEdrTTqk17Qi/P/xo+lwxcfhP7UkKFEJAYoPAHAlNdXNbX78bMYR/b8P7rC5ZYIbTgEAgFcUHwAAwCuKDwAA4BXFBwAA8KrD3XAKALHgpQ/fcjLPV7OGOpln2QevRx3T4mRP0v073HTN/OwMumZOVlz5AAAAXlF8AAAAryg+AACAVxQfAADAK4oPAADgFcUHAADwilZbAPgcV220Nh4v/x9HM7n5XfLDpujzxB8O8ThOd2zb6mSe+WcPcDIP/OHKBwAA8IriAwAAeEXxAQAAvKL4AAAAXlF8AAAAr+h2AdBpvPjhRkczufm9bF9LnZN5bGxvcvPjPEnNTubZ1dTdyTw2rthS42SeFYPSncyD6LjyAQAAvKL4AAAAXlF8AAAAryg+AACAVxQfAADAK4oPAADgFa22AGKCTdhbi6N9VTTvdzJPYiAQdUy8xZjypvjo8zg6+vcP9XIyT3zATfjcjsbo64kLRD/2FhP9d+3zNrj5X+K7w5qczNOZceUDAAB41abiIz8/X4FAIOKRmZkZft4Yo/z8fGVlZSklJUWjR4/Wli1bnC8aAADErjZf+Rg0aJD27NkTfmzevDn83Ny5c1VYWKj58+ertLRUmZmZysvLU21trdNFAwCA2NXm4iMhIUGZmZnhR+/evSV9etVj3rx5mjlzpiZMmKDBgwdr6dKlOnDggIqKipwvHAAAxKY2Fx9bt25VVlaWsrOzdf3112v79u2SpLKyMlVUVGjcuHHhscFgULm5uVq7du0XztfQ0KBQKBTxAAAAnVebio8RI0boscce00svvaSFCxeqoqJCo0aN0r59+1RRUSFJysjIiPiejIyM8HNHUlBQoPT09PCjX79+x3AYAAAgVrSpr2j8+PHh/x4yZIhGjhyps846S0uXLtVFF10kSQp8rm3MGNNq22fNmDFD06ZNC38dCoUoQIBO4oXdG5zN1eKoOW9v8wEn89jYfigp6pg4i5ZUV2205U09nMxjY2tDRvRBFhIDblJ2d9T3dDKPjS6vuDn2A5d+5GSejui4/jV37dpVQ4YM0datW8NdL5+/ylFZWdnqashnBYNBpaWlRTwAAEDndVzFR0NDg9577z317dtX2dnZyszMVHFxcfj5xsZGlZSUaNSoUce9UAAA0Dm06c8ud999t66++mqdfvrpqqys1G9+8xuFQiFNmjRJgUBAU6dO1ezZszVgwAANGDBAs2fPVpcuXTRx4sT2Wj8AAIgxbSo+PvjgA91www3au3evevfurYsuukjr1q1T//79JUnTp0/XwYMHNXnyZFVVVWnEiBFatWqVUlNT22XxAAAg9rSp+Fi2bNlRnw8EAsrPz1d+fv7xrAkAAHRiBMsBOCYvfrgx6phmN9likqQ9zXVO5klU9CA3m5vhypvddLLYeP9QbyfzuOqa2dkYfT3xin7szRavxbYDbjpHbMLnbOw6EL1jyOZ1bzHRj736/xtgtaZoTrlyq5N5XCJYDgAAeEXxAQAAvKL4AAAAXlF8AAAAryg+AACAVxQfAADAK1ptgZPMc7vXO5mn2aJV0Ma+lnon89ja3pQcdYxNm6irNtryQ92dzGNjW0Omk3lchb3tPNjLyTw2tu93s6+EODctux/W+ssx2170ZSfznDkxenu9La58AAAAryg+AACAVxQfAADAK4oPAADgFcUHAADwiuIDAAB4Rast0Im8sHtD1DFuGgWlPc0HncyTFLBr2Y23SEAtbwpazOOmRXa7RbKrDVdpqzsbo7eS2uyrxUT/nXTrwT5Wa4rG1Wux60D0dmVXSbO7QqfYLCmqOEfH/kmoa/RBNm3hjlrnbXHlAwAAeEXxAQAAvKL4AAAAXlF8AAAAryg+AACAVxQfAADAK1ptgQ7gmd1vOJmnxdHvE3s9Js2+f6iL1bh4izZRZ62bTT2czGNjW0OGk3lcJc2W1/s79u37ezqZx1XSbMX+VCfz2NhX3c3JPIE4N+95l4m1NrjyAQAAvKL4AAAAXlF8AAAAryg+AACAVxQfAADAK7pdgHb23O71Uce4C3tz06WSaJExFW8xprwpxWIeV0cvvX/IVeCZv7A3Vx062w64OXabADYb5XX+wt7KHYW9BRwde3VN9LA3yzzFqJqroocpdkRc+QAAAF5RfAAAAK8oPgAAgFcUHwAAwCuKDwAA4BXFBwAA8IpWW+ALPPXBP53M0yI3PXUfNzdGHWPz24RNE+n2Q9EDtuIsZnLZRlt+yE0ImY2OFva2o97fsZe5Cntz9NpX1PkLe6uqit4iayPg6Nf65pokNxNZ2DF7VNQx0bqeW+rrpfxnrfbHlQ8AAOAVxQcAAPCK4gMAAHhF8QEAALyi+AAAAF5RfAAAAK9otcVJ6Zndb0Qd0+wm4FIfNh9yMk+ik1mk3U3R2wlt2mhtvN/oJmlVkpIcta3ubIzeShrnqE3UXdKsm/VYJc1apOzatI+7Spp1lbJbXdMl+iBnSbOOWmQdXR5IqImPOsYiPNgprnwAAACvKD4AAIBXFB8AAMArig8AAOAVxQcAAPCK4gMAAHhFqy1iypMfrHM0k5u6e29L9Dba6E1uUrNFj9/OJjfpnq7aaMub/CWtStK/6vs6mScxrsnJPDsPnrxJsx/tj8WkWTctuy0ek2YTP7H46WHRIuuqjTZ7xtqjPt9kDqnMci6ufAAAAK8oPgAAgFcUHwAAwCuKDwAA4BXFBwAA8IpuF3QYT33wz6hj3NyrL33Q5CjszdFd5B82dXMzkYXth9yEnSU6Cnrb1djLaly8o06N912FvVkEsNkoP3BK9H05Clf7IJTuZJ6Ao/d9qCbFYl+OulQ6WNhbokXYm6ugu2CVm3lc4soHAADwiuIDAAB4dVzFR0FBgQKBgKZOnRreZoxRfn6+srKylJKSotGjR2vLli3Hu04AANBJHHPxUVpaqkceeUQ5OTkR2+fOnavCwkLNnz9fpaWlyszMVF5enmpra497sQAAIPYdU/Gxf/9+3XjjjVq4cKG6d+8e3m6M0bx58zRz5kxNmDBBgwcP1tKlS3XgwAEVFRUdca6GhgaFQqGIBwAA6LyOqfiYMmWKrrzySo0dOzZie1lZmSoqKjRu3LjwtmAwqNzcXK1de+TPhC8oKFB6enr40a9fv2NZEgAAiBFtbrVdtmyZ3nzzTZWWlrZ6rqKiQpKUkZERsT0jI0M7d+484nwzZszQtGnTwl+HQiEKkBiz7IPXHc3k5v7nj1uit4DGWbSwtVh0+O1oSrNYUXTxjto2dx3q4WQeG/+uz3Qyj6uWXcl32Jubc50Q56aFeE+tm/eijZqqLk7micWwtySLsDerIDdHbbRJNW7m8a1NxUd5ebl+8pOfaNWqVUpOTv7CcYHPNYEbY1ptOywYDCoYDLZlGQAAIIa16VfNDRs2qLKyUsOGDVNCQoISEhJUUlKiP/zhD0pISAhf8Th8BeSwysrKVldDAADAyalNxcfll1+uzZs3a9OmTeHH8OHDdeONN2rTpk0688wzlZmZqeLi4vD3NDY2qqSkRKNGjXK+eAAAEHva9GeX1NRUDR48OGJb165d1bNnz/D2qVOnavbs2RowYIAGDBig2bNnq0uXLpo4caK7VQMAgJjlPNtl+vTpOnjwoCZPnqyqqiqNGDFCq1atUmpqqutdAQCAGHTcxcfLL78c8XUgEFB+fr7y8/OPd2oAANAJkWqLo3ryg3VRx7hqlPyg2c1MrpJmdzf7u1r3fqOrpNkmJ/PsbIieNOsq1XXbgd5O5pGkeEcJqOV1p0Qd4yppdneNq6RZN+sJ1Vi00Tr6N9ZS5ajT0VHLrk3SrFUbrYUkV0mzNnduWqw56/4jfxZXeyFYDgAAeEXxAQAAvKL4AAAAXlF8AAAAryg+AACAV3S7wIu9zdHDs6LfZy41W9y2veOQm+6B+ICbwK/yQ/7Czv5d3zfqGJvjctXJsqveX9CdJJXVdqywt4pafx1TNVVdo46x6ohx1M1hahLdTGTBJuzN5ricdbJ4DHsLVvvbl0tc+QAAAF5RfAAAAK8oPgAAgFcUHwAAwCuKDwAA4BXFBwAA8IpWWxxVebOblsskJ7NIu5vSHM0U3XZnYW9uAvN2NUZv2XXVHvy+o7C3xDhXsYPSBx7D3j50FPYW56hlt7YmJeoYV8FyqnL0r9VR2FtSjcXvyI5aZIOOwt6Mo7C3oMeWXd+48gEAALyi+AAAAF5RfAAAAK8oPgAAgFcUHwAAwCuKDwAA4BWttiexB3au9bavHU2nOJnHVdqq16TZg5lRx9i0iLpqo9150F/S7Pshd+fZVdLsRz6TZj+JnjRr03Lpqo3W1ERvo3XUtaqkKpucaguOFpQYi0mzjo6953/7+1lviysfAADAK4oPAADgFcUHAADwiuIDAAB4RfEBAAC8ovgAAABe0Wobg/5zx7oTvYQI5U1uEkBt+EyatWnrLWuInv7qKmn1/To3SbMJjpJmP6iL/rq7OnbJXdJsvMekWWd9q86SZqMPMRZrTqr293trksekWZtj95k0G6x2817tiLjyAQAAvKL4AAAAXlF8AAAAryg+AACAVxQfAADAK7pdOpjCna9729eOpu5O5omXmzuyvYa91UcPe7M5LlfdHLs8hr2VWYS92QSZuTr2So9Bb5IUqrIIe7MJMHTUyRKoSXQzkYWkKke/bzo69iSbzhGbfVm8XB0t7C0Ysvi56ejYOyKufAAAAK8oPgAAgFcUHwAAwCuKDwAA4BXFBwAA8IriAwAAeEWrbSdV3nSKt32935jhZJ6kQFPUMfGB6O1pZfXRA9hctQdvP9DLyTwJFsdlwybszaaN1saemjQn88THuesVrKtJthjlZn+BakctsjbtlBZjEj2GvQU9hr3ZSAq5mcdGcpWbf6sm3sk06vaXjhU0aosrHwAAwCuKDwAA4BXFBwAA8IriAwAAeEXxAQAAvKL4AAAAXtFq28HsOOQm3dSmJdVGeaPHpNmD0ZNmbZJUXbXRek2arY2+rziLFlFXbbQ+k2Zrq7rYDbRKE3XURhuDSbPGY9Kszb5s3oqukmZdHbtN0qxNe7DNj99gVbPFijovrnwAAACvKD4AAIBXFB8AAMArig8AAOAVxQcAAPCKbheP7nz/vahjmh0lLW1v6ONknsRA9DuybbpLyhqih73ZdLLY6Ghhb7v3Rw97s+lksVHhKOwtzlHY24FQSvRBjjoVJCnOUdibs84Rwt686Ghhb0mhk7uTxQZXPgAAgFcUHwAAwKs2FR8LFixQTk6O0tLSlJaWppEjR+rFF18MP2+MUX5+vrKyspSSkqLRo0dry5YtzhcNAABiV5uKj9NOO01z5szR+vXrtX79eo0ZM0bXXHNNuMCYO3euCgsLNX/+fJWWliozM1N5eXmqra1tl8UDAIDY06bi4+qrr9YVV1yhc845R+ecc47+4z/+Q926ddO6detkjNG8efM0c+ZMTZgwQYMHD9bSpUt14MABFRUVtdf6AQBAjDnmez6am5u1bNky1dXVaeTIkSorK1NFRYXGjRsXHhMMBpWbm6u1a9d+4TwNDQ0KhUIRDwAA0Hm1udV28+bNGjlypOrr69WtWzc9/fTTOu+888IFRkZGRsT4jIwM7dy58wvnKygo0KxZs9q6jJjkqo22/JC/sLf369207Lpqoy0/2N3JPDaswt4sjstVG21lbTcn89ioq7ZokbXhsI02UOPvkwF8tsjasAl7szrXHsPeXL32wRqLNlpXx17VZDGRhYCbg098qdTJPB1Rm/+FDRw4UJs2bdK6det0++23a9KkSXr33XfDzwc+d9KNMa22fdaMGTNUU1MTfpSXl7d1SQAAIIa0+VeJpKQknX322ZKk4cOHq7S0VA888IB+9rOfSZIqKirUt2/f8PjKyspWV0M+KxgMKhgMtnUZAAAgRh33tUVjjBoaGpSdna3MzEwVFxeHn2tsbFRJSYlGjRp1vLsBAACdRJuufPz85z/X+PHj1a9fP9XW1mrZsmV6+eWXtXLlSgUCAU2dOlWzZ8/WgAEDNGDAAM2ePVtdunTRxIkT22v9AAAgxrSp+Pjoo4/03e9+V3v27FF6erpycnK0cuVK5eXlSZKmT5+ugwcPavLkyaqqqtKIESO0atUqpaamtsviAQBA7GlT8bFo0aKjPh8IBJSfn6/8/PzjWRMAAOjESLX1aHujv6RZmxbQHfVu0l9tlNU5SpqNc5MWubvOImnWUXuwu6TZ6C2HAYs1H6hx1EZrIa7KTcqsJBmLpF2bNFqfbbRJjpJmXaVwJXn8sGlnSbPOUnYdtdHa7Ku6wck8bn4CdUwdq5kdAAB0ehQfAADAK4oPAADgFcUHAADwiuIDAAB4RfEBAAC8otXWkWve3edknmaLenC7q6RZuWmF85k0uyMUPWnWpt3UVRvtxyF/SbMHOljSbJxNyqzNebbpj5WUVOXodyVHx59U7WhfVkmzbt6vxlHaqk3SrM3LavP2CFa7aZG1fJtFlRg65GaikxxXPgAAgFcUHwAAwCuKDwAA4BXFBwAA8IriAwAAeEW3SwdT3tDT2758hr3FBaLfHV++/5SoY2w6WWx8VJPqZB6brhmbNR+sSXaxHCvOwt4sgt5sJNY4akOwFHQU9uaqe8Jv2JubYEYT5+bgYzLsLS767+xWXUXr3nKwmtjFlQ8AAOAVxQcAAPCK4gMAAHhF8QEAALyi+AAAAF5RfAAAAK9otXXkfUdhb/GOWknLD/gLe9tV62Zfrtpo93oMezvoLOzNzbHH1Vi00ToKO3MV9OaqZVWyC3uzOdM2S3IV9uYq6C5YY7EeV8FyjsLeXB17YqjRYl8WOzPRz2FCVZ2TfflrMu6YuPIBAAC8ovgAAABeUXwAAACvKD4AAIBXFB8AAMArig8AAOAVrbYWBr8Z721fZXVuUm0TLFJkbRJZP9if7mI5Vip9Js1azFMfk0mzbqZJDPlLmnWVMis5TJoNOWqjtZBcFf3fqo1YTJpNrHKTNKt4N8ceH6qPPshRu/LJjisfAADAK4oPAADgFcUHAADwiuIDAAB4RfEBAAC8otvFow+8hr2d4mQem84RG3truzqZx8bBajddKq5uao+rsfhn5izszdGiXXWN1PjblyQlOwp7c9U1E6yJ3snibF/Vh5zMYxy98RNDFp0sNr/+WjQDxVcfsJjIgqNjb/q/W53M05lx5QMAAHhF8QEAALyi+AAAAF5RfAAAAK8oPgAAgFcUHwAAwCtabS3s8Bn2ZtFP6TPs7eOabk7mCcRZhL1ZtPXWO2qjtRFf5eafh3FU4ifFYNibq2OXpKSaWAx7czKNkkLNbiay2VeVRbiaBeMq7K32oJN5rNTU+tvXSY4rHwAAwCuKDwAA4BXFBwAA8IriAwAAeEXxAQAAvKL4AAAAXp30rbZpr/WOOqbFUYdfuaOkWZuWVBv7PCbN1lc5apF11G0ab5E0a5M2avNSxGLSrLOk1SqH7bEek2ad7auqyc1Ejn5NTKhpjDrGJtU2YKK/rvFVjpJm4xy9GLV1buaBE1z5AAAAXlF8AAAAryg+AACAVxQfAADAK4oPAADgFcUHAADw6qRvtbURZ9FPubvWX9LsXo9JszYthw3VweNfjKWEDpY0m3gSJ80GPabMSh0xadZRG62FRFdJs3FuDj4u5DFptjrkZp74eCfTNO2pcDLPyY4rHwAAwKs2FR8FBQW68MILlZqaqj59+ugb3/iG/vWvf0WMMcYoPz9fWVlZSklJ0ejRo7VlyxaniwYAALGrTcVHSUmJpkyZonXr1qm4uFhNTU0aN26c6ur+95Pj5s6dq8LCQs2fP1+lpaXKzMxUXl6eamtrnS8eAADEnjb9AX3lypURXy9ZskR9+vTRhg0bdOmll8oYo3nz5mnmzJmaMGGCJGnp0qXKyMhQUVGRfvSjH7lbOQAAiEnHdc9HTc2nIRE9evSQJJWVlamiokLjxo0LjwkGg8rNzdXatWuPOEdDQ4NCoVDEAwAAdF7H3DpgjNG0adP0la98RYMHD5YkVVR8ehdwRkZGxNiMjAzt3LnziPMUFBRo1qxZx7qM41YeOsXJPDYdMTY+qe0SdYxNsJyxSAZrcBb25ubYEyzC3qwCvyyWE3QU9uYsgM0i7M1V2Fmyo7A3d10zdl0s7sLuDjmZxyaAzUZiqCH6IJt92YS9VTsKV3N07NrvL+yt6cM93vaF6I75x8cdd9yht99+W3/+859bPRf43BvTGNNq22EzZsxQTU1N+FFeXn6sSwIAADHgmK58/PjHP9Zzzz2nV155Raeddlp4e2ZmpqRPr4D07ds3vL2ysrLV1ZDDgsGggkF/nxMBAABOrDZd+TDG6I477tDy5cu1evVqZWdnRzyfnZ2tzMxMFRcXh7c1NjaqpKREo0aNcrNiAAAQ09p05WPKlCkqKirSs88+q9TU1PA9Hunp6UpJSVEgENDUqVM1e/ZsDRgwQAMGDNDs2bPVpUsXTZw4sV0OAAAAxJY2FR8LFiyQJI0ePTpi+5IlS3TTTTdJkqZPn66DBw9q8uTJqqqq0ogRI7Rq1SqlpqY6WTAAAIhtbSo+jMXd1IFAQPn5+crPzz/WNQEAgE6sUwfL1awY4G1fe2u6OpknzibszUJjKMnJPDZchb25ShqKxbA3V8ee5DHsLfmTZifzmDh3r1dSjcewt2pH4WqxGPZW08HC3j6qdDIP/CFYDgAAeEXxAQAAvKL4AAAAXlF8AAAAryg+AACAVxQfAADAq07dautKlVXSbPR5LD4mRY3OkmbdTJNQY9EK52hfSY6SZp2tx2PSbDAWk2YdJZu6SpmV5O597ypp1kJcR0uard3vZh4LLdU2/8jQGXHlAwAAeEXxAQAAvKL4AAAAXlF8AAAAryg+AACAVxQfAADAq07daruvgyXNHgoFo45xle+ZWOUmLdJV62ZSTcdKmjU2y3HVRusxaTbFImnW7tjdHHxSjcM2WgsJVfVuJop31EZbc8DJPFZcJc3apOxavD9abFp2XbUHI+Zw5QMAAHhF8QEAALyi+AAAAF5RfAAAAK8oPgAAgFcx2+1Stmxo1DEBRe8yMBa3/h+qit6lYsPVjd3xFmFvVh0NFoKOwt7cdc1Y7MvRsSd3uLA3R50sFpKqGt1MFOeumyEhZNHJ4uhcn9xhb466ZuLdvBgtBzx2DMEbrnwAAACvKD4AAIBXFB8AAMArig8AAOAVxQcAAPCK4gMAAHgVs622rjSHkrztK6HKzek2joLuvIa9fWIxyGI5zlqIPYa9JVuEvfk89qSaJjcTWUj85KCzuUwshr35bFt1FfbmqD2aFlkcDVc+AACAVxQfAADAK4oPAADgFcUHAADwiuIDAAB4RfEBAAC8itlW26aqZDcTBdy0XCZYJM262lcsJs3atJLaiMWkWVfHHqw65GQe46iVMqGmIfq+XKW6SoqrcpQ06ypp12vSrM0/MgvxFj+nLLQcdNdCjZMTVz4AAIBXFB8AAMArig8AAOAVxQcAAPCK4gMAAHjVYbtd3p83THEpR+locZQL5irsTTEY9pZsEfZmFWYWg2FvKRZhbz6PPbHGTSeL1b4+cRP4ZeLc/O4SV+s3gMw46hwJ2HSOWHTWtIQsumYCbs41XSroKLjyAQAAvKL4AAAAXlF8AAAAryg+AACAVxQfAADAK4oPAADgVYdttZUJWPY6fjG7sLfj2kVYkqOwN1floE3Y23Ge3jCvYW8Waw5WO2qjtZBU1ehkHndhb/XRBzkKe4urrnUyj6s2Uklew96aq6L/IwvYvK6u2mgbLF57oIPgygcAAPCK4gMAAHhF8QEAALyi+AAAAF5RfAAAAK8oPgAAgFcdttX2rDvXKyGQeFxzlM0Z5WQtNm2rrgQtkmZt2k1dtZL6TJpN3tcUfZBF66KzNtqOljRr0yLrqI02EPKXNOsqZVayS5oNWLS2ttRGbyO2aqO1QIssTkZc+QAAAF61ufh45ZVXdPXVVysrK0uBQEDPPPNMxPPGGOXn5ysrK0spKSkaPXq0tmzZ4mq9AAAgxrW5+Kirq9PQoUM1f/78Iz4/d+5cFRYWav78+SotLVVmZqby8vJUa3EZEwAAdH5tvudj/PjxGj9+/BGfM8Zo3rx5mjlzpiZMmCBJWrp0qTIyMlRUVKQf/ehHx7daAAAQ85ze81FWVqaKigqNGzcuvC0YDCo3N1dr16494vc0NDQoFApFPAAAQOfltPioqKiQJGVkZERsz8jICD/3eQUFBUpPTw8/+vXr53JJAACgg2mXVtvA59r9jDGtth02Y8YMTZs2Lfx1KBRyVoAEq5xMY5e2aiFo01HoLGm2xck8NmmrNq2tyRZJszZttDaCnzhKmo2PvaTZgLOkWTfrMTYps7ave0v0tu/m6uro81i02jpro210814EOhunxUdmZqakT6+A9O3bN7y9srKy1dWQw4LBoILBoMtlAACADszpn12ys7OVmZmp4uLi8LbGxkaVlJRo1Cg3H/gFAABiW5uvfOzfv1/btm0Lf11WVqZNmzapR48eOv300zV16lTNnj1bAwYM0IABAzR79mx16dJFEydOdLpwAAAQm9pcfKxfv16XXXZZ+OvD92tMmjRJjz76qKZPn66DBw9q8uTJqqqq0ogRI7Rq1Sqlpqa6WzUAAIhZAWOMv/AOC6FQSOnp6Rqta4472+XDn7n5U4/VDacWZ9HqhlNHgtX+bji1YXXDqSNJVR5vOLX452N1w6kjgRqLGzytJvJ4w6ktixtObTJZuOEUaB9N5pBe1rOqqalRWlraUcd22GC5aHbfE72wCDgqq1x1zbjqZPEa9vaJRdibDUc/zBNr/P0wT/ikLvogr2FvFutxxFQ7+rydeHe3lbXst3k93OyPogFoXwTLAQAAryg+AACAVxQfAADAK4oPAADgFcUHAADwiuIDAAB4FbOttjZsAs+C1e2+jDCfYW827Z3BKkdttBaSPmlwMo/NZ2/YfC5LQvXB6INctchWOQp7c9SubEIWn71hc+wWn3HSXBX9w22sP1PDURutaTrkZB4Ax44rHwAAwCuKDwAA4BXFBwAA8IriAwAAeEXxAQAAvKL4AAAAXsVsq+2pc9Y6mWfvbdHTcW0Ea9y00Vrty1XSrKOU3aQaf62LCfsORB9kU1LHYtKsRduqlfh4J9O07I/esusqml6iRRboTLjyAQAAvKL4AAAAXlF8AAAAryg+AACAVxQfAADAq5jtdnGl18NuumZqb7go6hiroLuqZgersZNU1ehmIkdBd/E1jjpZLDgLe3PUNWNqLcLe4iwOviV611VzdXX0eSxC3Fx1sphmf+95AB0DVz4AAIBXFB8AAMArig8AAOAVxQcAAPCK4gMAAHhF8QEAALw66VttXUn98zon8zR+7UIn8yTVOGqjtZDwSfRwNWPTkuqqjbbGY9hbdccKe2veb3HsFm20NmiRBXCsuPIBAAC8ovgAAABeUXwAAACvKD4AAIBXFB8AAMArig8AAOAVrbYdTNLKUjcTjRwafYxF92t89cGoY6zaaC04S5q1SX+1YEIW67E5dmOiDmmucdSy66iNViZ6Oi4AHCuufAAAAK8oPgAAgFcUHwAAwCuKDwAA4BXFBwAA8IriAwAAeEWrbWf1+ltu5jn3HCfTBEL7ncxjo+WTKifzBJwlzfo7dlpkAcQCrnwAAACvKD4AAIBXFB8AAMArig8AAOAVxQcAAPCKbhccVfN7/3YyT8KpWU7msQl7CzgKlmuudRR0BwCIwJUPAADgFcUHAADwiuIDAAB4RfEBAAC8ovgAAABeUXwAAACvaLWFF027P3QyT3y3bk7m8Rr2BgCIwJUPAADgVbsVHw899JCys7OVnJysYcOG6dVXX22vXQEAgBjSLsXHX/7yF02dOlUzZ87Uxo0bdckll2j8+PHatWtXe+wOAADEkHYpPgoLC/WDH/xAt9xyi84991zNmzdP/fr104IFC9pjdwAAIIY4v+G0sbFRGzZs0D333BOxfdy4cVq7dm2r8Q0NDWpoaAh/XVNTI0lq0iHJuF4dYp0xjU7maTaHnMwDAPhUkz79uWpM9P95Oy8+9u7dq+bmZmVkZERsz8jIUEVFRavxBQUFmjVrVqvtr2mF66WhM6BJBQA6tNraWqWnpx91TLu12gYCgYivjTGttknSjBkzNG3atPDX1dXV6t+/v3bt2hV18Tg+oVBI/fr1U3l5udLS0k70cjotzrMfnGc/OM9+xOJ5NsaotrZWWVnRU8ydFx+9evVSfHx8q6sclZWVra6GSFIwGFQwGGy1PT09PWZOeKxLS0vjXHvAefaD8+wH59mPWDvPthcNnN9wmpSUpGHDhqm4uDhie3FxsUaNGuV6dwAAIMa0y59dpk2bpu9+97saPny4Ro4cqUceeUS7du3Sbbfd1h67AwAAMaRdio9vf/vb2rdvn+677z7t2bNHgwcP1ooVK9S/f/+o3xsMBnXvvfce8U8xcItz7Qfn2Q/Osx+cZz86+3kOGJueGAAAAEfIdgEAAF5RfAAAAK8oPgAAgFcUHwAAwCuKDwAA4FWHKz4eeughZWdnKzk5WcOGDdOrr756opcU01555RVdffXVysrKUiAQ0DPPPBPxvDFG+fn5ysrKUkpKikaPHq0tW7acmMXGsIKCAl144YVKTU1Vnz599I1vfEP/+te/IsZwro/fggULlJOTE/7Ux5EjR+rFF18MP885bh8FBQUKBAKaOnVqeBvn2o38/HwFAoGIR2ZmZvj5znqeO1Tx8Ze//EVTp07VzJkztXHjRl1yySUaP368du3adaKXFrPq6uo0dOhQzZ8//4jPz507V4WFhZo/f75KS0uVmZmpvLw81dbWel5pbCspKdGUKVO0bt06FRcXq6mpSePGjVNdXV14DOf6+J122mmaM2eO1q9fr/Xr12vMmDG65pprwj+MOcfulZaW6pFHHlFOTk7Eds61O4MGDdKePXvCj82bN4ef67Tn2XQg/+f//B9z2223RWz70pe+ZO65554TtKLORZJ5+umnw1+3tLSYzMxMM2fOnPC2+vp6k56ebh5++OETsMLOo7Ky0kgyJSUlxhjOdXvq3r27+eMf/8g5bge1tbVmwIABpri42OTm5pqf/OQnxhjezy7de++9ZujQoUd8rjOf5w5z5aOxsVEbNmzQuHHjIraPGzdOa9euPUGr6tzKyspUUVERcc6DwaByc3M558eppqZGktSjRw9JnOv20NzcrGXLlqmurk4jR47kHLeDKVOm6Morr9TYsWMjtnOu3dq6dauysrKUnZ2t66+/Xtu3b5fUuc9zu3y8+rHYu3evmpubWyXfZmRktErIhRuHz+uRzvnOnTtPxJI6BWOMpk2bpq985SsaPHiwJM61S5s3b9bIkSNVX1+vbt266emnn9Z5550X/mHMOXZj2bJlevPNN1VaWtrqOd7P7owYMUKPPfaYzjnnHH300Uf6zW9+o1GjRmnLli2d+jx3mOLjsEAgEPG1MabVNrjFOXfrjjvu0Ntvv63XXnut1XOc6+M3cOBAbdq0SdXV1Xrqqac0adIklZSUhJ/nHB+/8vJy/eQnP9GqVauUnJz8heM418dv/Pjx4f8eMmSIRo4cqbPOOktLly7VRRddJKlznucO82eXXr16KT4+vtVVjsrKylZVH9w4fEc159ydH//4x3ruuee0Zs0anXbaaeHtnGt3kpKSdPbZZ2v48OEqKCjQ0KFD9cADD3COHdqwYYMqKys1bNgwJSQkKCEhQSUlJfrDH/6ghISE8PnkXLvXtWtXDRkyRFu3bu3U7+kOU3wkJSVp2LBhKi4ujtheXFysUaNGnaBVdW7Z2dnKzMyMOOeNjY0qKSnhnLeRMUZ33HGHli9frtWrVys7Ozviec51+zHGqKGhgXPs0OWXX67Nmzdr06ZN4cfw4cN14403atOmTTrzzDM51+2koaFB7733nvr27du539Mn7FbXI1i2bJlJTEw0ixYtMu+++66ZOnWq6dq1q9mxY8eJXlrMqq2tNRs3bjQbN240kkxhYaHZuHGj2blzpzHGmDlz5pj09HSzfPlys3nzZnPDDTeYvn37mlAodIJXHltuv/12k56ebl5++WWzZ8+e8OPAgQPhMZzr4zdjxgzzyiuvmLKyMvP222+bn//85yYuLs6sWrXKGMM5bk+f7XYxhnPtyl133WVefvlls337drNu3Tpz1VVXmdTU1PD/9zrree5QxYcxxjz44IOmf//+JikpyVxwwQXhVkUcmzVr1hhJrR6TJk0yxnzaynXvvfeazMxMEwwGzaWXXmo2b958Yhcdg450jiWZJUuWhMdwro/fzTffHP750Lt3b3P55ZeHCw9jOMft6fPFB+fajW9/+9umb9++JjEx0WRlZZkJEyaYLVu2hJ/vrOc5YIwxJ+aaCwAAOBl1mHs+AADAyYHiAwAAeEXxAQAAvKL4AAAAXlF8AAAAryg+AACAVxQfAADAK4oPAADgFcUHAADwiuIDAAB4RfEBAAC8+v8BOqOGC56N1i4AAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FACT: Padding\n" + "DigiCam - AxialMapper:\n", + "Initialization time: \n", + "24.6 ms ± 80.7 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "22.8 µs ± 177 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAsiklEQVR4nO3dfXyU1Z338e9kQp4gpICQIRARNVrkyRIsJSKJINkXWCpS+hRU5KEFgWo2u6KALqm1CcWFRW+Q1YpoVQS3Ij7TZFcIIOAd0Cjl1VKtFCgQslIgIUBCknP/wZ2pQwJcE2bOzJDP+/WaP+aa35zrzJxAvjkz51wuY4wRAACAJVGh7gAAAGhdCB8AAMAqwgcAALCK8AEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArCJ8AAAAqwgfaLVeeOEFuVwu7y0uLk4ej0e33nqrCgsLVVFR0eQ5+fn5crlcLTrfhg0b5HK5tGHDhiaPbdq0ST/84Q/VrVs3xcTEKCkpSRkZGVq2bJmqq6tbdL5wMmDAALlcLv37v//7JbVzKe9/c8/NysqSy+XS1VdfreY2e964caP35+OFF15o0XkBNEX4QKu3YsUKbd26VcXFxVq6dKluvPFG/frXv1avXr303//93z61U6ZM0datW1t0ngEDBmjr1q0aMGCAz/F58+Zp6NChOnDggH75y1+quLhYq1at0vDhw5Wfn69HHnmkxa8tHJSVlemTTz6RJC1fvvyS2rqU9/98EhMTtWfPHn3wwQdNHnv++efVvn37gJ4PgCQDtFIrVqwwkkxpaWmTx/bu3WtSU1NNYmKiKS8vD1ofXnvtNSPJTJ482TQ0NDR5vLKy0vz+978P2vltmDFjhpFkbr/9diPJfPjhhyHpx7x588y5/+VlZmaa3r17m+985zsmJyfH57HKykqTkJBgfvrTnxpJZsWKFRZ7GzzV1dWh7gJgmPkAmnHllVdq4cKFqqqq0jPPPOM93tzUfU1Njf7lX/5FHo9HCQkJGjp0qHbs2KGrrrpK9957r7euuY9dHnvsMXXo0EFPPfVUsx8nJCYmKjs723t/6dKlGjp0qLp06aK2bduqb9++WrBggc6cOePzvKysLPXp00dbt25VRkaG4uPjddVVV2nFihWSpHfffVcDBgxQQkKC+vbtq3Xr1l3K23Vep0+f1sqVK5Wenq7/+I//kHR2NuHcmm9961u69tprdfz4ce/x8vJyeTweZWVlqb6+XlLz7//q1auVnZ2trl27Kj4+Xr169dLDDz/s18dVkyZN0po1a3Ts2DHvsVWrVkmSfvzjHzep/+KLLzRx4kSlpaUpISFB3bp10+jRo7Vz506fusYxf/nll5WXlyePx6P4+HhlZmZ6Z4Ma3XvvvWrXrp127dql4cOHq23bturcubNmzpypkydP+tQaY/T000/rxhtvVHx8vDp06KBx48bpyy+/9Klr/DnYuHGjMjIylJCQoEmTJjl+X4BgIXwA5zFq1Ci53W5t3LjxgnUTJ07U4sWLNXHiRL355pv6/ve/rzvvvNPnF1lzDh06pD/84Q/Kzs5WQkKCoz795S9/UU5Ojl566SW98847mjx5sp544glNnTq1SW15ebkmTpyoKVOm6M0331Tfvn01adIkPfbYY5o9e7ZmzZql119/Xe3atdOYMWN08OBBR33wx5o1a3T06FFNmjRJaWlpGjJkiFavXq0TJ054a+Li4vTaa6+poqLC+4uxoaFB48ePlzFGr776qtxu93nP8fnnn2vUqFFavny51q1bp9zcXL322msaPXq0437++Mc/ltvt1quvvuo9tnz5co0bN67Zj10OHjyoTp06af78+Vq3bp2WLl2q6OhoDRo0SLt3725SP2fOHH355Zd67rnn9Nxzz+ngwYPKyspqEhbOnDmjUaNGafjw4Vq7dq1mzpypZ555Rj/60Y986qZOnarc3FzddtttWrt2rZ5++mnt2rVLGRkZOnz4sE/toUOHdNdddyknJ0fvvfeepk+f7vh9AYIm1FMvQKhc6GOXRsnJyaZXr17e++dO3e/atctIMg899JDP81599VUjyUyYMMF7bP369UaSWb9+vTHGmG3bthlJ5uGHH25R/+vr682ZM2fMb3/7W+N2u83f//5372OZmZlGktm+fbv32JEjR4zb7Tbx8fHmwIED3uNlZWVGknnqqada1I8LGTZsmImLizNHjx41xvzjPV++fHmT2tWrVxtJZvHixebf/u3fTFRUlCkqKvKpae6jk69raGgwZ86cMSUlJUaS+fTTTy/43MaPXYwxZsKECWbgwIHGmH+M64YNG0xpaelFP3apq6sztbW1Ji0tzfzzP/+z93jjmA8YMMDnY7W//vWvpk2bNmbKlCneYxMmTDCSzJNPPunT9q9+9SsjyWzevNkYY8zWrVuNJLNw4UKfuv3795v4+Hgza9Ysn9cnyfzP//zPefsOhAIzH8AFmGZWQHxdSUmJJOmHP/yhz/Fx48YpOjo64P355JNP9L3vfU+dOnWS2+1WmzZtdM8996i+vl5//vOffWq7du2q9PR07/2OHTuqS5cuuvHGG5WSkuI93qtXL0nS3r17L3ju+vp61dXVeW8NDQ0XrN+zZ4/Wr1+vsWPH6hvf+IYk6Qc/+IESExObfPQinX0P77vvPj344IN6/PHHNWfOHI0YMeKC55CkL7/8Ujk5OfJ4PN73JDMzU5L0xz/+8aLPbzRp0iRt375dO3fu1PLly3XNNddo6NChzdbW1dWpoKBAN9xwg2JiYhQdHa2YmBh9/vnnzZ4zJyfH5+OiHj16KCMjQ+vXr29SO378+CbPleStfeedd+RyuXTXXXf5jIfH41H//v2brKbq0KGDhg0b5vh9AGwgfADnUV1drSNHjvj8oj7XkSNHJEnJyck+x6Ojo9WpU6cLtn/llVdKOvtL2ol9+/bplltu0YEDB/Tkk09q06ZNKi0t1dKlSyVJp06d8qnv2LFjkzZiYmKaHI+JiZF09rsXF3LNNdeoTZs23ttjjz12wfrnn39exhiNGzdOx44d07Fjx3TmzBl973vf04cffqg//elPTZ4zadIknTlzRtHR0br//vsv2L4knThxQrfccos++ugjPf7449qwYYNKS0u1Zs0aSU3fkwsZOnSo0tLS9Mwzz+ill17SpEmTzrusNy8vT48++qjGjBmjt99+Wx999JFKS0vVv3//Zs/p8XiaPdb489OouZ+bxuc21h4+fFjGGCUnJ/uMR5s2bbRt2zZ99dVXPs/v2rWr4/cAsCXwf5oBl4l3331X9fX1ysrKOm9N4y+Kw4cPq1u3bt7jdXV1TX6xnKtr167q27evioqKdPLkyYt+72Pt2rWqrq7WmjVr1KNHD+/xsrKyi7+YAHj77bdVU1PjvX+hUNbQ0ODdF2Ps2LHN1jz//PNasGCB9351dbXuvvtuXXfddTp8+LD3uyoX8sEHH+jgwYPasGGDd7ZD0kW/b3M+EydO1COPPCKXy6UJEyact+7ll1/WPffco4KCAp/jX331lXeW5+vKy8ubPXZu0Gj8ufn68cbnNh674oor5HK5tGnTJsXGxjZp99xjLd0XBQgmZj6AZuzbt0//+q//qqSkpGa/zNmocVp+9erVPsd/97vfqa6u7qLnefTRR3X06FHdf//9zX7Ec+LECRUVFUn6xy+Rr/9yMcboN7/5zcVfUAD07dtXAwcO9N4uFD5+//vf629/+5tmzJih9evXN7n17t1bv/3tb33eo2nTpmnfvn1as2aNli9frrfeesu7QuZ8mntPJPmsUPLHhAkTNHr0aD344IM+YbK58557znfffVcHDhxotv7VV1/1Gd+9e/dqy5YtzQbbV155xef+ypUrJclb+93vflfGGB04cMBnPBpvffv2dfJSgZBi5gOt3h/+8Afv5+YVFRXatGmTVqxYIbfbrTfeeEOdO3c+73N79+6tn/zkJ1q4cKHcbreGDRumXbt2aeHChUpKSlJU1IXz/Q9+8AM9+uij+uUvf6k//elPmjx5sq655hqdPHlSH330kXelQ3Z2tkaMGKGYmBj95Cc/0axZs3T69GktW7ZMR48eDfRbcsmWL1+u6OhozZkzp9mQMnXqVN1///169913dccdd+i5557Tyy+/rBUrVqh3797q3bu3Zs6cqYceekg333yzvv3tbzd7noyMDHXo0EHTpk3TvHnz1KZNG73yyiv69NNPW9TvlJQUrV279qJ13/3ud/XCCy/om9/8pvr166cdO3boiSeeUPfu3Zutr6io0J133qmf/vSnOn78uObNm6e4uDjNnj3bpy4mJkYLFy7UiRMndNNNN2nLli16/PHHNXLkSA0ZMkSSdPPNN+tnP/uZJk6cqO3bt2vo0KFq27atDh06pM2bN6tv37667777WvT6AWtC+GVXIKQaV1403mJiYkyXLl1MZmamKSgoMBUVFU2e09yKidOnT5u8vDzTpUsXExcXZ77zne+YrVu3mqSkpGZXPjSudvm6kpISM27cONO1a1fTpk0b0759ezN48GDzxBNPmMrKSm/d22+/bfr372/i4uJMt27dzIMPPmjef//9Ju1+fRXH1/Xo0cPcfvvtTY5LMjNmzHDytl3U//7v/5qYmBgzZsyY89YcPXrUxMfHm9GjR5vPPvvMxMfH+6wMMubs+5qenm6uuuoq72qZ5t7/LVu2mMGDB5uEhATTuXNnM2XKFPPxxx83WaFysdUu59PcapejR4+ayZMnmy5dupiEhAQzZMgQs2nTJpOZmWkyMzO9dY1j/tJLL5n777/fdO7c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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "HESS-I: Default\n" + "VERITAS - AxialMapper:\n", + "Initialization time: \n", + "4.79 ms ± 10 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "Mapping time: \n", + "21.5 µs ± 88.3 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtpUlEQVR4nO3de3SU5bn+8WsSkkmCIRogJwkBNVQlShUoh4IBf4JGQQVR0KqJIOoW6aaptUWrRLclHlnUjcpWATkURa0gKoLpxoBKxYhikXqAbThYEyOpJBAwEPL8/nBndsdJgIQnz8yE72etWYt555l77rzzQi7eOdweY4wRAACAIxHBbgAAABxfCB8AAMApwgcAAHCK8AEAAJwifAAAAKcIHwAAwCnCBwAAcIrwAQAAnCJ8AAAApwgfOC6NGjVKsbGx2r17d5NrfvGLXygqKkrffPONJMnj8TR5ycvL892voKDA77aoqCh17dpVEydOVHl5ecDjdOvWTSNGjJAk5eXlHfZxGnu8Xbt2yev1yuPx6IMPPmj0ZzHG6Pnnn9fgwYOVlJSkmJgYdenSRRdeeKGeeeaZ5u/Ao/TYY4/J4/EoKyvrmOps27ZNHo9Hzz77rJX7Pvvss759WVxcHHAfY4xOO+00eTweDRkypMV9A2hcu2A3AATDhAkTtGzZMi1evFi33nprwO1VVVVaunSpRowYoeTkZN/2MWPG6Ne//nXA+s6dOwdsW7lypRISErR37169+eabevTRR7Vu3Tpt3LhRUVFRjfZ1991365ZbbvFd//DDDzVp0iRNnz5dQ4cObfTxFi5cqAMHDkiS5syZoz59+gTUnTp1qh588EFNnDhRv/nNbxQfH6/t27dr9erVeuWVV3TjjTc22s+xmjt3riRp8+bNWr9+vfr169eiOqmpqfrrX/+qU0891WZ7io+P15w5cwICxpo1a/Q///M/io+Pt/p4AP6XAY5DdXV1Ji0tzfTu3bvR25988kkjybz66qu+bZLMpEmTjlh72rRpRpL59ttv/bbfcMMNRpJZvXq13/aMjAxzySWXNFrrrbfeMpLMiy++2OTjZWVlmaSkJNO3b1+TkJBg9u3b53f7vn37jNfrNddff32j9z906NARf6aWKCkpMZLMJZdcYiSZiRMntsrjHElpaamRZObNm+fbNm/ePCPJ3HjjjSY2NtZUVVX53efaa681AwYMMD179jTZ2dluG24l+/btM/X19cFuAzDGGMPLLjguRUZGKjc3Vxs2bNCmTZsCbp83b55SU1OVk5Nj7TEbzkg0vIxjw/r16/XJJ5/ouuuu08SJE1VVVaU///nPfmtqampUW1ur1NTURmtERLTOPwNz5syRJD3wwAMaOHCgnn/+ee3bt89vzQMPPKCIiAi9+uqrftvz8vIUFxfne24ae+lk69atuuGGG5SZmam4uDidfPLJGjlyZKPPZ1OuvvpqSdJzzz3n29awD8ePH9/ofe69917169dPiYmJ6tChg84991zNmTNH5kczOhteTlu6dKnOPvtsxcTE6JRTTtFjjz3mt664uFgej0eLFi1Sfn6+UlJSFBsbq+zsbH300UcBj//BBx/o0ksvVWJiomJiYnTOOefohRde8FvT8LLSm2++qfHjx6tz586Ki4tTbW3tUe8boDURPnDcGj9+vDwej++lgQZ///vf9f777ys3N1eRkZF+txljVFdXF3D58S+expSWlkqSevToYe1naPgFP378eI0bN05xcXG+bQ06deqk0047TU888YRmzJihzz777Kj6PRb79+/Xc889p759+yorK0vjx4/Xnj179OKLL/qt++1vf6ucnBzl5uZq+/btkn4IfvPnz9d//ud/6qyzzmryMb7++mt17NhRDzzwgFauXKnHH39c7dq1U79+/fT5558fVZ8dOnTQmDFj/I6B5557ThERERo7dmyj99m2bZtuvvlmvfDCC3r55Zc1evRoTZ48Wf/xH/8RsHbjxo2aMmWKfvWrX2np0qUaOHCg/v3f/12PPPJIwNo777xTX375pZ555hk988wz+vrrrzVkyBB9+eWXvjVvvfWWfv7zn2v37t2aPXu2XnnlFf30pz/V2LFjG30/zPjx4xUVFaWFCxfqpZdeavLlPsC54J54AYIrOzvbdOrUyRw4cMC37de//rWRZL744gu/tZKavCxcuNC3ruFll/LycnPw4EHz3XffmRdeeMG0b9/eXH311QE9tPRll5qaGtOhQwfTv39/37bc3Fzj8XjM1q1b/da+//77pmvXrr5+4+PjzYgRI8yCBQta5VT8ggULjCQze/ZsY4wxe/bsMSeccIIZPHhwwNpdu3aZLl26mJ/97Gfmww8/NHFxcebaa6/1W9PYSyc/VldXZw4cOGAyMzPNr371q8Pet+Fll5KSEt8+/uSTT4wxxvTt29fk5eUZY8wRX3Y5dOiQOXjwoLnvvvtMx44d/fZlRkaG8Xg8ZuPGjX73GTZsmOnQoYOpqakxxvzfc3zuuef63X/btm0mKirK3Hjjjb5tp59+ujnnnHPMwYMH/WqOGDHCpKam+l5Ca/j5mnqpDQg2znzguDZhwgTt2rVLy5cvlyTV1dVp0aJFGjx4sDIzMwPWX3XVVSopKQm4XHzxxQFrU1JSFBUVpZNOOklXXXWVevfurfnz51vr/YUXXlB1dbXfywPjx4+XMUbz5s3zW9u3b19t3bpVK1eu1J133qkBAwbov//7v3X99dfr0ksvPeyZkPr6er+zPIcOHTpib3PmzFFsbKzGjRsnSTrhhBN05ZVX6u2339aWLVv81nbs2FFLlizRhx9+qIEDB6pr166aPXv2ER+jrq5O06dP15lnnqno6Gi1a9dO0dHR2rJliz799NMj3r9Bdna2Tj31VM2dO1ebNm1SSUlJky+5SNLq1at1wQUXKCEhQZGRkYqKitI999yjyspKVVRU+K3t2bOnevXq5bftmmuuUXV1tT788MOA7R6Px3c9IyNDAwcO1FtvvSXph5eZPvvsM/3iF7/w/fwNl4svvlhlZWUBZ3yuuOKKo94PgEuEDxzXxowZo4SEBN8v6xUrVuibb77RhAkTGl3fuXNn9enTJ+CSmJgYsPYvf/mLSkpKtGrVKl1xxRVau3atJk+ebK33OXPmKCYmRhdddJF2796t3bt36+yzz1a3bt307LPPBoSEqKgoXXjhhfrDH/6gVatWaefOnRoyZIhee+01vfHGG00+zn333aeoqCjf5UifONm6davWrl2rSy65RMYYX29jxoyRpICXuSSpX79+6tmzp77//nv927/9m9q3b3/Enz8/P1933323Lr/8cr366qtav369SkpK1KtXL+3fv/+I92/g8Xh0ww03aNGiRZo9e7Z69OihwYMHN7r2/fff1/DhwyVJTz/9tN59912VlJTorrvukqSAx01JSQmo0bCtsrLyqNY2rGt4r9Dtt9/u93xERUX5PrG1a9cuv/s39T4fINj4qC2Oa7Gxsbr66qv19NNPq6ysTHPnzlV8fLyuvPLKY67dq1cvderUSZI0bNgwXXjhhXrqqac0YcIE9e3b95hqf/HFF3rnnXckSV27dm10zapVqxo9I9OgY8eOmjJlioqLi/XJJ580ufamm27yfQ+JJHm93sP2NnfuXBlj9NJLL+mll14KuH3+/Pm6//77/d5PM23aNG3atEm9e/fWPffcoxEjRuiUU0457OMsWrRI119/vaZPn+63fdeuXTrxxBMPe98fy8vL0z333KPZs2frD3/4Q5Prnn/+eUVFRem1115TTEyMb/uyZcsaXd/Y97o0bOvYseNRrW1Y13AsTZ06VaNHj2708X7yk5/4Xf/XMylAKCF84Lg3YcIEzZ49Ww8//LBWrFjh+6SFTR6PR48//rjOPPNM/f73v9eqVauOqV7Dm0qffvppnXbaaX637d+/X5dddpnmzp2riy++WAcPHlR1dXXALztJvpcn0tLSmnystLS0w97+rw4dOqT58+fr1FNPbfTLy1577TU9+uijeuONN3yBpqioSIWFhfr973+vKVOm+N5A+e677yo6OrrJx/J4PAFB6PXXX9c//vGPgH1yJCeffLJ+85vf6LPPPlNubu5hH7Ndu3Z+wWn//v1auHBho+s3b96sjz/+2O+ll8WLFys+Pl7nnnuu39rnnntO+fn5vsCwfft2rVu3Ttdff72kH4JFZmamPv7444DABYQbwgeOe3369NHZZ5+tmTNnyhjT5Esu0g+nvt97772A7R06dNCZZ5552MfJzMzUTTfdpCeeeELvvPOOBg0a1KJ+6+rqtGDBAp1xxhlNfjnYyJEjtXz5cn377bfyeDzq1q2brrzySl1wwQVKT0/X3r17VVxcrD/+8Y8644wzmvyfdHO98cYb+vrrr/Xggw82+s2gWVlZmjVrlubMmaMRI0aorKxM1157rbKzszVt2jRFRERoyZIlOu+883THHXdo5syZTT7WiBEj9Oyzz+r000/X2WefrQ0bNujhhx9Wly5dWtT7Aw88cMQ1l1xyiWbMmKFrrrlGN910kyorK/XII480eTYoLS1Nl156qQoKCpSamqpFixapqKhIDz74YEDAraio0KhRo3wfmZ42bZpiYmI0depU35r/+q//Uk5Oji688ELl5eXp5JNP1j//+U99+umn+vDDDwM+TQSErKC+3RUIEX/84x+NJHPmmWc2uUaH+bTLz3/+c9+6pr5kzBhjvvnmG3PCCSeYoUOH+rY199Muy5YtM5LMzJkzm+x15cqVRpJ59NFHTW1trXnkkUdMTk6O6dq1q/F6vSYm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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "HESS-I: Padding\n" + "MAGICCam - AxialMapper:\n", + "Initialization time: \n", + "15.3 ms ± 156 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "Mapping time: \n", + "22.2 µs ± 112 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3nUlEQVR4nO3dfXjUxb3+8XsJyZJAEggQkgBGyoMKBFqBQlKBiCU1VqoiFqVqELE+gB4OVSpYS7QKHNp6tAelVhFFimCPiFoQoQcSoIgnUBBK1aKEhwoBQUhCgECS+f3hjz2uSYBZspPN5v26rr0u9rszOzP7XbKfzO7e8RhjjAAAABxpUt8TAAAAjQvFBwAAcIriAwAAOEXxAQAAnKL4AAAATlF8AAAApyg+AACAUxQfAADAKYoPAADgFMUHwsrLL78sj8cjj8ejvLy8arcbY9SlSxd5PB5lZmbWeB+HDh2S1+uVx+PRxo0bax2rvLxczz77rAYPHqzWrVsrMjJSrVu3VmZmpp5//nmVlpb6tfd4PBo/fny1+zlw4IAefvhhpaWlqUWLFmrWrJm6du2qf/u3f9OOHTuqtV+7dq1+/OMfq3379oqKilJ8fLwyMjI0e/ZslZWVnf0BagAuv/xyeTwe/eY3v7mg+8nNzZXH46mzvpmZmfJ4PPrWt76lmoKh16xZ43vuvfzyywGNCzQWFB8IS7GxsZozZ0614/n5+frss88UGxtba99XX31Vp06dkqQa70OSvvjiC2VkZGjixIm65JJL9Ic//EGrVq3SnDlz1KtXL02aNEn33XffOef5v//7v0pLS9OcOXM0YsQILV68WMuXL9eDDz6ov/3tb/rud7/r137q1KkaNGiQPv/8c/3qV7/SypUrtXDhQl111VXKzc3VL37xi3OOGcq2bNmizZs3S6r9sT9fY8eO1fvvv18X0/KJjY1VYWGhVq1aVe22l156SXFxcXU6HhC2DBBG5s6daySZsWPHmujoaFNcXOx3+6233mrS09NNjx49zODBg2u8j549e5rExETTr18/Ex8fb44fP16tTVZWlomMjDT5+fk13sehQ4fMq6++6ndMkhk3bpzvenFxsUlKSjIdO3Y0e/furfF+/vSnP/n+/frrrxtJ5s477zRVVVXV2paUlJj33nuvxvtpKMaNG2ckmR/+8IdGkvnrX/9aL/OYOnWq+eaPx8GDB5sePXqYAQMGmFGjRvndVlJSYmJiYsxdd91lJJm5c+c6nG3wlJWV1fcUEKbY+UBYuuWWWyRJr732mu9YcXGx3njjDY0ZM6bWfh988IH+/ve/67bbbtNdd93l6/N1BQUFWrFihX76059q0KBBNd5P69atdeutt551ji+88IKKioo0c+ZMdejQocY2I0aM8P378ccfV6tWrfS73/2uxrcTYmNjlZWV5bv+7LPPatCgQUpMTFTz5s2VlpammTNn6vTp0379MjMz1bNnT73//vvKyMhQdHS0Lr74Ys2dO1eStHTpUl1++eWKiYlRWlqali9fftZ1BerkyZNasGCB+vTpo//8z/+U9NVuwjfbfOc731GXLl1UXFzsO15UVKSkpCRlZmaqsrJSUs1vnSxatEhZWVlKTk5WdHS0LrvsMj388MNWb1eNGTNGixcv1tGjR33HFi5cKEm6+eabq7X/9NNPdccdd6hr166KiYlR+/btNWzYMG3bts2vXV5enjwej+bPn6+JEycqKSlJ0dHRGjx4sG836IzRo0erRYsW2r59u6666io1b95cbdu21fjx43X8+HG/tsYYPffcc/r2t7+t6OhotWrVSiNGjNDOnTv92p15HqxZs0YZGRmKiYk56/8V4EJQfCAsxcXFacSIEX4vXq+99pqaNGmikSNH1trvzFb/mDFjdPPNNysmJqba9v/KlSslST/60Y8uaI4rVqxQRESEhg0bds62+/fv19///ndlZWUpJibmvO7/s88+06hRo/Tqq6/qz3/+s+688079+te/1t13312tbVFRke644w6NHTtWb731ltLS0jRmzBg9/vjjmjx5siZNmqQ33nhDLVq00PXXX699+/ZZr/dcFi9erCNHjmjMmDHq2rWrrrjiCi1atEjHjh3ztWnWrJlef/11HTx40PfCWFVVpZ/85Ccyxui1115TRERErWPs2LFD11xzjebMmaPly5drwoQJev3118/rHJxx8803KyIiwq+wPfO2WU1vu+zbt0+tW7fWjBkztHz5cj377LNq2rSp+vfvr08++aRa+ylTpmjnzp168cUX9eKLL2rfvn3KzMysViycPn1a11xzja666iotWbJE48eP1/PPP1/t+X333XdrwoQJ+v73v68lS5boueee0/bt25WRkaEDBw74td2/f79uvfVWjRo1SsuWLTuvtw6BgNT31gtQl8687VJQUGBWr15tJJm///3vxhhj+vXrZ0aPHm2MMTW+7VJWVmbi4uLMgAEDfMdycnKMx+Mxn376qe/YPffcYySZjz/+2K9/VVWVOX36tO9SUVHhd7u+8bbLpZdeapKSks5rXRs2bDCSzMMPP3xe7b+psrLSnD592sybN89ERESYL7/80nfb4MGDjSSzceNG37HDhw+biIgIEx0dbT7//HPf8S1bthhJ5ne/+11A8zibIUOGmGbNmpkjR44YY/7vXM6ZM6da20WLFhlJ5umnnza//OUvTZMmTcyKFSv82tT01snXnTlf+fn5RpL58MMPz9r3zNsuxnz1vOjbt68xxpjt27cbSSYvL88UFBSc822XiooKc+rUKdO1a1fz7//+777jZ56vl19+ud/bart27TKRkZFm7NixvmM5OTlGknnmmWf87vvJJ580ksy6deuMMca8//77RpL57W9/69du7969Jjo62kyaNMlvfZLM//zP/9Q6d6CusPOBsDV48GB17txZL730krZt26aCgoKzbiO//vrrKikp8WszZswYGWN8b0GczVtvvaXIyEjfJT4+vk7WEajNmzfrRz/6kVq3bq2IiAhFRkbq9ttvV2Vlpf75z3/6tU1OTlafPn181xMSEpSYmKhvf/vbSklJ8R2/7LLLJEm7d+8+69iVlZWqqKjwXaqqqs7avrCwUKtXr9bw4cPVsmVLSdJNN92k2NjYam+9SNKPf/xj3XvvvXrooYf0xBNPaMqUKRo6dOhZx5CknTt3atSoUUpKSvI9JoMHD5YkffTRR+fsf8aYMWO0ceNGbdu2TXPmzFHnzp1rfQuuoqJC06ZNU/fu3RUVFaWmTZsqKipKO3bsqHHMUaNG+b1dlJqaqoyMDK1evbpa25/85CfV+krytf3zn/8sj8ejW2+91e98JCUlqXfv3tW+EdaqVSsNGTLkvB8HIFAUHwhbHo9Hd9xxh+bPn6/f//736tatmwYOHFhr+zlz5qhZs2a6+uqrdfToUR09elS9evXSxRdfrJdfftn3WYKLLrpIUvUX4MzMTBUUFKigoEDXXnvtOed30UUX6YsvvjivzxucGbOwsPCcbSVpz549GjhwoD7//HM988wzWrt2rQoKCvTss89Kkk6cOOHXPiEhodp9REVFVTseFRUl6avPXpxN586d/Qqxxx9//KztX3rpJRljNGLECN9jf/r0af3oRz/SX//6V3388cfV+owZM0anT59W06ZN9cADD5z1/iXp2LFjGjhwoD744AM98cQTysvLU0FBgRYvXiyp+mNyNoMGDVLXrl31/PPP69VXX9WYMWNq/VrvxIkT9eijj+r666/XO++8ow8++EAFBQXq3bt3jWMmJSXVeOzw4cN+x5o2barWrVvX2PdM2wMHDsgYo3bt2vmdj8jISG3YsEGHDh3y65+cnHzejwFwIZrW9wSAYBo9erR++ctf6ve//72efPLJWtv985//1Lp16yT93wv9N7333nu65pprNHToUE2ZMkVvv/223wc8W7Zsqb59+0pStReFmvzgBz/QihUr9M4779T4QcWvS05OVlpamlasWKHjx4+f83MfS5YsUVlZmRYvXqzU1FTf8S1btpxzXnXhnXfeUXl5ue/613dPvqmqqsqXizF8+PAa27z00kuaOXOm73pZWZluu+02devWTQcOHPB9VuVsVq1apX379ikvL8+32yHJ74OjNu644w794he/kMfjUU5OTq3t5s+fr9tvv13Tpk3zO37o0CHfLs/XFRUV1Xjsm8+piooKHT582O/4mb5njrVp00Yej0dr166V1+utdr/fPBZoLgpgi50PhLX27dvroYce0rBhw876AnHmQ6UvvPCCVq9e7XdZtmyZIiMjfdv/ffv2VVZWll544QWtXbs24LndeeedSkpK0qRJk/T555/X2ObMb+WS9Oijj+rIkSN64IEHagy5OnbsmFasWCHp/15Evv7iYozRCy+8EPB8baSlpalv376+y9mKj/fee0//+te/NG7cuGqP/erVq9WjRw/NmzdPFRUVvj733HOP9uzZo8WLF2vOnDl6++23fd+QqU1Nj4kkPf/88wGtMScnR8OGDdNDDz2k9u3bn3Xcb465dOnSWs/5a6+95nd+d+/erfXr19cYivfHP/7R7/qCBQskydf22muvlTFGn3/+ud/5OHNJS0s7n6UCdY6dD4S9GTNmnPX2iooKzZs3T5dddpnGjh1bY5thw4bp7bff1hdffKG2bdtq/vz5+sEPfqDvf//7Gj16tH7wgx8oMTFRJSUl2rp1q/7yl7+cM3AqPj5eb731lq699lp95zvf0fjx45Wenu77PMD8+fP14Ycf+nYDbrrpJj366KP61a9+pY8//lh33nmnOnfurOPH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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "HESS-II: Default\n" + "FACT - AxialMapper:\n", + "Initialization time: \n", + "27.5 ms ± 54.8 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "22.9 µs ± 103 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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QYN0/fXXdzi2ra1N5eXluvzyy5WWlqaUlBSlpaXp7bff7nDOyZMnR/25aMCAASoqKtLmzZvbjZ0yZUq7r5UUGfu73/1OgUBAd9xxR9TxyM3N1ZVXXqktW7ZEfX3Pnj01atQox48DEO8IH8BZuOyyy1RYWBj1IX30foKtW7fqpptukjFGR44c0ZEjR3TbbbdJin7PxEUXXaSamhor6x00aJBSU1MjH9/73vdOO3758uUyxui2226L3IfW1lb927/9m/7whz/of//3f9t9zdSpU9Xa2qqUlBTdf//9Z1zT0aNHdd111+nVV1/VI488oi1btqi6ulrr1q2T9NGfr5y6/vrrlZ+fr8cff1y/+MUvNHXq1FNe1jtr1iz9+7//uyZMmKDf/va3evXVV1VdXa0rr7yywzlzc3M73Pbhhx9GbUtJSVHv3r07/NqTY99//30ZY5STkxN1PFJTU7Vjxw598MEHUV/ft29fx48BkAi42gXwwMkf2s8++6yeffbZdrevXLlSjzzyiJKTk/Uv//Iv+slPfqIdO3Z4/r6P3/72t2pubo58/snLgj8uHA5HejFO9YbX5cuXa9GiRZHPm5qadOedd2rw4MF6//33dc899+i555477ZpefvllHTx4UFu2bImc7ZAU9cZRN+6++2595zvfUSAQUGlp6SnHPfPMM/rSl76k8vLyqO0ffPBB5CzPx9XW1na47ZNBo62tTR9++GHU9pNfe3Lb+eefr0AgoG3btikYDLbb7ye3edXdAviFMx9AjIVCIa1cuVKDBg3S5s2b23184xvf0KFDh/TSSy9Jkr7+9a+rW7dumj59etSVIicZY7R+/fqYrO2KK66IOktzuvDx+9//Xn/72980Y8aMDu/HkCFD9PTTT0e9yXbatGnav3+/1q1bp4qKCj3//PORK2RO5eQP1k/+wH388cc7dR9LS0s1fvx4fetb39KFF1542nk/OecLL7yg9957r8Pxq1evjiox27dvn7Zv366SkpJ2Y3/5y19Gfb5q1SpJioy9+eabZYzRe++91+7MWWFhoa644gondxVIWJz5AGLspZde0sGDB/WDH/ygwx9MBQUFWrp0qSoqKnTzzTdr4MCBWrNmjW6//XZ95jOfiZSMSdKf//znyFmUW2+91er9qKioUEpKih566KEOQ8q9996r+++/Xy+88IJuueUWPfnkk3rmmWe0YsUKDRkyREOGDNHMmTP17W9/W9dee62uueaaDucpKipSz549NW3aNM2bN0+pqan65S9/qTfeeKNT687Ly9OGDRvOOO7mm2/WU089pUsvvVRDhw7Vrl279B//8R+n7CCpq6vTrbfeqq985Suqr6/XvHnzlJ6erjlz5kSNS0tL049+9CMdPXpUV199tbZv365HHnlE48aN08iRIyVJ1157rb761a/q7rvv1s6dO3X99derW7duOnTokF555RVdccUVuu+++zp1/4GE4N97XYHEdfKKj+rq6na3TZgwwaSlpZm6urpTfv2kSZNMSkqKqa2tjWz7y1/+YqZPn24uueQSEwwGTUZGhrn88svNrFmzTE1NTYf78epql7///e8mLS3NTJgw4ZRjDh8+bDIyMsz48ePNm2++aTIyMkxpaWnUmBMnTphhw4aZT33qU5GrZTq6YmX79u1mxIgRJjMz0/Tp08fcc8895rXXXmt3hcqZrnY5lY6udjl8+LD58pe/bC644AKTmZlpRo4cabZt22aKi4tNcXFxZNzJq11+8YtfmPvvv9/06dPHBINBc91115mdO3dGzVNaWmq6detm3nzzTVNSUmIyMjJMr169zH333WeOHj3abl3Lly83w4cPN926dTMZGRlm0KBB5ktf+lLUfp3cPyDRBIzp4J8hAAAkfVQy9vnPf16//vWvI28YPpW77rpLzz77bFQHCoD2eM8HAACwivABAACs4s8uAADAKs58AAAAqwgfAADAKsIHAACwKu5KxsLhsA4ePKisrCwqhQEASBDGGDU2NiovL09JSac/txF34ePgwYPq37+/38sAAACdcODAgVM2BZ8Ud+EjKytLkjRSNypFqT6vBgD884+7hjse29rNw4XEWDjN+Vjj0QnwvMWverPjLqxNrXpFL0Z+jp9O3IWPk39qSVGqUgKEDwBdV3JauuOx4fb/HDduBeIgfPDzxQP/V9zh5C0TvOEUAABYRfgAAABWET4AAIBVhA8AAGAV4QMAAFgVd1e7AICX6r80wvFYN1dahNL8LUVMPep8bGt3b9bg5hJaT+Z3cQHLge8WxXz+/t/bHvN9nqs48wEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArCJ8AAAAqwgfAADAKno+AMStI6XOOzn8ltxqHI/1uxNEHk3v1X+gdczn+Q/Mc94dYlz8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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "HESS-II: Padding\n" + "HESS-I - AxialMapper:\n", + "Initialization time: \n", + "15.3 ms ± 10.8 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "Mapping time: \n", + "22.3 µs ± 36.6 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1e0lEQVR4nO3de3RU5b3/8c8AYQzkAhHJBWJIuaiA0ApUgigRChqRclHrbbGCWk+teGGhxxb5WYJawuGcIrZUWhUpLKDhWAE9BYGoJGgpnoBQEVsMEiDWhChCEgIEkjy/PyxzHJMAO8x+5sL7tdasxex5svf3mSeXD3tmf8djjDECAACwpFWwCwAAABcWwgcAALCK8AEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArCJ8AAAAqwgfAADAKsIH0Iw//OEP8ng82rp1a5OP33zzzerWrZvftm7dusnj8TR5y8zM9Bv7/vvva/z48br00kvl9XqVmJiojIwMPfbYY37jTp06pd///vcaNGiQEhIS1K5dO6WlpWns2LFatWrVOc3F4/HooYceOue5OzV16lR5PB7dfPPN57WfgoICeTweFRQUBORrc3Jy5PF41KpVK+3du7fR19TU1CguLk4ej0eTJk1qeeEAHGkT7AKASHPNNdfov/7rvxptj4uL8/17zZo1+uEPf6jMzEzNmTNHycnJKisr09atW5WXl6df/epXvrETJ07UypUrNWXKFM2cOVNer1d79+7VunXrtH79eo0fP97KvJpz6tQpLV26VJK0bt06/fOf/1SXLl1atK+rrrpKf/3rX9W7d+9AlqiYmBgtWrRIzzzzjN/2V199VadOnVJUVFRAjwfgzAgfQIB16NBBgwcPPuOYOXPmKD09XevXr1ebNv/3Y3jHHXdozpw5vvslJSVasWKFfvGLX2jmzJm+7SNGjND999+vhoaGwE/Aoddff11ffPGFRo8erTVr1mjx4sV68sknW7SvuLi4sz53LXH77bdr8eLFmjlzplq1+r8TvgsXLtT48eP1xhtvBPyYwXLs2DG1a9cu2GUAZ8TLLkAQHDp0SJ06dfILHqd984/joUOHJEnJyclN7uebY4Nl4cKFatu2rRYtWqTU1FQtWrRI3/68ygceeEAXXXSRtm3b5tvW0NCgESNGKDExUWVlZZKafulk69atuuOOO9StWzdFR0erW7duuvPOO7V///5zrvHee+9VaWmp8vPzfds++eQTvffee7r33nsbjT9x4oQee+wxffe731V8fLwSEhKUkZGh119/vdHY0y9p/f73v1evXr3k9XrVu3dv5eXl+Y07/TJefn6+7rnnHiUkJKh9+/YaM2ZMky8JvfXWWxoxYoTi4uLUrl07XXPNNXr77bf9xpx+WemDDz7Qrbfeqo4dO6p79+7n/LwAwRL831xAiKuvr1ddXV2jW3MfCG2MOev4jIwMvf/++3rkkUf0/vvv69SpU03u64orrlCHDh00c+ZMvfjii9q3b58bU2yxzz77TBs2bNDYsWN1ySWXKDs7W3v27NGmTZv8xs2bN09XXHGFfvSjH+nIkSOSpJkzZ6qgoEBLly5tNlxJ0r59+3TZZZdp3rx5Wr9+vf7jP/5DZWVlGjRokL788stzqrNnz5669tpr9corr/i2vfLKK+rWrZtGjBjRaHxtba2++uorPf7441q9erX++Mc/aujQoZowYYKWLFnSaPwbb7yhX//613r66af1pz/9SWlpabrzzjv1pz/9qdHY++67T61atdLy5cs1b948/e///q8yMzN9z4skLV26VKNGjVJcXJwWL16s//7v/1ZCQoJuuOGGRgFEkiZMmKAePXro1Vdf1e9+97tzek6AoDIAmrRo0SIj6Yy3tLQ0v69JS0trduwzzzzjG/fll1+aoUOH+h6LiooyQ4YMMbm5uaa6utpvn2vWrDGdOnXyjb344ovNbbfdZt54441znoskM3ny5PN6Ppry9NNPG0lm3bp1xhhj9u7dazwej5k4cWKjscXFxSYuLs6MGzfOvPXWW6ZVq1bm//2//+c3ZuPGjUaS2bhxY7PHrKurM0ePHjXt27c3zz///Bm/dsaMGUaS+eKLL8yiRYuM1+s1hw4dMnV1dSY5Odnk5OQYY4xp3769yc7OPuMxT506Ze677z7zve99z+8xSSY6OtqUl5f7jb/88stNjx49fNtOfz+NHz/e7+v/8pe/GEnm2WefNcYYU1NTYxISEsyYMWP8xtXX15v+/fub73//+43m94tf/KLZ2oFQxJkP4CyWLFmioqKiRrehQ4c2OX7o0KFNjr/vvvt8Yy6++GK9++67Kioq0uzZszV27Fh98sknmjZtmq688kq//9HfdNNNOnDggFatWqXHH39cffr00erVq/XDH/7Q7wqWb5+hcfp+kIaGBr+vr6+vP+N4Y4zvpZaRI0dKktLT05WZmanXXntNVVVVfuN79Oihl156SatXr9bNN9+sa6+9Vjk5OWet6+jRo/rZz36mHj16qE2bNmrTpo1iYmJUU1Ojv//97+c8v9tuu01t27bVsmXLtHbtWpWXl5/xCpdXX31V11xzjWJiYtSmTRtFRUVp4cKFTR7z9MtHp7Vu3Vq333679uzZo88++8xv7N133+13f8iQIUpLS9PGjRslSZs3b9ZXX32l7OzsRut54403qqioSDU1NX77uOWWW875eQBCAW84Bc7iiiuu0MCBAxttj4+PV2lpaZPbmxrflIEDB/rGnjp1Sj/72c/03HPPac6cOX5vPI2Ojta4ceM0btw4SdKBAweUlZWl3/72t/rpT3+qPn36qHv37n7vg5gxY8Y5/XE/7d5779XixYt994cNG3bGS17feecdlZSUaOrUqX5B40c/+pE2btyoP/7xj/rJT37i9zWjR49WYmKiDh48qKlTp6p169Znreuuu+7S22+/raeeekqDBg3yXRp700036fjx4+c8v/bt2+v222/XK6+8orS0NP3gBz9QWlpak2NXrlypH/3oR7rtttv07//+70pKSlKbNm20YMECv5duTktKSmp226FDh9S1a9ezjj39/p6DBw9Kkm699dZm5/LVV1+pffv2vvtnetkKCEWEDyBEREVFacaMGXruuef00UcfnXHspZdeqn/7t3/TlClTtGvXLvXp00f/8z//o9raWt+YlJQUR8fPycnxO5MSGxt7xvELFy6UJM2dO1dz585t8vFvh48HHnhA1dXV6tOnjx555BFde+216tixY7PHqKys1J///GfNmDFDP//5z33bT78nw6l7771XL7/8sj788EMtW7as2XFLly5Venq6VqxYIY/H43fcppSXlze77eKLLz6nsT169JAkderUSZL0m9/8ptkrf755lkWSX41AOCB8AEFQVlbW5P9WT5/SPx0cqqur5fF4FBMTc9axV1555XnV1K1bt0ZN05pz+PBhrVq1Stdcc42effbZRo+//PLLWrZsmT766CP17dvXt23p0qV65ZVXNGzYMF111VW65557tHr16maP4/F4ZIyR1+tttP+zvSzUlIyMDN17772qrKw8Y38Uj8ejtm3b+v1RLy8vb/JqF0l6++23dfDgQV8o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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "SCTCam: Default\n" + "HESS-II - AxialMapper:\n", + "Initialization time: \n", + "53.7 ms ± 51.8 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "24.1 µs ± 103 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtvUlEQVR4nO3de3xU1b338e9AksltiFwzRCBGjVeQVrCYiCaCxKJSBI+ooMXqOVVBa0otlXIswWpi8RwOnodKxcrFIgesRdRShVQlYLkYEAoNPBzUAFEyBCgk4Zbrev7wYddpQm4ka3bw83699uvl7L1m9m8WmHxZM3v/PMYYIwAAAEs6hLoAAADwzUL4AAAAVhE+AACAVYQPAABgFeEDAABYRfgAAABWET4AAIBVhA8AAGAV4QMAAFhF+AC+ZsGCBfJ4PNq0aVO9x2+77TZdcMEFQfsuuOACeTyeerf09PSgsRs3btSoUaPUp08feb1excfHKyUlRT/5yU+CxlVVVemll17SNddcoy5duig6OlqJiYkaOXKk3nzzzSa9F4/Ho0cffdR5vGfPHnk8Hv3Hf/xHk57fEqNHj65z3pY4/eewZ8+eVnnu/fffL4/HI5/Pp2PHjtV5zt69e9WhQwd5PB5lZWW1vHAATUL4AFrBddddp/Xr19fZXnzxRWfMihUrlJqaqrKyMs2YMUOrVq3SCy+8oOuuu05Lly4Ner377rtPjz32mG688UYtWrRI77zzjv793/9dYWFhWrlype231yQlJSX64x//KEl67bXXdOrUqRa/1q233qr169erZ8+erVWewsPDVV1dXWeuJWn+/Pny+Xytdi4ADQsLdQHAueC8887Ttdde2+CYGTNmKCkpSStXrlRY2D/+17v77rs1Y8YM53FhYaGWLl2qX/ziF5o+fbqzf+jQofq3f/s31dbWtv4baAWvvvqqqqqqdOutt2rFihVatmyZxo4d26LX6t69u7p3796q9UVERGjEiBGaN2+eHnzwQWe/MUYLFizQXXfdpZdffrlVzxlKJ06cUHR0dKjLAOrFygdgyeHDh9WtW7eg4HFahw4dgsZJOuO/+r8+1k3mzZun+Ph4LVy4UFFRUZo3b17QcWOMbrnlFnXt2lX79u1z9p84cUJXXnmlLr/8ch0/flxS/R+d5ObmauTIkerVq5ciIyN18cUX66GHHtKhQ4eaXOMDDzygdevWadeuXc6+P//5z9q7d69+8IMf1Bl/8OBBTZgwQVdccYViY2PVo0cPDRkyRGvXrg0ad/ojrRkzZujZZ59Vnz59FBkZqYEDB+r9998PGpuVlSWPx6MtW7Zo9OjR6tSpk+Li4nTvvffq4MGDdWpYunSpUlJSFBMTo9jYWN18883asmVL0Jj7779fsbGx2r59uzIyMuTz+TR06NAmzwtgmzt/igEhVlNTo+rq6jrbmZpAG2MaHZ+SkqKNGzfqRz/6kTZu3Kiqqqp6X+vyyy/Xeeedp+nTp2vu3Lkt+t6DbevWrdPOnTv1/e9/X127dtUdd9yhDz74QIWFhc4Yj8ej3/3ud4qOjtaYMWOc9z9hwgQVFhbq9ddfV0xMzBnP8dlnnyklJUVz5szRqlWr9Itf/EIbN27U4MGDzziX/+ymm25SYmJiUDB65ZVXdMMNNyg5ObnO+L///e+SpGnTpmnFihWaP3++LrzwQqWnp2v16tV1xs+ePVvvvfeeZs2apUWLFqlDhw4aPny41q9fX2fsqFGjdPHFF+uNN95QVlaWli9frptvvjnovWRnZ+uee+7RFVdcoddff12/+93vVF5eruuvv147duwIer3Kykp973vf05AhQ/TWW28FrZoBrmMAOObPn28kNbglJiYGPScxMfGMY3/5y1864w4dOmQGDx7sHAsPDzepqakmJyfHlJeXB73mihUrTLdu3ZyxXbt2NXfeead5++23m/xeJJmJEyc6jwsLC40k8/zzz7dschrwwAMPGElm586dxhhjPvzwQyPJPPXUU3XGfvTRRyYsLMxkZmaaefPmGUnmt7/9bdCY038OhYWF9Z6vtrbWVFVVmb179xpJ5q233mrwuePHjzcxMTHGGGOmTZtm/H6/qaqqMocPHzZer9csWLDAHDx40Egy06ZNO+P7rK6uNlVVVWbo0KFm1KhRzv7Tc5uQkGBOnjzp7C8rKzNdunQxN910k7Nv2rRpRpL58Y9/HPTar732mpFkFi1aZIwxZt++fSYsLMw89thjQePKy8uN3+83Y8aMCXp/ksy8efPOWDvgJqx8APV49dVXlZ+fX2cbPHhwveMHDx5c7/ivf7ega9euWrt2rfLz8/Xcc89p5MiR+t///V9NmTJF/fr1C/r44JZbbtG+ffv05ptv6oknntCVV16p5cuX63vf+17QlST/vELTGt8Hae5rHjt2TK+//rpSU1N12WWXSZLS0tJ00UUXacGCBXWef9111+nZZ5/VrFmz9Mgjj+jee+8NmqczKSkp0cMPP6zevXsrLCxM4eHhSkxMlCTt3Lmzye/vBz/4gQ4cOKB3331Xr732miIiInTnnXeecfxvfvMbXX311YqMjHTO+/7779d7ztGjRysyMtJ57PP5NGLECK1Zs0Y1NTVBY8eNGxf0eMyYMQoLC9OHH34oSVq5cqWqq6v1/e9/P+jPIzIyUmlpafWuvNxxxx1NngcglAgfQD0uv/xyDRw4sM4WFxdX7/i4uLh6x9f3vY2BAwfqZz/7mX7/+99r//79+vGPf6w9e/YEfelUkqKionT77bfr+eefV15enj799FNdccUV+vWvf62CggJJ0kUXXaTw8HBne/rpp8/6vQ8dOjToNR944IEGxy9dulTHjh3TmDFjdPToUR09elSlpaUaM2aMioqKlJubW+c548aNU0REhCoqKvTTn/600Zpqa2uVkZGhZcuWafLkyXr//ff18ccfa8OGDZKkkydPNvn9JSYmaujQoZo3b57mzZunu++++4xfzJw5c6YeeeQRDRo0SH/4wx+0YcMG5efn67vf/W695/T7/fXuq6ysrHOJ7z+PDQsLU9euXZ3v/Bw4cECSdM011wT9eYSHh2vp0qV1vusSHR2tTp06NXkegFDiahcghMLDwzVt2jT913/9l/72t781OLZPnz764Q9/qMzMTBUUFOjKK6/UO++8o4qKCmdMQkLCWdf00ksvqby83HncrVu3Bse/8sorkqTMzExlZmbWe/zmm292HtfU1GjcuHHq3LmzvF6vHnzwQf3lL39RRETEGc/xt7/9TX/961+1YMECjR8/3tn/6aefNvVtBXnggQd07733qra2VnPmzDnjuEWLFik9Pb3OmK/Pz9cFAoF690VERCg2NrbO/vPPP995XF1drcOHD6tr166S/jHvb7zxhrPC0xCPx9PoGMAtCB+AJcXFxfWuhJxevj8dHMrLy+XxeOr8sqpvbL9+/Vq9zksvvbTJY3fu3Kn169frjjvuqPfGYs8884zeeuutoF+q06ZN09q1a7Vq1SrFxMTohhtu0E9/+lO98MILZzzP6V+sXq83aP9LL73U5Fq/btSoURo1apTi4uIavETa4/HUOee2bdu0fv169e7du874ZcuW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Tja5ubkmLS3NPP7448YY/s6erWnTppn+/fvXe4y5PTPXrHxUVlZq8+bNysjICNqfkZGhdevWhaiqc09hYaECgUDQPHu9XqWlpTHPLVBaWipJ6tKliyTmt7XU1NRoyZIlOn78uFJSUpjXVjBx4kTdeuutuummm4L2M7dnb/fu3UpISFBSUpLuvvtuff7555KY24a0ye3VW+LQoUOqqamp0/k2Pj6+TodctNzpuaxvnvfu3RuKktotY4wmTZqkwYMHq2/fvpKY37O1fft2paSk6NSpU4qNjdWbb76pK664wvlBzby2zJIlS/TJJ58oPz+/zjH+zp6dQYMG6dVXX9Ull1yiAwcO6JlnnlFqaqoKCgqY2wa4Jnyc5vF4gh4bY+rsw9ljns/eo48+qm3btumjjz6qc4z5bZlLL71UW7du1dGjR/WHP/xB48ePV15ennOceW2+oqIiPf7441q1apUiIyPPOI65bZnhw4c7/92vXz+lpKTooosu0sKFC3XttddKYm7r45qPXbp166aOHTvWWeUoKSmpkxrRcqe/hc08n53HHntMb7/9tj788EP16tXL2c/8np2IiAhdfPHFGjhwoHJyctS/f3+98MILzOtZ2Lx5s0pKSjRgwACFhYUpLCxMeXl5+u///m+FhYU588fcto6YmBj169dPu3fv5u9tA1wTPiIiIjRgwADl5uYG7c/NzVVqamqIqjr3JCUlye/3B81zZWWl8vLymOcmMMbo0Ucf1bJly/TBBx8oKSkp6Djz27qMMaqoqGBez8LQoUO1fft2bd261dkGDhyocePGaevWrbrwwguZ21ZUUVGhnTt3qmfPnvy9bUjIvupajyVLlpjw8HDzyiuvmB07dpjMzEwTExNj9uzZE+rS2pXy8nKzZcsWs2XLFiPJzJw502zZssXs3bvXGGPMc889Z+Li4syyZcvM9u3bzT333GN69uxpysrKQly5+z3yyCMmLi7OrF692hQXFzvbiRMnnDHMb8tMmTLFrFmzxhQWFppt27aZn//856ZDhw5m1apVxhjmtTV9/WoXY5jbs/GTn/zErF692nz++edmw4YN5rbbbjM+n8/5vcXc1s9V4cMYY37961+bxMREExERYa6++mrnEkY03Ycffmgk1dnGjx9vjPnq8q9p06YZv99vvF6vueGGG8z27dtDW3Q7Ud+8SjLz5893xjC/LfPAAw84/+93797dDB061AkexjCvremfwwdz23J33XWX6dmzpwkPDzcJCQlm9OjRpqCgwDnO3NbPY4wxoVlzAQAA30Su+c4HAAD4ZiB8AAAAqwgfAADAKsIHAACwivABAACsInwAAACrCB8AAMAqwgcAALCK8AEAAKwifAAAAKsIHwAAwKr/B25s9EQWqhP+AAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "SCTCam: Padding\n" + "LSTCam - ShiftingMapper:\n", + "Initialization time: \n", + "40.7 ms ± 166 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "23.8 µs ± 41.9 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA8uUlEQVR4nO3de3RV1bn38d/O/UISCJdcIECAgAJCKygEL6QisVSpQke91oPV06MiVqStlaIl0Eo4eEppD0c8taK0lqKvgtjaImkr0RapAUEwKEUJEC4hECEJCSQkWe8fvuzXGGDNwMwkCd/PGBnDrD151twrF5+s7F+egOd5ngAAABwJOd8bAAAAFxaaDwAA4BTNBwAAcIrmAwAAOEXzAQAAnKL5AAAATtF8AAAAp2g+AACAUzQfAADAKZoPtDvPP/+8AoGA1q9ff8Z1xcXFmjx5svr376/o6GglJibqkksu0Xe+8x0VFxdr586dCgQCRm87d+6UJO3YsUNTpkwJ1oyJidGgQYP02GOPae/evQ6efct44403lJ2drdTUVEVGRio1NVVZWVmaO3duo3WBQEBTpkzxrXfyY3Tyup302GOPqWfPngoLC1PHjh1VXV2tnJwcrVmzxriGbXfddZcCgYDi4uJ09OjRJo/v2rVLISEhCgQCysnJadG9AO1F2PneAHA+7NmzR5deeqk6duyo733vexowYIDKy8u1detWvfTSS9qxY4dGjhypd955p9G/mzx5ssrLy/W73/2u0fGUlBT98Y9/1K233qouXbpoypQp+vKXv6xAIKAtW7Zo8eLFev3117Vx40aXT9OKp59+Wvfff7++8Y1vaOHChUpMTFRxcbHWrl2rl19+WY8++miza15//fV65513lJKSEjy2cuVKPfHEE5oxY4bGjRunyMhIVVdXa9asWZKkrKws3xotJTw8XHV1dXrxxRd1zz33NHrsueeeU1xcnCoqKlp8H0B7QfOBC9IzzzyjQ4cO6d1331V6enrw+E033aQf/ehHamhoUEhIiEaOHNno38XHx6u2trbJ8aKiIt16663q37+/3nzzTSUkJAQfu+aaa/Td735XK1asaNkn1UJyc3N19dVX6+WXX250/M4771RDQ8NZ1ezatau6du3a6NgHH3wgSfrud7+rbt26SZIOHTrUrBotJSIiQuPHj9fixYsbNR+e5+n555/XLbfcomeeecbJXlyorq5WTEzM+d4G2jF+7YILUllZmUJCQoL/k/uikJDmfWnMnz9fVVVVeuqppxo1HicFAgFNnDgx+H5eXp5uvPFG9ejRQ1FRUerXr5/uvffeJv+zzcnJUSAQ0ObNm/XNb35TCQkJSkxM1LRp01RXV6dt27bpq1/9quLi4tS7d2/NmzevWfs2UVZWdtq7C6e7Tr/97W918cUXKyYmRkOHDtUf//jHRo9/8VcmvXv31mOPPSZJSkpKUiAQ0F133RVsLmbNmhX8Fdddd911yhrSZ3dHBg8erIKCAl111VWKiYlRnz59NHfu3CaNUmFhobKzsxUTE6OuXbvqgQce0Ouvv65AIHDKX/PcfffdWrt2rbZt2xY89pe//EW7du3St7/97SbrDx48qMmTJ2vgwIHq0KGDunXrpmuuuUZvv/12o3Unf703b948PfHEE+rZs6eioqI0fPhw/fWvf2209uTnw8aNGzVx4kTFx8crISFB3/rWt3Tw4MEme3jxxReVmZmp2NhYdejQQdddd12Tu2933XWXOnTooC1btig7O1txcXEaM2ZMk1qATTQfuCBlZmaqoaFBEydO1BtvvHHOt8xXr16tpKSkJndETueTTz5RZmamFi1apNWrV+vHP/6x/vnPf+rKK6/UiRMnmqy/+eabNXToUL3yyiv6zne+o5///Od6+OGHddNNN+n666/XihUrdM011+iHP/yhli9ffk7P5YsyMzP1yiuvKCcnR++//77q6+vPuP7111/XwoULNXv2bL3yyitKTEzUhAkTtGPHjtP+mxUrVgTvKKxatUrvvPOOZs2apVWrVkmS7rnnHr3zzjt655139Pjjj5/x/CUlJbrjjjv0rW99S6+99prGjRun6dOn64UXXgiu2b9/v0aPHq1t27Zp0aJF+s1vfqPKysozvl7l2muvVa9evbR48eLgsWeffVZXX321MjIymqz/9NNPJUkzZ87U66+/rueee059+vRRVlbWKZubhQsXatWqVVqwYIFeeOEFhYSEaNy4cU1+9SdJEyZMUL9+/fTyyy8rJydHr776qq677rpGnztz5szRbbfdpoEDB+qll17Sb3/7W1VWVuqqq67S1q1bG9Wrra3V17/+dV1zzTVauXJl8FddQIvxgHbmueee8yR5BQUFp13T0NDg3XvvvV5ISIgnyQsEAt7FF1/sPfzww15RUdFp/93o0aO9QYMGNTkeFRXljRw58qz229DQ4J04ccLbtWuXJ8lbuXJl8LGZM2d6kryf/exnjf7Nl770JU+St3z58uCxEydOeF27dvUmTpx4Vvs4nY8//tgbPHiwJ8mT5EVHR3tjxozxFi5c6NXW1jZaK8lLSkryKioqgsdKSkq8kJAQLzc3N3js5Mfo89f65HM9ePBg8NjBgwc9Sd7MmTOb7OtUNUaPHu1J8v75z382Wjtw4EDvuuuuC77/gx/8wAsEAl5hYWGjddddd50nyXvzzTeDxyZNmuTFxsYG95icnOydOHHCKysr8yIjI73nn3/+jPs8qa6uzjtx4oQ3ZswYb8KECcHjRUVFniQvNTXVO3bsWPB4RUWFl5iY6F177bVNrtHDDz/cqPbvfvc7T5L3wgsveJ7nebt37/bCwsK8Bx98sNG6yspKLzk52bv55psbPT9J3uLFi0+7d8A27nzgghQIBPT0009rx44deuqpp/Ttb39bJ06c0M9//nMNGjRI+fn5LXr+0tJS3XfffUpLS1NYWJjCw8PVq1cvSdKHH37YZP0NN9zQ6P2LL75YgUBA48aNCx4LCwtTv379tGvXrjOeu6GhQXV1dcE3vzsZffv21fvvv6/8/HzNmjVL1157rQoKCjRlyhRlZmbq+PHjjdZ/5StfUVxcXPD9pKQkdevWzXdftiQnJ+vyyy9vdGzIkCGNzp+fn6/Bgwdr4MCBjdbddtttZ6z97W9/WwcOHNCf//xn/e53v1NERIS++c1vnnb9008/rUsvvVRRUVHBj/Nf//rXU36MJ06cqKioqOD7cXFxGj9+vN56660mH6M77rij0fs333yzwsLC9Oabb0r6LJ1UV1enf/u3f2v0sY6KitLo0aNPeeflG9/4xhmfO2ATLzjFBa1Xr166//77g++/9NJLuu222/SDH/xA7777rnGdnj17qqioyGhtQ0ODsrOztW/fPj3++OO65JJLFBsbq4aGBo0cOVLHjh1r8m8SExMbvR8REaGYmJhG/7M6edzvV0h33323lixZEnz/dP8z+ryQkBBdffXVuvrqqyVJVVVVuueee/Tiiy9q8eLFmjx5cnBt586dm/z7yMjIUz6vlmBy/rKyskYvND4pKSnpjLV79eqlMWPGaPHixdq5c6duvfVWxcTEqLq6usna+fPn63vf+57uu+8+/eQnP1GXLl0UGhqqxx9//JTNR3Jy8imP1dbW6ujRo41eS/TFtWFhYercubPKysokSQcOHJAkXXbZZad8Hl98rU5MTIzi4+PP+NwBm2g+gM+5+eablZubG0xemLruuuv03//931q3bp3v6z4++OADvf/++3r++ec1adKk4PGPP/74rPbcXDk5OY1e2/D5uxSmYmNjNX36dL344ovNvlatQefOnYP/g/68kpIS3397991361vf+pYaGhq0aNGi06574YUXlJWV1WRNZWXlKdef6twlJSWKiIhQhw4dmhzv3r178P26ujqVlZUFG68uXbpIkl5++eXgHbUzCQQCvmsAm/i1Cy5I+/fvP+Xxo0ePqri4WKmpqc2q9/DDDys2Njb4d0C+yPO8YNT25Df6yMjIRmv+93//t1nnPFu9e/fW8OHDg28DBgw44/rTXauTP70391o1x8lrZPuuyejRo/XBBx80eeHlsmXLfP/thAkTNGHCBN19991nbDQDgUCTj/HmzZtP+QJSSVq+fHmjX2FVVlbqD3/4g6666iqFhoY2WvvFvzPz0ksvqa6uLvi3UK677jqFhYXpk08+afSx/vwbcD5x5wPt1t/+9rdT/vXLr33ta3riiSf0j3/8Q7fccou+9KUvKTo6WkVFRVq4cKHKysr05JNPNutc6enpWrZsWbDeyT8yJklbt27V4sWL5XmeJkyYoIsuukh9+/bVo48+Ks/zlJiYqD/84Q/Ky8uz8bStGzRokMaMGaNx48apb9++On78uP75z3/qZz/7mZKSkpr80S2b4uLi1KtXL61cuVJjxoxRYmKiunTpot69e59T3alTp2rx4sUaN26cZs+eraSkJC1dulQfffSRpDNHraOiopr8zZNTueGGG/STn/xEM2fODCZrZs+erfT0dNXV1TVZHxoaqrFjx2ratGlqaGjQf/7nf6qiouKUyZPly5crLCxMY8eOVWFhoR5//HENHTpUN998s6TPGszZs2drxowZ2rFjh7761a+qU6dOOnDggN59913FxsaSaMF5RfOBduuHP/zhKY8XFRXpzjvvlPTZT7pPPvmkysvLlZiYqGHDhulPf/pToxdymrrhhhu0ZcsW/exnP9PTTz+t4uJihYSEKD09XV/96lf14IMPSvrsr2X+4Q9/0EMPPaR7771XYWFhuvbaa/WXv/xFPXv2PPsn3ELm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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "CHEC: Default\n" + "FlashCam - ShiftingMapper:\n", + "Initialization time: \n", + "40.4 ms ± 46.2 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "23.8 µs ± 25.2 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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F70eavfu3SooKNDWrVt1++23q2/fvlq/fr3uvPNOrVu3Ti+//HLMa/WZZ57RihUrdOeddyo7O1tdu3Zt9hgDgQzQBs2fP99I2u+tvr4+Oq579+5m/PjxB5ynoaHB1NfXm2uuucaceeaZ0e333nuvkWR27NhxwN9dunSpkWQuuuiimO1PPvmkkWRef/11Y4wxixYtMpLMQw89dFCPtbGx0dTX15uf//znpkuXLiYSicQ8vvbt25utW7dGt61du9ZIMjk5OWbXrl3R7c8884yRZJ577rmDWseBPPLII6ZTp07R45+Tk2N+9KMfmeXLl8eM2/ecTZo0KWb7rFmzjCTzySefRLcVFBSYgoKCmHHdu3c3I0eOjNn261//2kgyFRUVTdb1zTkqKiqMJHP66aebhoaG6PY33njDSDJ//vOfjTFfHe/s7GwzcODAmPk2bdpkUlNTTffu3WO2SzLXX3+9iUQiJj8/39x8883GGGN+97vfmU6dOpmamppm12mMMZFIxNTX15tNmzYZSebZZ5+N3nfXXXcZSebGG2+M+Z0nnnjCSDKPP/54zDEKhUJm7dq1MWOHDx9uMjIyoq+HkpISk5SUZMrLy2PG/e1vfzOSzN///veYx5eZmWm++OKL/a4dOBh87YI27Y9//KPKy8tjbs2d+ZC++jplyJAh6tSpk1JSUpSamqpHHnlE7777bnTMt771LUnS2LFj9eSTT+qjjz464Hzf/e53Y37u27evJGnTpk0H+7D0yiuvaNiwYcrMzFRycrJSU1N15513atu2baqqqooZe8YZZ+i4446L/ty7d29JX33t0KFDhybbg9bV0NAQczPf+KrnmyZMmKCtW7dq4cKF+r//+z/l5eXp8ccfV0FBgX796183Gd8ax6slRo4cqeTk5APu//3331dlZaXGjh0b83vHH3+8hgwZcsB5930V9Kc//UkNDQ165JFHNHbsWHXq1Gm/46uqqnTdddcpLy8v+jrs3r27JMW8Fve58sorY34eO3asUlJStHTp0pjtp512mvr16xezbdy4caqurtZbb70lSXrhhRfUp08fnXHGGTHP9Xe+852Yr672ueCCC3T00Ucf8LEDLUXxgTatd+/eGjBgQMytOYsXL9bYsWN13HHH6fHHH9frr7+u8vJyTZgwQXv37o2OO//88/XMM8+ooaFBP/rRj9StWzf16dNHf/7zn5vM2aVLl5ifw+GwJGnPnj2SFP3qpKKiwuoxvfHGGyosLJT01XUHr732msrLyzV9+vSYeffp3LlzzM9paWnNbv/649yf1NTUmJvN9/uZmZm64oordN999+lf//qX3nnnHWVlZWn69OlNYrBBx6u1Be1/31ckWVlZTX53f9u+7uqrr9Znn32mmTNn6q233tI111yz33GRSESFhYVavHixpk6dqn/+85964403otee7O9YZGdnx/yckpKiLl26NPlK55vjvr5t39hPP/1U77zzTpPnOj09XcaYJtedBH2VBrQU13zgiPL4448rPz9ff/nLX2K+097fd/mjR4/W6NGjVVtbq1WrVqmkpETjxo1Tjx49NGjQIOt9DhgwQJ07d9azzz6rkpKSwOs+Fi1apNTUVL3wwgtq165ddPszzzxjvc94lJeXx/ycn5/f4jlOO+00XX755ZozZ47++9//RiO4bcG+4uTTTz9tcl9lZWWzv5uXl6dhw4ZpxowZOvnkkzV48OD9jvv3v/+tt99+W4899pjGjx8f3d5c4qmysjLmDFdDQ4O2bdvWpJja3xr3bds39phjjlH79u2bXCC7zzHHHBPzs+21SoAtznzgiBIKhZSWlhbzYVpZWbnftMs+4XBYBQUFuueeeyRJa9asadE+U1NTdeutt+q9997TL37xi/2Oqaqq0muvvRZdY0pKSsxXA3v27NGf/vSnFu33YH3zTNI3/+f2ddu2bVNdXd1+73vvvfckte7fXWmNsyYnn3yysrOz9eSTT8Zs37x5s1auXBn4+zfddJNGjRp1wGST9P//z3zf+vf5/e9/f8DfeeKJJ2J+fvLJJ9XQ0NDkD6mtX79eb7/9dsy2hQsXKj09XWeddZYk6eKLL9b//vc/denSpcnzPWDAgP0megCXOPOBI8rFF1+sxYsXa9KkSfr+97+vLVu26Be/+IVycnK0YcOG6Lg777xTW7du1YUXXqhu3bppx44duu+++5SamnpQfzTrlltu0bvvvqu77rpLb7zxhsaNGxf9I2PLly/XvHnzNGPGDA0ZMkQjR47U7NmzNW7cOP3kJz/Rtm3bdO+99zb5H1UiWLp0qSZPnqwrr7xSgwcPVpcuXVRVVaU///nPeumll6JfWbWW008/XZJ03333afz48UpNTdXJJ58c84e+WiopKUkzZszQxIkT9f3vf18T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zm5s2LBBubm5ys/P1+WXX64PP/xQ0pF9fFvlz6sfjM8//1yNjY1NOt9mZWU16ZCL+O07pvs73ps2bToUS2rTjDGaMmWKzj33XPXp00cSx9iFdevWadCgQdq7d686deqkp59+Wqeeemr0g5ljG79FixbprbfeUnl5eZP7eA3Hb+DAgfrjH/+oXr166dNPP9Uvf/lLDR48WOvXrz+ij2/CFB/7hEKhmJ+NMU22wR2Otxs33HCD3nnnHb366qtN7uMYH7yTTz5Za9eu1Y4dO/TUU09p/PjxKisri97PsY3Pli1bNHnyZC1ZskTt2rU74DiO88EbMWJE9L9PP/10DRo0SCeeeKIWLFigc845R9KReXwT5muXY445RsnJyU3OclRVVTWpChG/fVdbc7zj97Of/UzPPfecli5dqm7dukW3c4zjl5aWppNOOkkDBgxQSUmJ+vXrp/vuu49j68ibb76pqqoq9e/fXykpKUpJSVFZWZl++9vfKiUlJXosOc7udOzYUaeffro2bNhwRL+OE6b4SEtLU//+/VVaWhqzvbS0VIMHDz5Eqzp85efnKzs7O+Z419XVqaysjONtyRijG264QYsXL9Yrr7yi/Pz8mPs5xu4ZY1RbW8uxdeTCCy/UunXrtHbt2uhtwIABuvLKK7V27VqdcMIJHGfHamtr9e677yonJ+fIfh0fsktd92PRokUmNTXVPPLII+Y///mPKSoqMh07djQbN2481Etrk2pqasyaNWvMmjVrjCQze/Zss2bNGrNp0yZjjDF33323yczMNIsXLzbr1q0zV1xxhcnJyTHV1dWHeOVtw09/+lOTmZlpli1bZj755JPobffu3dExHOODN23aNLN8+XJTUVFh3nnnHXP77bebpKQks2TJEmMMx7a1fD3tYgzHOV433XSTWbZsmfnwww/NqlWrzMUXX2zS09Oj/187Uo9vQhUfxhjzu9/9znTv3t2kpaWZs846KxpbRMstXbrUSGpyGz9+vDHmq5jXXXfdZbKzs004HDbnn3++Wbdu3aFddBuyv2MrycyfPz86hmN88CZMmBD9LDj22GPNhRdeGC08jOHYtpZvFh8c5/hcdtllJicnx6Smpprc3FwzZswYs379+uj9R+rxDRljzKE55wIAAI5ECXPNBwAAODJQfAAAAK8oPgAAgFcUHwAAwCuKDwAA4BXFBwAA8IriAwAAeEXxAQAAvKL4AAAAXlF8AAAAryg+AACAV/8v1GRZlxAJyW4AAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "CHEC: Padding\n" + "NectarCam - ShiftingMapper:\n", + "Initialization time: \n", + "40.7 ms ± 33.7 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "23.8 µs ± 104 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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8ssv18SJE5WUlKSPPvpIDz/8sP73f/9XK1asCBtbU1Ojyy+/XOPGjdO9994bmnfr1q0NPq579dVX9dZbb2natGlKSkrS448/ruuvv15xcXG69tprJX1VeHz3u99VTEyMfvWrX6lHjx5avXq1pk+frqKiIi1cuDBszscee0ynnXaafvOb36hdu3bKyso64jkGQgzQgi1cuNBIMgUFBaaqqsqccsoppn///qa+vt4YY8zgwYPNWWedFRq/evVqI8n89re/DZtn+/btJjEx0UyePNkYY0xlZaVp166dueCCC0JzNWbChAnG5sekrq7O1NTUmOeee87ExsaaL7/8MvTY4MGDjSTzj3/8I+zfzJo1y0gyb7zxRuQT0Yja2lpTU1Njxo4da84555ywxySZ9PR0s3fv3tC2V155xUgyZ599dtgxz50710gy77///lGt43CmTZtmEhISjCQjyWRmZprbb7/dbNiwIWzcgw8+aCSZ2bNnh20fP368adOmTdhau3fvbsaMGRM2TpKZMGFC2LYjPW/fnOOtt94ykszll18eNu5Pf/qTkWRWr15tjDHmyy+/NMFg0IwaNSps3KHX3ODBg0PbCgsLjSTzyCOPmMrKSpOcnGzmzZtnjDHml7/8pcnMzDT19fURX1/19fWmpqbG5OfnG0lh527MmDFGknn00UfD/s2MGTOMJPPuu++GnaPExERTXFwc2lZbW2tOP/10c+qpp4a2jRs3ziQnJ5utW7eGzfmb3/zGSDKbNm0KO74ePXqY6urqw64fOBw+dkHUSEhI0PTp07V27Vr96U9/anTMa6+9pkAgoBtvvFG1tbWhr/T0dPXt21crV66UJK1atUoVFRUaP378Ub/bX7duna666ip17NhRsbGxio+P109+8hPV1dXpP//5T9jY9u3bH/Fqja0XX3xR559/vpKTkxUXF6f4+Hg9/fTT+vDDDxuMvfjii5WUlBT6/owzzpAkDR8+POyYD21vrJvo675+Pmtra2WMOeL4Bx54QNu2bdMzzzyjcePGKTk5WQsWLFC/fv30wgsvNBh/1VVXhX3fp08fHTx4UCUlJUfcjyuN7V/6v/OyZs0aVVVV6Uc/+lHYuIEDB+rkk08+7LzJycn64Q9/qGeeeUa1tbV67rnndPPNNx/2dbdlyxaNHj1a6enpodfV4MGDJanR5/mGG24I+3706NGS1OAjkEsvvTR01U+SYmNjNWrUKH3yySfasWOHpK9+fi6++GJlZGSEPdeH7qfJz88Pm/Oqq65SfHz8YY8dOByKD0SV6667Tueee66mTp3a4N4K6av7BowxSktLU3x8fNjXmjVrQu2cX3zxhSTppJNOOqp1bNu2TRdeeKE+++wzPfroo3rnnXdUUFAQutfgmzeJNnbJ/zvf+Y4kqbCw0Gqfy5Yt049+9CN9+9vf1h//+EetXr1aBQUFuuWWW3Tw4MEG4zt06BD2fUJCwhG3NzbHIUVFRQ3O5zf/R9SYtLQ03XzzzVqwYIHef/995efnKyEhQXfddVeDsd/8WObQjYu+briNtP9D97F8/X/ghzS27evGjh2rf/3rX5oxY4a++OKLw7b67t27VxdeeKH++c9/avr06Vq5cqUKCgq0bNmysLUcEhcX12Dd6enpYev95vYjjd21a5f++te/NniuzzrrLElq0A4d6aMs4HC45wNRJRAI6OGHH9bQoUP15JNPNni8U6dOCgQCeueddxq96/7Qts6dO0tS6B1fU73yyivat2+fli1bpu7du4e2H66FtLF3uRdffLHi4+P1yiuv6Pbbb4+4zz/+8Y/KzMzU0qVLw+arqqpq+gE0UUZGhgoKCsK29ezZs8nzXHTRRRo2bJheeeUVlZSUqEuXLq6W2OwO/U9+165dDR4rLi4+4tWP888/Xz179tS0adM0dOhQdevWrdFxK1as0Oeff66VK1eGrnZIUllZWaPja2trtWfPnrACpLi4OGy939ze2LZDYzt16qQ+ffpoxowZje4vIyMj7Hv+RgmOFlc+EHUuu+wyDR06VNOmTdPevXvDHrvyyitljNFnn32m/v37N/jq3bu3JCk7O1upqalasGDBET8+ONy770O/dL9e4Bhj9Pvf/976ONLT03XrrbfqzTff1HPPPdfomE8//TT0B7kCgYASEhLCfuEXFxc32u3iWkJCQoNzmZKSctjxu3btarSdtq6uTps3b1bbtm31rW99q9nW2xxXTQYMGKBgMKilS5eGbV+zZk3Ej6wk6f7779eIESNCN8Y2prHXlSQ98cQTh/03zz//fNj3ixcvlqQG3Tf/+Mc/wgqnuro6LV26VD169AhdAbzyyiv1wQcfqEePHo3+/Hyz+ACOFlc+EJUefvhh9evXTyUlJaFLwtJX7zB/+tOf6uabb9batWt10UUXKSkpSTt37tS7776r3r1764477lBycrJ++9vf6tZbb9Vll12m2267TWlpafrkk0+0YcMGzZs3T5JCxcrDDz+s4cOHKzY2Vn369NHQoUOVkJCg66+/XpMnT9bBgwc1f/58lZaWNuk45syZoy1btuimm27Sm2++qe9///tKS0vT7t27lZeXp4ULF2rJkiXq06ePrrzySi1btkzjx4/Xtddeq+3bt+vXv/61unbtqs2bN7s7uQ784Q9/0BNPPKHRo0frvPPOU2pqqnbs2KGnnnpKmzZt0q9+9avQxz3N4XDP27Hss0OHDpo0aZJyc3PVvn17ff/739eOHTv00EMPqWvXro22D3/djTfeqBtvvPGIY7Kzs9W+fXvdfvvtevDBBxUfH6/nn39eGzZsaHR8QkKCfvvb32rv3r0677zzQt0uw4cP1wUXXBA2tlOnTrrkkkv0wAMPhLpdPvroo7B222nTpikvL0/Z2dn6+c9/rp49e+rgwYMqKirS66+/rgULFhz1R5XA11F8ICqdc845uv7660Pv8r7uiSee0MCBA/XEE0/o8ccfV319vTIyMnT++efru9/9bmjc2LFjlZGRoYcffli33nqrjDE6+eSTNWbMmNCY0aNH63/+53/0+OOPa9q0aTLGqLCwUKeffrpeeukl3X///Ro5cqQ6duyo0aNHa9KkSdZ/7EqS2rRpo7/97W96/vnntWjRIo0bN04VFRVq3769+vfvr2eeeUYjRoyQJN18880qKSnRggUL9Mwzz+iUU07RvffeG/ofYEtyxRVXqLi4WK+//nqoKEtJSVGfPn30hz/8IeL/hI/V4Z63I300YmPGjBlKSkrSggULtHDhQp1++umaP3++pk6d6uRKTseOHfW3v/1Nd999t2688UYlJSXp6quv1tKlS3Xuuec2GB8fH6/XXntNP//5zzV9+nQlJibqtttu0yOPPNJg7FVXXaWzzjpL999/v7Zt26YePXro+eef16hRo0JjunbtqrVr1+rXv/61HnnkEe3YsUMpKSnKzMzU9773PbVv3/6YjxGQpICJdMs6AOCwDhWjDz74oO677z5v+73pppv05z//ucFHj40JBAKaMGFC6IoecLxx5QMALG3YsEEvvPCCsrOz1a5dO3388ceaPXu22rVrp7Fjxx7v5QFRg+IDACwlJSVp7dq1evrpp1VWVqbU1FQNGTJEM2bMiNhuC+D/8LELAADwilZbAADgFcUHAADwiuIDAAB41eJuOK2vr9fnn3+ulJQU/nQvAABRwhijyspKZWRkRPyjey2u+Pj8888Pm3sAAABatu3bt0f8S7gtrvg4lBdxgS5XnIhqBo6Hpz/6p5N5xp4+wMk8AFq+WtXoXb1+xNynQ1pc8XHoo5Y4xSsuQPEBHA8pKW5uB+NnGDiB/P8/3GFzywQ3nAIAAK8oPgAAgFcUHwAAwCuKDwAA4FWLu+EUaG3e/HyDk3n+K6Ovk3mW7FgdcUy9kz1JDxe56ZqRpHtOpnMGaC248gEAALyi+AAAAF5RfAAAAK8oPgAAgFcUHwAAwCuKDwAA4BWttkCUsGnZLanbG3FMjYm8r/hA5Pcl9Yo8UazFGFu/KVoTcUxRbUcn+5p3apaTeQA0jisfAADAK4oPAADgFcUHAADwiuIDAAB4RfEBAAC8otsFOIy/f77O0Uxuavw99fuczGNjS62bXw0JqnMyjyRtq23vbK5ILt9U7mSe189KdTIP0Npw5QMAAHhF8QEAALyi+AAAAF5RfAAAAK8oPgAAgFcUHwAAwCtabYHDiLGozetV72RMSd1+qzVFEh8IOJkn1mLNNuoUeT1FNW7C4CQpNuAmyC4m4Ob4bVp2iw66Of5/96t1Mg/gA1c+AACAV00qPnJychQIBMK+0tPTQ48bY5STk6OMjAwlJiZqyJAh2rRpk/NFAwCA6NXkKx9nnXWWdu7cGfrauHFj6LHZs2drzpw5mjdvngoKCpSenq6hQ4eqsrLS6aIBAED0anLxERcXp/T09NBX586dJX111WPu3LmaOnWqRo4cqV69emnRokXav3+/Fi9e7HzhAAAgOjW5+Ni8ebMyMjKUmZmp6667Tlu2bJEkFRYWqri4WMOGDQuNDQaDGjx4sFatWnXY+aqqqlRRURH2BQAAWq8mFR8DBgzQc889pzfffFO///3vVVxcrOzsbO3Zs0fFxcWSpLS0tLB/k5aWFnqsMbm5uUpNTQ19devW7SgOAwAARIsmtdoOHz489N+9e/fWoEGD1KNHDy1atEgDBw6UJAW+0epnjGmw7eumTJmiSZMmhb6vqKigAMExee2z95zMU++oGWy3ozZaG1tqEiKOibFoR3XVaru9toOTeWxtrkqLPMhCfMBNGq+rNlobbd92c+z7L9rlZB7gSI7pt2tSUpJ69+6tzZs3h7pevnmVo6SkpMHVkK8LBoNq165d2BcAAGi9jqn4qKqq0ocffqiuXbsqMzNT6enpysvLCz1eXV2t/Px8ZWdnH/NCAQBA69Ckj11+8YtfaMSIEfrOd76jkpISTZ8+XRUVFRozZowCgYAmTpyomTNnKisrS1lZWZo5c6batm2r0aNHN9f6AQBAlGlS8bFjxw5df/312r17tzp37qyBAwdqzZo16t69uyRp8uTJOnDggMaPH6/S0lINGDBAy5cvV0pKSrMsHgAARJ8mFR9Lliw54uOBQEA5OTnKyck5ljUBAIBWjGA5tDqxgci3MtWZyN0cNmNK6g9YrSmSeIsANhs2nSw26ixuB3MVCOeqs+arudwcf42JjThm64FOTvblKsTO1XNv0zXzeaWbxoBvXbHZyTyIPgTLAQAAryg+AACAVxQfAADAK4oPAADgFcUHAADwiuIDAAB4RastWoxXP1vrZJ4646ZtdU/9QSfz2NhS2ybiGJs2Ulftlttr2juZx8YnVenO5nIVCOeqjdbGlr1u9hUX46Zl11UbrY0ti89xMs8po9c5mQf+cOUDAAB4RfEBAAC8ovgAAABeUXwAAACvKD4AAIBXFB8AAMArWm3RYsRYJLvWW7Sb2ozZVeemjTYh4Kat11Uaa71Fm3FRTUtLY3WXamuTRlt00FUar5vnzFV7dG195PeSn+9100Yb4+jY5ejYbVp2acdtWbjyAQAAvKL4AAAAXlF8AAAAryg+AACAVxQfAADAK4oPAADgFa22OGavfPa/Tuapd1QL7/aYRvtpTduIY2ItWkldtW1uq+3gZB4bn1SlOZnHVRKtJG0/6O/4t+x107LrKo22eG+Kk3ls7ClLdjJPIMbN65422ujDlQ8AAOAVxQcAAPCK4gMAAHhF8QEAALyi+AAAAF7R7YJjFmNRw9Yr8h39NmN21VVbrSmSeDd5cFadLDbqLEL1imo6O9lXrMV5tpvHVRie3XugLQdcBeJFXyDcTkeBcAFHa3aUpyhZBCHWlSVEHLP58QERx2SN/6fVkuAHVz4AAIBXFB8AAMArig8AAOAVxQcAAPCK4gMAAHhF8QEAALyi1fYE9tION61n9RZtoja+sGijtamWbRpJt9REDuGKsZjJVavt9ho3IWU2WlogXNFBf8cuSYWuAuEcPffF+/wFwpWWJjmZJ+DobWtdeeQ2WleKZmZHHGPR+avMKascrAZc+QAAAF5RfAAAAK8oPgAAgFcUHwAAwCuKDwAA4BXFBwAA8IpW2xNYrEU0ZZ2JnIJpM2ZXfa3FiiKvJ94iSdWmorZpo7VRZ5HIWlTjJo01waK1tc7i6GM8JvEW7neTxCu5W3eMozTeWovnfmelmzRaVwm6jrriZfEjr3qLNForNj/QFuuxaaO1UZgbuWWXdtzIuPIBAAC8ovgAAABeUXwAAACvKD4AAIBXFB8AAMArig8AAOAVrbZR6MUdaxzN5Kb23F1fE3FMrMU8Nq2bW2vdJIC6arXdXusvkfXjg12dzBMfY9P2HNnWAyd2Gu2uvdGYRuumZbfeYxpt/JcWvz0s2mhdtdrSRusGVz4AAIBXFB8AAMArig8AAOAVxQcAAPCK4gMAAHhFt0sUirG4tbveImmpxkS+639XXeQwM6tAOItgrFhHgV826i3qbleBcPE2gXAWt+LHOurSqLcIRCs84ObYXYW4Se7C1eotXq+fV7gJhLPIbrScx9F5jMJAOFdheDanMKEs8pjPJ0cOlsuYTUdMJFz5AAAAXlF8AAAAr46p+MjNzVUgENDEiRND24wxysnJUUZGhhITEzVkyBBt2rTpWNcJAABaiaMuPgoKCvTkk0+qT58+Ydtnz56tOXPmaN68eSooKFB6erqGDh2qysrKY14sAACIfkdVfOzdu1c33HCDfv/736t9+/ah7cYYzZ07V1OnTtXIkSPVq1cvLVq0SPv379fixYsbnauqqkoVFRVhXwAAoPU6quJjwoQJuuKKK3TZZZeFbS8sLFRxcbGGDRsW2hYMBjV48GCtWtX43b+5ublKTU0NfXXr1u1olgQAAKJEk1ttlyxZon/9618qKCho8FhxcbEkKS0tLWx7Wlqatm7d2uh8U6ZM0aRJk0LfV1RUtNoCZMmO1Y5mcnOf8Bf1kVtAYyza3OotWtiKat20Lrpqx91W08HJPDb+czDdyTw2Lbs2fAbCFe51d57jYty0Gu+sdPNatFFe2tbJPNEYCJdgEQhnFfbmqNU2odzNPHCjScXH9u3bddddd2n58uVq06bNYccFvtHcboxpsO2QYDCoYDDYlGUAAIAo1qS30O+9955KSkrUr18/xcXFKS4uTvn5+XrssccUFxcXuuJx6ArIISUlJQ2uhgAAgBNTk4qPSy+9VBs3btT69etDX/3799cNN9yg9evX65RTTlF6erry8vJC/6a6ulr5+fnKzo78V+EAAEDr16SPXVJSUtSrV6+wbUlJSerYsWNo+8SJEzVz5kxlZWUpKytLM2fOVNu2bTV69Gh3qwYAAFHLebbL5MmTdeDAAY0fP16lpaUaMGCAli9frpSUFNe7AgAAUeiYi4+VK1eGfR8IBJSTk6OcnJxjnRoAALRCpNp6FGvRM1Znk0YrmzRaN3GRNmm0Nu24rtRZrLmourOTfcUHaiOOsUnHdZXsWmeVRuumjTbWUYqqqyRaSaq36Mvc6SyN1tG6Hf1sGItjN87SaC2O3WaIq98LjtJorZB25g2nGgAAeEXxAQAAvKL4AAAAXlF8AAAAryg+AACAV3S7RKHddZG7XSJHOll2jtSkWswUWWzATSjY9hp/oWj/Odg14hib43LV7bLtoL8wvMJKN/tyFQYnScWV/v5WUHlpUsQxVh0xrrpdyuPdTGTBJhDO5rhcdbv4DIQLlvnb14mOKx8AAMArig8AAOAVxQcAAPCK4gMAAHhF8QEAALyi+AAAAF7RauvRD08aGHHMnK2rLWaKXDMmWITPxTpqAbVhE4q2taaTk33FB+oijrFZj6v24HqLvsTC/Y6OPcbm2COvx1UgnE0YXLGjMDhJirFo7bUJaXMWLGczjUUgnE3XqrEKhLOYyVGLrM0pdBUIZ/Hj7NWecdkRx3R8YpWHlbRcLewpAwAArR3FBwAA8IriAwAAeEXxAQAAvKL4AAAAXlF8AAAAr2i19ejRrf5aq4pqv+VkHleJrF7TaA+kRxxj00rqqtV26wF/abSfVrg5z67SaHd5TKKVpPIvI6fR2rSSumq1NeVu2mhtJJTaZFlbcLSg+GhMo3V07Cd6G60NrnwAAACvKD4AAIBXFB8AAMArig8AAOAVxQcAAPCK4gMAAHhFq60jvylaE3FMjUX0Yryj9k5XbBJZi6o7O9mXTRqtDVeJrDbJt0X7XbW2Rj72eov1RGMabaxlW69NGq2rVkmr5Nuy+MhjbPbV0t4CnsBptDbHHiyP/HrdOypygnny0sj/z2jNWtpTDwAAWjmKDwAA4BXFBwAA8IriAwAAeEXxAQAAvKLbxcKcrau97auotr2TeWLlpmvGayDcwciBcDbH5arjY5vHQLhCi0A4m7AzV8de4jEQrqLUIgxOklUrgqNul0B55E4WVxJKHb0HdHTsCTaBcFZtPJGHtLRAuGCFxe9NR8d+ouPKBwAA8IriAwAAeEXxAQAAvKL4AAAAXlF8AAAAryg+AACAV7TaWpjUfVDEMT7bcW3UWdSVrgLhEgK1TuZx1R5sE4pWdMBRIJxFEKDNemzaaG3Y7GtXhZs22tiYyGu2WY/TvkSbblxXbbSO2jud8djaahUI5/P8WBx7mzI3v19MrMWglvbaaIG48gEAALyi+AAAAF5RfAAAAK8oPgAAgFcUHwAAwCuKDwAA4BWtto4U1bhJQI21aN20sb3aYxrtgchptDZpq65abb2m0VZG3leMRR+gq1Zbn2m0laVtIw+yajl012objWm0Vt3IFmzSaG32ZfNSdNay6zGN1qY92ObXb7C0zmJFiIQrHwAAwCuKDwAA4BXFBwAA8IriAwAAeEXxAQAAvKLbxRGbLpU6i9utbcZsre5ktaZI4gNu7tq26WSxYROGt3W/m04Wq0A4i1YNm04WG8ZjIFyMRSCcsTksZ+FZdhPFlLn5deWqw8IVmx+fhDI3+7Lp+PB5fuw6a/wFwlkF5jlS81/nRRwT/2aBh5UcH1z5AAAAXlF8AAAAr5pUfMyfP199+vRRu3bt1K5dOw0aNEh///vfQ48bY5STk6OMjAwlJiZqyJAh2rRpk/NFAwCA6NWk4uOkk07SrFmztHbtWq1du1aXXHKJrr766lCBMXv2bM2ZM0fz5s1TQUGB0tPTNXToUFVWVjbL4gEAQPRpUvExYsQIXX755TrttNN02mmnacaMGUpOTtaaNWtkjNHcuXM1depUjRw5Ur169dKiRYu0f/9+LV68uLnWDwAAosxR3/NRV1enJUuWaN++fRo0aJAKCwtVXFysYcOGhcYEg0ENHjxYq1atOuw8VVVVqqioCPsCAACtV5N71zZu3KhBgwbp4MGDSk5O1ssvv6wzzzwzVGCkpaWFjU9LS9PWrVsPO19ubq4eeuihpi6jxbFpkbWxvcZfINynB7s4mcdVq+32A+2dzGPDKhDO4rhctdqWVCY7mcfGvrJENxM5askMlPvt+E8oa1n32dsEwlmda4+BcK6e+2C5RRutq2MvrbWYyELAzcG35jZaG03+KezZs6fWr1+vNWvW6I477tCYMWP073//O/R44BtPjDGmwbavmzJlisrLy0Nf27dvb+qSAABAFGnyW46EhASdeuqpkqT+/furoKBAjz76qO655x5JUnFxsbp27RoaX1JS0uBqyNcFg0EFg8GmLgMAAESpY77+aIxRVVWVMjMzlZ6erry8vNBj1dXVys/PV3Z29rHuBgAAtBJNuvJx3333afjw4erWrZsqKyu1ZMkSrVy5Um+88YYCgYAmTpyomTNnKisrS1lZWZo5c6batm2r0aNHN9f6AQBAlGlS8bFr1y79+Mc/1s6dO5Wamqo+ffrojTfe0NChQyVJkydP1oEDBzR+/HiVlpZqwIABWr58uVJS3GRSAACA6Nek4uPpp58+4uOBQEA5OTnKyck5ljUBAIBWjFRbRx47tWfEMVf+u9TJvlyl0bpSbxGDuXW/mxbiuJjIx26zHlftwTbJtyXlrtJo3aR7OmNxCmPK4t3tziKNt6VJcPMjb3d3nk0HqKO2VZsxbVyl0bo6dlcsIp8TyqsjzzOgT+Rd/fN9mxVFpZbV8A4AAFo9ig8AAOAVxQcAAPCK4gMAAHhF8QEAALyi+AAAAF7RauvI1f/e42SeOot6cIurNFq5aYXzmUZbVBE5jTZgk0brqNX2iwp/abT7W1gabYxNGq3NebZojZakhFJH75UcHX9CmaN9WaXRunm9GkeJrDZptDZPq83LI1jmJo3W8mUWUXxFjZuJTnBc+QAAAF5RfAAAAK8oPgAAgFcUHwAAwCuKDwAA4BXdLo785czIwWk2HTGxjjpQbNRb1J5b90XuLrFhEwhnw6aTxYZN+JyrThZXnTXO+AyEswmDsz4/jtoVrDosHO3KUdibTZdKwCLwzGZM0FkgXOQ1u+pAsWHzMosvr3KyLxPD+/pIOEMAAMArig8AAOAVxQcAAPCK4gMAAHhF8QEAALyi+AAAAF7RauvRp44C4WIdtW5u3+8vEG5bpZt9uWq13e0xEO6As0A4N8ceU27RRusoEM1ZGJzctWXaBMLZnGmb5bgKhHPVZRwst2l9dhQ+5ygQztWxx1dUW+zLpu858jmMK93nZF+OzmCLxJUPAADgFcUHAADwiuIDAAB4RfEBAAC8ovgAAABeUXwAAACvaLWNQnUWPYfb9jtKow34S9m1YU7oNNrIxx5T5uhH2uZtiVUaq8U0lqfZZpxNG60Nm3VbLdtRy7LNmDYe02iteDz2+DI3abSKtXnBOhpjIe70rIhjaj/a7GRfvnHlAwAAeEXxAQAAvKL4AAAAXlF8AAAAryg+AACAV3S7RKEdXgPhvuVkHledI7srk5zMY+NAWRsn8zi68V0x5RY/rs4C4Tx2PFhKKPe3vzaOAuFcheEFyyN3sjjbV1mNk3mMoxd+fIVFJ4vN22iLZqDYsv0WE1lwdOzR2sligysfAADAK4oPAADgFcUHAADwiuIDAAB4RfEBAAC8ovgAAABe0Wrr0Qfn1kUck/xOFyf7ammBcPUWfYB7Kty00QZiWlYgnLFYTpyjQDjjKBDOZyhYsMxiHktWx28zj6NAPJsxQWeBcE6msWqRDVi8qG3GuAqEMzaBcD7fatv80FfsjTgkrmt6xDG1O4ttVtTicOUDAAB4RfEBAAC8ovgAAABeUXwAAACvKD4AAIBXFB8AAMArWm09avdu54hj6h11iW53lEYbcJRGu8djGu3BUjdptK4SUmMt0mhdtXa2tDRamyRaV2mskhQsdfQD5DGN1tm+SmvdTOToLWlceXXEMa7aemNLHaXRxjh6Mir3uZmnFePKBwAA8IriAwAAeEXxAQAAvKL4AAAAXlF8AAAAryg+AACAV7TaelRxwRcRx9i04/pkTuA0WptEVp9ptFYtqVGYRusqjVWS1+Nv08LSaK3eStos2WJMfPlBi4kiMzGRF23TjuuMzd86qKh0s6/Y2MhjbNJxoxRXPgAAgFdNKj5yc3N13nnnKSUlRV26dNE111yjjz/+OGyMMUY5OTnKyMhQYmKihgwZok2bNjldNAAAiF5NKj7y8/M1YcIErVmzRnl5eaqtrdWwYcO0b9///TW32bNna86cOZo3b54KCgqUnp6uoUOHqrLS0aUqAAAQ1Zr0gfUbb7wR9v3ChQvVpUsXvffee7roootkjNHcuXM1depUjRw5UpK0aNEipaWlafHixRo3bpy7lQMAgKh0TPd8lJd/FdzQoUMHSVJhYaGKi4s1bNiw0JhgMKjBgwdr1apVjc5RVVWlioqKsC8AANB6HfWt+sYYTZo0SRdccIF69eolSSouLpYkpaWlhY1NS0vT1q1bG50nNzdXDz300NEuo9XZXvEtJ/PEOAqE+7KybcQxNuFzNl0zVc4C4dwce5xFIJyr7oqgo0A4VyFtQYtAOFeBaG1chcHJXeeITSCcs3NdWuNkHlddIfEVVZEH2ezLJhCuzFEAm6uOmL3+AuFqP9/pbV8t0VH/qN555516//339cILLzR4LPCNF4IxpsG2Q6ZMmaLy8vLQ1/bt2492SQAAIAoc1ZWPn/3sZ3r11Vf19ttv66STTgptT09Pl/TVFZCuXbuGtpeUlDS4GnJIMBhUMBg8mmUAAIAo1KQrH8YY3XnnnVq2bJlWrFihzMzMsMczMzOVnp6uvLy80Lbq6mrl5+crOzvbzYoBAEBUa9KVjwkTJmjx4sX6y1/+opSUlNA9HqmpqUpMTFQgENDEiRM1c+ZMZWVlKSsrSzNnzlTbtm01evToZjkAAAAQXZpUfMyfP1+SNGTIkLDtCxcu1E033SRJmjx5sg4cOKDx48ertLRUAwYM0PLly5WSkuJkwQAAILo1qfgwFncvBwIB5eTkKCcn52jXBAAAWjGC5Vqpeos+wC8rIrfR2oixCISzace1apG16W+0GBNXZhHqZMPmrik3S7Y6PTZjEsoij7HiqK3VtmXV6vgtQtGCZXV2O4zAxLhqj448T8DmjZ/FmDhHgXCyCIRz1v5qwyaAzWcgXL2b0MHWjGA5AADgFcUHAADwiuIDAAB4RfEBAAC8ovgAAABeUXwAAACvaLVtpUqt0mgjz2PTwVbtLI3WzTRx5RatcI72leAojdbZejym0QYdpdG6SqKV7NJoXbWAukqjdfa6d5VGayGmpaXRVu51M4+F+jKbHzJEwpUPAADgFcUHAADwiuIDAAB4RfEBAAC8ovgAAABeUXwAAACvaLVtYVIv3xxxzJYXznayL7s02sjz+ExkdZVG66y906ZT0KYj1WJMsMxiGpv1uAobdXTsNkm0ktTGIo3W7vg9tkc7eu7jyhyl0cZ6TJq14TON1iaJ14arduW2kf8cQv3+/U721RJx5QMAAHhF8QEAALyi+AAAAF5RfAAAAK8oPgAAgFd0u7QwhUv6RhwTsLg93ljc9l9TGrRaUySumgdiLQLhrLoZLAQdBcK56pqxCYRzdextWlggXLA8cheL5O74E0qr3UwU42ZBcRUWnSyOzvWJHQhX4WaiWDdPRmvuZLHBlQ8AAOAVxQcAAPCK4gMAAHhF8QEAALyi+AAAAF5RfAAAAK9otW1hMq/bEHGMVTuuVZKbxYKcBWO5eakZizA8q3lcheFZhKIllEUeY/NcuGo19XnsQYswONugO1fHb5eWaHEC6iOPiXcUCGeiMRCu3FEgnKPWVlet0TbHXn/ggJt9tWJc+QAAAF5RfAAAAK8oPgAAgFcUHwAAwCuKDwAA4BXFBwAA8IpW2yhUW9rGzUQ2/ZQW4izSaF3tKxrTaG1bSSOJyjRahx2iwdIaJ/MYV2m05VWR9+Uo/TWm1FEarat2U69ptDY/ZBZiLX5PWaCN1g2ufAAAAK8oPgAAgFcUHwAAwCuKDwAA4BXFBwAA8Ipul2hk0zlik8JlMSauzM0d4nIUCOcqDM8uFM1iVzbrcRaIZjHG0bG3sQiE83rslvuzC8SLPCiuzE1Hg4nxGIpmcVw2Y0xFhcWCIgs46i5RwNE5tDj2+io3QYCIjCsfAADAK4oPAADgFcUHAADwiuIDAAB4RfEBAAC8ovgAAABe0Wobjax6HCOzC4RzsislOAqEc1Uu2wTCOTrNfgPhLNYcdNVGayGhtNrNRHIZCGfRTukqEK6s0sk8ztpNPQbC1ZVG/iEL2Dynjo6dNtqWhSsfAADAK4oPAADgFcUHAADwiuIDAAB4RfEBAAC8ovgAAABe0WobhbLu+Ke3fRXOynYzkaNEVjlKo7VZj6t2U3dprJHHBEtrIw+yaG90dexWLavGrhXZWRqtzZoctdpatYkaiyfWYowpd9PW6yqN1qqN1obFsddXu2vphh9c+QAAAF41ufh4++23NWLECGVkZCgQCOiVV14Je9wYo5ycHGVkZCgxMVFDhgzRpk2bXK0XAABEuSYXH/v27VPfvn01b968Rh+fPXu25syZo3nz5qmgoEDp6ekaOnSoKisd/aU/AAAQ1Zp8z8fw4cM1fPjwRh8zxmju3LmaOnWqRo4cKUlatGiR0tLStHjxYo0bN+7YVgsAAKKe03s+CgsLVVxcrGHDhoW2BYNBDR48WKtWrWr031RVVamioiLsCwAAtF5Oi4/i4mJJUlpaWtj2tLS00GPflJubq9TU1NBXt27dXC4JAAC0MM3Sahv4RpuaMabBtkOmTJmiSZMmhb6vqKigAGlBgqVu5rFKZLUQtEijdZXE26bUogXSgk0aq01raxuLNFqbNlobwS/dtC6aWFc9u37TaAPO0mjdrMfYpNHaPPcW7cp1ZWWR57FoIXbVaksbbevktPhIT0+X9NUVkK5du4a2l5SUNLgackgwGFQwGHS5DAAA0II5/dglMzNT6enpysvLC22rrq5Wfn6+srMd/bEqAAAQ1Zp85WPv3r365JNPQt8XFhZq/fr16tChg77zne9o4sSJmjlzprKyspSVlaWZM2eqbdu2Gj16tNOFAwCA6NTk4mPt2rW6+OKLQ98ful9jzJgxevbZZzV58mQdOHBA48ePV2lpqQYMGKDly5crJSXF3aoBAEDUChhjGazgSUVFhVJTUzVEVysuEH+8l3PC+/weNx+XWd1wavFKtLrh1JFgmb8bTm1Y3XDqSEKpxxtOLX8FWd1w6kig3OIGT6uJPN5wasPihtN6mz8IyQ2naEStqdFK/UXl5eVq167dEccSLIcj8hmKluCqsGhhoWg2gWhBV4WFo1/4NsWizXMaqIt87LHl+y1WJM+BcI6KJosxrgLhFGvxpNm8PmzC8CwYi9e9qa1xsi9EH4LlAACAVxQfAADAK4oPAADgFcUHAADwiuIDAAB4RfEBAAC8otUWx8ymHTdY1uzLCPEZCGfTkhksrXWwGjsJX1Y5mcfm73PYtOPGlR2IPMhVe6ykQKmjtlVXLcsVFn+fw1Fbb11p5F51q7+94arVljZaHAFXPgAAgFcUHwAAwCuKDwAA4BXFBwAA8IriAwAAeEXxAQAAvKLVFkf07VmrvO1r9+3ZTuZxl8QbeVCCqzTalpbEa5NGa9NGa/P2xmGrrVWLrMXzajPGlFdYLMhCbGzkMRbnyFWEvUzkVnVT5+h1jxMWVz4AAIBXFB8AAMArig8AAOAVxQcAAPCK4gMAAHhFtwtajE4L3HTWVF4/MOIYqzC8Un939CeUVruZyFEYXmz5fot9WazHgrMwOMlZ54yptAiEi7E4AfWRO0fqysoiz2MR9uaq24VOFvjAlQ8AAOAVxQcAAPCK4gMAAHhF8QEAALyi+AAAAF5RfAAAAK9otUWrk/LCGm/7qv7eeW4msumStMhDswlEiyuL3EZrbFpWXb11sW2PtQjEsxnjNRDOph3Xoo3WhrEJzLMIjQN84MoHAADwiuIDAAB4RfEBAAC8ovgAAABeUXwAAACvKD4AAIBXtNoCxyDhjQI3Ew3qG3mMRUdqbNmBiGOs2mgtOEujtWlHtWQqLNZkc/wWLbt15eUWK7LgqNWWNlpEE658AAAAryg+AACAVxQfAADAK4oPAADgFcUHAADwiuIDAAB4Rast0BKs3uBkmjqLMbFnnOZkX65aVlVv1yJaX+amtTVgk0brqB3ZCi2yOAFx5QMAAHhF8QEAALyi+AAAAF5RfAAAAK8oPgAAgFd0uwAnmLoP/+NknrhvZziZxyoMTlLAUQBdXaWjQDwAR40rHwAAwCuKDwAA4BXFBwAA8IriAwAAeEXxAQAAvKL4AAAAXtFqC+Co1H72udf9xSYne90fgObDlQ8AAOBVsxUfjz/+uDIzM9WmTRv169dP77zzTnPtCgAARJFmKT6WLl2qiRMnaurUqVq3bp0uvPBCDR8+XNu2bWuO3QEAgCjSLMXHnDlzNHbsWN16660644wzNHfuXHXr1k3z589vjt0BAIAo4vyG0+rqar333nu69957w7YPGzZMq1atajC+qqpKVVVVoe/Ly8slSbWqkYzr1QGIVsZUO5mnztQ4mQdAuFp99bNlTOT/eTsvPnbv3q26ujqlpaWFbU9LS1NxcXGD8bm5uXrooYcabH9Xr7teGoBotvd4LwCAjcrKSqWmph5xTLO12gYCgbDvjTENtknSlClTNGnSpND3ZWVl6t69u7Zt2xZx8Tg2FRUV6tatm7Zv36527dod7+W0WpxnPzjPfnCe/YjG82yMUWVlpTIyIideOy8+OnXqpNjY2AZXOUpKShpcDZGkYDCoYDDYYHtqamrUnPBo165dO861B5xnPzjPfnCe/Yi282x70cD5DacJCQnq16+f8vLywrbn5eUpOzvb9e4AAECUaZaPXSZNmqQf//jH6t+/vwYNGqQnn3xS27Zt0+23394cuwMAAFGkWYqPUaNGac+ePZo2bZp27typXr166fXXX1f37t0j/ttgMKgHH3yw0Y9i4Bbn2g/Osx+cZz84z3609vMcMDY9MQAAAI6Q7QIAALyi+AAAAF5RfAAAAK8oPgAAgFcUHwAAwKsWV3w8/vjjyszMVJs2bdSvXz+98847x3tJUe3tt9/WiBEjlJGRoUAgoFdeeSXscWOMcnJylJGRocTERA0ZMkSbNm06PouNYrm5uTrvvPOUkpKiLl266JprrtHHH38cNoZzfezmz5+vPn36hP7q46BBg/T3v/899DjnuHnk5uYqEAho4sSJoW2cazdycnIUCATCvtLT00OPt9bz3KKKj6VLl2rixImaOnWq1q1bpwsvvFDDhw/Xtm3bjvfSota+ffvUt29fzZs3r9HHZ8+erTlz5mjevHkqKChQenq6hg4dqsrKSs8rjW75+fmaMGGC1qxZo7y8PNXW1mrYsGHat29faAzn+tiddNJJmjVrltauXau1a9fqkksu0dVXXx36Zcw5dq+goEBPPvmk+vTpE7adc+3OWWedpZ07d4a+Nm7cGHqs1Z5n04J897vfNbfffnvYttNPP93ce++9x2lFrYsk8/LLL4e+r6+vN+np6WbWrFmhbQcPHjSpqalmwYIFx2GFrUdJSYmRZPLz840xnOvm1L59e/PUU09xjptBZWWlycrKMnl5eWbw4MHmrrvuMsbwenbpwQcfNH379m30sdZ8nlvMlY/q6mq99957GjZsWNj2YcOGadWqVcdpVa1bYWGhiouLw855MBjU4MGDOefHqLy8XJLUoUMHSZzr5lBXV6clS5Zo3759GjRoEOe4GUyYMEFXXHGFLrvssrDtnGu3Nm/erIyMDGVmZuq6667Tli1bJLXu89wsf179aOzevVt1dXUNkm/T0tIaJOTCjUPntbFzvnXr1uOxpFbBGKNJkybpggsuUK9evSRxrl3auHGjBg0apIMHDyo5OVkvv/yyzjzzzNAvY86xG0uWLNG//vUvFRQUNHiM17M7AwYM0HPPPafTTjtNu3bt0vTp05Wdna1Nmza16vPcYoqPQwKBQNj3xpgG2+AW59ytO++8U++//77efffdBo9xro9dz549tX79epWVlemll17SmDFjlJ+fH3qcc3zstm/frrvuukvLly9XmzZtDjuOc33shg8fHvrv3r17a9CgQerRo4cWLVqkgQMHSmqd57nFfOzSqVMnxcbGNrjKUVJS0qDqgxuH7qjmnLvzs5/9TK+++qreeustnXTSSaHtnGt3EhISdOqpp6p///7Kzc1V37599eijj3KOHXrvvfdUUlKifv36KS4uTnFxccrPz9djjz2muLi40PnkXLuXlJSk3r17a/Pmza36Nd1iio+EhAT169dPeXl5Ydvz8vKUnZ19nFbVumVmZio9PT3snFdXVys/P59z3kTGGN15551atmyZVqxYoczMzLDHOdfNxxijqqoqzrFDl156qTZu3Kj169eHvvr3768bbrhB69ev1ymnnMK5biZVVVX68MMP1bVr19b9mj5ut7o2YsmSJSY+Pt48/fTT5t///reZOHGiSUpKMkVFRcd7aVGrsrLSrFu3zqxbt85IMnPmzDHr1q0zW7duNcYYM2vWLJOammqWLVtmNm7caK6//nrTtWtXU1FRcZxXHl3uuOMOk5qaalauXGl27twZ+tq/f39oDOf62E2ZMsW8/fbbprCw0Lz//vvmvvvuMzExMWb58uXGGM5xc/p6t4sxnGtX7r77brNy5UqzZcsWs2bNGnPllVealJSU0P/3Wut5blHFhzHG/O53vzPdu3c3CQkJ5txzzw21KuLovPXWW0ZSg68xY8YYY75q5XrwwQdNenq6CQaD5qKLLjIbN248vouOQo2dY0lm4cKFoTGc62N3yy23hH4/dO7c2Vx66aWhwsMYznFz+mbxwbl2Y9SoUaZr164mPj7eZGRkmJEjR5pNmzaFHm+t5zlgjDHH55oLAAA4EbWYez4AAMCJgeIDAAB4RfEBAAC8ovgAAABeUXwAAACvKD4AAIBXFB8AAMArig8AAOAVxQcAAPCK4gMAAHhF8QEAALz6f2d+WpNdwZ3OAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "ASTRICam: Default\n" + "DigiCam - ShiftingMapper:\n", + "Initialization time: \n", + "23.3 ms ± 45.5 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "22.9 µs ± 32 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAE5JJREFUeJzt3W+MXNV5x/Hvs8vaa/7jBFsbQHEjrKgoKUZyEyr3BYGQuhTFvAElUqqthOQ3rUSkSKlJpVaV+gL1RZS+aF+sEpSVkqYgEmQLoRKzCYraRhSbEGJiE6epS4ktr0JJIdAA3n36Yq/j8Rnv3Ll7zzn3Luf3kVazMztzz7Mz++y5zznn3mvujoiUZ6LrAESkG0p+kUIp+UUKpeQXKZSSX6RQSn6RQin5RQql5BcplJJfpFAX5Wxsg230aS7J2WQvvP/Dv0q49dErNCfNErZ9vrClyQ77lp88f3FnbXfpdV79hbtfPc5zsyb/NJfwUbstZ5O98A+P/2uybU/WJP8VE5PJ2g5NBul/+cSmbG2H/uB9N3bWdpee9Ef+a9znardfpFBKfpFCKflFCpW15i/VcsSjpieCUbWloWG2oO2aMYFWsQRtLwVtLbOcsG31W23pHRQplJJfpFBKfpFCqebPoK4uHyWcx286frDU4jRtdQuE6sYTljxezT9p5/dTKccTSqGeX6RQSn6RQin5RQqlmj+DUTV/3dr8NuMF0GyeP+wJ2owXACzb2l8/tIYg4viBrFDPL1IoJb9IobTbn8Gyn9uFnQh2hdvu1tdZGjElFh6CG3vHusl0XLhcN+WyZFmhnl+kUEp+kUIp+UUKNVbNb2YngNeBJeCMu+80s83AQ8A24ARwj7u/mibMd4/B+j+HpaB0nhxoPjwEN37b529/1HJhLdfNr0nP/zF33+HuO6v7+4AFd98OLFT3RWSdaLPbvweYr76fB+5qH46I5DJu8jvwbTM7bGZ7q8e2uvspgOp2S4oARSSNcef5d7n7STPbAhw0s2PjNlD9s9gLME2Z51JPPZffRDgGkFR4yrGWy4UlrrF6fnc/Wd0uAo8CHwFOm9kMQHW7uMpr59x9p7vvnGJjnKhFpLXa5DezS8zssrPfA58AjgAHgNnqabPA/lRBikh84+z2bwUetZVpmouAf3T3fzazZ4CHzexe4CXg7nRhikhstcnv7j8Dhq595O6vAOVde2sNljKupZoM5stzzp6Hv6XW5/ebVviJFErJL1IoJb9IoYo5nn/X82+v+rOJxLXpv715/djPDWv2tq6YfHPNr51scRougCsn32j1+kFN35e/+c9D0doOz8FQ5wvbfjda2ymp5xcplJJfpFBKfpFCFVPzL/m5/3OTFs6Fp117v+yr/4+dCGKJvSZgucH2JoK6eqnluQeWRvzeofAzGdpWw/cl7iXS+nNsRkzq+UUKpeQXKZSSX6RQxdT8g5rUolHaG6g/h+vJtLGEv+uo2rrJ+MA4Rm1veHwhbtttxhv6dP6FlNTzixRKyS9SKCW/SKGKqfn7MlfbdT2Zc7wjXCcweKxA7PGFUN32B8ccco8B9UWZv7WIKPlFSlXMbn+np9LKuFsZLhdOvXS5ibbLhWNKXXasB3oHRAql5BcplJJfpFDF1Pwxp/rqTusUji+knN6rWy6ccxpreJlsd31L11Oq64F6fpFCKflFCqXkFylUOTV/i/9z4eGnTccPYs7zD5/2a3QsKevucD1DOL6Qcn1D+D6EuhzrWC/U84sUSskvUiglv0ihxq75zWwSOAT83N3vNLPNwEPANuAEcI+7v5oiyBiarCsPL1PVdh14m/pz6DTjDbfVZn1D0/UMTX/eRNPjJVIe0xBe3m29HhLcJOr7gKMD9/cBC+6+HVio7ovIOjFW8pvZtcAfAV8eeHgPMF99Pw/cFTc0EUlp3J7/S8Dn4bx9r63ufgqgut1yoRea2V4zO2Rmh97hrVbBikg8tTW/md0JLLr7YTO7pWkD7j4HzAFMX3+Nv/S3H24c5FqEFd/iy+9kaRfAgsY3TeVrO3Tphu7+4V7eYduXXnR+23XrAmK64fCvR/686SW/m3jypvGfO86A3y7gk2Z2BzANXG5mXwNOm9mMu58ysxlgcS3Bikg3anf73f1+d7/W3bcBnwK+4+6fAQ4As9XTZoH9yaIUkejazFE8ANxuZseB26v7IrJONFrb7+5PAU9V378C3NaoNQePdFy91dRN4U9jtTtOLB40nrLtuli6PGV5X06XDnnPo1inL+9Lf94REclKyS9SKCW/SKHyH8+/1inOoExqWkfHrLuHa/zR205Z44VzxmEsOdsO5axtw1i6HetYH33q+ohSRKJT8osUSskvUqjsNf+4tffQPH7L5dAxj2tvPt6w5qaHjhMI1f1eKcc66trOOd4QtpXzGoVDx/dnbDu8bkMT6vlFCqXkFymUkl+kUB3U/Bd+PKxtY6+HH1V3t62r6zSpP8P6sc14QdO262Nper2CdNdHzDneULuege7WVrQZX1DPL1IoJb9IoXpzua62u7f12z+3e1R3CG7KtkND02eRp4ma7IIO7Vq3jKVNuTO0rYyXSAtP+dWny7NFLWeibUlE1hUlv0ihlPwihcpa8zt5T2m1ahyZYxis09ouFW4q3P6o05/FnqIatb3Y4wtN2q6NpWXNHnesI+FlzpNtWUR6TckvUiglv0ih8s7zO5Cr3s5cW4+r69M253wfwt91sLZO/T7U1d2DtXbsWOouBz94Cfichx6H1POLFErJL1IoJb9IobLW/PbrCaaObVrlh2nbXp5a/Wepy+DXNzQ4eCByLP871eYcYu3a9g0tLovd9n1o03aoYSwTU0vx2g7UHX7ehHp+kUIp+UUKpeQXKVRtzW9m08D3gI3V8x9x978ys83AQ8A24ARwj7u/uuZIEh9Tf972g7qp5ixNcdsOhTVc6liaaBtLk8GUyKdqb/X6tp9JzM9w6PR28TY9Ts//FnCru98I7AB2m9nNwD5gwd23AwvVfRFZJ2qT31f8qro7VX05sAeYrx6fB+5KEqGIJDFWzW9mk2b2HLAIHHT3p4Gt7n4KoLrdsspr95rZITM7tPTmG7HiFpGWxprnd/clYIeZXQk8amYfGrcBd58D5gCm33ed96KmzRzDYDk7VAYnjmWolM65lLzRWEfkwDocb2hy/MSo8yvEiGWURqP97v5L4ClgN3DazGYAqtvF6NGJSDK1yW9mV1c9Pma2Cfg4cAw4AMxWT5sF9qcKUkTiG2e3fwaYN7NJVv5ZPOzuj5nZ94GHzexe4CXg7oRxikhktcnv7s8DN13g8VeA25o0ZmSYU6/krq3Hlev3PytsLmf7Q3PSg59J8mslBE2PKsOjjzfU/HyguS7PM6EVfiKFUvKLFErJL1Ko/NfqS1Xr1azXz1rrpp7DHqXTif1Q5PX6LaS+HuP5jdVcK6En40/q+UUKpeQXKVT2U3fH2v3u61QeXOB3TBlbXYmRc3+3y8+kx38PfTltfEg9v0ihlPwihVLyixSqv1N9NWVS47GDmKd1avryiPVn47GOrOMN4f2EtW7d9Fmn06v5mm5DPb9IoZT8IoVS8osUqj81f+J52iZ1d/Q1BBHHG5qOH7QZb6gtm2u2nXasY3RwlnB9Q30sKccb4v1e6vlFCqXkFymUkl+kUFlr/ov+z3nPj8+k2XjNtYuXNqSrw7zmX2jKtocETWVtO7C0scO2N3TXry1vOP9+T5f2q+cXKZWSX6RQSn6RQmWf5093PH/dZY8iFl7h3PtyzdMTrvWuXZNQyjH1PT6eP/fp2selnl+kUEp+kUIp+UUK1Z+1/aHIx/NHXeOe81wCoYZr/WOucfeatRTh79nlWEenVyLvaY0fUs8vUiglv0ihapPfzK4zs++a2VEze8HM7qse32xmB83seHV7VfpwRSSWcWr+M8Dn3P1ZM7sMOGxmB4E/ARbc/QEz2wfsA/68bmOr1YHJz8PfpPYNatu2tWurcwkMPaFh41HPJdBwYynXVvTo3IVDv2XO8ya2UNvzu/spd3+2+v514ChwDbAHmK+eNg/cFS8sEUmtUc1vZtuAm4Cnga3ufgpW/kEAW2IHJyLpjJ38ZnYp8E3gs+7+WoPX7TWzQ2Z26J2331hLjCKSwFjz/GY2xUrif93dv1U9fNrMZtz9lJnNAIsXeq27zwFzAJddca2zXBVEE3Hr6jqD26+vqyMHM2pzkccXhjbf4bkLu1xb8e49d2G8bY8z2m/AV4Cj7v7FgR8dAGar72eB/fHCEpHUxun5dwF/DPzIzJ6rHvsC8ADwsJndC7wE3J0mRBFJoTb53f1fWH2C4ba44YhILvnX9p+1nHsB9Ln/X7mPrx453pDw/PIXbnBAy2sC1Lc94mexr8XYpO2hxjpsO5T6Mxmg5b0ihVLyixSqv4f0vlvaDfTqlE6pYwm3byN+lrrtUMJYOr00XAPq+UUKpeQXKZSSX6RQ6/bU3aG6JZk5a+0u67hQUWMMA8LfO+tnMmqsI/xRh5+Pen6RQin5RQql5BcpVNaa3157k6knnsnZ5G9cdP0HVv9h3SmpW/LpqfGfHDmW5ekWH3HLWJY2TnbYdsR+rWEsXf2NAxxp8Fz1/CKFUvKLFErJL1Ko7g7pzW3w0Nmwhkt+WO2I7aeOZdTlw+v+9beMpd0a93xtp46lr9TzixRKyS9SKCW/SKHKqfkH9amGSxxLeImt8y6zPWo8IIYGYx1ZTyEWynjqrD5Rzy9SKCW/SKGU/CKFKqfm77LO79EYQ+PLbLdpKxhT8MGupsuxjlB/Pp6s1POLFErJL1IoJb9Iocqp+VNeHmyi5njv1PPpg8J/530ab8j5PoRt9+h96Av1/CKFUvKLFKo2+c3sQTNbNLMjA49tNrODZna8ur0qbZgiEts4Pf9Xgd3BY/uABXffDixU9/vNl+N9hZZ95Jd5uq/hWIIv93xfQ+95h22H70POr3WiNvnd/XvA/wQP7wHmq+/ngbsixyUiia215t/q7qcAqtst8UISkRyST/WZ2V5gL8A0F6dubnVtpnqGTrXVcN8u5jTT0KGwo7fdNNSRmp72K+XsWs2ptnJO7Y1cOtxja+35T5vZDEB1u7jaE919zt13uvvOKTausTkRiW2tyX8AmK2+nwX2xwlHRHIZZ6rvG8D3gQ+a2ctmdi/wAHC7mR0Hbq/ui8g6Ulvzu/unV/nRbZFjSavJ8t5wuW7b+rFN26GGsbSpfYdq2YbjBzHr7qFY6jadcbxhvS4d1go/kUIp+UUKpeQXKVQxh/SeefnnnbU9sWlTZ23bpunz79v4/+9bz15PB1O7GefDu/y81wv1/CKFUvKLFErJL1KoYmr+TqU8hVhDHnWx/2hDFf46nQ9/t1LPL1IoJb9IoZT8IoVSzZ9DxjqbcB4/53hD7GMiJCn1/CKFUvKLFErJL1Io1fwZeMS622qP9w+vi52w7h463j88h1/Gmn+dnkevS+r5RQql5BcplJJfpFCq+XNoM88fzNs3HT+w5YhrDCaCvqKupo/ZdttYZIh6fpFCKflFCqXkFymUav4MmtTpQ/P4bY8LiHmNwqY1fMy2QynHEwqhnl+kUEp+kUIp+UUKpZo/h1F1e8t5/PqmV2/bwrnyoRe3jKXJ64euxad5+9TU84sUSskvUqhWu/1mthv4O2AS+LK7PxAlqpKkPsVXuPs8sHs9qiSIwUaVMDrlV+fW3POb2STw98AfAjcAnzazG2IFJiJptdnt/wjwU3f/mbu/DfwTsCdOWCKSWpvkvwb474H7L1ePicg60Kbmv9D6y6HCzcz2Anuru2896Y8cadFmSu8FftF1EKtYe2xvxg0kMDquN5K2Xefd+XnWe/+4T2yT/C8D1w3cvxY4GT7J3eeAOQAzO+TuO1u0mYxia66vcYFiG0eb3f5ngO1m9ltmtgH4FHAgTlgiktqae353P2NmfwY8wcpU34Pu/kK0yEQkqVbz/O7+OPB4g5fMtWkvMcXWXF/jAsVWy1yLK0SKpOW9IoXKkvxmttvMXjSzn5rZvhxt1sTzoJktmtmRgcc2m9lBMzte3V7VQVzXmdl3zeyomb1gZvf1KLZpM/t3M/thFdtf9yW2Ko5JM/uBmT3Wp7iqWE6Y2Y/M7DkzO9SX+JInf0+XAX8V2B08tg9YcPftwEJ1P7czwOfc/beBm4E/rd6rPsT2FnCru98I7AB2m9nNPYkN4D7g6MD9vsR11sfcfcfAFF/38bl70i/g94AnBu7fD9yfut0x4toGHBm4/yIwU30/A7zYgxj3A7f3LTbgYuBZ4KN9iI2VNSYLwK3AY337PIETwHuDxzqPL8du/3pZBrzV3U8BVLdbugzGzLYBNwFP05PYql3r54BF4KC79yW2LwGfBwYPU+xDXGc58G0zO1yteIUexJfjTD5jLQOWc8zsUuCbwGfd/TXryRVo3X0J2GFmVwKPmtmHuo7JzO4EFt39sJnd0nU8q9jl7ifNbAtw0MyOdR0Q5BnwG2sZcA+cNrMZgOp2sYsgzGyKlcT/urt/q0+xneXuvwSeYmXcpOvYdgGfNLMTrBxZequZfa0Hcf2Gu5+sbheBR1k5Irbz+HIk/3pZBnwAmK2+n2Wl3s7KVrr4rwBH3f2LPYvt6qrHx8w2AR8HjnUdm7vf7+7Xuvs2Vv62vuPun+k6rrPM7BIzu+zs98AngCO9iC/TgMcdwE+A/wD+oquBl4F4vgGcAt5hZc/kXuA9rAwaHa9uN3cQ1++zUhI9DzxXfd3Rk9h+B/hBFdsR4C+rxzuPbSDGWzg34NeLuIAPAD+svl44+/ffh/i0wk+kUFrhJ1IoJb9IoZT8IoVS8osUSskvUiglv0ihlPwihVLyixTq/wHYVv5Z8HokWAAAAABJRU5ErkJggg==\n", + "image/png": "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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "ASTRICam: Padding\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# Plot mapped images with and without padding\n", - "default_mapper = ImageMapper()\n", - "padding_mapper = ImageMapper(padding={cam: 10 for cam in camera_types})\n", - "for cam in camera_types:\n", - " print('{}: Default'.format(cam))\n", - " image = default_mapper.map_image(test_pixel_values[cam], cam)\n", - " plot_image(image)\n", - " print('{}: Padding'.format(cam))\n", - " image = padding_mapper.map_image(test_pixel_values[cam], cam)\n", - " plot_image(image)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "LSTCam: oversampling\n", - "93.5 µs ± 579 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "VERITAS - ShiftingMapper:\n", + "Initialization time: \n", + "4.05 ms ± 18.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "Mapping time: \n", + "21.4 µs ± 159 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAuPklEQVR4nO3de3RU5b3/8c8Qw5BAiIaYm4SYI1C0IFagXEQJooFwROUm4KVBUHEJWoouK15K9HBAPUu8IXi8gCBQAauABcQoBKTcIpaKaBWWXEIlBFAIBAgJeX5/+MucjpMAgSdPZsb3a61Zy9nz5Lu/s7Mxn+yZzNdjjDECAABwpF5dNwAAAH5ZCB8AAMApwgcAAHCK8AEAAJwifAAAAKcIHwAAwCnCBwAAcIrwAQAAnCJ8AAAApwgfCBt9+/ZVVFSUDh48WO2a2267TZGRkdq7d68kyePxVHsbOnSo7+tycnL8HouMjFSzZs109913q7CwMGA/F198sW644QZJ0tChQ0+5n6r2t3//fnm9Xnk8Hn322WdVPhdjjN555x1dffXVSkhIUIMGDdS0aVP17NlTb7zxRs0P4GmsX79effv2VbNmzeT1epWYmKjOnTvrwQcfrPa5n0peXp48Ho/y8vL8tr/88stq3ry56tevL4/Ho4MHD2rChAlasGDBGdewrfL7X69ePX333XcBj5eUlKhx48YB30cAVSN8IGwMHz5cx48f15w5c6p8/NChQ3r//fd1ww03KDEx0bd9wIABWrt2bcDtiSeeCKjx4Ycfau3atVq6dKkGDx6sadOmqUePHiorK6u2ryeeeMKv7iuvvCJJmjBhQrX7e/vtt3XixAlJ0ptvvlll3bFjx2rIkCG69NJL9cYbb2jp0qUaP368EhMTtXDhwtMfsBpYvHixunTpouLiYj377LP66KOP9OKLL+qqq67S3Llzz6rmlVdeqbVr1+rKK6/0bdu0aZMeeOABde/eXcuXL9fatWsVExNTbfioqkZtatSokaZPnx6wff78+SorK1NkZKSTPoCQZ4AwUV5eblJSUky7du2qfHzq1KlGkvnggw982ySZkSNHnrb2uHHjjCSzb98+v+133nmnkWSWL1/utz0tLc3853/+Z5W1VqxYYSSZ+fPnV7u/1q1bm4SEBNOhQwcTGxtrjh496vf40aNHjdfrNb/73e+q/PqTJ0+e9jnVxDXXXGMuueQSU1ZWdtp9neq5n86sWbOMJLN+/Xq/7Q0bNjTZ2dlnVdOGyu//XXfdZVJTUwOec9euXc2QIUPqvE+bSkpK6roFhDGufCBsREREKDs7Wxs3btTmzZsDHp8+fbqSk5OVlZVlbZ/t27eXJN/LODasX79eX375pe644w7dfffdOnTokP7yl7/4rSkpKVFpaamSk5OrrFGvnt1/2gcOHFB8fLzOO++8M97Xhx9+qCuvvFJRUVFq1aqVpk2b5vf4z18yycjI0O233y5J6tixo+8lDI/Ho5KSEs2YMcP3ElVGRkaVNaSfXuZq1KiRtm3bpt69e6tRo0ZKTU3Vgw8+qNLSUr8edu/erQEDBigmJkbnn3++brvtNuXn58vj8eitt94KeE7Dhg1TQUGBcnNzfdu+/fZbrV69WsOGDQtYf/z4cT344IO64oorFBsbq7i4OHXu3LnKK1Mej0ejRo3S//7v/6ply5byer267LLL9M477/ite+utt+TxeJSbm6s777xTcXFxatiwofr06VPlS0Iff/yxevToocaNGys6OlpXXXWVPvnkE781lS8rff755xowYIAuuOACXXLJJQG1AFsIHwgrw4YNk8fjCfhB99VXX2nDhg3Kzs5WRESE32PGGJWXlwfczBkMfN6+fbskqWXLltaeQ+XLLMOGDdPgwYMVHR0d8NJLfHy8mjdvrilTpmjSpEn65z//eUb9nq3OnTtr/fr1euCBB7R+/fpTvswkSf/4xz/04IMP6g9/+IMWLlyoyy+/XMOHD9eqVauq/ZopU6bo8ccfl/RTUKx8KWrt2rWKiopS7969fS9RTZky5ZT7Lysr04033qgePXpo4cKFGjZsmJ5//nk988wzvjUlJSXq3r27VqxYoWeeeUbz5s1TYmKiBg0aVG3dFi1a6Oqrr/Y7v6ZNm6aLL75YPXr0CFhfWlqqH374QQ899JAWLFigP//5z+ratav69eunmTNnBqxftGiRXnrpJT311FN69913lZaWpiFDhujdd98NWDt8+HDVq1dPc+bM0QsvvKANGzYoIyPD7z1Ps2bNUmZmpho3bqwZM2Zo3rx5iouLU8+ePQMCiCT169dPzZs31/z58/Xqq69WexyAc1bHV14A67p162bi4+PNiRMnfNsefPBBI8l8++23fmslVXt7++23fesqL7sXFhaasrIy8+OPP5p58+aZhg0bmiFDhgT0cLYvu5SUlJjGjRubTp06+bZlZ2cbj8djtm3b5rd2w4YNplmzZr5+Y2JizA033GBmzpxpKioqzuxgnaH9+/ebrl27+vYVGRlpunTpYiZOnGgOHz7stzYtLc00aNDA7Ny507ft2LFjJi4uzowYMcK3rfI4rFixwrdt+vTpRpLJz8/3q1ndyxlV1cjOzjaSzLx58/zW9u7d2/zqV7/y3X/llVeMJLN06VK/dSNGjDCSzPTp033b/v1lt+nTpxuv12sOHDhgysvLTXJyssnJyTlln5XKy8tNWVmZGT58uPnNb37j95gkExUVZQoLC/3Wt2rVyjRv3jzgGPXt29fv6//2t78ZSWb8+PHGmJ/Opbi4ONOnTx+/dSdPnjRt27Y1v/3tbwOe35/+9Kdqewds4soHws7w4cO1f/9+LVq0SJJUXl6uWbNm6eqrr1aLFi0C1t9yyy3Kz88PuPXu3TtgbVJSkiIjI3XBBRfolltuUbt27TRjxgxrvc+bN0/FxcV+l/CHDRsmY0zAGx07dOigbdu26cMPP9Sjjz6qzp0765NPPtHvfvc73Xjjjae8ElJRUeF3lefkyZOn7KtJkyb69NNPlZ+fr6efflo33XSTvv32W40dO1Zt2rTR/v37/dZfccUVatasme9+gwYN1LJlS+3cubMmh+OseTwe9enTx2/b5Zdf7rf/lStXKiYmRr169fJbN2TIkFPWHjhwoOrXr6/Zs2dryZIlKiwsPOVfuMyfP19XXXWVGjVqpPPOO0+RkZF688039fXXXwes7dGjh9+boSMiIjRo0CBt27ZNu3fv9lt72223+d3v0qWL0tLStGLFCknSmjVr9MMPPyg7O9vve11RUaFevXopPz9fJSUlfjX69+9/yucO2EL4QNgZMGCAYmNjfT+slyxZor1792r48OFVrr/wwgvVvn37gFtcXFzA2o8//lj5+flatmyZ+vfvr1WrVun++++31vubb76pBg0aqFevXjp48KAOHjyoyy+/XBdffLHeeuutgJAQGRmpnj176r//+7+1bNkyFRQUKCMjQ3/961+1dOnSavfz1FNPKTIy0nc709f327dvrz/+8Y+aP3++vv/+e/3hD3/Qjh079Oyzz/qta9KkScDXer1eHTt27Iz2c66io6PVoEGDgP0fP37cd//AgQN+P+grVbXt3zVs2FCDBg3StGnT9Oabb+q6665TWlpalWvfe+893XLLLbrooos0a9YsrV27Vvn5+Ro2bJhfL5WSkpKq3XbgwIEzWlu5rvJ9SAMGDPD7XkdGRuqZZ56RMUY//PCD39dX9x4iwLbAd48BIS4qKkpDhgzR66+/rj179mjatGmKiYnRwIEDz7l227ZtFR8fL0m6/vrr1bNnT7322msaPny4OnTocE61K9+4KMnvqsG/W7ZsWZVXZCo1adJEo0ePVl5enr788stq195zzz1+n8Xh9Xpr3G9kZKTGjRun559/Xl9++WWNv76uNWnSRBs2bAjYXtXntvzcsGHD9MYbb+iLL77Q7Nmzq103a9Yspaena+7cufJ4PL7tP3/j66n2Xbnt54GuurXNmzeXJN95+vLLL6tTp05V7u/nQevfewRqE+EDYWn48OF69dVX9T//8z9asmSJhg4dqujoaKv78Hg8euWVV3TZZZfp8ccf17Jly86pXuWbSl9//XXfD5BKx44d00033aRp06apd+/eKisrU3FxcZVXGCov56ekpFS7r5SUlFM+/nN79uyp8rfiM9mXDbVx1aRbt26aN2+eli5d6vcXUD//65KqdO7cWcOGDdOhQ4fUt2/fatd5PB7fh6VVKiwsrPZzWD755BPt3bvXFwpOnjypuXPn6pJLLlHTpk391s6ePdvvZZI1a9Zo586duuuuuyRJV111lc4//3x99dVXGjVq1GmfE+AS4QNhqX379rr88sv1wgsvyBhT7Usu0k+Xp9etWxewvXHjxrrssstOuZ8WLVronnvu0ZQpU7R69Wp17dr1rPotLy/XzJkzdemll/p+ePxcnz59tGjRIu3bt08ej0cXX3yxBg4cqOuuu06pqak6cuSI8vLy9OKLL+rSSy9Vv379zqqXqvTs2VNNmzZVnz591KpVK1VUVGjTpk167rnn1KhRI/3+97+3tq+qtGnTRnl5efrggw+UnJysmJgY/epXvzqnmtnZ2Xr++ed1++23a/z48WrevLmWLl3qC5Gn+3Pl6j787d/dcMMNeu+993TfffdpwIABKigo0H/9138pOTlZW7duDVgfHx+va6+9Vk888YQaNmyoKVOm6J///GeVgeizzz7TXXfdpYEDB6qgoECPPfaYLrroIt13332SfvpAtJdfflnZ2dn64YcfNGDAACUkJGjfvn36xz/+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rquvvlpZWVnatYtBTLXh17/+tfbs2eO7bd68ua5bChslJSVq27atJk+eXOXjzz77rCZNmqTJkycrPz9fSUlJuv7663X48GHHnYaH0x1vSerVq5ff+b5kCcMrz8bKlSs1cuRIrVu3Trm5uSovL1dmZqZKSkp8azi/7TmT4y2F4Pltgshvf/tbc++99/pta9WqlXnkkUfqqKPwNW7cONO2bdu6buMXQZJ5//33ffcrKipMUlKSefrpp33bjh8/bmJjY82rr75aBx2Gl58fb2OMyc7ONjfddFOd9BPuioqKjCSzcuVKYwznd237+fE2JjTP76C58nHixAlt3LhRmZmZftszMzO1Zs2aOuoqvG3dulUpKSlKT0/X4MGD9d1339V1S78I27dvV2Fhod+57vV61a1bN871WpSXl6eEhAS1bNlSd999t4qKiuq6pbBw6NAhSVJcXJwkzu/a9vPjXSnUzu+gCR/79+/XyZMnAybfJiYmBkzIxbnr2LGjZs6cqWXLlun1119XYWGhunTpogMHDtR1a2Gv8nzmXHcnKytLs2fP1vLly/Xcc88pPz9f1157rUpLS+u6tZBmjNGYMWPUtWtXtW7dWhLnd22q6nhLoXl+18psl3Ph8Xj87htjArbh3GVlZfn+u02bNurcubMuueQSzZgxQ2PGjKnDzn45ONfdGTRokO+/W7durfbt2ystLU2LFy9Wv3796rCz0DZq1Ch98cUXWr16dcBjnN/2VXe8Q/H8DporH/Hx8YqIiAhIxkVFRQEJGvY1bNhQbdq00datW+u6lbBX+VdFnOt1Jzk5WWlpaZzv5+D+++/XokWLtGLFCjVt2tS3nfO7dlR3vKsSCud30ISP+vXrq127dsrNzfXbnpubqy5dutRRV78cpaWl+vrrr5WcnFzXrYS99PR0JSUl+Z3rJ06c0MqVKznXHTlw4IAKCgo438+CMUajRo3Se++9p+XLlys9Pd3vcc5vu053vKsSCud3UL3sMmbMGN1xxx1q3769OnfurNdee027du3SvffeW9ethZ2HHnpIffr0UbNmzVRUVKTx48eruLhY2dnZdd1aWDhy5Ii2bdvmu799+3Zt2rRJcXFxatasmUaPHq0JEyaoRYsWatGihSZMmKDo6Gjdeuutddh16DrV8Y6Li1NOTo769++v5ORk7dixQ48++qji4+PVt2/fOuw6NI0cOVJz5szRwoULFRMT47vCERsbq6ioKHk8Hs5vi053vI8cORKa53cd/qVNlV555RWTlpZm6tevb6688kq/PyeCPYMGDTLJyckmMjLSpKSkmH79+pktW7bUdVthY8WKFUZSwC07O9sY89OfI44bN84kJSUZr9drrrnmGrN58+a6bTqEnep4Hz161GRmZpoLL7zQREZGmmbNmpns7Gyza9euum47JFV1nCWZ6dOn+9ZwfttzuuMdque3xxhjXIYdAADwyxY07/kAAAC/DIQPAADgFOEDAAA4RfgAAABOET4AAIBThA8AAOAU4QMAADhF+AAAAE4RPgAAgFOEDwAA4BThAwAAOPX/ABlSySxd4JYwAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "LSTCam: rebinning\n", - "107 µs ± 368 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "MAGICCam - ShiftingMapper:\n", + "Initialization time: \n", + "12.8 ms ± 177 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "Mapping time: \n", + "22.1 µs ± 57.4 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA5O0lEQVR4nO3de3TU1b3//9eAyRAgCRLIDWJAuShXreESvirBSjRWBKkc0JaCIm1VtJ7UrxWoGqyKx556+2HxUkTQIuoREAty6RKCFqiBgiJeihIgKuFOEiJMINnfP/xljmMSYA+Zncnk+Vhr1sp8Zu/Ze8/nk+Q1n5l5j8cYYwQAAOBIs4aeAAAAaFoIHwAAwCnCBwAAcIrwAQAAnCJ8AAAApwgfAADAKcIHAABwivABAACcInwAAACnCB8Iay+99JI8Ho88Ho9Wr15d43ZjjLp06SKPx6OsrKxa72P//v3yer3yeDzasGFDnWP5fD4988wzGjx4sBISEhQVFaWEhARlZWXpueeeU1lZWUB7j8ejSZMm1bifPXv26N5771Xv3r3VunVrtWjRQl27dtVvfvMbbdu2rUb79957T//xH/+hDh06KDo6WvHx8Ro0aJBmzpyp8vLykz9AYer48eN67rnn1K9fP7Vt21YtW7ZUenq6hg8froULF/rbrV69Wh6PR//zP/9zyvscP368OnXqFLDt4MGDGjNmjBITE+XxeDRixAh98sknysvL044dO07rPkKhU6dOJz0m586de9LjGoh0hA80CrGxsZo1a1aN7fn5+fryyy8VGxtbZ9+XX35ZFRUVklTrfUjSvn37NGjQIOXm5qp79+56/vnn9e6772rWrFnq06eP7rnnHt12222nnOcHH3yg3r17a9asWbr++uu1YMECLVu2THfffbf+9a9/qX///gHtH3jgAV122WX6+uuv9Yc//EErV67U/Pnz9eMf/1h5eXn6/e9/f8oxw9HYsWN1xx13aMiQIXrllVf09ttv6/e//73OOussLV++PKj7vO+++wKCiyT94Q9/0MKFC/XEE09o3bp1euyxx/TJJ59o2rRptYaP2u4jVGJjY7VmzRp9+eWXNW578cUXFRcX52QeQFgyQBibPXu2kWRuueUWExMTY0pKSgJu//nPf24yMzNNz549zeDBg2u9j169epnExETTr18/Ex8fb7799tsabbKzs01UVJTJz8+v9T72799vXn755YBtksztt9/uv15SUmKSk5NNWlqaKSoqqvV+3njjDf/Pr7/+upFkJkyYYKqqqmq0LS0tNcuXL6/1fsLZ9u3bjSRz//3313p7ZWWl/+dVq1YZSQGPi40rrrjCXHDBBQHb3njjDSPJrFq1Kqj7rA/p6ekmJyfHdOzY0UyZMiXgti+++MJ4PB4zceLEBp9nfart9wqoC2c+0CjccMMNkqRXX33Vv62kpERvvvmmbr755jr7/fOf/9THH3+ssWPHauLEif4+31dQUKAVK1bol7/8pS677LJa7ychIUE///nPTzrHF154QcXFxXrsscfUsWPHWttcf/31/p8ffPBBnX322Xr66afl8XhqtI2NjVV2drb/+jPPPKPLLrtMiYmJatWqlXr37q3HHntMx48fD+iXlZWlXr16ad26dRo0aJBiYmLUqVMnzZ49W5K0ZMkS/ehHP1LLli3Vu3dvLVu27KTrsnXgwAFJUkpKSq23N2tW88/O8ePHNXXqVKWmpiouLk5XXHGFPv/884A233/JZMeOHfJ4PPr73/+uTz/91P8SxksvvaRRo0ZJkoYMGRKw/Yf3Ua365bOXX35ZF1xwgVq2bKm+ffvqb3/7W415vvXWW+rTp4+8Xq/OPfdcPfXUU8rLy6t1/zVr1ky/+MUvNGfOHFVVVfm3v/jii0pLS9MVV1xRo8+GDRs0ZswYderUyb/fbrjhBu3cuTOgXfXLkStXrtRNN92ktm3bqlWrVho2bJi2b98e0Lb6eHjvvfc0cOBAxcTEqEOHDrrvvvtUWVkZ0LaiokIPPfSQzj//fHm9XrVv31433XST9u3bF9CuU6dOuuaaa7RgwQJddNFFatGihaZNm1ZjPUCdGjr9ACdTfeajoKDAjB071vTv399/28yZM02rVq1MaWlpnWc+qp9dbt261ZSWlpqWLVuarKysgDYPP/ywkWR9lkE/OPORnZ1tmjdvbo4cOXLKvt98842RZEaPHn3a4/3nf/6nmTlzplm2bJl59913zRNPPGHatWtnbrrppoB2gwcPNgkJCaZ79+5m1qxZZvny5eaaa64xksy0adNM7969zauvvmqWLl1qBg4caLxer/n6669Pf+GncOTIEdOmTRuTnJxsnnvuOVNYWFhn2+ozH506dTI/+9nPzJIlS8yrr75qzjnnHNO1a1dz4sQJf9tx48aZ9PR0Y4wxx44dM+vWrTMXXXSROffcc826devMunXrzI4dO8wjjzxiJJlnnnnGv33v3r017qNa9fj9+/c3r7/+ulm6dKnJysoyZ511lvnyyy/97d555x3TrFkzk5WVZRYuXGjeeOMNM2DAANOpUyfzwz+l6enp5ic/+Yn/LMfSpUuNMcacOHHCdOjQwdx///21nqF54403zP33328WLlxo8vPzzfz5883gwYNN+/btzb59+/ztqn8v0tLSzM0332zeeecd8/zzz5vExESTlpZmDh065G9bfTykpqaap59+2ixfvtzceeedNY7fyspKc9VVV5lWrVqZadOmmZUrV5q//OUvpkOHDqZHjx4BZzbS09NNSkqKOffcc82LL75oVq1aZT744IM69zPwQ4QPhLXvh4/qf1Qff/yxMcaYfv36mfHjxxtjTK3ho7y83MTFxZmBAwf6t40bN854PB7zxRdf+Lf9+te/NpLMZ599FtC/qqrKHD9+3H/5/j9CY2qGj/PPP98kJyef1rrWr19vJJl77733tNr/UGVlpTl+/LiZO3euad68uTl48KD/tsGDBxtJZsOGDf5tBw4cMM2bNzcxMTEBQWPz5s1Gknn66aeDmkddlixZYtq1a2ckGUkmISHBjBo1yixevDigXfU+vfrqqwO2V78ktW7dOv+22oLD4MGDTc+ePQO2nexll7rCR1JSkiktLfVvKy4uNs2aNTPTp0/3b+vXr59JS0szPp/Pv62srMwkJCTUGT6q53j99df7HxePx2MKCwtP6+WhEydOmCNHjphWrVqZp556yr+9+vfiuuuuC2j/j3/8w0gyDz30UMBjJMm89dZbAW0nTpxomjVrZnbu3GmMMebVV181ksybb74Z0K6goMBIMn/+858D1te8eXPz+eef1zl34GR42QWNxuDBg3XeeefpxRdf1JYtW1RQUHDSl1xef/11lZaWBrS5+eabZYzxvwRxMm+99ZaioqL8l/j4+HpZR7A2bdqka6+9VgkJCWrevLmioqL0i1/8QpWVlfr3v/8d0DYlJUUXX3yx/3rbtm2VmJioCy+8UKmpqf7tF1xwgSTVOK3/Q5WVlTpx4oT/8v2XEWpz9dVXa9euXVq4cKHuvvtu9ezZU4sWLdK1115b6yeErr322oDrffr0Oa151ZchQ4YEvGk5KSlJiYmJ/vHLy8u1YcMGjRgxQtHR0f52rVu31rBhw0563zfffLMWL16sAwcOaNasWRoyZEidn7g5cuSIfve736lLly4666yzdNZZZ6l169YqLy/Xp59+WqP9z372s4DrgwYNUnp6ulatWhWwPTY2tsZjfOONN6qqqkpr1qyRJP3tb39TmzZtNGzYsIB9feGFFyo5ObnGp3L69Omjbt26nXTtQF0IH2g0PB6PbrrpJr3yyit69tln1a1bN1166aV1tp81a5ZatGihq666SocPH9bhw4fVp08fderUSS+99JL/9e5zzjlHUs1/dFlZWSooKFBBQYGuueaaU87vnHPO0b59+07r47HVYxYWFp6yrSTt2rVLl156qb7++ms99dRTeu+991RQUKBnnnlGknT06NGA9m3btq1xH9HR0TW2V/8jPXbs2EnHP++88wKC2IMPPnjKOcfExGjEiBH64x//qPz8fH3xxRfq0aOHnnnmGW3dujWgbUJCQsB1r9db67pC5YfjV8+hevxDhw7JGKOkpKQa7Wrb9n3XX3+9WrRooSeeeEJvv/22JkyYUGfbG2+8UTNmzNAtt9yi5cuX64MPPlBBQYHat29f62ORnJxc67bq992cbI7Vfavb7tmzR4cPH1Z0dHTAvo6KilJxcbH2798f0L+u9/QAp+Oshp4AYGP8+PG6//779eyzz+rhhx+us92///1vvf/++5L+9x/9Dy1fvlxXX321hg4dqilTpmjx4sUBb/Bs06aNMjIyJNX+z+mHrrzySq1YsUJvv/22xowZc9K2KSkp6t27t1asWKFvv/1WLVu2PGn7RYsWqby8XAsWLFB6erp/++bNm085r/rw9ttvy+fz+a9//+zJ6TrnnHP0y1/+UnfddZe2bt2qnj171ucUQ+rss8+Wx+PRnj17atxWXFx80r4tW7bUmDFjNH36dMXFxWnkyJG1tispKdHf/vY3PfDAA7r33nv9230+nw4ePFhrn9rGLi4uVpcuXQK2nWze1cd2u3btlJCQUOcbkH/4cfba3mQLnC7OfKBR6dChg/7v//2/GjZsmMaNG1dnu+p6Hi+88IJWrVoVcFm6dKmioqL04osvSpIyMjKUnZ2tF154Qe+9917Qc5swYYKSk5N1zz336Ouvv661zYIFC/w/33fffTp06JDuvPNOGWNqtD1y5IhWrFgh6X//0FefEZC+K7D2wgsvBD1fG71791ZGRob/crLwUVZWpiNHjtR6W/VLB8GEl9MVirMmrVq1UkZGhhYtWuSvGSN9t49q+1TMD916660aNmyY7r//frVo0aLWNh6PR8aYgH0sSX/5y19qfCql2l//+teA62vXrtXOnTtrFDcrKyvT4sWLA7bNmzdPzZo183/C65prrtGBAwdUWVkZsK+rL927dz/lOoHTxZkPNDqPPvroSW8/ceKE5s6dqwsuuEC33HJLrW2GDRumxYsXa9++fWrfvr1eeeUVXXnllbriiis0fvx4XXnllUpMTFRpaak++ugj/f3vfz9lUaj4+Hi99dZbuuaaa3TRRRdp0qRJyszMVHR0tLZt26ZXXnlFH374of+Z76hRo3TffffpD3/4gz777DNNmDBB5513nr799lv985//1HPPPafRo0crOztbQ4cOVXR0tG644Qbdc889OnbsmGbOnKlDhw4F9yCG0Oeff64rr7xSY8aM0eDBg5WSkqJDhw5pyZIlev7555WVlaVBgwaFbPxevXpJkp5//nnFxsaqRYsW6ty582mdvTqZBx98UD/5yU905ZVX6je/+Y0qKyv1xz/+Ua1bt67zzES1Cy+8UIsWLTppm7i4OF122WX64x//qHbt2qlTp07Kz8/XrFmz1KZNm1r7bNiwQbfccotGjRqloqIiTZ06VR06dKhREC8hIUG33nqrdu3apW7dumnp0qV64YUXdOutt/rPDI4ZM0Z//etfdfXVV+s3v/mN+vfvr6ioKH311VdatWqVhg8fruuuu+60Hy/gZDjzgYizZMkSFRcX61e/+lWdbX75y1/q+PHjevnllyVJ7du317p16/SnP/1Jn3zyiSZMmKAhQ4Zo7NixWrp0qe688059/PHHpxy7f//+2rJli26++Wa9/vrrGjFihK688kr913/9l84///waZ1YefPBB5efnKyUlRVOnTtUVV1yh0aNHa/ny5crNzfW/t+L888/Xm2++qUOHDmnkyJG64447dOGFF+rpp58+g0cqNLp06aLc3Fx99tlnys3N1RVXXKEbb7xRH3zwgR566CEtXbq01lof9aVz58568skn9eGHHyorK0v9+vXT22+/fcb3e9VVV+nNN9/UgQMHNHr0aOXm5uq6667T8OHD6wwHtubNm6chQ4bonnvu0ciRI7VhwwatXLmyzjc7z5o1SxUVFRozZozu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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "LSTCam: nearest_interpolation\n", - "100 µs ± 3.04 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "FACT - ShiftingMapper:\n", + "Initialization time: \n", + "23 ms ± 97.9 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "22.9 µs ± 46.5 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1oElEQVR4nO3dfXhU5Z3/8c+ZSTJJyIMGJCGCEDH4RFELVKFWQitYBOrD6pbFdX1uFenC8nNtlW0F1yWUtix08WGpgOgWca0K1Acke4nBFq1BZaW0P1YrAi1GBCEJec7M/fvDZX6OiXAfnHNPBt6v68p1mTNf7vuec2bGT87M+Y5njDECAABwJJTqBQAAgOML4QMAADhF+AAAAE4RPgAAgFOEDwAA4BThAwAAOEX4AAAAThE+AACAU4QPAADgFOEDkPTII4/I87wuf+64446E2p///OfyPE+DBw8+7Jjvvfeepk6dqkGDBiknJ0e5ubk6++yz9U//9E/6y1/+opdffvlz5/zsT7K0t7fr3//93zV8+HAVFRUpNzdX/fv312WXXaZnnnkmXndobb/61a+OOOb111+vAQMGJGz7+OOPNWnSJPXu3Vue5+nyyy/XH/7wB82aNUvvv/++1RhBGDBggDzPU0VFRZe3P/roo/F9/vLLLwe+HuB4lZHqBQDdybJly3TGGWckbCstLU34fenSpZKkrVu36ne/+53OP//8TuM8++yzmjRpknr16qWpU6fqvPPOk+d52rJli5YuXarnnntO1dXVevXVVxP+3RVXXKGBAwfqpz/9aZLv2SeuvfZaPf3005o+fbpmz56tSCSi9957T2vXrtWLL76oK664wveYP/zhDzVt2rSEbf/8z/+sZ555RkuXLtXAgQNVVFSkt99+W7Nnz1ZFRUWnoNHVGEHJz8/Xhg0b9Kc//UkDBw5MuG3p0qUqKChQfX29k7UAxy0DwCxbtsxIMjU1NYetq6mpMZLM+PHjjSRzyy23dKp57733TI8ePcx5551nDhw40On2WCxmnnrqqS7H79+/vxk/fvzR3YkjeO+994wk86Mf/ajL26PRaPy/169fbySZJ5988qjmuvjii82ZZ56ZsO3JJ580ksz69euPasxk6N+/vxk3bpzp27evufvuuxNue/fdd43neeaWW25J+TqTqampKdVLADrhbRfAhyVLlkiS5s6dq5EjR2rlypVqampKqJk/f74aGxv1wAMPqLCwsNMYnufpyiuvdLLeT9u3b58kqU+fPl3eHgp1fjlob2/XzJkzVVpaqoKCAl188cXatm1bQs2n3zJ5//335Xme/uu//kt//OMf429hPPLII7r66qslSaNHj07Y/tkxDvE8T1OnTtVjjz2mM888U7m5uTrnnHP07LPPdlrn6tWrNWTIEEUiEZ166qlauHChZs2a1eVbVqFQSH/3d3+n5cuXKxaLxbcvXbpU/fr108UXX9zp32zatEmTJk3SgAEDlJOTowEDBuhv/uZvtGPHjoS6Q2/fVVVV6YYbblBRUZF69OihiRMn6r333kuoraio0ODBg/XKK6/oggsuUE5Ojk4++WT98Ic/VDQaTahta2vTfffdpzPOOEORSEQnnXSSbrjhBn300UcJdQMGDNCECRP09NNP67zzzlN2drZmz57d6f4AqUb4AD4lGo2qo6Mj4eeQ5uZmPf744xo+fLgGDx6sG2+8UQ0NDXryyScTxli3bp2Ki4t1wQUXuF7+YZ155pk64YQTNHv2bC1evLjLz1581t13360dO3bo4Ycf1uLFi/XOO+9o4sSJnf7neEifPn306quv6rzzztOpp56qV199Va+++qpGjx6tOXPmSJLuv//++Pbx48cfdv7nnntOixYt0r333qunnnpKRUVFuuKKKxL+R7527VpdeeWV6tmzp5544gnNmzdPjz/+uJYvX/654954443avXu3XnzxRUmfHPfly5fr+uuv7zKEvf/++zr99NO1YMECvfjii/rxj3+sDz74QMOHD9fevXs71d90000KhUJasWKFFixYoNdff10VFRU6cOBAQl1tba0mTZqka665RqtXr9ZVV12l++67L+EtqFgspssuu0xz587V5MmT9dxzz2nu3LmqqqpSRUWFmpubE8Z888039Y//+I/6+7//e61du1Z/9Vd/ddh9DKREqk+9AN3Bobdduvppb283xhjz6KOPGknmoYceMsYY09DQYPLy8szXvva1hLGys7PNBRdccFTrCPJtF2OMee6550yvXr3i961nz57m6quvNmvWrEmoO/S2y6WXXpqw/T//8z+NJPPqq6/Gt1133XWmf//+CXWjRo0yZ599dsK2w73t0tUYkkxxcbGpr6+Pb6utrTWhUMhUVlbGtw0fPtz069fPtLa2xrc1NDSYnj17ms++xH16/44aNcpcddVV8f3ieZ7Zvn271dtDHR0d5uDBg6ZHjx5m4cKF8e2HHkdXXHFFQv1vf/tbI8ncd999CftIklm9enVC7S233GJCoZDZsWOHMcaYxx9/3Ejq9FbdobcAH3jggYT7Fw6HzbZt2z537UB3wJkP4FMeffRR1dTUJPxkZHzyuewlS5YoJydHkyZNkiTl5eXp6quv1iuvvKJ33nknJev97JmaT7+N0JVLL71UO3fu1DPPPKM77rhDZ599tlatWqVvfetbmjp1aqf6b33rWwm/DxkyRJI6vd0QlNGjRys/Pz/+e3FxsXr37h2fv7GxUZs2bdLll1+urKyseF1eXp4mTpx42LFvvPFGrVmzRvv27dOSJUs0evToz73i5uDBg/r+97+v0047TRkZGcrIyFBeXp4aGxv1xz/+sVP9Nddck/D7yJEj1b9/f61fvz5he35+fqd9PHnyZMViMW3YsEHSJx9ePuGEEzRx4sSEY33uueeqpKSk01U5Q4YM0aBBgw5734FUI3wAn3LmmWdq2LBhCT+S9O6772rDhg0aP368jDE6cOCADhw4oKuuukrS/78CRpJOOeUUbd++3cl6Bw4cqMzMzPjPvffee8R/k5OTo8svv1w/+clPVF1drXfffVdnnXWW7r//fm3dujWhtmfPngm/RyIRSep0qj8on53/0BoOzb9//34ZY1RcXNyprqttn3bVVVcpOztb//qv/6pf//rXuummmz63dvLkyVq0aJFuvvlmvfjii3r99ddVU1Ojk046qct9UVJS0uW2Q5+7OdwaD/3bQ7UffvihDhw4oKysrIRjnZmZqdra2k5v+3zeZ3qA7oRLbQELS5culTFGv/rVr7rsfbF8+XLdd999CofDuuSSS/Rv//Zveu211wL/3Mevf/1rtba2xn//7GXBNk455RR95zvf0fTp07V161adffbZyVxioE488UR5nqcPP/yw0221tbWH/be5ubmaNGmSKisrVVBQ8LkfAq6rq9Ozzz6re+65Rz/4wQ/i21tbW/Xxxx93+W+6mru2tlannXZawrbDrftQ8OrVq5d69uyptWvXdjnXp88MSUpqXxggKIQP4AgOfRhx4MCBevjhhzvd/uyzz+pnP/uZXnjhBU2YMEH/8A//oKVLl2rKlClav359pytejDFatWrVUfXU+KwvfelL1rUNDQ3yPE95eXmdbjv01sHRhBdbQZw16dGjh4YNG6ZVq1bppz/9afytl4MHD3Z5Vcxn3Xbbbfrwww81atQoZWdnd1njeZ6MMfH1H/Lwww9/7gdvf/nLXyZ80HPjxo3asWOHbr755oS6hoYGrVmzJuGtlxUrVigUCumiiy6SJE2YMEErV65UNBrtsqcMkI4IH8ARvPDCC9q9e7d+/OMfd9kZc/DgwVq0aJGWLFmiCRMmqKysTCtXrtS3v/1tnXvuufEmY5L0hz/8IX4WJRnhw49t27bpkksu0aRJkzRq1Cj16dNH+/fv13PPPafFixeroqJCI0eODGz+Qx1hFy9erPz8fGVnZ6usrKzLt1b8uPfeezV+/HhdcsklmjZtmqLRqH7yk58oLy/vc89MHHLuuedq1apVh60pKCjQRRddpJ/85Cfq1auXBgwYoOrqai1ZskQnnHBCl/9m06ZNuvnmm3X11Vdr165dmjlzpk4++WRNmTIloa5nz5667bbbtHPnTg0aNEjPP/+8fvGLX+i2227TKaecIkmaNGmSfvnLX+rSSy/VtGnT9JWvfEWZmZn685//rPXr1+uyyy5z/lgCvijCB3AES5YsUVZWlm644YYub+/Vq5euuOIK/epXv9KHH36o4uJiTZgwQVu2bNHPfvYzPfTQQ9q1a5dCoZDKysr0zW9+U9/73vcc3wvptNNO04wZM/TSSy9p9erV+uijj5SZmany8nLdd999mjFjRpeXmSZLWVmZFixYoIULF6qiokLRaFTLli3T9ddf/4XG/eY3v6mnnnpKP/rRj/Ttb39bJSUlmjJlinbv3q3HHnssKWtfsWKFpk2bpjvvvFMdHR366le/qqqqqs+9VHjJkiV67LHHNGnSJLW2tmr06NFauHChioqKEupKSkp0//3364477tCWLVtUVFSku+++O6E3Rzgc1po1a7Rw4UI99thjqqysVEZGhvr27atRo0b5OvsFdBeeMcakehEAkEzt7e0699xzdfLJJ2vdunXO5n3kkUd0ww03qKamJv5h5c9TUVGhvXv36ve//72j1QHdB2c+AKS9m266SWPGjFGfPn1UW1urhx56SH/84x+1cOHCVC8NQBcIHwDSXkNDg+644474W0lf/vKX9fzzz3fZKh1A6vG2CwAAcIomYwAAwCnCBwAAcIrwAQAAnOp2HziNxWLavXu38vPzaRMMAECaMMaooaFBpaWlR+wZ1O3Cx+7du9WvX79ULwMAAByFXbt2qW/fvoet6Xbh49CXJF2oS5WhzBSvBkgPH19v/50f7T0CXEiSxbLsa00AJ0pL5/8u+YMCx6gOtes3er7Tlx12pduFj0NvtWQoUxke4QOwEc7q+kvRuhKLHLmmu/BSHD54DQJ8+N/GHTYfmeADpwAAwCnCBwAAcIrwAQAAnCJ8AAAApwgfAADAqW53tQuQbur+boR1rZ8rMqJZwTTZyzyY/DHb85I/pl+e5Vdk+jkGu3440scC7Ett9bt3Y/IHBboBznwAAACnCB8AAMApwgcAAHCK8AEAAJwifAAAAKcIHwAAwCnCBwAAcIo+HziuHLjOvidHqoXbLRtXKLieINYCmj6Ib6r1JcXz77rHvs+I8fGn5Cn30D8EqcWZDwAA4BThAwAAOEX4AAAAThE+AACAU4QPAADgFOEDAAA4RfgAAABO0ecDaa91wlesa3P2Ra1rm3uG7QpT3YvCL9v12rcZCUy4zb42GgluHVbS6HGwc7Z9/xA/6B8CW5z5AAAAThE+AACAU4QPAADgFOEDAAA4RfgAAABOET4AAIBThA8AAOAUfT7gVGjoYKu65j65Aa/EQgB9G4yPMWNZqW0c0Zaf0uklSbGsFC/AxyHwc2yDmN+PaHYwTVzemzfCqu7UO18NZH6kD858AAAApwgfAADAKcIHAABwivABAACcInwAAACnCB8AAMApwgcAAHCKPh/4wmx7d/iR80GTdW1zaTA9QXL2Ra3qmnqFA5k/1GbfiyGIniCZjfa17T2SPr0kKdRmX2vdE8THrgq129dGg+hJ4qcdh4/7FW6xL+7ISX5PENt+IH7RPyR9cOYDAAA4RfgAAABOET4AAIBTXyh8VFZWyvM8TZ8+Pb7NGKNZs2aptLRUOTk5qqio0NatW7/oOgEAwDHiqMNHTU2NFi9erCFDhiRsnzdvnubPn69FixappqZGJSUlGjNmjBoaGr7wYgEAQPo7qvBx8OBBXXPNNfrFL36hE088Mb7dGKMFCxZo5syZuvLKKzV48GAtX75cTU1NWrFiRdIWDQAA0tdRhY/bb79d48eP18UXX5ywffv27aqtrdXYsWPj2yKRiEaNGqWNGzd2OVZra6vq6+sTfgAAwLHLd5+PlStX6s0331RNTU2n22prayVJxcXFCduLi4u1Y8eOLserrKzU7Nmz/S4DAfOGfcm61k8XgI7CIJoh2PM6kt+zwN8CghnWBDSutVTPL3WPNdhK8Vo7cgN6HtgO6+P+m2Da6CDFfJ352LVrl6ZNm6b/+I//UHZ29ufWeV7iI8sY02nbIXfddZfq6uriP7t27fKzJAAAkGZ8nfl44403tGfPHg0dOjS+LRqNasOGDVq0aJG2bdsm6ZMzIH369InX7Nmzp9PZkEMikYgikcjRrB0AAKQhX2c+vvGNb2jLli3avHlz/GfYsGG65pprtHnzZp166qkqKSlRVVVV/N+0tbWpurpaI0eOTPriAQBA+vF15iM/P1+DByd+j0ePHj3Us2fP+Pbp06drzpw5Ki8vV3l5uebMmaPc3FxNnjw5easGAABpK+lfLHfnnXequblZU6ZM0f79+3X++edr3bp1ys/PT/ZUAAAgDXnGmBR//D9RfX29CgsLVaHLlOFlpno5xy0/V7v4EcTVLh259h+HD+Jql8YSHxk+oKscogF8q60f7XkpnV6Sj2+1DYivb7Xlahf7IX1c7TJwBt9qm0odpl0va7Xq6upUUFBw2Fq+2wUAADiV9LddcGwI7z9oXRs9MbV/9mY0Ra1ro1k+8nbI7s+zHnvs528sDqZpQbjN/i/ZIM6SZDba17b3SPr0kqRQm11dNKCL60Lt9rVBrSHlLB9avnp3+DhJ86efjbCuHfh/OEuSSpz5AAAAThE+AACAU4QPAADgFOEDAAA4RfgAAABOET4AAIBThA8AAOAUfT7SXMbAskDGDap3h/FS3NrRsndHdxDYvkrxLjDpcwiOXak+Bt2qrzZSgTMfAADAKcIHAABwivABAACcInwAAACnCB8AAMApwgcAAHCK8AEAAJyiz0e6C/nIj8b+4vrwgUbr2mhRD+vazPpWq7r2goj1mH6E2mLWtdGI5b710TMhZ2/UurbppGCenqE2u7pYlv2Yfnp3ZNo/tNRu/9CyFmq3r/WzD/wIWx6DaDBPA4Wb7Q9YNMf+dSPUlvwGItGI/fyej/4hf/rXEVZ1A//hVftBYY0zHwAAwCnCBwAAcIrwAQAAnCJ8AAAApwgfAADAKcIHAABwivABAACcInwAAACnaDLWTWWUD7Qr9NE4zA8/jcMCkfxeRb6ZVEfzFO8DP43DAtMd1nCc89M4LJDHjJ8+igFMj2Ck+uUVAAAcZwgfAADAKcIHAABwivABAACcInwAAACnCB8AAMApwgcAAHCKPh/pzvNxYb2PniDh/U3WtdETc+3XYLnezPo26yHbC7Ls5/ch3BKzqotmB5Phcz+KWtc2nRRO+vxh+0OgqJ9D4OMhm9loX9seQGuaULt9ra99YDu/j2MQiyR/fkny7J4GkiST/IehQi32D5hYdvI7ffxp/gjr2oEzXk36/McqznwAAACnCB8AAMApwgcAAHCK8AEAAJwifAAAAKcIHwAAwCnCBwAAcIo+Hw5llA+0Lw75aIZgLYgx5a/XSABMaqdP+f2X/O2DSIOPxg2Wmnva/x1jgvqTx3IfZB4MZvpokX1tpM6uzs9xbTnJvtaPQJ5fQT1lkt/mQyYjgEHBmQ8AAOAW4QMAADhF+AAAAE4RPgAAgFOEDwAA4BThAwAAOEX4AAAATtHnw6UDlhf3+1F0gn1tQP0ownXN1rXRwhyrOuNjrZn17da17QWZ1rW2wi32fTOi2cHk/dyPoj7WkPzHQfbH9vuguVcw+yCjya4uqL4wkf32tSac/PmzP7Kvbe6d/PklybN8GARx/yUp1GZ/cKM5tou1n//dhRdY15427TX7gY9BnPkAAABOET4AAIBThA8AAOAU4QMAADhF+AAAAE4RPgAAgFOEDwAA4BR9Pr6gjN4n2RcbHxeMpxE/PTn81AYixfMH1WMirdaQ6vmPzadh6verFMwavGP1gB3fOPMBAACcInwAAACnCB8AAMApwgcAAHCK8AEAAJwifAAAAKcIHwAAwCn6fLgUQI8J89G+pI8pSSr20b/Eh3Bds1Vd9IScQObPrG+zrm0vyLKq89M3I9wSs66NZvv428DHGjJa7PomdGT7GNTHYztnr33fhuZe9uNm70t+P4iWIh89bMJJn96f0futS3N99M5o+n2RdW1sgN3z2w9vV7Z1bUeuj8eA5T7wosE0UHl34QXWtadNey2QNaQSZz4AAIBThA8AAOCUr/Dx4IMPasiQISooKFBBQYFGjBihF154IX67MUazZs1SaWmpcnJyVFFRoa1btyZ90QAAIH35Ch99+/bV3LlztWnTJm3atElf//rXddlll8UDxrx58zR//nwtWrRINTU1Kikp0ZgxY9TQ0BDI4gEAQPrxFT4mTpyoSy+9VIMGDdKgQYP0L//yL8rLy9Nrr70mY4wWLFigmTNn6sorr9TgwYO1fPlyNTU1acWKFUGtHwAApJmj/sxHNBrVypUr1djYqBEjRmj79u2qra3V2LFj4zWRSESjRo3Sxo0bP3ec1tZW1dfXJ/wAAIBjl+/wsWXLFuXl5SkSiejWW2/VM888o7POOku1tbWSpOLi4oT64uLi+G1dqaysVGFhYfynX79+fpcEAADSiO8+H6effro2b96sAwcO6KmnntJ1112n6urq+O3eZ673N8Z02vZpd911l2bMmBH/vb6+Pq0CiGmyv67dy/XRuyJq1w/C84K5YCn5HRP+VxpdX+Wnf0cgUj5/qhcgZX/sp29D8ucPqneH7b0Kff3jYBbgQxC9O/zo6GHfGyed+Gi1ckzyHT6ysrJ02mmnSZKGDRummpoaLVy4UN///vclSbW1terTp0+8fs+ePZ3OhnxaJBJRJBLxuwwAAJCmvvDfocYYtba2qqysTCUlJaqqqorf1tbWpurqao0cOfKLTgMAAI4Rvs583H333Ro3bpz69eunhoYGrVy5Ui+//LLWrl0rz/M0ffp0zZkzR+Xl5SovL9ecOXOUm5uryZMnB7V+AACQZnyFjw8//FDXXnutPvjgAxUWFmrIkCFau3atxowZI0m688471dzcrClTpmj//v06//zztW7dOuXn5weyeAAAkH48Y0y3+thLfX29CgsLVaHLlOFlpno5RxTOy7OuDeIDp0ExvXsGM7DlG33RgmC+WM6PtkK7L5YLSjQntZ/O7Ujx/JJkUrwEP19s50c6feD04MHUPhejH6f2eRjUF8v5+cDpwOnp8cVyHaZdL2u16urqVFBQcNja1L+6AACA4wrhAwAAOMXbLl+Qn7ddguAFdZlyyP5Uo+ldFMwaLEULc1M6f1uBj8dpQK0zotn2f0cE0b8k1fNLSnlflKaA3qKxFdRbNH7avTQ0WL5FE1CTi+i+AF4Pfdz/UHvqe+Ok8i0a3nYBAADdFuEDAAA4RfgAAABOET4AAIBThA8AAOAU4QMAADhF+AAAAE75+m6X40VQvTtMNJr0MT0f/TgU6gZZ00/TgACYcADz+xgyoyn5jwEp9a3Q/fTuCLcG0+OhIyf1PRasVRxI+pB+nlr1dcG0TPfCdsc21u7j8ernsPqoDaptehDSpb26H93g/0YAAOB4QvgAAABOET4AAIBThA8AAOAU4QMAADhF+AAAAE4RPgAAgFP0+ehC9OBB69pwfn6AKzmyWGOTdW0oP5j+Jd7eA9a15qQTkz5/uL7ZurbjxNykz5/R2GFfHFCfk+x97da1Lb2ykj5/Rot97w4/PUF8raHZbg1B9QPJ2We/D+wfsfZisYB2rI9hje0aglpqgf3zQPuT/zyIhe1rTSRmXfs/i79iXTvoO6/bLyKFOPMBAACcInwAAACnCB8AAMApwgcAAHCK8AEAAJwifAAAAKcIHwAAwCn6fHQhsN4dAfV4CEQoxbk0oH0VVI+JQKTTWv1I9f1K9fySPM++J0gwC0jt9EHxs1+DaosCO5z5AAAAThE+AACAU4QPAADgFOEDAAA4RfgAAABOET4AAIBThA8AAOAUfT4c8jIzrWtNe7tVXejEE45yNUcQiwUyrLevzqrO9DohkPkz9zdb17afmGNVF+qw7y1gQj5qM4L52yB7X5tVXXOvLPtBffRMMD7ulufjYRj57m67Ovsh1fjoyda1WX9ba19rWVffnG09ZkfUfsdm59g9BiSppdn+cRBrD1vX2gplRO3n97EPVGD3Gqt6+9dtZfp4wKa610uKceYDAAA4RfgAAABOET4AAIBThA8AAOAU4QMAADhF+AAAAE4RPgAAgFP0+fiiQsHkt8D6dwTB89HkIY3m92J21+H76VsRFBPAPjDJb9ngW86tf0np/H56d4QC6NsQjdk/uIJ6Gsba/TzAk78PfPXu8MGzPF7GV++Oo1zMcagbvGwCAIDjCeEDAAA4RfgAAABOET4AAIBThA8AAOAU4QMAADhF+AAAAE7R56Mrfnp3+Lm43thfA28am+ymz+thP78fYR9NHmI+roO35O2rs641vU5I+vySlFHfalXXURAJZH4v6uPxkpH8BgM5e9qta5t7ZyZ9fklq+sXJ1rW5tyS/J0gk3GFd2x5LfmOUnnmN1rX7DgbzWtCjsMW6trEuO/kL8NE6xAslv8+Il2v/GDDN9v9L9WL2z1kTwP1KNc58AAAApwgfAADAKcIHAABwivABAACcInwAAACnCB8AAMApwgcAAHCKPh9d8dO7w4eYZe8OP8JB9fnww8/+imQlfXoT0PGy5mP+Yf/2ZiBLeP3/DLOuHTR3q1VdyLPvLfDWT8+zrv3SjLeta/3YfrDIqq49mvx+HH7ZrsHPMfBT2xEN6O9O26eCjx4X/vjojdMQQG+ajGD6cfjpCZIuOPMBAACcInwAAACnCB8AAMApwgcAAHCK8AEAAJwifAAAAKcIHwAAwCn6fKS5aO0e69pwaXFAq0jtNeihBvv+KbH83KTPH65vTfqYfo342evWtfs7kr8PzrvjLevajlgwfTYG5u+1qvu/B4J5HoR89Jjw05PDVkFOi3XtxweT/xiQpJw8u+dCc312IPObIPqX+Hl5i/oo9lFqwsH0D0klznwAAACnCB8AAMApwgcAAHDKV/iorKzU8OHDlZ+fr969e+vyyy/Xtm3bEmqMMZo1a5ZKS0uVk5OjiooKbd1q910SAADg2OcrfFRXV+v222/Xa6+9pqqqKnV0dGjs2LFqbGyM18ybN0/z58/XokWLVFNTo5KSEo0ZM0YNDQ1JXzwAAEg/vq52Wbt2bcLvy5YtU+/evfXGG2/ooosukjFGCxYs0MyZM3XllVdKkpYvX67i4mKtWLFC3/3ud5O3cgAAkJa+0Gc+6urqJElFRZ98lfX27dtVW1ursWPHxmsikYhGjRqljRs3djlGa2ur6uvrE34AAMCx66j7fBhjNGPGDF144YUaPHiwJKm2tlaSVFyceB19cXGxduzY0eU4lZWVmj179tEuIxihYPpWeAGNm3JeAPcriDGllH/EOqxYahfgQ9hH3wo/Yl5q94EXQI+N7sDP/UqrfRDUy2YavRwP+o59H590cdQvxVOnTtXbb7+txx9/vNNt3mf+x2GM6bTtkLvuukt1dXXxn127dh3tkgAAQBo4qjMf3/ve97RmzRpt2LBBffv2jW8vKSmR9MkZkD59+sS379mzp9PZkEMikYgikcjRLAMAAKQhX2c+jDGaOnWqnn76ab300ksqKytLuL2srEwlJSWqqqqKb2tra1N1dbVGjhyZnBUDAIC05uvMx+23364VK1Zo9erVys/Pj3/Go7CwUDk5OfI8T9OnT9ecOXNUXl6u8vJyzZkzR7m5uZo8eXIgdwAAAKQXX+HjwQcflCRVVFQkbF+2bJmuv/56SdKdd96p5uZmTZkyRfv379f555+vdevWKT8/PykLBgAA6c1X+DDmyJ+Q9jxPs2bN0qxZs452TQAA4BjGd7sAAACnjrrPB/yLtXdY14Yyk39oYrV77Ofv0/XVSV9YNGpXl2F//2MFOfbz++kfYnGmT5JufOJ5+zF9eLupn3Vtq8m0rs0Nt9uNGbU/Bhkhy+MqKUP2tc1R+/vVGrNb74D8j63HfL+hyLq2IKvVulayq93Xkms9Ykc0bF1bkGO/1vpm+6sRozG7v2cj+fbztx60n9+0+3h+Z9n1m/HafPyNHlDvkHcePN+6tvy23wWziCTjzAcAAHCK8AEAAJwifAAAAKcIHwAAwCnCBwAAcIrwAQAAnCJ8AAAAp+jz0YXo/rpgBjZ215VLkrxjNBda3q9YoX1/g6DY9u8IeT6Oqw/txr5vQ0jJX4Of3h1B6fCxD8KeXV8WP/z17kg+P707/PB87Cvb3h1SMG0uTIePUYNYgJ8xA3gMSlL5ra8HMm4qHaP/hwMAAN0V4QMAADhF+AAAAE4RPgAAgFOEDwAA4BThAwAAOEX4AAAATtHnoyt++nEEJNbaYlUXimQHM/+evda1oeLeSZ8/9PFB69pYUV7S55ekpX8zwaru5pVrApl/eN571rU1B09N+vyZnn2fj1hAf8eckNlsXXugPSfp85+Ubf843NfaI+nz98mrt66tbcxP+vySVJTXZF27/2Dy+/PknGD3WihJzQcCeD3M8vH/g3YfTUH8jHsM4swHAABwivABAACcInwAAACnCB8AAMApwgcAAHCK8AEAAJwifAAAAKfo89FNeRmZdoUh++vKV7zz0lGu5vD+9sJJ1rWLX/mlVV1Y9vfrhsu/a137tytesK4Ne8a61lZdNPl9ECQp5GOtZ+bsTvr8W5r6Wde2RoN52QnJbh+0xlL/stcWDad0/o5oav/ujMV89MPwU+qjNhDHee8OPzjzAQAAnCJ8AAAApwgfAADAKcIHAABwivABAACcInwAAACnCB8AAMCp1F/wfhzxwj6u7Td214ubtrajXE3y/MdvVlrXtprkX4i/bNW/W9e+3Gzfj8JWu7F/Gtn2ovBrUHZtIOPaOid3h3Xt6w0DrWtDnn3fhJyw3XMhqD4fBZkt1rV7oz2s6vz0b+mV02hd+2FjvnWtHwW5dvvgQGNOIPNnFbRa17bVR+wKA+j3A858AAAAxwgfAADAKcIHAABwivABAACcInwAAACnCB8AAMApwgcAAHCKPh9pzsTsr0EPK/k9NoLSHVJxWPY9JtJJKMX3y0/vjmNx/k/WQO+IIHg+9mtmnl1fGD9j+tH/r98OZNx00R1e4wEAwHGE8AEAAJwifAAAAKcIHwAAwCnCBwAAcIrwAQAAnCJ8AAAAp+jz4ZCJRu2LveTnwoJQjnVtfazZurbF2N+vINJui7G/Dn9k9k7r2t+19LWqOzXrI+sx/fhDa6l1bUnGAevakOz2V21HofWYTbGIde1Zubuta//Q5GMfROqSWidJ/9NYbF3bFrN/OS3IarGqq2/L9jF/2Lq2Z26jde3+5lzr2vaY3TM8P9fu/kvSwWb7x1Ysyt/T6YIjBQAAnCJ8AAAApwgfAADAKcIHAABwivABAACcInwAAACnCB8AAMAp+nx0Uy/+5a2Uzu+nd0fY85I+f2MslvQxJSnsY6lB9O8Iy/5+lWbsT/r8fvjp3RGUkyMHUjq/n94dtv1T/Ogw9n8fhrzkzy/Z9+4ISke7ff8SP0Kh5O+v/n/9dtLHPFZx5gMAADhF+AAAAE4RPgAAgFOEDwAA4BThAwAAOEX4AAAAThE+AACAU/T56KYuKT3Hqu7F3f8dyPy9wrnWtftjzUmfv0fIPhe3mGB6gpSEW63qPopmBjJ/z3Cjde2+aA/r2rBnt7/KI7XWY77X1tu61o+ijIPWtR935CV9/nPy/2xdu6Xh5KTP3yti/xjY22r/GPCjpEeDde2exuQfg6IC+32wv8H+dctYtvkwJvl9jMCZDwAA4BjhAwAAOEX4AAAATvkOHxs2bNDEiRNVWloqz/O0atWqhNuNMZo1a5ZKS0uVk5OjiooKbd26NVnrBQAAac53+GhsbNQ555yjRYsWdXn7vHnzNH/+fC1atEg1NTUqKSnRmDFj1NBg/6ElAABw7PJ9tcu4ceM0bty4Lm8zxmjBggWaOXOmrrzySknS8uXLVVxcrBUrVui73/3uF1stAABIe0n9zMf27dtVW1ursWPHxrdFIhGNGjVKGzdu7PLftLa2qr6+PuEHAAAcu5La56O29pO+AMXFxQnbi4uLtWPHji7/TWVlpWbPnp3MZRxXYgqmx0VQcr3kt5ZpMW0+alN7zX6LCaa1jm3vjk/WEExfEuv5Y8HMH7LcB60Bze9HW8zucWB7nyQpJMvGFZLaYmHr2iC0p3h+P8omBdNL6XgXyNUunpf4Am+M6bTtkLvuukt1dXXxn127dgWxJAAA0E0k9c+wkpISSZ+cAenTp098+549ezqdDTkkEokoEokkcxkAAKAbS+qZj7KyMpWUlKiqqiq+ra2tTdXV1Ro5cmQypwIAAGnK95mPgwcP6t13343/vn37dm3evFlFRUU65ZRTNH36dM2ZM0fl5eUqLy/XnDlzlJubq8mTJyd14QAAID35Dh+bNm3S6NGj47/PmDFDknTdddfpkUce0Z133qnm5mZNmTJF+/fv1/nnn69169YpPz8/easGAABpy3f4qKiokDnM1wF6nqdZs2Zp1qxZX2RdAADgGMV3uwAAAKeCaToAZ8aVnmdd+8LutwJZQ4Fnf7VSh6JJn79XKNu69oNoS9LnPyHUbl37UTSY/gY9PD+9TpLf56Jf5j7r2ndaS6xrQ55974pcy30QVJ+PM/JqrWt/31Ca9PkLsuwf23tbeiR9fkkqym2yqvvwoP3b8H4eA358TvcHOMKZDwAA4BThAwAAOEX4AAAAThE+AACAU4QPAADgFOEDAAA4RfgAAABO0efjOBI1sVQvQaFjMO92h3vkpxdCWKl9HATVt8F+/tQ/D4LgZ7+m/hgEM3/ZpP8OZFwkX3d43QQAAMcRwgcAAHCK8AEAAJwifAAAAKcIHwAAwCnCBwAAcIrwAQAAnCJ8AAAAp2gydhyZcPJQ69pn//KGdW1M9g2DWk2HVV3Es39o7uxota6VPOvKiGUjpAYTth4zN9RuXdti7PdBS8y+Ntdrs6prMln28/uoPTlzv3XtX9pPtK5tjWVa1eWG7O6/JDXF7O+X7fySdHreh1Z17zT2th6zqcN+rbkZ9o/Dpg77+1WQafdc/Eh51mPi2MSZDwAA4BThAwAAOEX4AAAAThE+AACAU4QPAADgFOEDAAA4RfgAAABO0ecDXfLTE+TJP79mXRuy7LPRbqLWYwbFtn9H2EefEz/89O4IQpuPPiMhxQJZQ7uPHiohL/lr8NO7IxTA46Al6mN+y740kr+12vbuCErPCdtSOj+CwZkPAADgFOEDAAA4RfgAAABOET4AAIBThA8AAOAU4QMAADhF+AAAAE55xphgmhQcpfr6ehUWFqpClynDs7/GHenhqT//LqXzfxDtsK4N2bUkUbuxLAzQgVgkpfPvi+YFMm7YR++Od1pL7MYMqCfJxx3B7ANb/13f17o2I4CeKH58/NV9KZ0fwegw7XpZq1VXV6eCgoLD1nLmAwAAOEX4AAAAThE+AACAU4QPAADgFOEDAAA4RfgAAABOET4AAIBTGaleAI4vf9X3fKu6VX95PZD5bXt3SFJDzO7pke1FrcdsN6nP+y0m+f1z/PTjaInZz7+ttY91bbbXblX3QdsJ1mOGPPs2SJk+Hgd+enLYCqp3Bz05EITUvxICAIDjCuEDAAA4RfgAAABOET4AAIBThA8AAOAU4QMAADhF+AAAAE7R5wPd0uUnfyWQcR/Y+Vvr2vxQh1VdUyx8tMs5LD89JvK9Nuvalqhdn42w7Of307sjKLb9S/zsVz/ajf3j4Kz8D6zq/tBg3+ckZuyb2By4cK91LRAEznwAAACnCB8AAMApwgcAAHCK8AEAAJwifAAAAKcIHwAAwCnCBwAAcIo+HziuTDnlq0kf86fvv2Zd66fHxMfR3KNZzhHZ9u/YF+1hP6aP+xX10Y/CD9v7VZTRaD1mXTTnaJeTFPUXfpTS+YGgcOYDAAA4RfgAAABOET4AAIBThA8AAOAU4QMAADhF+AAAAE4RPgAAgFP0+QC+oDsGXJDqJeif3vvvpI/pp3dHUOPa9u4Iym+HZKV0fuBYxZkPAADgFOEDAAA4FVj4eOCBB1RWVqbs7GwNHTpUr7zySlBTAQCANBJI+HjiiSc0ffp0zZw5U2+99Za+9rWvady4cdq5c2cQ0wEAgDQSSPiYP3++brrpJt18880688wztWDBAvXr108PPvhgENMBAIA0kvSrXdra2vTGG2/oBz/4QcL2sWPHauPGjZ3qW1tb1draGv+9rq5OktShdqX4g+5A2mhsiCZ9zKZY8sf0q6WtI6Xzd5j2lM4PpJMOffJ8MebI//NOevjYu3evotGoiouLE7YXFxertra2U31lZaVmz57daftv9HyylwYcs14ekuoVAMAnGhoaVFhYeNiawPp8eJ6X8LsxptM2Sbrrrrs0Y8aM+O8HDhxQ//79tXPnziMuHqlXX1+vfv36adeuXSooKEj1cnAEHK/0wvFKL8f78TLGqKGhQaWlpUesTXr46NWrl8LhcKezHHv27Ol0NkSSIpGIIpFIp+2FhYXH5cFLVwUFBRyvNMLxSi8cr/RyPB8v25MGSf/AaVZWloYOHaqqqqqE7VVVVRo5cmSypwMAAGkmkLddZsyYoWuvvVbDhg3TiBEjtHjxYu3cuVO33nprENMBAIA0Ekj4+Pa3v619+/bp3nvv1QcffKDBgwfr+eefV//+/Y/4byORiO65554u34pB98PxSi8cr/TC8UovHC97nrG5JgYAACBJ+G4XAADgFOEDAAA4RfgAAABOET4AAIBThA8AAOBUtwsfDzzwgMrKypSdna2hQ4fqlVdeSfWSIGnDhg2aOHGiSktL5XmeVq1alXC7MUazZs1SaWmpcnJyVFFRoa1bt6Zmsce5yspKDR8+XPn5+erdu7cuv/xybdu2LaGG49V9PPjggxoyZEi8K+aIESP0wgsvxG/nWHVvlZWV8jxP06dPj2/jmB1ZtwofTzzxhKZPn66ZM2fqrbfe0te+9jWNGzdOO3fuTPXSjnuNjY0655xztGjRoi5vnzdvnubPn69FixappqZGJSUlGjNmjBoaGhyvFNXV1br99tv12muvqaqqSh0dHRo7dqwaGxvjNRyv7qNv376aO3euNm3apE2bNunrX/+6Lrvssvj/rDhW3VdNTY0WL16sIUMSv9mRY2bBdCNf+cpXzK233pqw7YwzzjA/+MEPUrQidEWSeeaZZ+K/x2IxU1JSYubOnRvf1tLSYgoLC81DDz2UghXi0/bs2WMkmerqamMMxysdnHjiiebhhx/mWHVjDQ0Npry83FRVVZlRo0aZadOmGWN4ftnqNmc+2tra9MYbb2js2LEJ28eOHauNGzemaFWwsX37dtXW1iYcu0gkolGjRnHsuoG6ujpJUlFRkSSOV3cWjUa1cuVKNTY2asSIERyrbuz222/X+PHjdfHFFyds55jZCaS9+tHYu3evotFop2++LS4u7vQNueheDh2fro7djh07UrEk/C9jjGbMmKELL7xQgwcPlsTx6o62bNmiESNGqKWlRXl5eXrmmWd01llnxf9nxbHqXlauXKk333xTNTU1nW7j+WWn24SPQzzPS/jdGNNpG7onjl33M3XqVL399tv6zW9+0+k2jlf3cfrpp2vz5s06cOCAnnrqKV133XWqrq6O386x6j527dqladOmad26dcrOzv7cOo7Z4XWbt1169eqlcDjc6SzHnj17OiVIdC8lJSWSxLHrZr73ve9pzZo1Wr9+vfr27RvfzvHqfrKysnTaaadp2LBhqqys1DnnnKOFCxdyrLqhN954Q3v27NHQoUOVkZGhjIwMVVdX6+c//7kyMjLix4VjdnjdJnxkZWVp6NChqqqqStheVVWlkSNHpmhVsFFWVqaSkpKEY9fW1qbq6mqOXQoYYzR16lQ9/fTTeumll1RWVpZwO8er+zPGqLW1lWPVDX3jG9/Qli1btHnz5vjPsGHDdM0112jz5s069dRTOWYWutXbLjNmzNC1116rYcOGacSIEVq8eLF27typW2+9NdVLO+4dPHhQ7777bvz37du3a/PmzSoqKtIpp5yi6dOna86cOSovL1d5ebnmzJmj3NxcTZ48OYWrPj7dfvvtWrFihVavXq38/Pz4X2CFhYXKycmJ9yTgeHUPd999t8aNG6d+/fqpoaFBK1eu1Msvv6y1a9dyrLqh/Pz8+OenDunRo4d69uwZ384xs5C6C226dv/995v+/fubrKws8+Uvfzl+eSBSa/369UZSp5/rrrvOGPPJ5WX33HOPKSkpMZFIxFx00UVmy5YtqV30caqr4yTJLFu2LF7D8eo+brzxxvhr3kknnWS+8Y1vmHXr1sVv51h1f5++1NYYjpkNzxhjUpR7AADAcajbfOYDAAAcHwgfAADAKcIHAABwivABAACcInwAAACnCB8AAMApwgcAAHCK8AEAAJwifAAAAKcIHwAAwCnCBwAAcOr/ASBkJTkFds4eAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "LSTCam: bilinear_interpolation\n", - "113 µs ± 2.22 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "HESS-I - ShiftingMapper:\n", + "Initialization time: \n", + "10.3 ms ± 28.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "Mapping time: \n", + "22.1 µs ± 21.6 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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KuP1es0rr7xy0XmeV19fb86dO2fGjRtnpkyZ4tteXl5uJJmkpCRz5swZ3/bq6mrTtWtXc/PNNwes0b/+67/6Pferr75qJJnVq1cbY4w5dOiQiYqKMrNnz/YbV1NTYxISEsydd97p9/okmeXLl19w7oAtnPlAq7Nq1SqVlpYG3EaOHNnk+JEjRzY5/pvXBHTr1k0fffSRSktLtWjRIk2ePFn//d//rZycHA0cONDvmobvf//7OnTokDZs2KBHH31UAwYM0Jtvvqlbb73V71/kf3+GprnXXTQ2Nvp9/aXOZFx33XX685//rJKSEuXl5enmm29WaWmpZs2apbS0NJ09e9Zv/JgxY/wuwIyPj1dcXJwOHjzYrHk6lZCQoO9973t+2wYNGuS3/5KSEqWmpqp///5+4+6+++6LPvePfvQjHT16VO+++65effVVtW/fXnfccccFx7/44ov67ne/qw4dOigqKkrt2rXTH/7wB3322WcBY6dOnaoOHTr47sfExGjSpEnaunVrwPfoBz/4gd/9O++8U1FRUfrwww8l/e3TSfX19frhD3/o973u0KGDRo8e3eSZl9tvv/2irx2wgQtO0er069dPQ4cODdgeGxurw4cPN7m9qfFNGTp0qG/suXPn9POf/1zPPfecFi9e7HfhaceOHXXbbbfptttukyQdOnRImZmZ+tWvfqWf/vSnGjBggK677jq/N9L58+c36yOe999/v1auXOm7f6E3o29q06aNRo0apVGjRkmSTp06pQceeEDr1q3T8uXL9dBDD/nGduvWLeDrvV6vzpw5c9lzvBKXs/+qqiqlpKQEjIuPj7/ocycnJ2vcuHFavny5Dhw4oLvuukvR0dE6ffp0wNglS5bokUce0YwZM/Tkk0+qe/fuatu2rebNm9dk+EhISGhyW11dnU6ePKnY2NgLjo2KilK3bt181w4dPXpUkjRs2LAmX8ffX6sTHR2tLl26XPS1AzYQPoAQadeunebPn6/nnnvO9wmPC+ndu7d+/OMfa86cOSorK9OAAQP09ttvq7a21jcmKSmpWfvPzc31O5Pi5GOinTp1Uk5OjtatW3fJ1xCOunXr5nuD/qaKiopLfu3999+ve++9V42NjSosLLzguNWrVys9PT1gTE1NTZPjm9p3RUWF2rdvr86dOwdsv/rqq3336+vrVVVV5Qte3bt3lyS9/vrr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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "LSTCam: bicubic_interpolation\n", - "178 µs ± 16.4 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "HESS-II - ShiftingMapper:\n", + "Initialization time: \n", + "38.7 ms ± 68.8 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "23.9 µs ± 42.1 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQUAAAD8CAYAAAB+fLH0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJztvWmMZNl1Hvjd92KrzKzKqqyta+uu6mZ1c2mLFtWguAxlSk2ZkkYwPT8o0IAGHA+N/iPb8gaTHP8Q5ocAAmMYFmYDGrIseizI4tDCkNJ4rKVt2vJwRLLZFMkmu4u9VHft+16VmRHx3p0f53z3xT0vXkVWZlZlVNX9gMbt9+JFxI3IqHe/e853vuO890hISEggso2eQEJCwnQh3RQSEhIipJtCQkJChHRTSEhIiJBuCgkJCRHSTSEhISFCuikkJCRESDeFhISECOmmkJCQEKG10RMAgI7r+h5mN3oaCQkPNK7j8gXv/c5J103FTaGHWfyke3ajp5GQ8EDjT/2X317JdWn7kJCQECHdFBISEiKkm0JCQkKEqYgpJKwBTu/rvpTDPB973hdF9LgvffR4QgKRmEJCQkKExBQeEGTdnvxPLvf5wAiUIWRZFh270pjrGMZQ9vtyXasdPa/GLAwjSbj/kZhCQkJChMQU7nNkbfkTuo6s6G7LZnmgrce88NYtOWbMYXZGxus34hcsZcXPlEl4ZQwVU1CGweOWvH9561bFKoaDsXO17CVhOpGYQkJCQoTEFO41bLbA7tl5GVdVu+rq812mHEBXaje/RY67HT2vz9dYAma7ctyR631bH98pzMLn8npuKEygdfFG9D7l/CYAQH7umrxeKfP183Ny/anz8MOhnBvonMkqlHWQzRTXr8efMTGHqUJiCgkJCRESU9ggZB1Z0Z2O4F5f9/RcZX1fV+qBrMJcubNNsnI7xgY06xAYAhkBmYIygWJGV+uePq7nPZcHXdz727fLoRISPu73zUTX5QP5n14rA3Tqrq9z5WfRuZfblFUcOyMvoef98rJcR8ag30W5uIiEe4/EFBISEiIkpnCPwZXedWWP73bKigzdbwfoKooLlwAAmZPV1Gm2AU6X8MAE8vj53M8rEyjJHJRRcOUvevI/RUfnRaKijw97+nydnnchnyHX6/vc3DUPR5Ek2YW+d6ZsorUs41x7X/TcbFFjENRQLMlxtqQMQmMUflkzIcogggZDWVNxw2RSElaFiUzBOfdbzrlzzrmXR84tOOf+xDn3mo7bRh77vHPudefcEefcx+/WxBMSEu4OVsIUfhvA/wLgX42c+xyAF7z3X3DOfU6PP+ucezeATwF4D4C9AP7UOfek9z6FlzVrkM3JvtpplsDPihKRMYBw+UCzCtkOGW+KzgAa4Q9MgCt3GUf6Kz2BRv65vwezEi6+Tpf3oqujMoOyRaahb9/Vl9HlxJUuPL0wjwXoNa6Q8cYeMdTJKH3Q67e9Jp/t2qPy2RdeWdLnKaNY1ljFQBkCYxfKLFpb5+WFqK1YlOeXqtEgshmJizALkhBjIlPw3v9nAJfM6U8A+KL+/xcB/PWR8//Ge7/svT8K4HUA71+nuSYkJNwDrDamsNt7fxoAvPennXO79Pw+AH8+ct0JPffQglmGoC/YsQAAKOdkH1xuUp1CO74/Z4u6H+c+m8vwsq7wA6Nf8HHWImQCLGMoVLE41NhCi7EEMgo+TxkAkyImZFHqLyfEGrKRa/UjF5v0NZXcZANlHS3NrDCMolO8uT/XOWoM4pZ85uuPMTaBaE47vi/fzdVDcmL7y339bPIh8kVlEoFR6LgosYoWtR2a/SiVjZFZUEOSzQmzKa5cwcOA9Q40ujHnxra1ds49B+A5AOhhZp2nkZCQsFqs9qZw1jm3R1nCHgDn9PwJAAdGrtsP4NS4F/DePw/geQDY4hbG3jjuSzB20NPsAhWHutqUW3XsyvliU7wEU1HoW1zJ9fk5c/hMC5j7r49jCWQInrGEkqut+ivkHF086tsExqDHYf+fm8dJUFryHwCUbcY7ZCy0gLOY0YtzPq5z72mMoCWPFwP5jOe2KXPomApMffqxg8pylEG0FoWiXH8snjtjFmQabQ0l7Pi+MItNRy/LdYf2yPQCo+jrxOWFWhoHGp7lz/3BxGp1Cl8F8Gn9/08D+MrI+U8557rOuUMADgP45tqmmJCQcC8xkSk4534XwEcB7HDOnQDwawC+AOBLzrnPADgG4JMA4L3/gXPuSwB+CGAI4Fce1swDGQIO7ZdxWZap5e2abcgZ/ZchK/g/+gLMDvA6MoRMl2qrS2DWQWMGyLiU62qaKXMwsQVXaqwjxBSYKdCIP5Md1FeQKRjGgBJVHKOI4xFOGQOPvcYUnI55R34iuTKF9oys0EWR6UfVGIF+pi2blvSjyuO3+rL3X9wl3/lMWyY9GKoyUq8bahxleVmuy/vC5o59fFf0WXZ8V8Yrh+Vz9M7L8d4/OI6HARNvCt77v9Hw0FhPdu/9rwP49bVMKiEhYeOQFI3rjFxjB/Q16G+TLMNgsxxTOUhQBYi+rpqsPgw1CYwt0FGJAoGmmEKchbCxBeoVXGEZAsyxM+fjEWbMClQsh+wij8fwnJrpU8yaSj3udoRdbdKVn0xhc0eyBb1czrfm5PxSIT/nll7Xy+X5sy1hHosqvriwpHGdA/I+2wqZ4FCDD8On9fiy/M2ubRVGseOg9FFpX5FK0eLqVTyISLUPCQkJERJTWCOYy6Y3AH0N+o/LPrU/L1/xcGZ8jUG+pHt37ruzSiEIjGQh+PqsfaBOYWgckRhqD9WWmXmcTICxBat8ZEwB0TxrDMLHj/uRmAJq7CKuxHRDxkfkglIzNqXGDoKHg8YCCn1+S7MWQz1fsmJU4yULXdEXdDUQsikXhrC9fRMAMJMLw7iqisbSx2xrm15X6kR/sG0vAODPO5LOOPURYQ4H394q89F6leH5C3iQkJhCQkJChMQU1ohsE12UZSUfHBKGMJiXVaS/Wfenm+J9c943EXku6Fy8mH3gMRnDkNkEfaKukoE5FCEFoKNezxjEMM5OhCxDwdiDjTFwvH2MwZWjakidM2MF5jUDaSnijIZXBuD1AjKEgcopc53jQF9oqOKJocZduPJn+nhbP+NAv2SOO1SosDlbis4vtKTKclcujxf65R+Zlb/phTlhCuU2jUm8taLWjPcdElNISEiIkJjCKsFKO/8OEXCycu/WbolUD+ao849jBFz4g9MRTzjuu3m9URraFb9W5RhC9zIW1Df4217nVOGY0XeBXo30QtBMAmsdagxhJLYQMhN+/LU872vnXXTel/F3wWwEmUOpX1rIFlCHoIxhWSfbVtbUUtbEWAFHMoTNuTCGnkoj+3qe123bJLGKZSUGw3lhh52dUsFaXpVsBHtl3O9IN4U7RCiS0TLdxV1CJZe2y1fZ582AhUIU8FAuzDqmYHPGfwCxKUoQN1HOzGOaqmQmNWlvCny8JmrSVKRjmzkduS1pEDMFmTNl2MbGzWW331oA1T92u43gNoOP8ybA7QBFSoXPomM+znGo24yhvsFAP+vQbB+axiWt0OpoBdeOlmwj9s1I6vGVn5RA5VC3jPuPy3Yio52+FlTRuNap1L24dBn3E9L2ISEhIUJiCisES6CzHWpouk1WicWd8hUub9HVir6mwYRExpzMchg/HjKIgbbrCh0eN9sJbiMoYsoNcwgMgYVQcVUQxUsVhY/FTAw4luFxE3hkcNCkLGOZs465eY5+toohIJpLtY0wI63jypg52G0DtxXV9kImUJBxkGno4wOt4FpSWtfWiff1PI/3dIUpPLrvIgDg2JIGHj/yiDx/QV5v4RVhCPlSXLrduqy/mbOSupz2EuzEFBISEiIkprBCOA0sDp6Q1eHmXtkvLm3VVUdc1kKZMGMHmTKEmlV6CCyyVFrPs5jIpiRD8xcrezYFUja2YO3Zgm2bvm4QLcViJpZwM+BYW/3HiJlsuTXNVch6KlFTHFgkk4D57CG2EFKVKnYyK38VU1DmoJMsNErKWMNA07gDBiK1HL1AHHgs9Xg2kxjCoa5URF1bkD9urh/0otrK3bop5xffH5d4F2dF4v7o/yMsc0aL4pCYQkJCwv2ExBQakKvBarAN3yP7yBsHZFUgQ+irVyizDTCMAIEZmNGeD7GD2IDERvlDezfLEGwWopaiNGKmICzSGEMRMwlXG118zDjBOPHSmHTl6GtYgVSIHZAx8LugaazJQpARDLSQqU0Rk4tjDGQIRR6/Tog9mNQkmUc/pCrFSv6R1tXoeXMql+7u0kIt/SC3CmEEFwfCIL67VZwIr/9gNwCgc1Xk0fkVfb0bIqtuasi7UUhMISEhIUJiCk3QYpf8PU8CAC4+IxHkpe0aQ5DFIJiU2nJgZ5hBjUFYxmCzDYEh2DGLHq9lIQIzGC93Dht8k6VwbKwy4OtzZGxhfEn1aPFTkDcbhrByMVP8pdksBGMMQ5qv6GcZKFvq5BQpxYygrzGEZf0umFUYaOyhrT5AlkGEbIV+d+/ungQAHO6clfN6PfUNB1oSK8j1g/1260MAgK/8VYlHLc9LxurR82Le66c0tpCYQkJCQoTEFAgarrLx6y6RsPa3CyVY3KmrjmwLgzkpYwmMtOd9mzWQoRZjsIyhgVE0FkiRMQS7NTqZaNNWtrqvlU4bExbGEoZG9qzWaGWIHdCeTVdT/eWEQqrC1SzarJx5osKxxiBcNHUyAG91B1a3oH/LvpquZPqClDuztNoqGqlP4Mrf9vF1bcjzZzSlNKuyaDKDBapOFY92RdewMKdKxxOz0eP5vASkps2sJTGFhISECIkpKIKNmjKFy+8TpnB9X8wQBlu5R9dhwDw+swdyvhYrYKMUPt3GEKhXyO15o2i0BVKhJoIT0vPOMgRTA5Hbwimu2qyFUMag+3fa7zLGEGohBlV2JNR5NNjAM7wR6jjC3PS8YRBVTYTOoYxLqvNa7UNsvmIVjk3ZhkrhaGsh5LfAmANjER09Zqyhpx+wMHElXr93Tgqmjm7ZjfsBiSkkJCREeGiZAkufQ4uwzaJLGB6Uu/niDlkFliVQjCEZAhuTDMxKbkuhFZY52JiCjSWwBoIhAt/W12e1pK2aZFaBeoVQA2Eep07BVk9mDbGF9grt2kYUjo1GLObawDIaYgioZSH0kMyAjEBZTREUj8oYbEm1o6IxVkAGZqABkoGpfeh6iRlQ4Rh0DIizFkv6ATKlOj39zg93zwAAXp2RJjPf/qDEIuZOCgudOX8R04jEFBISEiI8tEyBaD1xCAAw2EN/BKlpuLFf969zVp7H0Y09trEE18AQGrMTXCwZ3R/a1zUxhrYuv1zhVV8R7NlCC3pFCOXrcl0aKmMa0jYqHGvGrm6in0IVU4jPhywEv8vwmZUZsDlvqCCNFY6sggy2bfqZQ2zB+C2QIXQ1u9AUc2AVJRWObWUcHc1ChKyEfhAj3Qh4z4zoG765Rwxgl+eFjc4ckDqa4MMwJcrGxBQSEhIiPJxMwWXIdopCcbhbGMKpj0iMYWmX6g82aQv4mWH0VM9ovNmyV7ZqhjkYHUJj7YOpmqzrF6xOwUxAqyZBnUQWr/x+qE1TnXmeM7EGMo6WKhy19RprI7ytnhxlAVax2GT5bhyXyD5s05hQPUlLu4amMVQ4BoUiayEYW2A1JQxjCFWTefz8FSocq6wFz8cc4XBbsg7UMTy+RWIIf/azEqiaOy6/uQ5/i6fPYBqQmEJCQkKEh4opZF2pcHSbehjukbv1yZ+KGYLfLhVwnZ6urLpyD/vaOp6LAZe7ms6AEXJ5mB3kUWMU0OeZMZw3r2uqJGtVk84whLDy03m1oXrSxBLYZi4wBm02E/QYeby6jyocJ1VJNikcbe1DiK+EufI6frdUccbZiEJfqJ59iBWOLX3jVhnrDwoTU+jbmILRMVDhWLCZDcMx+sF7ev4x9Xo8OCNM4VtzjwIAznxQayFObsI0ITGFhISECA8XU9gqLd3Q7eDc+9WFeWfMELYtSI0796n9Ab3N4xJAF/b0XMmpONTT9GJsYgRG6YjCnDexhBVXTYYW9ln0/LrzkqmmzEyKgK+n1vUZqybbzQrHxrb1nIqNMQT9AmMGDT4LTQpH0zQmZCNMLYRVOFZMQp2W8pghtGFrI1THQCUjJEsw0DQKFY59/aBBAam/FX5sWsmXrwhD2HIqlkDWPDw2CIkpJCQkRFgTU3DO/X0AfwuyfH4fwN8EMAPg9wAcBPAWgF/y3m+I8X22SfZq2cI2AECxR6K8i/tmcOOArvC7tK35jKjNmCtvHLnH54ob9vJx1sA2ebG6hNLm6htiDVavEBSPtmrSxczBWaVjbu7/IaZgqie5X2d7ueCjMEHhOBxRYeZ0hB6vcAyKRtMTg8zC+izAjz8fYgzc069S4TjQ8y2eNwrHetWkejwqvbMKx4Fyg4Gj0lGwpy3/DN770z8CALy45R0AgO1fx1Rh1UzBObcPwN8F8Iz3/mmIJOVTAD4H4AXv/WEAL+hxQkLCfYK1xhRaADY55wYQhnAKwOcBfFQf/yKArwH47BrfZ1Vw2smn3C1M4eRPy17u1v4Sbrvs7zZvlrHNvDxjBiGYHx/Xswd83OgSJjgsha0+7OM2ViGHZBaZ6SBVxRqo+tPna9citqoPVZOEzUYEpyZTGxFiDw0KRzKGPFY3AmMYgYklZKYHRpPPQqjkZPwki5lIYCjBb0E/ur5wbmMLoboyjiU0KRyrWgnNQPG4QeHYZ4Nbz9+UgF6Ph2al/8NLu/YDAG48Lf6fc1Sh3q8xBe/9SQD/FMAxAKcBXPXe/zGA3d7703rNaQC71mOiCQkJ9warZgrOuW0APgHgEIArAP5P59wv38HznwPwHAD0MLPaaZgXVfcktoffL9ryxb3qz39A89O7F7FV3XC29Jail7g1kBp65qwzE0vIdL9cFCamMEGHwNWxqWrSKhhrtQ7hWBmEVSYG5iCrlVPnJLTimII3ugV2hqqoi4k1kAkUDQrHkdiCbUa7ZoUjzxfxdxA+C68zDWht6/omheOwxgTGKxzJEEpmHRhTML4KzQpHmcdWdYdmLcR3dgtTuDovTYpntkl2LL+8GYU6PVeBlXuHtWQfPgbgqPf+vPd+AOD3AXwIwFnn3B4A0PHcuCd775/33j/jvX+mje4appGQkLCeWEtM4RiADzjnZgAsAngWwIsAbgL4NIAv6PiVtU5ypci3SR2D6wlTOP0RiSVce0I9+nYLOzi48yJ29OROvFTI3vuGMoSsIevA86Xm810t+h+v4E26BBubaPRbsNfl46+3VZPOxBpCLME4MnndP9dcn6mEZDdqE1NwBZWOGsMY8Wr0th7CZh2MgnHFCsdwbJyaTA1EUDbqXJldaOnK32qongyt6+mglJlaB/0jVMespbD6hvEKx55+pQdbZBpS47B/VtycX3tWqiaXt4i9196rN4Hr17FRWPVNwXv/DefclwG8BHEL/Q6A5wHMAfiSc+4zkBvHJ9djogkJCfcGa8o+eO9/DcCvmdPLENZw18FahnJZ4gJuq3oiHN4JALi5Ty/cLY8f3Cna812bquhuZpgAmUGu45CP6zJHfUAZ9vaxotFZr0WOxXgGMbH/g62atNWRQf9gzocVP66F8D72WfAaK3C1vhGGOQx4XayTYBcn38prHapDdoEZkSZdQo0x3F7hCKN0pMKxNArHKhsRMwPqFdgPgn/7ZX2jrh/v9hy8G0OX6qGOyhgaFI7doITU2AJ7VG6S3+M3NAO2+cR0CIyTojEhISHCdNya1ojW4ScAAKd+TvZm7Zu6wrxDGMFjC7J3m9E9XTbSzon/bxkDx5xVkg3ZhSp7YLIRiprTUlOsgEZIpl7AVk2G2AVXaOvMZKsmDXMIMYUwQaNTyMdXU9ZiC2MUjiEsMbBziitIrZLRejZO6iQVAvKBEcRZCB+cmTiamojQa3J8bQQVjl0X6xUqZaMqHZUxdNh5yigce2Qc+jpsJsbsRE9bk+/YLPGtxXnJPmxG3UP0XiIxhYSEhAj3J1OgHmGPRm0flajt9SdkCenslzvvvq2iINs/K+NCR84PfI6bQ0mDBmYAxhJ0ZWzIPlSxB05mfA1EiDGYLEN41oTsQ41RcDutDCEoCdVxiZ2dbFVlrddkGLmh19f3lhE0ZCUYa1BvAobYs8KPKBGryklgtMsUxo8aewhVlS4+rikcG2ILIQthXJ/JGKhLaNdiDLE+oWRNhPVP8LFysXJ5Hq9wXFI9Q6ZMJg8dpmQ81JVs/T79ff5/75ff8+YTO9A+dx4bhcQUEhISItxXTIH7rGxWxv5BqXp8++OyW2vtEybw1C65Az+1WboDz7dESXa9kGzFYJgj02WHIzsWczVhTpq+CpY5wCgdqyrJeO8PwwCqLIU9r2NjNsKMoVMU3yfeT4daDDIJUwsRHJnICMIqbKsnbYxBP55VOLZ9YC8ZMy3G8blJyVirngyKyAaFo3F7DpmXPGYOIabgTdWkjS3UlI0aUzD9Hur+CvHxShWOQb+gvSif3nwKAPC9vXsBAMvzc+g+ItUB5dFj+qXcO2VjYgoJCQkRppopuJasbvTDpy8CehIPOPkR1SnskTzv07uFGXx44Q0AQFeju7dKYRK5LlU5fNAh2FgB/ftstaRlCnnOPL+JtJugv40d1JSMDddX15msg1U8mt6SNV8FxgJYA2GzEFyudeWvmIyRYFLJSaZRsDlmlYVwNjOxwo5RtfMrVTjW3J51SkbhGFy09A3zjCu2iS2EmgjGGFQRaVye16pwnFFW+WRbqiVvlfJ7PrjtEgDgB8/OYe5tcWFq3VCn53sYY0hMISEhIcJUMwWitVd68V14VlxwcxXlLT+pDOFR2ZMdnBWFGOMEo8xAzvvweNAn2LEh62D1CowlsGsRhnGsAaY2InSdZtGi8WSc6PIcrrPKSKsBiGMWNScmuw/nvJu6Utc6SsUKx6w/DK8X5hBWcqNwDP4KzB7gtuOqFY6GAVSdpIxewbg9MwuxHFyfVX+gzKJJ4Vi5P7Nj1O0VjmQc8/pVHu4Iwz0wK85MP9y8B2c+JJqFXf/zy7jXSEwhISEhwlQzhUxjB8Ve6dJ75UldGd4hWYZ379YswxYZD3SFKcyqtpy+/YE5hIyDH8k+3F7RWIsl6KpR2KxEyELo5E3VZFi5qe6zOoZadsGMDcyi7u1oYgqMfQQGYbpTg69PhyYXH9s+EqySZJaC/SGKMngzuNBFSp9KhaNhS03OTGtWODZ0kmpSONL3su63IBMrDPOoHJvGZyEKrS9hrKFwhrno8UAnyOu2tiVL1vtRD3On1PvjMfFaKM9J/KFcXMTdRmIKCQkJEaaSKdD/3m2XbMPiXu2gowzhx/ZJDOGZrW8BAPa3JWq7RX31r6kegXvI3MQNutmw2j8avUIjc8B45jCplyRMhydnqxsbYgnculc1ELEuITAI6vapdGTQo1ZNyVy+WflzMopY4djYUYqxhSGzGmQHeWP2IQt9KPWtOfegzow/azi25ycpHH3MFBo7SfHx0FvSxBaCq3Ouj1snpqaqyVjxSGYaulcH70Yd9TdFBeT+jvyOd/+VkzgxKyW+W17EPUdiCgkJCRGmkimwQ072hGQbzj6jirG2MIX3bjkBAPiZ2VcAADe96BBuar6XGgSCLKCtBf5tn6OlG9e2roB9q1fI+BzNNXOPHkoM4liCCzEEedy6PAdMyC40Kh2blI+M+LfMOIgfr8UG6OWoo3dxd+1mRWN8THbgy7LOFILTs2EEkxSO1u05+C7wdWK2FDwci5glhU5SOp8QE6DOwDAEWy05SeFYKRZb0fkmhSNfZ0A9g35gOj7t1b4QB+au4K3d4gmy+JTUQ2y6JbGEFFNISEi455hKppBvlapHd0Puiru+I/0aLj0tj18eSu3DmUKcljZncl1u9Qk89rFeIXdlnU2YuAOVjcw2cLRVkhVj4AvZGghEY02RiPi4SQFZfx1mGeJsRt1/wSgeVdnoOloLwV4DtSpIVTiGLIuLrwstlpl98JW6MWQfLHPQKdlYQ5O3o2EWmZFKBEUjv5taDYRez6xDESscGSOouT2b2oiQbWjoJNXO41jCJIUjlZU9o5DcmYsv41/afBJHtPahPy+Kxk0L8m8iuyn+CnfTZyExhYSEhAhTyRSKK+KUlOudv3NtAQBw86IwhGO75PjNrtxN93dEn7BFGUPIJIxRMvJ8hpVlHRhbmKRXyFQPUIZ9baxwrGUfrO+CiSVMij00j7YGQl8/j1dRG1sIWQkyBDouDWh2wOtNFqKsnpepyjFkFUoThzGuzLXaiMJ8B/a8jS3Y6kmjcCzJcgK5kQsHQ9ZA6DH7ROhnDjEG/VLp9sw4lO0kZRkCdQ0rVTjO6gfc3pbV/3z3DPbMXQMAfPen5bc+e1x6l+DI3XdiSkwhISEhwlQyBaK8JlmI9mXRH3RPSwzhtV2icHznnPjnP9aRCrLgnqRLDN12Q954JKaQmcjv2vUKcTbC+iJUykVbq6Dnqc4zz6szBjKBCVWTNcZgYgM2RgDOwzgv0QWaCkd2lArZDFZPllU9hGoXfMuoKalkZAdt/fXVqiZJsib4L9SrJ318vqZ8jL+bSQrHvjKIkL1iN2pNi5BhWH3Csno5khHYasomhSPdnnfm1/HojGQivrdZ9AqDecmwbdovx8MT0mXqbiAxhYSEhAhTzRSI7IwovXZ8X7IQZx4XxeKxRdlvPao1D1u7st/inZsuu3UWUAY2UdVF3J4Z1P0VdG668gdLw5qycXw2olb9SDRlK2wtRFPVpLNMJI5ZVDURXOm5isc1EV4/UIgt1PQKrH3QmEOeRepGuaZB4ajZCdt1uknhaGMLQeFYq56MYwpNCkfr4Wj1C00KR8YKmhSOy0bZWLk/ywftBOaqugY9Domc8HEzbFG3sDntCbG8VaomVduLrCPMoez3sd5ITCEhISHCVDOFkEtXhBXF3NmJ3Dgy2yzEqL8Cc9PUoXd8vE9s8lcIegVdTezjFTNAPJpu0ZZRTOpB2ahoNLGHUAPR4qpsYgr6uavqTVM1ScZAhhB0Ccw6GKYwUj05qm6U99bjttUv6NzYrKqhS7XtNGVVnta5qdalOugYYsZQ93BcmcKRDKHIeb6A2wIHAAAgAElEQVRJ4Zib8zKyardiEnJc+X3I+a3ZIg71JE62fVZUvMefkXja3DGJp2V30YkpMYWEhIQI08UUwsZXV5qdoubCJokhXPxL8viWeYkdPD4jNebUjFN7QOWYVTaOc16iu06O2HvBxhbo9lxz73ExY2CMoQwOTDamEDOJypEY0fkmL0erWLRVk+A+nTUQ1CUExkJGECscoW7P9GD0qnRk1iHM3/aeDLGGMlY3ApMVjiZ70KhwtFWTDYzCGb9MWzFaiy2YrANHfrdW4Rh8F0JMQSZkFY4Dk41gDKFjzt9O4Tify2/8vQuSZTi2V+Jn/a0SS5jZLsflacnArScSU0hISIgwXUxBQU/Gcx8T15l8oPv5d4nK68N7jwIAdrelsw6juvXaB2YO6p6N9tp6FmI8Y7Cso1GvQIcl5s5N1eQk12f7uM1GNNVS1HUMMWOoYglkDOPHUD3J7ELwcFQmMWRsZETvYOomHF2Z2kbZaGMLyhBKq3A0egMbc6g8HWOFo/VwrHs5MutgFY76G2hQOAaGoN9d1/SLqKorjS7hDhWOW7MBnmyLm9iJnrDl3dvlt7+8VaonN2k2otUXRje8eBHrhcQUEhISIqyJKTjntgL4TQBPA/AA/nsARwD8HoCDAN4C8Eve+8sreb3gybhfPRnfJXfy2cNSC/GRPW8DAN47exwA8M7uaQDA5kxyuUWoSqNakfnhWK/QdkO0TYUcsxBctVglaftA1BkCopErePBZMArHxtqGBi/Guptz07GJMTRVTRr9QugDwayD9X8I/gmqW6gxjVCKWGcIqnBkv8ssvLdWaobqyYYYgu0LsUqFY123oKcLKgqVCahak94Ztks1FY4tjR3w98SaiEGjQ5PGFO5A4biQy2/3HV2JGezVWohv/xXtA7FJxm2/9SOsN9bKFH4DwL/33r8TwHsBvALgcwBe8N4fBvCCHickJNwnWDVTcM5tAfBTAP47APDe9wH0nXOfAPBRveyLAL4G4LO3fa0sQz47B7dVcrE39kg15NyTQjAYQ/jY/A8AAIe11mGr3qGv6x19SRcGMoR22MPJcVd79/Vdq15JOaFqktWSLR8/HqolTRaiNFkGZ6smjV4huDxzBae8bYLCsQyuRnEWwge1oMnVm16TzVWTTGdoFoKres2zcUTpSFnnkIxBJpENdO/dYWxBv1tdqUv2oKRbVEhCMRagH6HJsamBIVQKRx89r6k/xKQu1cxC9LUvRCcbRs+vmOqEvhA63k7hyD8/r9nZFa+Fudfk2tmzcr61T/pPFmfl3wS7qa0Fa2EKjwM4D+BfOue+45z7TefcLIDd3vvTAKDjrnFPds4955x70Tn3Yt8vrWEaCQkJ64m1xBRaAN4H4O9477/hnPsN3MFWwXv/PIDnAWCLW/DFjRvIH5dsw5mflDvpZl1d3zcnsYSPz0gNBBnBst6h27r6MpZAhRhjCT1dgqp88XDEdUdZhe4Tu3pMz3+uFi0ds9IoG8k0gu+CXke9go0pWIVjqKKM9QSTek+yd4IzsYVazIHqO2YAWNPQVDVpO0kxG+HHMAMA3lObUIxoGUYqJzFG4ciuWrmtgdC5NlVP2piDsXqo9YeYmIVoUjiamEJDl+qQjQgMQFmjj/UIVQ0EdQjKWI3CMTAKVwYNAx/b25VMW/ZTwp7PzojT+aG/wLpjLUzhBIAT3vtv6PGXITeJs865PQCg47m1TTEhIeFeYtVMwXt/xjl33Dn3lPf+CIBnAfxQ//s0gC/o+JVJr+XyHPnmebir4p+w+1uSg731Y/L4paH0gThVyB12q64oYTG0Dks8Dt6Msb9CBl/rM0mGYPeB7CtY825k5Dnn6mAYAt2Owwo+Xq/QWDVpztecmcxY1ynIUFJFGCL/rI5kl2nWRMQKR9fSn4ZGwVk1SVT+CoxB+EqnQFcmfaymcGyonmw6ZuyB8ZJaLQSZhK2FIDMIikiTgWlUOJI5xLUNQdlYUzzGCscu3ZuNwrFyahqvcOyrbiHzHh39fc46qYI81JW1dc8WyUIc2SXxt8Hj4vacnV2/Woi1ipf+DoDfcc51ALwJ4G9C/lRfcs59BsAxAJ9c43skJCTcQ6zppuC9/wsAz4x56Nk7ep2iQHH1KnJdaTpXJDZ54rz4J/xol9wNX9skeu8nWhJbWKAizsYSdGkYsMsvayGC29KIToF3a3PMkTnoloktNNZC2F6TjDWEPTqVgSYLEbITiM5PrJJsVDZy5OvYmgtTNUkvBDIErYVAn27PyhjUs9HRMFHjBb4oKvZDVhFcnMYrHEOtQxEzBKtwbOoPUTsf/Bbi7zQUerJiNGRcDGNglkEZTmCBte7UVDIy2xArHG1tA69jDKHrGVNoVjhWbkwy7moJQ3jvVtZCSEyhPy+ZulntE1Ge156Ta/BZSIrGhISECFNV+1Cop333iPSK7Jw8BAD43m7JxX5oi3jfH9bekZneRTu1Lr7KCHQpGadwHFU3yhgrHJlloIdjrYPUmE7WQBVTYDYiqPhaOjfWQnCvHzwIDDOw3o1NTKGBEdSqJq2SMWRBQvojPrY1EIHR6OswfsAaiCyrluzcMAQygcAY+NqxkjEwBKtwXOHILtP2vNU7NDozTVA41qonbUwhI5uMe1GuRuFI9rFT+6M+kosT0xs9YQI7t0j87eRHhU0fflvicOXJU1grElNISEiIMFVMwWLXi3InPfekONO9sSSxhic6Eond3ZG7KNWDzBOXZAgm65CHvPAwxAz6zvgokGXo4zxvayGCwrGhg1SexcygFluwWYSgbNSxZRiEqYmo9Zo03o0Vc+BxQ9Wk7TWZW+YQP16SIRDBYLAImQ0X/Bv1WsYhGAPiawXthM066FsrywkZlJA90ClWpobR87xhBLZ6EmYM8RtTPdmkcMypoB2azBTraNhtuqFL9UoUjta/sa0ffZ96h+ybFd3CsTn5NzHYJv9GOnsekbmuwWchMYWEhIQI08UUwi1e0L2sUdrrUj15vi/7p7DyO2YfbGxBwJhCoWNPn1dkWdjXhbv5HSocM1bMGabAGENBLYXjftQoHJkNsMrGhpW+sbpS/4JcnLmahv15Kz5fMYV4XiHWEHo0GO9GF58vufqzerIsw4pc1UWQMei16lvQqHAMNRCx6rKqrtQpkTUZxjCxejIUfMaxBGP4NVHhyJhDcGJaaWwhW7nCcVTdCFSZDHozbOtI/C3brM/dqr0moLAf6g6QmEJCQkKE6WIKiuEp8Ulo79BOu9dkPH5Lx4HUkj/dPivXsTrNqBTzho5RbZ+PZB2KsWOTwpF3fRtjCE5OuvLmPs5GhL4QtRWfMQddvUJWgI9PGG0sohZbiMdSN6fs9BRW9wGVjmYMugUdWfkIA+9R9YQwjKGIxyaFY2YyMfVYgzlWhhBqJ0w9SL0/BMz8+OXF7ztJ4RhqIKx+ITgxcaTWQH+fd+DhSHUj2QR/24+0JJbw+CZRMG7eLFmJcz8hMYW5b2HNSEwhISEhwlQyhawr7s3ukqi49v1HiSWcekJysa9vF4XjkeCr0NdR7sxtxFWTIRrsq+pJywwqNqHndfnphu4/cZbCKh0rhaPGLXR1sX4LZRZThiobEWcHqlqHWPm42i7UNR8G9oUYUEehF1BDUHN51uV4wFoIdqdmLYev1I2snKwadeibxrEGF8aYtViGsFKFY2AMLfO4VTwyi9HkOdHQSapg/MT4K1TMgSt/HFNgVsyyztt5OFLdGK51saZhZ0v8Fd65Xf4N/Ple+TfSf1I0Pe3romMobsh4J0hMISEhIcJUMoVyWfQH/ozoEVgLcfWkVIa9tPAoAODHZ94CAGzPxMm2zbtrqJqU1wv7e6oOfVlzc7Y17bbbVDvjdTIOG/QLVEQOcsYgxiscM+3IXBrfwKBwNCu9rQgMkXJG4msKRzMaD0jbnTowFKtfIGMIVZOxM5NjCaIvq8pJXmP7Twa3Z8MIQoxBv4MwxvqEO1U0NikcbX+ISQpHZqb4Nwwejja2YLIQw6BXiPtDVDUTzQpH699I9rFdlY25Ex3CoVlhBi/vEH1Cf6tUFHe2S21EHhy0AFzBijCVNwWLzptyc+iefQwAcOxRCTi+uSA3i325BF92cPugX2QlZtLXGSmUYgCnJnNuKIyiXVtTgVRL001Ndm05BTu8SeRM5bGIiPk2Gep0Xx82sudaCXWj7LlBzGRuAlWhlBEzNciegzkqUFm18R9/w83BBVFTbOxa20aEf6z6+vZmERxn4sdXL2ayNwVu+eR6FkoV3CqaQGNfH+9n8sfib8VawfNmYG8Oo2KmPGx5Y6u2nn4Ze/XmsKN9HaM4+xPyGrNvzsrz3j6OO0XaPiQkJES4L5gCsfvbcre8uChlosf2SmqyP/MmgJHSaAb/aNOmz89GCqU6hgmEdJBrYhDx9WxP3jfGrtauLTSX4eMUNdF6zJivhDZzlvbrXyo0TTUCHm+OtSt6tVrWrOMtQ4jFS/XAo06AJixkDBgxCh1hDcBIwLGWmjRMoa2vGazedO4UM3FLFWTPtw84rtgKviZmMgwkxEfjVGUlZoqDw9w+LBUxUxhoBNSKmZaUUbBVfRDU+aISNoUSanntY0PZQr89kDYI3712IJrbI99SodhlYRD5nGwnAAAxqWhEYgoJCQkRppop0K56eEKMJW78vMQUbhyW82eXJUXJIExl185REFKUI2ImMoGe2r4zmJQ7WWKzYMhyezFTqxwfcLQl1bmRORdBtKSTtHZtxlZtYurRMIYgbx6SmVjZs4wZG9FqcZJnSzfbiLbBAr4KKo7IaX3MGOopSe7pK4m0zMkEHltGxMTPYqXdliEY2XNgHmb0ISbBE/GxtYLnGMRMbnyhVLBrY8CREvkyLpRaVjoXWGiQPWfh93WzVIn/UNPxy5KOf/m6BBi/c2q/vPbrkpLsnRY6UF4Ue4FycRF3isQUEhISIkw1UyBa2yV2sOvrYjDRviXHJw7J/uq1vqRjDrSOAgAWMikLqeTPKlAaETONCpnknI0xKDMwhVJWzMQU5NBkIShmGpSMVOvqYZrGNJdUjy+UqoxaVyhmaiqpNlmNkAFox6tyxQh0+WVMoaNBi+GImCmssIwlmJQkUcZ05k6NXbmiM9vhrKjJWsCb7yCkIG2Ww6ZrbYrSiJlKY9dmDV1DtiFI45m50ixGLTVZjbRouzKULMKxvvzmj9wQpvCtY5KW3/4HYsdWdJSRnhQx03BpGatFYgoJCQkR7gumwDbbLV2dele0MOqiCDRe3yF3zwNtue5wW+TRm9VAJQf1C7qf974yWaFYqUHM1DjSZKWMhSmMKXTIIHLKnlkUExdKhb2+bV0f1NBxoVSjyUpDbCEUQjW1l+PzGFswpdWOegpmCAotzmUmoaXZB2u+AqCxQIrgMVd8bxkC9Dzi41pbOHNdeH9z3o5GpxC+s/B6cRaCoy2Q8hQ1GYZgGYMtlKqK7FSLQFGUHynt12vOaPzsJY0h5K8Kg1h4UduqLIrgL5iruNWv94kpJCQkRLgvmAJRXhKdZueyWk6dlLvlS7skV0vZc64qLxq7WvFfDl9rLWcVjmQQTbEFMoSqEW2D4tGasOjI/WcRjESaFI5xLrxa+fWz1PQHOk4ooW60a1ulwhGtFjzt4E22oVYgFVhGfB0t4GFs2oIsmtmIleoTJsiga8augRGML6mubPtZoBVL1UtTKFVjDBjPGOz5gc+DduH0QFjx2zelvcHyNclG7Pu+Tv6aFDyVV68hwirMVYjEFBISEiLcV0yBaJ2QLMSubwlDOPOk5GhfXxYGwVb121psysEaCM0To65pCIVPVuHoGZdgzCHWL1iFY1OhVKVfiHUKtlCqDAVRMUPg6hSUjaEKWUu0uTAYRlBTRjbpGWjjZgulNCsRlJRkDkbhiNHeIzbrYJSOASyg6rNWQtkX35MZkbDC22zE+PM2lmCPvWEEVS0F58/RqD1NNqJqKxdnK8gA+sw66JfcKhhvUlPWUDodZyEKZLXHMpjv0GR0AktbBySmkJCQEOG+YgosqeadrHtZ7rgXrosV1dWh2lzrrZ4xBWvX1oaP1I1ApWykGcqgVjUZ10DYkuqBj2MJGVeHhphCrquJrZ6s2sfZWgijcJxgv8bgM2MP/EsH4xKapjZmMTLz/nrMmgjat40qHOlyEgxYytEp15WNhRt/3jAMq0/g3C3LqT6jvt+E6kln3s7GFLyPGUQoVw+Px8dVNqIhxkCjV9OQtmWs4JfLdohlsQpyz4zEDF6bk7qfi++Rmoa5NyTWgPMXsV5ITCEhISHCfcUUiOGxEwCAzj5ReQ00IvvWohyf2SJ30SfajANYxlCEegjavzcpHBkDqGoZZOxmWjOhd31auvfLuEIuMAfrr6CrB2MKjkpHUyOBiVbwHBsUjtaUxTAIZ9q8B2PXmkWaqZokk6DCsd2q1I0ucAN9U6to1MmEzq9kDnHtQy2WwPM0qmHVZJvvE4/h+azzoMdLfvvrQ+C+xhzGM4Ra9kG/5HbD401ZiCqm4EY0DzJubUsNw74FycAd3S2seLhVrAvbc+qfcGWFTiq3QWIKCQkJEdbMFJxzOYAXAZz03v+ic24BwO8BOAjgLQC/5L2/vNb3GUU2I3rv7LI0xNj7H+SuefyQ5HRf2yYKx525+Cws6CrbYyUkXM0GfrUKR1ZPLmuDj5bZJzLr0MvZBizefzKmkIXqyHi0OgKrcKwzhpWOZBZG4Rj8FOx1yiD4OBWOQ9ZAFMHUFbYNuqmODEtRLXYwvmqyFhsIS3WDbqFBv1BTPtYYAlWfen1oU8cLeB1Xcc1q2ebANpaQxcyA2Qq2mR+XhaB/wnwuv/F2V3ULs6JsPLZdYgn9eVGYdhbkt08StBbGsB5M4VcBvDJy/DkAL3jvDwN4QY8TEhLuE6yJKTjn9gP4rwH8OoB/oKc/AeCj+v9fBPA1AJ9dy/tYlLe0ZdZFISAdrYV4+5TEFF7a9hgA4KmONJXZqX52owrHUXXj6LhWhWMwdjXVkx3dgzN3bdvMWaUjLdiD2i67vcIx6BJMjcTKfRj0ffk2TQpHageGcUwBrVziCkCVfWA9BJWBVtlIeMMkwspusw9Wp2AYQ8gWOPM60Osx9rz1bgwhEGvoarISdb1CzCB8LYYwPpZQ1GIPWfh//j1p6T7fjv0Rzv9l+c5n3xK2XLz5FtaKtTKFfw7gH6P6egFgt/f+NADouGuN75GQkHAPsWqm4Jz7RQDnvPffds59dBXPfw7AcwDQw8yq5lDeuAkAmHlVKsXyc+JGc/QxYQzHt8j4RFscbWdCs5gsUjcCzQpHZh9WqnCs1T7QHpztyo3CcWiqJcOo+9ha9STtzsN5mX/VaHZlCsdJVZbMqVfNXZmDjxkEdQuu1aq3nGM2IsQIdFJ5vPJbnYKj0nHIzAYzIXJZvdrRKBpXWTXpG46bqiZLUxNRGB8GyxCCBXwY6eqslbQjsQX+/1l1XDq1JBXBP9S6n1J1IvQtdVe03kfjbWTTq8Fatg8fBvDXnHO/AKAHYItz7l8DOOuc2+O9P+2c2wPg3Lgne++fB/A8AGxxCw062ISEhHuNVd8UvPefB/B5AFCm8I+897/snPufAHwawBd0/Mo6zHNF2P1NubccvXEQAHDikz8CAPR7xwAALTbthA8uyqGll21GqzY8PSeRdPrx0cOx1nbOMIvG6snMxBSaqidDW7kmhaMMVY2CHjdUTVqFo+NfvoyZh2t4ftWUhsxBV3E2osiyEXXjhF2prYXgMRvQarWkC27P+l10WGXZUANBxyV+xoZshNUn2OpJbxhHrWrSxhh4WZMuwWQj+ur2HGogTIxhuWzh+LKw3NNLwhTeuibZhpNnhDF03xJtTu+09DzxWkG8FoZA3A2dwhcA/Kxz7jUAP6vHCQkJ9wnWRdHovf8aJMsA7/1FAM+ux+tOAp1qy7feBgDc+Ov7AACDp+T8hYEoG7n9zXW5zOGQsfZAH7MKR8YQSu1C2telNbSXY6zAVFd2gzu07htt9WQWjy4oJvX9bfUkayNqykZTPdmkQ2jqC2FcnauYgslqaBakamGv31tovTaicAz/Hzs+B1h/BatsrIoL5PGwqedc9XyocdDvamhUmdad2TCBJkbhDSNoYha+MSsxXvFY0ysYRaPVK1wbdnBuWSp/T9wQH9ITx4U57PsjVT129bOflpqHYg2ejBZJ0ZiQkBDhvqx9sGjtksqxR/6LRGB/9C7J2R69KV10Xt0iOoaZrjw+49oj2QNd+daocGQtBHPVVDgul6yZiLMbtiFtcGAKSke5btigcGyqnrxT78ZGhSMlB2HfrtmHAeehq/2I90FweKY+gZ4LtgrSotaItoyuD4zC1GPU/BBMlsA6LtXcng1jaPRdCPUhhp0Z5lCvbYgZRN2zMR5HlY6WIcy9Jt/t/EuivYEyA3oyuhYLQNaOxBQSEhIiPBBMYai15K3NEkPY+ydSMfaGVlG+tl1yu1sy8WN4R3sQKiZt+v5OFY6WOeRBhzBe4djRGgibs2a1JZ/PqsuqPwRHsw+vxRRMTOBOFY4hS8FVkeeNwjE4MulqnucAFY1D7eegY9270TAHxh6sY9MdVk1ObEXfcEzUek2ypiEwC2oz4veriJAyAtUt0GujrmgcH1tgHOHt69tw6qyw2+5pYQB7vq5Kxiviq2CzDOymth5ITCEhISHCA8EUeGsvT58FAHQPCUM4dVL2ZS/tklqI93SlJ2WOIXJXqRuBqotUxRxur3AMHa6D0tE4M9H9yTAHWz3ZpHBkN6tcpYlhfxo6JOtHt70nTdVj2A83xRYavBsnKhwDI6liCqDbMWMJ1gHa1EJU+oQivt5kH7x1e6aK0lRNhpW8iSGYsbFr9QSFo81C1PQJoceHqlobYghLhbCAc4vCcM/flPHqlRnkp8Qn4cCfCrttHxNf0uGly3xz3C0kppCQkBDhwWAKBr035a664xt7AADHn5T92aub5fhw+zVspzKR2QZdNgo9rmojbI3DUEf67FGvECsYmVUIikl/hwpH1jDY6km6PtMByTCEsKKbzsy2PwQaYw4mC9EYe2BsQcdhVvWGsB2qB2a/a/UKdAGoMQijcCzisco+sEoSesxxfE2ErY2oKxwbqiZD9WXMluouz+P1C2QIt9SD4sKixL5u9eX46iU53vVCBwP5X3ROCDMoz5zX97p7DIFITCEhISHCA8UUgs+CHnevyF317A2J6i6pdiBDrG4EmmMLZBDB7VmvH6isjo681meh0iMwC7EyhWPFGDQ7YqonaX9Y6RYaFI4N3aadjS2QUTSo/poUjmEM7kSu8lrIY8ZAhaNnG2iiqSt11dQiGgNjaOo1qdkIejEGj4imqkkbUzBjLabQdN4oGJtqILzRIyxrdubKOfl99k7I73Pu1DK6b2gMQdW6WbeHe4XEFBISEiI8UEzB4sZ+WaGuXxOF45uLony8PgfsCjoFMoaVKRytXiEH2Ud8XU8VjsxFD4On/3iFoz0ONRHsaGyqJgMjmNAfolHhOEnpSIagqy8dk0v6ObCvo8Y2fO5DTMGPeiwAVXYhN0yBsIpGM4ZO2TXdgtEzhDnpV2D6QDTqFxpqIZp6SwZHJpiMUAiJxMeF6ftwbUlW/SsXJNvQOSdf7qwkx9B9+Tj8cuxzyZ4n9wKJKSQkJER4sJiCrqZeFY6P/Jm40HSuiV7hrQOiX3h1fgfakGjuQsaVXqP2+lJNCsegV/BUMppshNErBEemCQrHntHFU+lo+0PUFY6WKaxR4djYrZrZD30bxhRGPBxDbQCzDlQ4lnRSUoXjYAJjKM14h1WTtvahep45bxlEjUmQCZgshnV7DvIKE1PQv93SQI6v3BDG2r8pDsz5efnt7ftPwip7J1WteO16qADeCCSmkJCQEOHBYgq6ehfXpRqydUnG7lWJ7r56TjxkX17Yj30tcarZSd28wsYUqGPoGz1DvYOUiT0YBmEVjlYx2ahwDLEFo3AszX52gsKxokCGOay0BoL7ei7+w7rCMfg4st9kR92ZiljhGLIRQ7Z4CsUD0XV1l+c7q5q0K349VqDjBN1CTdFoaiSsToHj4pIwgZIejjdVG3NZPv/MKbmud/qGvM4JUeRuJEsAElNISEgweLCYggF96zZ/Tz7miY8JU/jRgd1476ZjAICntKtv5d8YKxs5dhoUjhni2MLKFY7G9ZnjShWOVDaylr9B4RhiAcGTUYaVKxzt2KB4bLmgC/DWgckqHI2vQq0fRE23YLIMqlcInbPbcVaCVYxNzCDEEvR0U/VkYw2EcV6yDk+8frikX/qSfO7eWTl+5M81hnBG3MjdBfVXXF4/96S1IDGFhISECA80UwhQGeDOb8o98M+u/Rg+/N+8DgAouhLx7epqRmUjGUKTwpHMgEpH+utNUjhmhmnU3Z/jMQ9ejvo6Qdk4QeHIKslWvL/2RqkY1Hu2WpK/DFtNGRiGyT5kbqQegl4LzEbot8duUiGWwKXZ6AAIq1cIS7CphWC3KtVSVH4LGvcICkfGRcZnIRoZRYghxKrRmndjiC3ofBbVtfmCfO7ZU3J65nsqSNCakOG585gmJKaQkJAQ4YFmCiELsVuUjDf3yZ185t2XcaUQDQN9FahsZGxhksKxp0yASsNBeF6scAzOTOrx3/WxnsF2kmqZmohBETOGnC7UymxqHo5Bx2CyD1yNJ2UdTHVl0AAUJpbA64KK0CEzvSFgFY7sh2ndnnl9Uy0EqyLpOmViDFWPSatTIGOIP0PoKs1ff4PCMcRbrKIxZCHiWEK5rFmVvjyxc0mOuyKbwY5vy+/Ra2czv44OzOuJxBQSEhIiPNBMIeCW5H33/L+iHz/67l6og3h77mUAwCFdzagrYF+IO1U4Vn0gYp0CmUWpq+eypgNC1WTwV6AC0mQf+PrFyhSOofdkQzbizt2eZQwdphiTIJPouJCPrzQNZAjc89PDUfsf2r4QFmQOYcUer1eoVU3aLMKk2shHjjQAABI+SURBVAejP8hMHMVeF3gMGcctZXlLqkJdku+mK4WO2PN1YQj5mUsAgOG16/pCd98bYTVITCEhISHCQ8EUinNyy25vlxqIHX+0Da/tFabw6rxoFwqthXhS98iMNdypwjF0pzYdpcgcMnN+2SgcyRB6OfsM0s0njiHQw9F2krL6gaoHpWUM0PHOFI5N/SH80I3NSACAb8f6BKfehMGRaSjfxeTOUaQr+tm8YQhWz1DGMQTLHJp7ScbX15SP+rrZcqyGbd+U413aCbp3Xphpfk5rGu6Bv+J6IDGFhISECA8FUwie+Meku0730Ba8cUqYwvd2PAoAONwRpkBHptKTCcS6hcLGFO5Q4UiGEI6ZZWhQOJJZWH8FdmxqhVqIuCYirJaWITjjwGSVjFavYM/XdAsVc6h5MQTGMEHhSAyM45L1V1BYRsDYg1OF40qrJmvejmZscnu2Csf2Nc1qSekCeuckhpUfl98UuzhlMzO4H5CYQkJCQoSHgilYzL1yEVu+vhsAcPQd2m9ykxy/q30VQJU1KE0tBBWOjC0El+bQrVoZgvFV4Pll1TGEmMIEhaP1cByU8XWTulRbD0cqHG3Fn+0PEfQMhiE06xzciLOziSlYhSOVjTWFo04q9HaMmUCNOdDFaqAxCWomipj+TKyabBjrMQXGEuSwcy0ee5eUBb5+Qp7Wj12sbVenaUViCgkJCRFWzRSccwcA/CsAj0Durc9773/DObcA4PcAHATwFoBf8t5fXvtU1xfda3L7P3ZDekIMFuSryMx9csmz41NDNoLZAlUs0m2nT7dn6gtM34g86Bk0W5GZmEKDwpHHBZlBU5dqFyscrYcjV3gbW6DwMegRYvOkmsKxzJWptAA/MAwhuDrzvennyLiGUTZCV9ZJvSaDwjGLrgsxBePlyKrJjIQkfAYdG6ombVaifSN+HhnCzpdEodi6IPqD8qbEFO6lr+J6Yi1MYQjgH3rv3wXgAwB+xTn3bgCfA/CC9/4wgBf0OCEh4T7BqpmC9/40gNP6/9edc68A2AfgEwA+qpd9EcDXAHx2TbNcJxRXJV7Q2rkd1/fLunDrhjjqvt0X/8aLpewHC923Hi/ET29WqyHbupxopr3qTg3qE2Q5YgxhiZ2ojMKxq27PBbtO0+1Zl+Lg0GRcnvPAEGJFJbtUh+rJwAQsU1iZTqHWH2KC4rHMXbUCd7hnNzEGq3BkTGGg56l4tFWTDdWTQc9g3J1rXo7GmYmKxdJ4L1r9Qq4LfabGyvonQ0vPb7qo7O2iUAh/QRSL9ytDINYlpuCcOwjgxwF8A8BuvWHwxrGr4TnPOededM69OMB0FoYkJDyMWHP2wTk3B+DfAvh73vtrjnf5CfDePw/geQDY4hb8hMvXBa4lq7a/dBn7/vMWAMCFqxJT+OO5dwEArg4ll7xDHZk2Z3LXL8CaBXmNp3pSHH+4LatDWMl9vLI3KRzpwzDQfXW7jB9nTURHN8I9XWWDy7PpJMVVrqqF4EaZ2gAZGrtUT1I4Wpdnq1PIfegNEXwMJikc1d3ZaW/FkIWwzIAISkCzljXpFhqqJmtZiIYYQmAMyhQ6GofqXpULNv9Auzi99obM6j7RIUzCmpiCc64NuSH8jvf+9/X0WefcHn18D4Bza5tiQkLCvcRasg8OwL8A8Ir3/p+NPPRVAJ8G8AUdv7KmGa4jqGwsLl1G65QwhS3zskodfVU6Up9+ROojuDdn7cG2Wa20nJOQ862t6t0/o6uGMopeiCnIir9k+kOsWuGo++eOboj7+jpW6UiFI2slWC1ZlA0MYZLCcaXnszF1EU0KR8YWyBgGJgtRhE1/PFoPR9sX4k6rJhuUi5YhtG/KiU0XleWpYtGfide7+0WHMAlr2T58GMB/C+D7zrm/0HP/A+Rm8CXn3GcAHAPwybVNMSEh4V5iLdmH/4IqtWvx7Gpf917BX5MVf+aorPiHf0f2g8PZLgCg6MmqdPFdqje4JL0jvvNhiUEMn5DH53NZHQ53Rd8+m0ssoknhaM+vVOEYfBY0BlHrUm06SbXUrtkHt2e7iuufTnUGwX+Q+3ITW7DGEuN8GEL3qMAITPaBfSGCj2SDwtEoFsMY9AlG+WgdmNh9Wr0cgzuUyTJYxsDsArMN7UVlbzfkwtkjaqF0VX47xeL9nWVoQlI0JiQkRHgoax8AiSsAAHTMF7bJSL267m9nX9KI8oz0AVza/ggA4Ic9iUG8Z14qLx/rqGeDIxPQrANrJazfgme24c4Ujtbt2Socc1P7MAzZCDICo1vgql7Gqzf1CM7EEILSkdv8EXdn6yRd9Z9k3CL2cPTsFKXeEUHhCFMLYZeu4K9gdAl0edZqS8fYhc1GGMaQL/N19LMp02jf1L/lFf1NkCFoP5FQffuAITGFhISECA8tU7AIzMEg075+2VbJSuz+tjCKi4vCHI4fkuPzPclmPNkWxhDcnjXswqyDVThmLo4psJNU0DuYTlO212Tf9okIPSipHowVjowCWaXjinUK1u15RPFoe0KUpk6CsQXu8fPQtZn+CsZngW2siAl9ISxzCDUQNacl/a5UM0d+QiaRL8oTZl6XGILvygcpr6ty8QFlCERiCgkJCRESU5iAsi+h6FK7+LSviO/C9YOStTi3KLUT+QJjArLaXNFl8kopMYk2xns4MgsRaiF0KV8qySBUyRhiCqZqUseC/oamk5RVOHJfHzokh6rKtXs4Mh5RtoxOgArH3MQUjN+CM27PNWemploI67dQjo85OOPdyM+e9zWGcF3et3VdKIQ/ez56nY3uBn2vkJhCQkJChMQUVojWTnFowmXZV7avSwzhnFZZfv/WAQCjOgRhBBcLeZzKSMYOFlr6Oi7uGDUwNRC2apKKxtK4PQ+Dr4JmIVgRGJyZdLUznaRqnaNcfLrJw3Fcl+pxlZOj711TONKRSZWNntmDUAthlI1EUycp65xUxgyBMQV2q84GyhSWNNOjDCE7KQyBXaBDxuYhQWIKCQkJERJTWCGGWitPHcO+/yT+C2/ulqzE/z14NwDgu9v2Aqj6NnDP3zEdoHZ1Rfk435J96tWhZDMWtSfCUJfkWQ2RU//ATlI3hqK8bOpSnQe3Z7m+YGcprY3wRRxDqHWQoh6BCQAXjzUvx6zOEEKnKKNwLOnVGGILMWNwoRbCrFmMNTBbUcRiChcmwM8YM4XWUpzN4Pn8lvxNsxNSy1Bqr0fGkx42JKaQkJAQITGFlUKj+3Rv6h4VPcKWI/sAAIuXJcZw5YjUSFx4H/fsMswdlfvv0gdkFep1ZXXqtNWRiYyiJcd99RroteS6+a7o7Mk4Li5qrYaujsMij64fBuYQ74drsQXrsxBqIfR8rb8DGsfGx4zCsTaGGokGD8dhg16h0XdBP4u6PIeVj9kPHp4W9oeusK7AEB7QmoaVIjGFhISECIkprBaas973B1L7wAq/ckb0C1uPSGygdVlWn1uPU/k4CwBYEkKBWx3m1mWgYnDzUVnVzvyERsRbZTwaBjDUfXi7q05NHWEM/YG8YH+ZTR91YCepoGOIqyYxbGAGJgsRVItlxS5QmOcYnwXYKkrGN4KOwXg4KoOoOTOxarJljsk0mLVQAaJb1BoLzXJ4ZQb0VgzPf8iRmEJCQkKExBRWieFZiVTny+KvwP0odfHBr29Wxhndpz52RL5yv0kYhe/JWKq+fjijOntdRYebZL87/6asYhfeG3sycqXe+raMl5+WB5ZbNqsgh057MzhlAujqqkkVYj+Lrwu2iON9FgJjyKtMhWUI7A1R+RognoPpExEUjqFvhLHtsLoFMghmIYo4O+EKpQoDvU71B+W1G9HLPOg1DStFYgoJCQkRElNYI4orV8aep1+f9e3L50XXUN7U87oRz5VZtNS3AT1hCI++QUYhMYrNR5VJdGSJLnrKPHQVHmhMY/4tWSUvvVMdk8ks2vEYNAKhVFBH41NoYx4Euy5xlNc0I9lEO9YvhAZPZAZB16AKx9AnwtRAhGyEMX2w/SLC9TI5f1W0IX4gjMBT5+BTLGEU6aZwj8GUZu38dfnBgqMin1OZtAY2aVOfb+oBAFpduQlAx/3H5LzvyJ929pgGQPWmwnTf1cfluuEmpfjBnj2e1ziRElBVIQdN07AqRQ4t2w0PrSzX9fEQaLQWcRzp76bX0QCH/8gpLlpUKfjmufh5BK9f0m0Dn5duBmORtg8JCQkRElOYchQ3TDCMlLehNVkIcDL41pI/ca7bEdcWSrB1KHZyrQtqHNKJbdbLXtzC7cYBed2iS6quQ1Gt/qGYymqKgs2ZznEYm5mEy8gc7DagjIOcpa74/C7IQMor16LrAmg1x0BiYgi3RWIKCQkJERJTeMBQa0ii+2e3HK+uOffXS/Qki5u/Zh1hFE6ZxlwhhrX5JY15KKPo7xF5d/vyYljZlx8RZVZIQYaSZS2NJrvgsVm4eT4UNl2ROAzTvpUGWx8fmuNQWs3cZxYfJ9wWiSkkJCRESEzhIUGIRShKjVXY80Roxqv78PyWZD9KFQDROq19+qw8Ic/hNG7Ru3g1nANQZQ+2CoNw1+J0rJ+XrEFoYdfX92Brd2U7k8RFTZ8lMYQ7Q2IKCQkJERJTeEjRuKrycbMqF0ZsBQ1FcL+etVtBg5F1RQMRsgDMJrDwKBQ86c9PrdMzfS1PBqG6BL/MN0u4F0hMISEhIUJiCgkrQ9O+XM+PWpeVDRoKR/kyGcFQGALjF+FxZTFkK84qFBPuKhJTSEhIiHDXbgrOuZ9zzh1xzr3unPvc3XqfhPsHvijkv+EgilnwuFxeQrm8VH9cn5dwb3BXbgpO2hT9rwB+HsC7AfwN59y778Z7JSQkrC/uFlN4P4DXvfdveu/7AP4NgE/cpfdKSEhYR9ytm8I+AMdHjk/ouYSEhCnH3co+uDHnoto559xzAJ7Tw+U/9V9++S7NZT2wA8CFjZ5EA6Z5bsB0z2+a5was//weW8lFd+umcALAgZHj/QBOjV7gvX8ewPMA4Jx70Xv/zF2ay5oxzfOb5rkB0z2/aZ4bsHHzu1vbh28BOOycO+Sc6wD4FICv3qX3SkhIWEfcFabgvR865/42gD8CkAP4Le/9D+7GeyUkJKwv7pqi0Xv/7wD8uxVe/vzdmsc6YZrnN81zA6Z7ftM8N2CD5ud8Uz++hISEhxJJ5pyQkBBhw28K0ySHds4dcM79R+fcK865HzjnflXPLzjn/sQ595qO2zZwjrlz7jvOuT+cwrltdc592Tn3qn6HH5yy+f19/bu+7Jz7XedcbyPn55z7LefcOefcyyPnGufjnPu8/js54pz7+N2a14beFKZQDj0E8A+99+8C8AEAv6Lz+RyAF7z3hwG8oMcbhV8F8MrI8TTN7TcA/Hvv/TsBvBcyz6mYn3NuH4C/C+AZ7/3TkAD4pzZ4fr8N4OfMubHz0d/hpwC8R5/zv+m/n/WH937D/gPwQQB/NHL8eQCf38g5mfl9BcDPAjgCYI+e2wPgyAbNZ7/+UH4GwB/quWmZ2xYAR6FxqpHz0zI/qmwXIAH2PwTwVzd6fgAOAnh50vdl/21AMnsfvBtz2ujtw9TKoZ1zBwH8OIBvANjtvT8NADru2qBp/XMA/xihiRuA6Znb4wDOA/iXur35Tefc7LTMz3t/EsA/BXAMwGkAV733fzwt8xtB03zu2b+Vjb4pTJRDbwScc3MA/i2Av+e9v7bR8wEA59wvAjjnvf/2Rs+lAS0A7wPwv3vvfxzATWzsViaC7s0/AeAQgL0AZp1zv7yxs7oj3LN/Kxt9U5goh77XcM61ITeE3/He/76ePuuc26OP7wFwbgOm9mEAf8059xak6vRnnHP/ekrmBsjf8oT3/ht6/GXITWJa5vcxAEe99+e99wMAvw/gQ1M0P6JpPvfs38pG3xSmSg7tnHMA/gWAV7z3/2zkoa8C+LT+/6chsYZ7Cu/95733+733ByHf03/w3v/yNMxN53cGwHHn3FN66lkAP8SUzA+ybfiAc25G/87PQgKh0zI/omk+XwXwKedc1zl3CMBhAN+8KzPYiKCPCbT8AoAfAXgDwD/Z4Ln8VxBK9j0Af6H//QKA7ZAA32s6LmzwPD+KKtA4NXMD8JcBvKjf3/8FYNuUze9/BPAqgJcB/B8Auhs5PwC/C4lvDCBM4DO3mw+Af6L/To4A+Pm7Na+kaExISIiw0duHhISEKUO6KSQkJERIN4WEhIQI6aaQkJAQId0UEhISIqSbQkJCQoR0U0hISIiQbgoJCQkR/n/3eedLrblX6QAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAsEElEQVR4nO3de3zTVZ7/8XegEFooFUGbVi5WqIrcHAGxFW0VKAuCF1ZXB1S8jgqMdqqLU3GHsIstiyPCLhdhUMRVrOsOoiPK0IfaIoM4BUGx6zK4lMsMlA4O0nKxpc35/eGPrLEtEGhPTsvr+Xh8Hw9zvifJJ6cxefPNN/l4jDFGAAAAlrSIdAEAAODsQvgAAABWET4AAIBVhA8AAGAV4QMAAFhF+AAAAFYRPgAAgFWEDwAAYBXhAwAAWEX4QLP38ssvy+PxaMOGDXXuHzVqlC688MKQsQsvvFAej6fOLT09PWTup59+qltuuUVdu3aV1+tVfHy8UlJS9Pjjj4fMO3bsmBYuXKiBAwfq3HPPVUxMjLp166abbrpJb7311ik9Fo/Ho0mTJgUv79ixQx6PR7/+9a9P6fqnyhijvLw8XXPNNTr//PPVpk0bde7cWcOHD9fixYtP6/79fr88Hk/IWFVVlR5++GElJCSoZcuWuvzyy7Vnzx75/X5t3rz5lG6jMaSnp8vj8eiiiy5SXT8CvWbNmuDz4eWXX270eoDmJirSBQCuuvrqq+t8U23fvn3wv1euXKkbb7xR6enpmjlzphISErR3715t2LBBeXl5eu6554Jz77rrLi1fvlyZmZmaNm2avF6vtm/frlWrVun3v/+9brnlFiuP61RkZ2frX//1X/Xggw/qH//xHxUbG6udO3fqww8/1Ntvv60HHngg7Nt84IEH9Hd/93chYwsWLNDChQv17//+7+rfv7/atWunPXv2aNq0abrwwgt1+eWXn/Q2GktsbKxKSkr04YcfasiQISH7XnrpJbVv317l5eVWagGaG8IHUI9zzjlHV1111QnnzJw5U0lJSfr973+vqKj/+9/pjjvu0MyZM4OXS0pK9MYbb+hXv/qVpk2bFhwfMmSIHnzwQQUCgYZ/AKfp6NGjmj17tu6++24tWrQoZN8999xz2rV27txZnTt3Dhn78ssvFR0dHXI0p74jVPXdRmPp2rWrYmNj9dJLL4WEj4qKCr355psaN26cfvOb31ipxYYjR44oJiYm0mXgLMHHLsAZ+Oabb9SpU6eQ4HFcixYtQuZJUkJCQp2388O5kXb48GFVVlaGXeusWbOUlJSkdu3aKSUlRevXrw/Z/+OPTDwejxYvXqyjR4+GfIQxcOBASdK9994bHPf7/XXehvT9R2SjRo3SqlWrdMUVVyg6OlqXXnqpXnrppVo1rl27VikpKWrTpo0uuOAC/dM//ZMWL14sj8ejHTt21Jp/3333afny5fr222+DY3l5eZK+D5g/9vXXX+vee+9VcnKyYmJidMEFF2j06NHasmVLyLyCggJ5PB69+uqrysrKks/nU3R0tNLS0rRp06aQuffcc4/atWun4uJiDRkyRG3bttV5552nSZMm6ciRIyFzjTGaP3++Lr/8ckVHR6tDhw669dZbtX379pB56enp6t27t9asWaPU1FTFxMTovvvuq/V4gMbizise0MhqampUXV1da6uvsbMx5qTzU1JS9Omnn+rRRx/Vp59+qmPHjtV5Wz179tQ555yjadOmadGiRXW+0bmiU6dO6tGjh+bPn69Zs2bpf/7nf+pdo+PmzZun/Px8zZ49W6+99poOHz6skSNH6uDBg/Ve55NPPtHIkSMVHR2tTz75RJ988omuu+46LVmyRJL09NNPB8dP9jHP559/rscff1y/+MUv9Pbbb6tv3766//77tWbNmuCcL774QsOGDdORI0e0dOlSvfDCC/rss8/0zDPP1Hu7d9xxh1q2bKnXX389OPbiiy/q1ltvDfn47bg9e/aoY8eOmjFjhlatWqV58+YpKipKgwYN0tatW2vNf+qpp7R9+3YtXrxYixcv1p49e5Senl4rLBw7dkwjR47UkCFDtGLFCk2aNEkLFy7U7bffHjLvoYceUmZmpoYOHaoVK1Zo/vz5Ki4uVmpqqvbt2xcyd+/evbrzzjs1duxYvffee5owYcIJ1xhoUAZo5pYsWWIknXDr1q1byHW6detW79x/+Zd/Cc7bv3+/GTx4cHBfq1atTGpqqsnNzTUVFRUht7ly5UrTqVOn4NyOHTua2267zbzzzjun/FgkmYkTJwYvl5SUGEnm2WefPb3Fqccf//hH07Vr12CtsbGxZtSoUeaVV14xgUCg1v336dPHVFdXh1xfknn99deDY1OnTjU/fskZP368adu2bchYUVGRkWSWLFlSq666bqNbt26mTZs2ZufOncGxo0ePmnPPPdc89NBDwbHbbrvNtG3b1vz1r38NjtXU1JjLLrvMSDIlJSXB8bS0NNOrV69gjQMGDDDGGFNcXGwkmYKCghPWeVx1dbWpqqoyycnJ5he/+EVw/KOPPjKSzBVXXBGynjt27DCtWrUyDzzwQMgaSTJz5swJue1nnnnGSDJr1641xhjzySefGEnmueeeC5m3e/duEx0dbSZPnhzy+CSZDz74oN7agcbEkQ+cNV555RUVFRXV2gYPHlzn/MGDB9c5//777w/O6dixoz7++GMVFRVpxowZuummm/SnP/1J2dnZ6tOnj/bv3x+cO3LkSO3atUtvvfWWnnjiCfXq1UsrVqzQjTfeGHLOw4+P0DTE+SDh3ubAgQP19ddfa9WqVXrqqaeUkpKiDz74QHfffbduvPHGWkdCbrjhBrVs2TJ4uW/fvpKknTt3nnHtp+Lyyy9X165dg5fbtGmjiy++OOT+CwsLdf3116tTp07BsRYtWugf/uEfTnjb9913nzZs2KAtW7boxRdfVPfu3XXttdfWObe6ulo5OTm67LLL1Lp1a0VFRal169batm2bvvrqq1rzx44dG/IxUrdu3ZSamqqPPvqo1txx48bVuq6k4Nx3331XHo9Hd955Z8jf2ufzqV+/fiooKAi5focOHXT99def8LEDjYUTTnHW6NmzpwYMGFBrPC4uTrt3765zvK75dRkwYEBw7rFjx/Tkk0/q+eef18yZM0NOPI2OjtbNN9+sm2++WZK0a9cujRgxQvPmzdMjjzyiXr16qXv37iFvmlOnTg2e83C6hgwZosLCwuDl8ePHn/Qroq1atdLw4cM1fPhwSd+ft3Lrrbfq3Xff1fvvv6+RI0cG53bs2DHkul6vV9L3J6/a8OP7P17DD+//m2++UXx8fK15dY390LXXXqvk5GQtXLhQ//mf/6nMzMx6v+6blZWlefPm6cknn1RaWpo6dOigFi1a6IEHHqhzLXw+X51jn3/+echYVFRUrcd4/LrHzyfat2+fjDH1Pp6LLroo5HJ95/QANhA+gAbWqlUrTZ06Vc8//7y+/PLLE87t2rWrfvaznykzM1PFxcXq1auXfve736mysjI4JzEx8YxrWrhwoSoqKoKXf/iv/1PVsWNHZWZmqqCgQF9++WVI+GgKOnbsWOu8B0kqLS096XXvvfdePf300/J4PBo/fny981599VXdfffdysnJCRnfv3+/zjnnnFO679LS0lpBo7q6Wt98803I+PHrHh/r1KmTPB6PPv7442D4+6Efj9n4vRSgPoQP4Azs3bu3zn9BHj/Efjw4VFRUyOPxqF27died26dPnwav85JLLjnluceOHVN5eXmdRxN+XGtjaKyjJmlpaXrvvfe0f//+YPgKBAJ68803T3rd8ePH69NPP1XPnj11wQUX1DvP4/HUepNfuXKl/vKXv6hHjx615r/++uvKysoKBoGdO3dq3bp1uvvuu2vNfe211/Too48GLy9btkySgj96N2rUKM2YMUN/+ctfTvpREhBphA+gHt9++22tr4tK3785/uQnP5EkDR8+XJ07d9bo0aN16aWXKhAIaPPmzXruuefUrl07PfbYY5KkrVu3avjw4brjjjuUlpamhIQEHThwQCtXrtSiRYuUnp6u1NRUq4+vPgcPHtSFF16o2267TUOHDlWXLl106NAhFRQUaM6cOerZs6fGjBnTaPffvXt3RUdH67XXXlPPnj3Vrl07JSYmnnHgmTJlin73u99pyJAhmjJliqKjo/XCCy/o8OHDkk78defExEStWLHipPcxatQovfzyy7r00kvVt29fbdy4Uc8++2y9v01SVlamW265RQ8++KAOHjyoqVOnqk2bNsrOzg6Z17p1az333HM6dOiQBg4cqHXr1mn69OkaMWJE8Jylq6++Wj/72c907733asOGDbr22mvVtm1b7d27V2vXrlWfPn30yCOPnOJqAY2L8AHU4w9/+INSUlJqjV9wwQX685//LOn7r4O+/fbbev7557V3797g72MMHTpU2dnZ6tmzpySpR48eysrKCv5C6F//+le1atVKycnJmj59urKyspz5rY/27dtr2rRp+uCDD/TUU09p37598ng8SkpKUmZmpp588slG/TGqmJgYvfTSS5o2bZoyMjJ07NixBjnvpV+/fsrPz9cTTzyhu+++Wx06dNBdd92ltLQ0Pfnkk4qLizvj2ufMmaNWrVopNzdXhw4d0hVXXKHly5fr6aefrnN+Tk6OioqKdO+996q8vFxXXnml8vLy1L1795B5rVq10rvvvqtHH31U06dPV3R0tB588EE9++yzIfMWLlyoq666SgsXLtT8+fMVCASUmJioq6++WldeeeUZPz6goXjMj09bB4CzSEZG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tLGnq3W522030hXUzdkuwJKqDx6MdAk4CY58AAAAqwgfAADAKsIHAACwivABAACsInwAAACrCB8AAMAqwgcAALCK8AEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArCJ8AAAAq+hqixABudmhVXK3q62r3VCpKzyudo91db3kcFdbuI8jHwAAwCrCBwAAsIrwAQAArCJ8AAAAqwgfAADAKsIHAACwivABAACsInwAAACrCB8AAMAqwgcAALCK8AEAAKwifAAAAKsIHwAAwCq62iLEH/q2jnQJ9YoqcLOrrXG1266rXG2G6mhdHke7x1Zv/TrSJaAJ48gHAACwivABAACsInwAAACrCB8AAMAqwgcAALCK8AEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArCJ8AAAAqwgfAADAKsIHAACwivABAACsiop0AcCpCjjaut7RjufyUFdYXK1LgUgXADQ8jnwAAACrCB8AAMAqwgcAALCK8AEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArGq08DF//nwlJSWpTZs26t+/vz7++OPGuisAANCENEr4eOONN5SZmakpU6Zo06ZNuuaaazRixAjt2rWrMe4OAAA0IY0SPmbNmqX7779fDzzwgHr27KnZs2erS5cuWrBgQWPcHQAAaEIavLdLVVWVNm7cqF/+8pch4xkZGVq3bl2t+ZWVlaqsrAxePnjwoCSpWsckV3stICJaHK48+aQICBz5LtIl1CnwnZu9cGoq3TzVrKbKzRec6uqqSJdQJ2OORboEOKZa3z8nzCk0vGrw8LF//37V1NQoPj4+ZDw+Pl6lpaW15ufm5mratGm1xtfqvYYuDU3dDZEuAABwMhUVFYqLizvhnEbrauvxhP6ryxhTa0ySsrOzlZWVFbz87bffqlu3btq1a9dJi0fDKy8vV5cuXbR79261b98+0uWcVVj7yGL9I4e1j5yGXHtjjCoqKpSYmHjSuQ0ePjp16qSWLVvWOspRVlZW62iIJHm9Xnm93lrjcXFxPAkjqH379qx/hLD2kcX6Rw5rHzkNtfanetCgwT98bd26tfr376/8/PyQ8fz8fKWmpjb03QEAgCamUT52ycrK0l133aUBAwYoJSVFixYt0q5du/Twww83xt0BAIAmpFHCx+23365vvvlG//zP/6y9e/eqd+/eeu+999StW7eT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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "LSTCam: image_shifting\n", - "84.7 µs ± 2.08 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "LSTCam - BilinearMapper:\n", + "Initialization time: \n", + "173 ms ± 1.63 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "40.9 µs ± 393 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGxCAYAAABIjE2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABp0klEQVR4nO3de3hU1b0//s+e+0wymZAACeEaFBRBBNGqaAtWxVatrZwjbdVKre0Xi1guWi/V1uhRsPRXDufYqtWfgk+Ro8evaNXaHkAt1mKrIiiCxQsRUYnhknsyl733+v5hmdN1gVmz2CE74f16Hp/HvVmz9m1msmZ91mctizHGCAAAAMBHAj19AgAAAAAiNFAAAADAd9BAAQAAAN9BAwUAAAB8Bw0UAAAA8B00UAAAAMB30EABAAAA30EDBQAAAHwHDRQAAADwHTRQ4Ii0fPlysiyLXn/99YOW27lzJ82ePZtGjx5N8XicKioq6Pjjj6cf/OAHtHPnTvrwww/Jsiyt/z788EMiItq+fTvNmTMnX2cikaCxY8fSLbfcQp988slhuHrv1dXVcdcaCARo0KBBdN5559Ff/vIXruz+e7Z8+fL8vv3PY/89IiL67ne/SyNGjDg8F3CI9l/3d7/7XeW/33777dL7AAAOLtTTJwDgVx9//DGdeOKJVF5eTtdeey0dc8wx1NLSQlu3bqX//u//pu3bt9Opp55Kr7zyCve62bNnU0tLCz3yyCPc/kGDBtGzzz5L3/rWt6h///40Z84cmjhxIlmWRZs3b6aHHnqIfv/739PGjRsP52V66o9//COlUilyXZc++ugjWrx4MU2dOpX+9re/0YknnkhEn9+HV155hY466qiD1vXTn/6U5s6dezhO2xPJZJIef/xxuvvuuymZTOb3M8Zo+fLlVFZWRq2trT14hgC9DAM4Ai1btowREXvttdcOWOZnP/sZIyK2fft25b87jqPcP2XKFDZ27Fhp//bt21lJSQmbOHEia25ulv7ddV32xBNPaF6Bv9x6662MiNju3bu5/R988AEjInbTTTcd9PX7n0d9fX03nqW3XNdlnZ2djDHGiIhddtllLB6Ps/vvv58rt3btWkZE7Ac/+EGvu8YD+edrB+guCPEAHMDevXspEAjQwIEDlf8eCBT38VmyZAl1dHTQPffcQ6lUSvp3y7Jo+vTp+e01a9bQ17/+dRoyZAjFYjE6+uijadasWbRnzx7udfvDK2+99RZdfPHFlEqlqKKighYsWEC2bdO2bdvoK1/5CiWTSRoxYgQtXry4qPM+FPuvMxwO5/epQjwqqhCPZVk0Z84c+u1vf0tjxoyhRCJBJ5xwAj377LPS69977z265JJLaODAgRSNRmnMmDH061//miuTTqfp2muvpQkTJuTv22mnnUa/+93vpPr2H/u+++6jMWPGUDQapYcffpi71osuuogeeugh7nUPPfQQnX766TR69GipzmKf8caNG2n69OlUVlZGqVSKLrvsMtq9ezdXdsSIEXTBBRfQk08+SePHj6dYLEYjR46k//zP/5SO39raStdddx3V1tZSJBKhwYMH07x586ijo6OoawfoDgjxABzAaaedRr/+9a9p+vTptGDBAjrttNOorKzMuL7Vq1dTVVUVnXrqqVrlP/jgAzrttNPo+9//PqVSKfrwww9pyZIldMYZZ9DmzZu5P/pERDNmzKDLLruMZs2aRWvWrKHFixdTLpejtWvX0uzZs+m6666jlStX0g033EBHH3001xjyiuM4ZNt2PsRzyy23UDQapX/913/17Bi///3v6bXXXqPbb7+dSktLafHixXTRRRfRtm3baOTIkUREtHXrVpo8eTINGzaMfvnLX1J1dTX9z//8D/3oRz+iPXv20K233kpERJlMhvbt20fXXXcdDR48mLLZLK1du5amT59Oy5Yto8svv5w79lNPPUV//vOf6Wc/+xlVV1dLjdcrr7ySzjrrLHrnnXdozJgx1NzcTKtWraJ77rmH9u7dK11Lsc/4oosuohkzZtBVV11FW7ZsoZ/+9Ke0detW+tvf/saV3bRpE82bN4/q6uqourqaHnnkEZo7dy5ls1m67rrriIios7OTpkyZQh9//DH95Cc/ofHjx9OWLVvoZz/7GW3evJnWrl1LlmVpXzuA53q6CwegJ+iEeFzXZbNmzWKBQIAREbMsi40ZM4bNnz//oN30BwrxxGIxduqppxqdr+u6LJfLsR07djAiYr/73e/y/7Y/vPLLX/6Se82ECRMYEbFVq1bl9+VyOTZgwAA2ffp0o/M4kP3nIP5XVlbGHZ8xxurr6xkRsWXLluX3qUI8M2fOZMOHD+deS0SsqqqKtba25vc1NDSwQCDAFi1alN937rnnsiFDhrCWlhbu9XPmzGGxWIzt27dPeR22bbNcLseuvPJKNnHiROnYqVRK+VoiYldffTVzXZfV1tay6667jjHG2K9//WtWWlrK2tra2C9+8YuDhnh0nvH8+fO51zzyyCOMiNiKFSvy+4YPH84sy2KbNm3iyp5zzjmsrKyMdXR0MMYYW7RoEQsEAtJn4P/+3//LiIg999xzWtcO0F0Q4gE4AMuy6L777qPt27fTPffcQ1dccQXlcjn693//dxo7diytW7euW4/f2NhIV111FQ0dOpRCoRCFw2EaPnw4ERG98847UvkLLriA2x4zZgxZlkVf/epX8/tCoRAdffTRtGPHjoMe23Vdsm07/5/jOFrnvHbtWnrttdfo1VdfpWeffZbOPvts+ta3vkVPPvmk1ut1nHnmmdwg1KqqKho4cGD+mtLpND3//PN00UUXUSKR4K7jvPPOo3Q6TX/961/zr3/88cfp9NNPp9LS0vx9fvDBB5X3+Mtf/jL169fvgOe2P5Pnt7/9Ldm2TQ8++CDNmDGDSktLleWLfcaXXnoptz1jxgwKhUL04osvcvvHjh1LJ5xwArfvkksuodbWVnrjjTeIiOjZZ5+lcePG0YQJE7h7dO6555JlWfSnP/2pqGsH8BoaKAAFDB8+nH74wx/Sgw8+SO+99x499thjlE6n6cc//nFR9QwbNozq6+u1yrquS9OmTaNVq1bR9ddfT88//zy9+uqr+T+sXV1d0msqKiq47UgkQolEgmKxmLQ/nU4f9Pjf+973KBwO5/8766yztM77hBNOoJNOOolOPvlkOv/88+nxxx+no48+mq6++mqt1+uorKyU9kWj0fw92bt3L9m2TXfffTd3DeFwmM477zwiovwYj1WrVtGMGTNo8ODBtGLFCnrllVfotddeo+9973vKezRo0KCC53fFFVfQ7t27aeHChfTGG2/QlVdeqSxn8oyrq6u57VAoRJWVlVL4SCz3z/v2l/3ss8/orbfeku5RMpkkxpg0Dkbn2gG8hDEoAEWaMWMGLVq0iN5+++2iXnfuuefS3XffTX/9618LjkN5++236c0336Tly5fTzJkz8/vff/99o3MuVl1dHc2ZMye//c89FsUIBAI0duxYevzxx6mxsfGwjFvo168fBYNB+s53vnPAhlFtbS0REa1YsYJqa2vpscce48ZbZDIZ5ev+ucyBDB06lM4++2y67bbb6JhjjqHJkycry5k844aGBho8eHB+27Zt2rt3r9Roa2hoUL6W6H8beP3796d4PC4N6t2vf//+3LbOtQN4CQ0UgAPYtWuX8ldje3s77dy5k2pqaoqqb/78+fTQQw/R7Nmz6cUXX5QyeRhj9NRTT9FFF12U/2MQjUa5Mr/5zW+KvAozI0aM8GSSNMdxaPPmzRSNRg9pgHExEokEnXnmmbRx40YaP348RSKRA5a1LIsikQj3x7ehoUGZxVOMa6+9luLxOF188cUHPTZRcc/4kUceoUmTJuW3//u//5ts26apU6dy5bZs2UJvvvkmF+ZZuXIlJZPJ/Hw0F1xwAS1cuJAqKyvzDTYAP0EDBY5oL7zwgnJmz/POO4/uvPNO+stf/kLf/OY3acKECRSPx6m+vp5+9atf0d69e+kXv/hFUceqra2lRx99NF/f/onaiD7POnnooYeIMUYXXXQRHXvssXTUUUfRjTfeSIwxqqiooGeeeYbWrFnjxWV3mw0bNuQbXp999hk99NBD9Pe//53mz58vhZq603/8x3/QGWecQV/84hfphz/8IY0YMYLa2tro/fffp2eeeYZeeOEFIvr8j/SqVato9uzZ9K//+q+0c+dO+rd/+zcaNGgQvffee8bHnzZtGk2bNu2gZUye8apVqygUCtE555yTz+I54YQTaMaMGVy5mpoauvDCC6muro4GDRpEK1asoDVr1tDPf/5zSiQSREQ0b948euKJJ+hLX/oSzZ8/n8aPH5/Pvlq9ejVde+21dMoppxjfA4BDhQYKHNFuuOEG5f76+nr6zne+Q0REjz76KP3iF7+glpYWqqiooEmTJtFzzz3HDT7VdcEFF9DmzZvpl7/8Jd133320c+dOCgQCVFtbS1/5ylfommuuIaLP5w155plnaO7cuTRr1iwKhUJ09tln09q1a2nYsGHmF9zNvvKVr+T/v6KigkaNGkUPPfQQF8I4HI477jh644036N/+7d/olltuocbGRiovL6dRo0blx6EQfT5epLGxke677z566KGHaOTIkXTjjTfSxx9/TLfddlu3nqPJM161ahXV1dXRvffeS5Zl0de+9jVaunSp1Es0YcIEuuKKK+jWW2+l9957j2pqamjJkiU0f/78fJmSkhL685//THfddRfdf//9VF9fT/F4nIYNG0Znn312r1lmAPouizHGevokAADgwOrq6ui2226j3bt3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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "LSTCam: axial_addressing\n", - "83.5 µs ± 228 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "FlashCam - BilinearMapper:\n", + "Initialization time: \n", + "171 ms ± 300 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "40.8 µs ± 437 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGxCAYAAABIjE2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABmcklEQVR4nO3de3hVxbk/8Hftay4kgSSQC9eAoSCoICAVULAqVkVtqdWKVrz1aFEPSL1RWolWQ7U9HNrTHj0oihURtcVLbc8RWhFr0YIgFBBB5X6J4ZZ7snf23vP7gx+7zjtD1mSxNlkJ38/z8Dyuyaz73nEy77wzlhBCEAAAAICH+Nr6AgAAAAA4NFAAAADAc9BAAQAAAM9BAwUAAAA8Bw0UAAAA8Bw0UAAAAMBz0EABAAAAz0EDBQAAADwHDRQAAADwHDRQoMNasGABWZal/Xfvvfcm6/Xp04duuummlFzDu+++S5Zl0e9//3vjff74xz/SFVdcQQUFBRQKhSg3N5cuvPBCevHFF6m5uTkl15lqffr0kZ5/WloanXbaaTR9+nQ6ePCgVLesrIwsy5LKxo0bR+PGjZPKLMuisrKyFF/5ifvq5/Ddd99Vfi6EoNNOO40sy1LuEeBUFmjrCwBIteeee44GDBgglRUXF7fR1RyfEIJuueUWWrBgAV122WU0Z84c6tmzJ1VXV9Py5ctpypQpdPDgQZo6dWpbX6ojo0ePpl/+8pdERNTY2EgfffQRlZWV0XvvvUcfffRRst5tt91G3/zmN22P98EHH1CPHj1Sdr1uy8rKovnz5yuNkBUrVtAXX3xBWVlZbXNhAB6FBgp0eIMHD6bhw4e39WXY+sUvfkELFiyghx9+mB566CHpZ1dccQXdf//99Pnnn7fR1Z24zp0709e//vXk9gUXXEC1tbX0s5/9jLZu3Ur9+/cnIqIePXoYNTy+eiwvamxspLS0tOT2tddeSy+++CL99re/pezs7GT5/Pnz6dxzz6Wampq2uMyUOHbvvCcMoDUQ4gFgmpqa6Ec/+hENGTKEcnJyKDc3l84991x64403lLqvvvoqjRw5knJycigjI4P69u1Lt9xyi1KvubmZZs6cScXFxZSdnU0XXXQRbdmyRfr5448/TgMGDKCf/vSn2usqLCykMWPGJLcffvhhGjlyJOXm5lJ2djadffbZNH/+fOLrf/bp04cmTJhAb731Fg0dOpTS09Np4MCB9NZbbxHR0RDEwIEDKTMzk8455xypNyPVcnJyiIgoGAwmy3QhHh0e4jkWSlm+fDn98Ic/pPz8fMrLy6OJEyfSvn37lP1ffvllOvfccykzM5M6depEl1xyCX388cdSnY8++oi+973vUZ8+fSg9PZ369OlD1113He3cuVOqd+zcS5cupVtuuYW6du1KGRkZFIlEknWuu+46IiJ66aWXkmXV1dX0hz/8QfuZIWr9O37ttdfozDPPpLS0NOrbty/9+te/luodCzkuXLiQpk+fToWFhZSenk5jx45V7v3Y/V955ZWUm5tLaWlpNHToUHrllVdafe8ATqCBAh1ePB6nWCwm/WtJJBKhw4cP07333kuvv/46vfTSSzRmzBiaOHEi/e53v0vW++CDD+jaa6+lvn370uLFi+lPf/oTPfTQQ9rj//jHP6adO3fSM888Q/PmzaPPPvuMrrjiCorH40R09H8Ehw8fpquuusr4r84dO3bQ7bffTq+88gotWbKEJk6cSHfffTf97Gc/U+quX7+eZsyYQQ888AAtWbKEcnJyaOLEiTRr1ix65plnqLy8nF588UWqrq6mCRMmUGNjo9E1tIYQIvn86+rqaPny5TR37lwaPXo0lZSUuHae2267jYLBIC1atIieeOIJevfdd+mGG26Q6pSXl9N1111Hp59+Or3yyiv0wgsvUG1tLZ133nn0ySefJOvt2LGDvva1r9HcuXPp7bffpscff5z2799PI0aMUMbOEBHdcsstFAwG6YUXXqDf//73UsMrOzubrr76anr22WeTZS+99BL5fD669tprtffSmne8bt06mjZtGt1zzz302muv0ahRo2jq1KnJsNpX/fjHP6Zt27bRM888Q8888wzt27ePxo0bR9u2bUvWWb58OY0ePZqqqqroqaeeojfeeIOGDBlC1157LS1YsKBV9w7giADooJ577jlBRNp/zc3NyXq9e/cWkydPPu5xYrGYaG5uFrfeeqsYOnRosvyXv/ylICJRVVV13H2XL18uiEhcdtllUvkrr7wiiEh88MEHQgghFi9eLIhIPPXUU47uNR6Pi+bmZvHII4+IvLw8kUgkpPtLT08Xe/bsSZatW7dOEJEoKioS9fX1yfLXX39dEJF48803HV3H8fTu3Vv7Hs455xyxf/9+qe6sWbME/9U0duxYMXbsWKmMiMSsWbOS28fe95QpU6R6TzzxhCCi5Hl27dolAoGAuPvuu6V6tbW1orCwUFxzzTXHvY9YLCbq6upEZmam+NWvfqWc+8Ybb1T2Ofaz1atXJz8PGzduFEIIMWLECHHTTTcJIYQYNGiQco9fZfeOLcsS69atk/a5+OKLRXZ2dvIdHzv/2WefLe2/Y8cOEQwGxW233ZYsGzBggBg6dKj0XRFCiAkTJoiioiIRj8dt7x3gRKAHBTq83/3ud7R69WrpXyDQ8vCrV199lUaPHk2dOnWiQCBAwWCQ5s+fT5s3b07WGTFiBBERXXPNNfTKK6/Q3r17j3u8K6+8Uto+88wziYiUUEFrvPPOO3TRRRdRTk4O+f1+CgaD9NBDD9GhQ4eosrJSqjtkyBDq3r17cnvgwIFEdDQ7JiMjQym3uy7eIyVYyEFnzJgxyef/97//nebPn08HDhygb3zjG9reCKfsnvXbb79NsViMbrzxRuke0tLSaOzYsVKmTV1dHT3wwAN02mmnUSAQoEAgQJ06daL6+nrps3DMd77znRavbezYsdSvXz969tlnacOGDbR69erjhneIWveOBw0aRGeddZZUNmnSJKqpqaG1a9cq5V/tqevduzeNGjWKli9fTkREn3/+OX366ad0/fXXE5H8vi+77DLav3+/FKI0uXeA1kIDBTq8gQMH0vDhw6V/LVmyZAldc8011L17d1q4cCF98MEHyf+RNDU1Jeudf/759Prrryf/Z9ejRw8aPHiwNMbgmLy8PGk7HA4TESVDKb169SIiou3btxvd06pVq2j8+PFERPT000/T3//+d1q9ejXNnDlTOu4xubm50nYoFGqx/Kv3qRMMBqV/zz//vO015+TkJJ//qFGj6JZbbqFFixbR5s2b6T/+4z9s9zdl96y//PJLIjrawOT38fLLL0uNpUmTJtFvfvMbuu222+jtt9+mVatW0erVq6lr167aMFhRUVGL12ZZFt188820cOFCeuqpp6h///503nnnaeu29h0XFhYqxzhWdujQIaO6x+ode0b33nuv8oymTJlCRKQ0Ku3uHaC1kMUDwCxcuJBKSkro5Zdflv7K1A36u+qqq+iqq66iSCRCH374Ic2ePZsmTZpEffr0oXPPPdf4nMOHD6fc3Fx64403aPbs2bbjUBYvXkzBYJDeeustKVPk9ddfNz7niVi9erW07XQMybHejfXr15/wNZnKz88nIqLf//731Lt37+PWq66uprfeeotmzZpFDz74YLL82BglHZPxQzfddBM99NBD9NRTT9Fjjz123HqtfccVFRXHLeONtuPVPVbv2DOaMWMGTZw4UXu+r33ta9I2MnbAbWigADCWZVEoFJJ+4VZUVGizeI4Jh8M0duxY6ty5M7399tv08ccft6qBEgwG6YEHHqAHHniAfvaznylpxkRElZWV9Nlnn9Ho0aPJsiwKBALk9/uTP29sbKQXXnjB+Jwnwq207XXr1hERUbdu3Vw5nolLLrmEAoEAffHFFy2GJSzLIiFEsgfmmGeeeSY5uNmJ7t2703333UeffvopTZ48ucXzt+Ydb9q0idavXy+FeRYtWkRZWVl09tlnS3Vfeuklmj59evIzvnPnTlq5ciXdeOONRHS08VFaWkrr16+n8vJyx/cKcCLQQAFgJkyYQEuWLKEpU6bQ1VdfTbt376af/exnVFRURJ999lmy3kMPPUR79uyhCy+8kHr06EFVVVX0q1/9ioLBII0dO7bV573vvvto8+bNNGvWLFq1ahVNmjQpOVHbe++9R/PmzaOHH36YRo8eTZdffjnNmTOHJk2aRP/2b/9Ghw4dol/+8pfK/0y9pKqqij788EMiOppWvXnzZiovL6dwOEx33nnnSbuOPn360COPPEIzZ86kbdu20Te/+U3q0qULffnll7Rq1SrKzMykhx9+mLKzs+n888+nX/ziF5Sfn099+vShFStW0Pz586lz584ndA0///nPbeu09h0XFxfTlVdeSWVlZVRUVEQLFy6kZcuW0eOPPy6NMyI62tj99re/TT/4wQ+ourqaZs2aRWlpaTRjxoxknf/5n/+hSy+9lC655BK66aabqHv37nT48GHavHkzrV27ll599dUTegYAdtBAAWBuvvlmqqyspKeeeoqeffZZ6tu3Lz344IO0Z88eevjhh5P1Ro4cSR999BE98MADdODAAercuTMNHz6c3nnnHRo0aFCrz2tZFj333HP07W9/m+bNm0fTpk2jI0eOUFZWFg0ZMoQef/xxuvnmm4mI6Bvf+AY9++yz9Pjjj9MVV1xB3bt3px/84AfUrVs3uvXWW117Fm76+9//nuxV8vv91L17dzrnnHNo5syZNGTIkJN6LTNmzKDTTz+dfvWrX9FLL71EkUiECgsL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traWiouLbeu2SQMlPz+f/H6/0ltSWVmp9KoQEYXDYQqHw0p5Tk5Oh3lpXpWdnY1nnEJ4vqmHZ5x6eMap1dGer2nHQpsMkg2FQjRs2DBatmyZVL5s2TIaNWpUW1wSAAAAeEibhXimT59O3//+92n48OF07rnn0rx582jXrl10xx13tNUlAQAAgEe0WQPl2muvpUOHDtEjjzxC+/fvp8GDB9Of//xn6t27t+2+4XCYZs2apQ37gDvwjFMLzzf18IxTD884tU7152sJk1wfAAAAgJMIa/EAAACA56CBAgAAAJ6DBgoAAAB4DhooAAAA4DlooAAAAIDntMsGyn//939TSUkJpaWl0bBhw+hvf/tbW19SuzR79mwaMWIEZWVlUbdu3ehb3/oWbdmyRaojhKCysjIqLi6m9PR0GjduHG3atKmNrrh9mz17NlmWRdOmTUuW4fmeuL1799INN9xAeXl5lJGRQUOGDKE1a9Ykf45nfGJisRj95Cc/oZKSEkpPT6e+ffvSI488QolEIlkHz9jce++9R1dccQUVFxeTZVn0+uuvSz83eZaRSITuvvtuys/Pp8zMTLryyitpz549J/EuThLRzixevFgEg0Hx9NNPi08++URMnTpVZGZmip07d7b1pbU7l1xyiXjuuefExo0bxbp168Tll18uevXqJerq6pJ1fv7zn4usrCzxhz/8QWzYsEFce+21oqioSNTU1LThlbc/q1atEn369BFnnnmmmDp1arIcz/fEHD58WPTu3VvcdNNN4h//+IfYvn27+Mtf/iI+//zzZB084xPz6KOPiry8PPHWW2+J7du3i1dffVV06tRJzJ07N1kHz9jcn//8ZzFz5kzxhz/8QRCReO2116SfmzzLO+64Q3Tv3l0sW7ZMrF27VlxwwQXirLPOErFY7CTfTWq1uwbKOeecI+644w6pbMCAAeLBBx9soyvqOCorKwURiRUrVgghhEgkEqKwsFD8/Oc/T9ZpamoSOTk54qmnnmqry2x3amtrRWlpqVi2bJkYO3ZssoGC53viHnjgATFmzJjj/hzP+MRdfvnl4pZbbpHKJk6cKG644QYhBJ7xieANFJNnWVVVJYLBoFi8eHGyzt69e4XP5xP/93//d9Ku/WRoVyGeaDRKa9asofHjx0vl48ePp5UrV7bRVXUc1dXVRESUm5tLRETbt2+niooK6XmHw2EaO3Ysnncr3HnnnXT55ZfTRRddJJXj+Z64N998k4YPH07f/e53qVu3bjR06FB6+umnkz/HMz5xY8aMob/+9a+0detWIiJav349vf/++3TZZZcREZ6xm0ye5Zo1a6i5uVmqU1xcTIMHD+5wz7vNprp34uDBgxSPx5UVjwsKCpSVkaF1hBA0ffp0GjNmDA0ePJiIKPlMdc97586dJ/0a26PFixfT2rVrafXq1crP8HxP3LZt2+jJJ5+k6dOn049//GNatWoV/fu//zuFw2G68cYb8Yxd8MADD1B1dTUNGDCA/H4/xeNxeuyxx+i6664jInyO3WTyLCsqKigUClGXLl2UOh3t/4PtqoFyjGVZ0rYQQimD1rnrrrvon//8J73//vvKz/C8ndm9ezdNnTqVli5dSmlpaceth+frXCKRoOHDh1N5eTkREQ0dOpQ2bdpETz75JN14443JenjGzr388su0cOFCWrRoEQ0aNIjWrVtH06ZNo+LiYpo8eXKyHp6xe5w8y474vNtViCc/P5/8fr/SSqysrFRanGDu7rvvpjfffJOWL19OPXr0SJYXFhYSEeF5O7RmzRqqrKykYcOGUSAQoEAgQCtWrKBf//rXFAgEks8Qz9e5oqIiOv3006WygQMH0q5du4gIn2E33HffffTggw/S9773PTrjjDPo+9//Pt1zzz00e/ZsIsIzdpPJsywsLKRoNEpHjhw5bp2Ool01UEKhEA0bNoyWLVsmlS9btoxGjRrVRlfVfgkh6K677qIlS5bQO++8QyUlJdLPS0pKqLCwUHre0WiUVqxYgedt4MILL6QNGzbQunXrkv+GDx9O119/Pa1bt4769u2L53uCRo8eraTGb926NbkqOj7DJ66hoYF8Pvl/FX6/P5lmjGfsHpNnOWzYMAoGg1Kd/fv308aNGzve826z4bkOHUsznj9/vvjkk0/EtGnTRGZmptixY0dbX1q788Mf/lDk5OSId999V+zfvz/5r6GhIVnn5z//ucjJyRFLliwRGzZsENdddx3SB0/AV7N4hMDzPVGrVq0SgUBAPPbYY+Kzzz4TL774osjIyBALFy5M1sEzPjGTJ08W3bt3T6YZL1myROTn54v7778/WQfP2Fxtba34+OOPxccffyyISMyZM0d8/PHHyakyTJ7lHXfcIXr06CH+8pe/iLVr14pvfOMbSDP2it/+9reid+/eIhQKibPPPjuZFgutQ0Taf88991yyTiKRELNmzRKFhYUiHA6L888/X2zYsKHtLrqd4w0UPN8T98c//lEMHjxYhMNhMWDAADFv3jzp53jGJ6ampkZMnTpV9OrVS6SlpYm+ffuKmTNnikgkkqyDZ2xu+fLl2t+7kydPFkKYPcvGxkZx1113idzcXJGeni4mTJggdu3a1QZ3k1qWEEK0Td8NAAAAgF67GoMCAAAApwY0UAAAAMBz0EABAAAAz0EDBQAAADwHDRQAAADwHDRQAAAAwHPQQAEAAADPQQMFAAAAPAcNFAAAAPAcNFAAAADAc9BAAQAAAM/5f+/0OZOQ1J8yAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FlashCam: oversampling\n", - "95 µs ± 3.98 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "NectarCam - BilinearMapper:\n", + "Initialization time: \n", + "181 ms ± 1.64 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "42.6 µs ± 925 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGxCAYAAABIjE2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABhOUlEQVR4nO3deXhV1bk/8O/JyRxCZJCEKENQcGAQCk6AgopYx1YcQStOvVi0ldKW6kXb6EVQey8/WluxWgWqUm2rRe31qjgUa7EVURywF6sioBJRGRJIcsb1+4Nybve7Xjwrm32SneT7eR6ex72zz9rDOSeurHe9640YYwyIiIiIQiSvrS+AiIiISGIHhYiIiEKHHRQiIiIKHXZQiIiIKHTYQSEiIqLQYQeFiIiIQocdFCIiIgoddlCIiIgodNhBISIiotBhB4XavcWLFyMSiaC4uBgbNmywfj5+/HgMGTIkZ+d/8sknUVtbm7P2ASCdTuP+++/HhAkT0LNnTxQUFKBXr14444wz8MQTTyCdTuf0/LkSiUQ8/8rKynDYYYfhpptuwq5duzzHXnrppejfv79nX//+/XHppZdmtj/88ENEIhEsXrw49xe/j2praxGJRJCXl4cPPvjA+vmuXbvQtWtXRCIRzz0SdRbsoFCHEYvFcMMNN7T6eZ988kncdNNNOWu/ubkZp512GqZOnYpevXph4cKFeP7553HXXXehuroa5513Hp544omcnT/Xzj33XLz88st4+eWX8dhjj+Hcc8/FzTffjEsuucRz3I033og//OEPX9pW79698fLLL+P000/P5SUHqkuXLli0aJG1/3e/+x0SiQQKCgra4KqI2l5+W18AUVC++tWvYunSpfj+97+PI444oq0vZ581NjaitLQUM2fOxNNPP40lS5ZY/9OeNGkSfvCDH6CpqamNrnLfVVZW4phjjslsT5gwARs2bMCDDz6I5uZmFBcXAwAOOuigrG0VFRV52gqjPe/rHhdccAGWLFmCm266CXl5//c347333ouzzz4bjz/+eFtcZk7Ieyf6MhxBoQ5j1qxZ6NGjB374wx9mPdYYgzvvvBPDhw9HSUkJunXrhnPPPVcdan/qqadw0kknoaKiAqWlpTjssMMwb948ALvDDr/4xS8AeMMVH374IQDgF7/4BY4//nj06tULZWVlGDp0KG6//XYkEgnPOfaEoV588UWMHj0apaWluPzyy1FXV4df/epXOOWUU6zOyR4DBw7EsGHDAOwebfne976H4cOHo6KiAt27d8exxx6Lxx57zHpdJBLBNddcg0WLFuGQQw5BSUkJRo0ahb/+9a8wxuAnP/kJampq0KVLF5x44ol47733sj7XoFRUVCASiSAajWb2aSEeSQvx7AmlrF27FpMnT0ZFRQUqKytx+eWXY8eOHZ7Xu34uli9fjq997Ws48MADUVxcjIMPPhjTpk3D559/7jluz7lfe+01nHvuuejWrZvV0br88suxadMmLF++PLPv3XffxUsvvYTLL7/cukc/7/Evf/lLDBo0CEVFRTj88MPx0EMPeY7bEyZdvnw5LrvsMnTv3h1lZWU488wz1e/Es88+i5NOOgldu3ZFaWkpxowZg+eee67F9070ZdhBoQ6jvLwcN9xwA55++mk8//zzX3rstGnTMGPGDEyYMAHLli3DnXfeibVr12L06NH49NNPM8fde++9OO2005BOp3HXXXfhiSeewHe+8x189NFHAHaHHc4991wAyIQpXn75ZfTu3RsA8P7772PKlCm4//778cc//hFXXHEFfvKTn2DatGnWNW3evBkXX3wxpkyZgieffBLTp0/HCy+8gEQiga9//etOzyAWi2Hr1q34/ve/j2XLluE3v/kNxo4di0mTJuHXv/61dfwf//hH/OpXv8Ktt96K3/zmN2hoaMDpp5+O733ve/jLX/6Cn//857j77rvxzjvv4JxzzkEuip8bY5BMJpFMJrF9+3Y89thjWLJkCS688MJAwxvnnHMOBg0ahEceeQTXXXcdli5diu9+97ueY1w/F++//z6OPfZYLFy4EM888wx+9KMf4W9/+xvGjh1rdT6B3SNdBx98MH73u9/hrrvu8vxs4MCBOO6443Dfffdl9t13333o378/TjrpJKutlr7Hjz/+OH72s5/h5ptvxu9//3v069cPkydPxu9//3vr2CuuuAJ5eXlYunQpFixYgFdeeQXjx4/H9u3bM8c88MADmDhxIrp27YolS5bgt7/9Lbp3745TTjnF6qRku3eiL2WI2rlFixYZAGbVqlUmFouZAQMGmFGjRpl0Om2MMWbcuHFm8ODBmeNffvllA8D813/9l6edTZs2mZKSEjNr1ixjjDENDQ2ma9euZuzYsZm2NFdffbVx+SqlUimTSCTMr3/9axONRs3WrVszPxs3bpwBYJ577jnPa2699VYDwDz11FPZH4QimUyaRCJhrrjiCjNixAjPzwCYqqoqs3Pnzsy+ZcuWGQBm+PDhnntesGCBAWDefPNNX9exNwDUf6eeeqrnuowxZurUqaZfv36eff369TNTp07NbK9fv94AMIsWLcrs+/GPf2wAmNtvv93z2unTp5vi4uLMfbp+LqR0Om0SiYTZsGGDAWAee+wx69w/+tGPrNft+dlnn31mFi1aZIqKiswXX3xhksmk6d27t6mtrTXGGFNWVua5Rynbe1xSUmLq6uo8xx966KHm4IMPzuzb8x06++yzPa//y1/+YgCYOXPmGGOM2bVrl+nevbs588wzPcelUilzxBFHmKOOOsrp3olccASFOpTCwkLMmTMHr776Kn7729+qx/zxj39EJBLBxRdfnPnLPZlMoqqqCkcccQT+9Kc/AQBWrlyJ+vp6TJ8+HZFIxNf1vP766zjrrLPQo0cPRKNRFBQU4JJLLkEqlcK7777rObZbt2448cQTfZ3nX/3ud7/DmDFj0KVLF+Tn56OgoAD33nsv/v73v1vHnnDCCSgrK8tsH3bYYQCAU0891XPPe/ZrWVL/6l+fZzKZdBpxOf/887Fq1SqsWrUKL774In72s5/h1VdfxVe/+lXEYjGne3Zx1llnebaHDRuG5uZmbNmyBYD75wIAtmzZgquuugp9+vTJPON+/foBgPqczznnnC+9tvPOOw+FhYV48MEH8eSTT6Kuru5LM3da8h6fdNJJqKyszGxHo1FccMEFeO+99zIjgXtcdNFFnu3Ro0ejX79+eOGFFwDs/k5s3boVU6dO9TyjdDqNr371q1i1apWVfZXt3on2hpNkqcO58MIL8Z//+Z+YPXs2Jk2aZP38008/hTHG80v7Xw0YMAAA8NlnnwEADjzwQF/XsXHjRhx33HE45JBD8NOf/hT9+/dHcXExXnnlFVx99dXWxNY9YaF/1bdvXwDA+vXrnc756KOP4vzzz8d5552HH/zgB6iqqkJ+fj4WLlzoCSHs0b17d892YWHhl+5vbm7e67k//PBD1NTUePa98MILGD9+/Jde8/77749Ro0Zlto877jjsv//+mDx5MhYvXqyGw/zo0aOHZ7uoqAgAMu+D6+cinU5j4sSJ+OSTT3DjjTdi6NChKCsrQzqdxjHHHKNOWNbe239VVlaGCy64APfddx/69euHCRMmZDo8Ukvf46qqqr3u++KLLzyf770d+8UXXwBAJsy1J6yp2bp1q6fTm+3eifaGHRTqcCKRCG677TacfPLJuPvuu62f9+zZE5FIBH/+858z/5P6V3v27b///gBg/ZXpatmyZdi1axceffRRz/9s1qxZs9frlk444QQUFBRg2bJluOqqq7Ke84EHHkBNTQ0efvhhT3tBjkTsTXV1NVatWuXZd8ghh/hqa8+k3zfeeGOfr8uV6+fi7bffxhtvvIHFixdj6tSpmZ9/2SRilxG4yy+/HL/61a/w5ptv4sEHH9zrcS19j+vq6va6T3ba9nbswQcfDGD3MwKAO+64Y6/ZUrKD53f0kYgdFOqQJkyYgJNPPhk333wz+vTp4/nZGWecgVtvvRUff/wxzj///L22MXr0aFRUVOCuu+7ChRdeuNdftP/6l3hJSUlm/57j//V/dsYY3HPPPc73UVVVhSuvvBILFy7Er3/9azWT5/3338euXbswbNgwRCIRFBYWeq61rq5OzfAIWmFhoWckZF/s6cT16tUrkPZcuH4utPcVAH75y1/u0/mPPfbYTGbR2Wef/aXnb8l7/Nxzz+HTTz/NdBxSqRQefvhhHHTQQdbo4IMPPugJyaxcuRIbNmzAlVdeCQAYM2YM9ttvP7zzzju45pprfN8rkQt2UKjDuu222zBy5Ehs2bIFgwcPzuwfM2YM/u3f/g2XXXYZXn31VRx//PEoKyvD5s2b8dJLL2Ho0KH41re+hS5duuC//uu/cOWVV2LChAn45je/icrKSrz33nt444038POf/xwAMHTo0Mz5Tj31VESjUQwbNgwnn3wyCgsLMXnyZMyaNQvNzc1YuHAhtm3b1qL7mD9/Pj744ANceumlePrpp3H22WejsrISn3/+OZYvX45FixbhoYcewrBhw3DGGWfg0UcfxfTp03Huuedi06ZN+I//+A/07t0b//jHP4J7uAH69NNP8de//hXA7hDSmjVrMGfOHOy333647LLLWu06XD8Xhx56KA466CBcd911MMage/fueOKJJzxpwn7de++9WY9p6Xvcs2dPnHjiibjxxhtRVlaGO++8E//7v/9rpRoDwKuvvoorr7wS5513HjZt2oTZs2fjgAMOwPTp0wHsXlTujjvuwNSpU7F161ace+656NWrFz777DO88cYb+Oyzz7Bw4cJ9fg5EADso1IGNGDECkydPxtKlS62f/fKXv8QxxxyDX/7yl7jzzjuRTqdRXV2NMWPG4Kijjsocd8UVV6C6uhq33XYbrrzyShhj0L9/f8/Q/pQpU/CXv/wFd955J26++WYYY7B+/XoceuiheOSRR3DDDTdg0qRJ6NGjB6ZMmYKZM2fi1FNPdb6P4uJi/Pd//zcefPBBLFmyBNOmTUN9fT26deuGUaNG4b777sOZZ54JALjsssuwZcsW3HXXXbjvvvswYMAAXHfddfjoo49yutrtvvj973+fSXktKChAnz59cNZZZ2H27Nl7nYeRKy6fi4KCAjzxxBO49tprMW3aNOTn52PChAl49tlnM3OGcqml7/FZZ52FwYMH44YbbsDGjRtx0EEH4cEHH8QFF1xgHXvvvffi/vvvx4UXXohYLIYTTjgBP/3pTz1zki6++GL07dsXt99+O6ZNm4aGhgb06tULw4cP55L8FKiIcZlmT0RE7U4kEsHVV1+dGe3bm8WLF+Oyyy7DqlWrAgvTEe0rphkTERFR6LCDQkRERKHDEA8RERGFDkdQiIiIKHTYQSEiIqLQYQeFiIiIQqddroOSTqfxySefoLy8nMsoExERtRPGGDQ0NKC6uhp5eV8+RtIuOyiffPKJtXw5ERERtQ+bNm3KWoi1XXZQysvLAQBjcRryUdDGV0NEREQukkjgJTyZ+f/4l2mXHZQ9YZ18FCA/wg4KERFRu/DPhU1cpmdwkiwRERGFTrscQSGitpc/oL+/F6ZSns3khk37fjFE1OFwBIWIiIhChx0UIiIiCh2GeIjISeToYZ7tf3zX3xpE5SvKPNs9FzLEQ0Q2jqAQERFR6LCDQkRERKHDEA9RSOWNHBJIO+nVbwfSzqYJXTzbjxwz3zqmOj+dtZ1j0ld7tnv99XD7oOzN2C95452Wv4iIQosjKERERBQ67KAQERFR6LCDQkRERKHDOShEIfXehd5iWr2Gbsn6mi/qy6x9B33fWzE0ufGjrO3IlGIA2O+4Tz3bLvNNNNd/5X882z/98YnWMYlktMXtVi46ytpX+N+vtLgdIgoHjqAQERFR6LCDQkRERKHDEA9RCMS/eqS175ixf/ds399vRdZ2HtlVbu275YyLPds93umVtZ1PxhRb+x469G7Pdh7slWTTe2qpf4mvdfnAsz3uK+9bxzSks/9qiopznfPeTOuY/juGZ23HReSlNYG0Q0TuOIJCREREocMOChEREYUOQzxEIfDRSfZX8QWHkI50TlmDte+BC70hlMZkgXVM2njDNdVK23bWjh3ikWEfLeTTbLztJIz9d5IM37g45Jj11r6PB1d4tlOp7H+T7dpZZO0btG2Qt52177bw6oiopTiCQkRERKHDDgoRERGFDjsoREREFDqcg0IUtGOO8Gw2V9opu9ZLREpxkB466L892ztN3DomZVzmfGSfX5JwaKdZzHfR5qD48aN+T1j7tqdLxLkLs7bzdtOB1r7fnnCSZ7tHlZ3O7Uf0udWBtEPUEXEEhYiIiEKHHRQiIiIKHYZ4iAL20QRvwb6jzng762vu7aulFLf874c07AJ+CZNqcTsaGQZKKCGe7emWF/lLKenKftKM48Y+t0tIRxpSYhdTXHbqZ57tT0+y23WJkiX+7k17HvCSHf5Lx5qzN0TUCXAEhYiIiEKnxR2UF198EWeeeSaqq6sRiUSwbNkyz8+NMaitrUV1dTVKSkowfvx4rF271nNMLBbDt7/9bfTs2RNlZWU466yz8NFH2UvAExERUefQ4hDPrl27cMQRR+Cyyy7DOeecY/389ttvx/z587F48WIMGjQIc+bMwcknn4x169ahvHz3zPcZM2bgiSeewEMPPYQePXrge9/7Hs444wysXr0a0WjLh4iJ2kpk1FBrX/fj6jzbevim5RImae1zKc4XQ/YQTzTiDbO4ZPXIbBwguIycOLy/B1zabVTCOXki5JX2OWj83YHPeba3JsusYxIm+6/T35Z+xbPdNHGYdUxevOXhLQAo2rLLs51+/R1f7RCFRYs7KKeeeipOPfVU9WfGGCxYsACzZ8/GpEmTAABLlixBZWUlli5dimnTpmHHjh249957cf/992PChAkAgAceeAB9+vTBs88+i1NOOWUfboeIiIg6gkDnoKxfvx51dXWYOHFiZl9RURHGjRuHlStXAgBWr16NRCLhOaa6uhpDhgzJHCPFYjHU19d7/hEREVHHFWgHpa5u99B2ZWWlZ39lZWXmZ3V1dSgsLES3bt32eow0b948VFRUZP716dMnyMsmIiKikMlJmnFExLONMdY+6cuOuf766zFz5szMdn19PTspFAqbTrFXFF126F1iT6mvtmXKcJNJWMcklLRiSc4nkfNNNNoxsgpxs5LW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R45Efn4+8vPzsWLFCvzsZz9Dfn5+5lnyOe+b3r174/DDD/fsO+yww7Bx40YA/DwH5Qc/+AGuu+46XHjhhRg6dCi+8Y1v4Lvf/S7mzZsHgM85V1yea1VVFeLxOLZt27bXY9qDdtVBKSwsxMiRI7F8+XLP/uXLl2P06NFtdFXtnzEG11xzDR599FE8//zzqKmp8fy8pqYGVVVVnucej8exYsUKPvcWOOmkk/DWW29hzZo1mX+jRo3CRRddhDVr1mDAgAF8zgEYM2aMlSb/7rvvZiql8/McjMbGRuTlef8XEo1GM2nGfM654fJcR44ciYKCAs8xmzdvxttvv92+nn2bTc/1aU+a8b333mveeecdM2PGDFNWVmY+/PDDtr60dutb3/qWqaioMH/605/M5s2bM/8aGxszx9x6662moqLCPProo+att94ykydPZrpgAP41i8cYPucgvPLKKyY/P9/ccsst5h//+Id58MEHTWlpqXnggQcyx/A577upU6eaAw44IJNm/Oijj5qePXuaWbNmZY7hc/anoaHBvP766+b11183AMz8+fPN66+/nllOw+W5XnXVVebAAw80zz77rHnttdfMiSeeyDTj1vCLX/zC9OvXzxQWFpqvfOUrmXRY8geA+m/RokWZY9LptPnxj39sqqqqTFFRkTn++OPNW2+91XYX3UHIDgqfczCeeOIJM2TIEFNUVGQOPfRQc/fdd3t+zue87+rr6821115r+vbta4qLi82AAQPM7NmzTSwWyxzD5+zPCy+8oP5Onjp1qjHG7bk2NTWZa665xnTv3t2UlJSYM844w2zcuLEN7sa/iDHGtM3YDREREZGuXc1BISIios6BHRQiIiIKHXZQiIiIKHTYQSEiIqLQYQeFiIiIQocdFCIiIgoddlCIiIgodNhBISIiotBhB4WIiIhChx0UIiIiCh12UIiIiCh0/j/hgGpciMtjzQAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FlashCam: rebinning\n", - "107 µs ± 2.25 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "DigiCam - BilinearMapper:\n", + "Initialization time: \n", + "106 ms ± 1.7 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "36.6 µs ± 532 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABWeUlEQVR4nO3de3TU1b0+/mdmciHBEARKQrgGGwoCVgWrAkKskArUnpaqVbQiapdVqGDaohStkSpRPFJaamnlWMAqre23eLz1WKgXlB+0IApFrKAVwVuMXCRAIMnMfH5/5DCnYT8b9zCTnQDPay3Wkp39ucwF3Hz2ez87FARBABERERFPwi19AyIiInJi0eBDREREvNLgQ0RERLzS4ENERES80uBDREREvNLgQ0RERLzS4ENERES80uBDREREvNLgQ0RERLzS4EOOG4sWLUIoFEr8atOmDQoLC3H++eejsrIS1dXVxjEVFRUIhUJHdb0XX3wRoVAIL774ovGzl19+GZdeeim6du2KrKws5OfnY8iQIZg/fz72799/VNdraaWlpU3e38zMTPTq1QvXXnsttm3b1qTvoc/i3XffTbRdffXV6NWrV5N+vXr1wtVXX938N5+iQ591KBTCokWLaJ8vf/nLCIVCxmsUEVNGS9+ASLotXLgQffv2RUNDA6qrq7Fy5Urce++9+M///E889thjGDlyZKLvddddhwsvvPCornPmmWdi9erVOPXUU5u033HHHZg5cyaGDBmCn/zkJzjllFNQW1uLVatWoaKiAlu2bMFPf/rTlF5jS+nduzceffRRAEB9fT1ef/113HnnnVi+fDnefPNN5ObmAgDGjh2L1atXo0uXLkc83+OPP4527do1+32nS15eHh566CFjwLR161a8+OKLx9RrEWlRgchxYuHChQGAYO3atcbPtm3bFnTv3j3Iy8sLqqqqmu0e/vCHPwQAgmuvvTaIx+PGz2tqaoK//OUvzXb95jRixIigf//+RvtDDz0UAPjM1zVhwoSgZ8+ezXR3zaO+vj5oaGgIXnjhhQBAcN111wUAgi1btjTpd9tttwXdunULRo8efcy9RptDr12kOWjaRU4IPXr0wP3334+9e/fi17/+daKdTbvU1dXh+9//PgoLC5Gbm4vhw4dj3bp1xhQBm3aZOXMmTj75ZPz85z+n0zl5eXkoKytL/P6BBx7A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fj2mTp2KoqIiTJgwIdFPn40frWbapVOnTohEIsZTjurqamMkKn5873vfw5NPPokXXngB3bp1S7QXFhYCgD6rFrBu3TpUV1dj0KBByMjIQEZGBlasWIGf//znyMjISLz/+mxaRpcuXXDqqac2aevXrx+2b98OQH92WtIPf/hD3HrrrbjsssswcOBAfPvb38bNN9+MyspKAPpsfGs1g4+srCwMGjQIy5cvb9K+fPlyDBkypIXu6sQUBAEmT56MpUuX4vnnn0dxcXGTnxcXF6OwsLDJZ1VfX48VK1bos2pmF1xwATZu3Ij169cnfg0ePBhXXHEF1q9fj969e+uzaUFDhw41lqVv2bIlsaO3/uy0nNraWoTDTf+XF4lEEktt9dl41oLFroZDS20feuih4I033gimTp0atG3bNnj33Xdb+tZOKDfccEOQn58fvPjii8FHH32U+FVbW5voc8899wT5+fnB0qVLg40bNwaXX365lqS1kH9f7RIE+mxa0po1a4KMjIzg7rvvDt56663g0UcfDXJzc4NHHnkk0UefT8uYMGFC0LVr18RS26VLlwadOnUKpk2bluijz8afVjX4CIIgeOCBB4KePXsGWVlZwZlnnplY3in+AKC/Fi5cmOgTj8eDO+64IygsLAyys7OD4cOHBxs3bmy5mz6BHT740GfTsp566qlgwIABQXZ2dtC3b9/gwQcfbPJzfT4to6amJpgyZUrQo0ePoE2bNkHv3r2DGTNmBHV1dYk++mz8CQVBELTkkxcRERE5sbSamg8RERE5MWjwISIiIl5p8CEiIiJeafAhIiIiXmnwISIiIl5p8CEiIiJeafAhIiIiXmnwISIiIl5p8CEiIiJeafAhIiIiXmnwISIiIl79/1dAuEcodPjXAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FlashCam: nearest_interpolation\n", - "98.9 µs ± 2.57 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "VERITAS - BilinearMapper:\n", + "Initialization time: \n", + "19.8 ms ± 172 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "25.2 µs ± 90.5 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABBJ0lEQVR4nO3de3RU9b3//9fkNgkQIteECEJUvCK2AnLxQrxARaUqtRVxVVREq2jhYEuLnJZglVjbw8Hzo9qjRURbSm3rBRWBVCGolBpQjoitl4qIlRDuCSGZJDP794dfpsYEPu/A8CGJz8daWYvseWf2ZzYzk3f2zGveoSAIAgEAAHiSdLQXAAAAvlpoPgAAgFc0HwAAwCuaDwAA4BXNBwAA8IrmAwAAeEXzAQAAvKL5AAAAXtF8AAAAr2g+0GpcddVVysjI0O7duw9Yc9111yk1NVVbt26VJIVCoQN+3XDDDfGfKygoqHdZamqqjjvuOI0fP16lpaUN9tOrVy9dfvnlkqQbbrjhoPtpbH/bt29XOBxWKBTSmjVrGr0tQRBo4cKFOu+889S1a1elp6ere/fu+sY3vqHf/OY3TT+AB/H44483WG+XLl2Un5+vF154oUF9KBRSQUFB/PsVK1YoFAppxYoV8W37j2lL0KtXL4VCIeXn5zd6+RNPPBE/Ll+8jQAal3K0FwAkyrhx4/Tss89qwYIFuv322xtcvmfPHj3zzDO6/PLLlZ2dHd9+9dVX66677mpQ36VLlwbblixZoqysLO3du1fLli3Tf/3Xf2nVqlVat26dUlNTG13XT37yE33ve9+Lf//mm29qwoQJmjlzpi644IJG9/fkk0+qpqZGkjR37lz179+/wfVOnTpVP//5zzV+/Hj98Ic/VGZmpjZt2qRXXnlFzz33nG6++eZG13M45s2bp1NOOUVBEKi0tFRz5szRyJEjtWjRIo0cOTJe99e//lXdu3c/6HXdfPPNuuSSSxK+xiMlMzNTK1eu1D//+U+dcMIJ9S577LHH1L59e5WXlx+l1QEtTAC0EnV1dUFubm7Qr1+/Ri9/+OGHA0nB888/H98mKZgwYYLzuqdPnx5ICrZt21Zv+4033hhICl555ZV623v27BlcdtlljV7X8uXLA0nBH//4xwPur0+fPkHXrl2DAQMGBFlZWcG+ffvqXb5v374gHA4H119/faM/H41GnbepKebNmxdICkpKShpdx7XXXnvQn99/m5cvX57QdR1p+497z549gxEjRgTdu3cP7r777no1H374YRAKhYLx48e3yNt4IF++zwGJxMsuaDWSk5M1duxYrV27VuvXr29w+bx589StWzeNGDEiYfvcf0Zi/8s4ifC3v/1N77zzjr773e9q/Pjx2rNnj/785z/Xq6msrFQkElG3bt0avY6kJD8P7fT0dKWlpTU46/Pll10a09jLLvtfrlqyZInOOussZWRk6JRTTtFjjz3W4OdLS0t16623qnv37kpLS1NeXp5mzJihurq6enUzZszQwIED1bFjR7Vv315nnXWW5s6dq+BLMzX37/vpp5/W17/+daWnp2vGjBnxy5OSknT99ddr/vz5isVi8e2PPfaYevTooYsvvrjBGtesWaPRo0erV69eysjIUK9evXTttddq06ZN9er2v6xVVFSkG2+8UR07dlTbtm01cuRIffTRR/Vq8/Pz1adPH7366qsaNGiQMjIydOyxx+onP/mJotFovdqamhrde++9OuWUUxQOh9WlSxfdeOON2rZtW5NuO5BoNB9oVW666SaFQqEGv6zeffddvfHGGxo7dqySk5PrXRYEgerq6hp8ffmXU2M2btwoSTrppJMSdhvmzp0r6fPbMnr0aLVp0ya+bb/OnTvrxBNP1EMPPaRZs2bpH//4h2m9hysajaqurk61tbX69NNPNWnSJFVWVmrMmDEJ28f//d//6a677tJ//Md/6LnnnlPfvn01btw4rVy5Ml5TWlqqs88+W0uXLtVPf/pTvfTSSxo3bpwKCws1fvz4etf38ccf69Zbb9VTTz2lp59+WqNGjdKdd96pn/3sZw32/eabb+qHP/yhvv/972vJkiX61re+Ve/ym266SZ999pmWLl0aPx7z58/XDTfc0GjD9/HHH+vkk0/W7NmztXTpUv385z/Xli1bNGDAAG3fvr1B/bhx45SUlKQFCxZo9uzZeuONN5Sfn9/gfUylpaUaPXq0rrvuOj333HO6+uqrde+992rixInxmlgspiuuuEL333+/xowZoxdffFH333+/ioqKlJ+fr6qqqibddiChju6JFyDxhg4dGnTu3DmoqamJb7vrrrsCScH7779fr1bSAb+efPLJeN3+l11KS0uD2traYNeuXcFTTz0VtG3bttGXHA71ZZfKysqgffv2waBBg+Lbxo4dG4RCoeDDDz+sV/vGG28Exx13XHy9mZmZweWXXx488cQTQSwWsx0so/0vu3z5KxwOBw899FCDeknB9OnT49839rLL/mP6RT179gzS09ODTZs2xbdVVVUFHTt2DG699db4tltvvTVo165dvbogCIJf/vKXgaRgw4YNjd6OaDQa1NbWBvfcc0/QqVOnesepZ8+eQXJycvDee+81+Lkv/n8OHTo0uPrqq4MgCIIXX3wxCIVCwcaNG4M//vGPzpdd6urqgr179wZt27YNHnzwwfj2/cf3qquuqlf/+uuvB5KCe++9N75t6NChgaTgueeeq1c7fvz4ICkpKX5Mfv/73weSgj//+c/16kpKSgJJ9f7fDnbbgSOBMx9odcaNG6ft27dr0aJFkqS6ujr99re/1XnnnafevXs3qP/Od76jkpKSBl+XXnppg9qcnBylpqaqQ4cO+s53vqN+/fpp/vz5CVv7U089pfLyct10003xbTfddJOCINC8efPq1Q4YMEAffvihlixZorvvvluDBw/Wyy+/rOuvv17f/OY3D3omJBaL1TvL8+XT9QfyxBNPxI/PSy+9pLFjx2rChAmaM2fOod3gRnzta1/TcccdF/8+PT1dJ510Ur2XKl544QVdcMEFys3NrXc79r+kVlxcHK995ZVXdPHFFysrK0vJyclKTU3VT3/6U+3YsUNlZWX19t23b1/nWaybbrpJixYt0o4dOzR37lxdcMEF6tWrV6O1e/fu1Y9+9COdeOKJSklJUUpKitq1a6fKykr9/e9/b1B/3XXX1ft+yJAh6tmzp5YvX15ve2Zmpr75zW/W2zZmzBjFYrH4GaIXXnhBxxxzjEaOHFnvGH3ta19TTk5Og1SO5bYDiULzgVbn6quvVlZWVvyX9eLFi7V161aNGzeu0fouXbqof//+Db46duzYoPYvf/mLSkpKtHTpUn3rW9/SypUrdeeddyZs7XPnzlV6erouueQS7d69W7t371bfvn3Vq1cvPf744w2ahNTUVH3jG9/Qfffdp6VLl2rz5s3x+OtLL710wP3cc889Sk1NjX99Ob1xIKeeemr8+FxyySX63//9Xw0fPlxTpkw5aMS5KTp16tRgWzgcrvcywdatW/X888/Xuw2pqak6/fTTJSn+ksYbb7yh4cOHS5IeffRRvf766yopKdG0adMkqcFLDwd6D80XXX311UpPT9d///d/6/nnnz/g/Ur6vCGYM2eObr75Zi1dulRvvPGGSkpK1KVLlwb7lj5vbhvbtmPHjnrbvpjW+vLP7q/dunWrdu/eHX9Pzhe/SktLG7zsY7ntQKIQtUWrk5GRoWuvvVaPPvqotmzZoscee0yZmZn69re/fdjXfeaZZ6pz586SpGHDhukb3/iGHnnkEY0bN04DBgw4rOt+//339dprr0lSvb/8v2jp0qWNnpHZr1OnTpo0aZJWrFihd95554C1t9xyS/xzSKTPf7kfqr59+2rp0qV6//33dfbZZx/y9TRF586d1bdvX913332NXp6bmytJWrhwoVJTU/XCCy8oPT09fvmzzz7b6M9ZPnekTZs2Gj16tAoLC9W+fXuNGjWq0bo9e/bohRde0PTp0/XjH/84vj0SiWjnzp2N/kxjnxlTWlqqE088sd62xt7gvP9n9zdvnTt3VqdOnbRkyZJG95WZmVnv+5bymStoHWg+0CqNGzdOv/71r/WLX/xCixcv1g033KA2bdokdB+hUEi/+tWvdNppp+k///M/429CPFT731T66KOPNvhlU1VVpSuuuEKPPfaYLr30UtXW1qq8vLzRswT7T+fv/wXcmNzc3INe3hTr1q2T1Pjnohwpl19+uRYvXqwTTjhBHTp0OGBdKBRSSkpKvTcZV1VV6cknnzys/d92223aunWrhg4dWq+p+fK+gyBo0Nj95je/OeDLXL/73e/qvdFz1apV2rRpU4PPbKmoqNCiRYvqvfSyYMECJSUl6fzzz5f0+TFauHChotGoBg4ceEi3EzhSaD7QKvXv3199+/bV7NmzFQTBQU+Nb926VatXr26wvX379jrttNMOup/evXvrlltu0UMPPaTXXntN55577iGtt66uTk888YROPfXUA3442P4P89q2bZtCoZB69eqlb3/727r44ovVo0cP7d27VytWrNCDDz6oU0899YB/kR+Od955Jx5l3bFjh55++mkVFRXpqquuUl5eXsL3dyD33HOPioqKNGTIEH3/+9/XySefrOrqan388cdavHixfv3rX6t79+667LLLNGvWLI0ZM0a33HKLduzYoV/+8peHdaZH+vx9KQc6e7Jf+/btdf755+sXv/iFOnfurF69eqm4uFhz587VMccc0+jPrFmzRjfffLO+/e1va/PmzZo2bZqOPfbY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vKL5AAAAXtF8AAAAr5pd8/HQQw8pLy9P6enp6tevn1599dWjvaRWYeXKlRo5cqRyc3MVCoX07LPP1rs8CAIVFBQoNzdXGRkZys/P14YNG47OYlu4wsJCDRgwQJmZmeratauuvPJKvffee/VqON6J8/DDD6tv377xT3kcPHiwXnrppfjlHOsjq7CwUKFQSJMmTYpv45gnTkFBgUKhUL2vnJyc+OUt9Vg3q+bjD3/4gyZNmqRp06bprbfe0nnnnacRI0bok08+OdpLa/EqKyt15plnas6cOY1e/sADD2jWrFmaM2eOSkpKlJOTo2HDhqmiosLzSlu+4uJiTZgwQatXr1ZRUZHq6uo0fPhwVVZWxms43onTvXt33X///VqzZo3WrFmjCy+8UFdccUX8CZhjfeSUlJTokUceUd++fett55gn1umnn64tW7bEv9avXx+/rMUe66AZOfvss4Pvfe979badcsopwY9//OOjtKLWSVLwzDPPxL+PxWJBTk5OcP/998e3VVdXB1lZWcGvf/3ro7DC1qWsrCyQFBQXFwdBwPH2oUOHDsFvfvMbjvURVFFREfTu3TsoKioKhg4dGkycODEIAu7fiTZ9+vTgzDPPbPSylnysm82Zj5qaGq1du1bDhw+vt3348OFatWrVUVrVV8PGjRtVWlpa79iHw2ENHTqUY58Ae/bskSR17NhREsf7SIpGo1q4cKEqKys1ePBgjvURNGHCBF122WW6+OKL623nmCfeBx98oNzcXOXl5Wn06NH66KOPJLXsY31EPl79UGzfvl3RaLTB5Nvs7OwGE3KRWPuPb2PHftOmTUdjSa1GEASaPHmyzj33XPXp00cSx/tIWL9+vQYPHqzq6mq1a9dOzzzzjE477bT4EzDHOrEWLlyoN998UyUlJQ0u4/6dWAMHDtQTTzyhk046SVu3btW9996rIUOGaMOGDS36WDeb5mO/UChU7/sgCBpsw5HBsU+8O+64Q2+//bZee+21BpdxvBPn5JNP1rp167R79279+c9/1tixY1VcXBy/nGOdOJs3b9bEiRO1bNkypaenH7COY54YI0aMiP/7jDPO0ODBg3XCCSdo/vz5GjRokKSWeaybzcsunTt3VnJycoOzHGVlZQ26OiTW/ndOc+wT684779SiRYu0fPlyde/ePb6d4514aWlpOvHEE9W/f38VFhbqzDPP1IMPPsixPgLWrl2rsrIy9evXTykpKUpJSVFxcbH+53/+RykpKfHjyjE/Mtq2baszzjhDH3zwQYu+fzeb5iMtLU39+vVTUVFRve1FRUUaMmTIUVrVV0NeXp5ycnLqHfuamhoVFxdz7A9BEAS644479PTTT+uVV15RXl5evcs53kdeEASKRCIc6yPgoosu0vr167Vu3br4V//+/XXddddp3bp1Ov744znmR1AkEtHf//53devWrWXfv4/aW10bsXDhwiA1NTWYO3du8O677waTJk0K2rZtG3z88cdHe2ktXkVFRfDWW28Fb731ViApmDVrVvDWW28FmzZtCoIgCO6///4gKysrePrpp4P169cH1157bdCtW7egvLz8KK+85bntttuCrKysYMWKFcGWLVviX/v27YvXcLwTZ+rUqcHKlSuDjRs3Bm+//XZw9913B0lJScGyZcuCIOBY+/DFtEsQcMwT6a677gpWrFgRfPTRR8Hq1auDyy+/PMjMzIz/Xmypx7pZNR9BEAS/+tWvgp49ewZpaWnBWWedFY8n4vAsX748kNTga+zYsUEQfB7Zmj59epCTkxOEw+Hg/PPPD9avX390F91CNXacJQXz5s2L13C8E+emm26KP2d06dIluOiii+KNRxBwrH34cvPBMU+ca665JujWrVuQmpoa5ObmBqNGjQo2bNgQv7ylHutQEATB0TnnAgAAvoqazXs+AADAVwPNBwAA8IrmAwAAeEXzAQAAvKL5AAAAXtF8AAAAr2g+AACAVzQfAADAK5oPAADgFc0HAADwiuYDAAB49f8D+/oidjpzOhUAAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FlashCam: bilinear_interpolation\n", - "112 µs ± 1.33 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "MAGICCam - BilinearMapper:\n", + "Initialization time: \n", + "59.1 ms ± 84.4 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "30.9 µs ± 50.6 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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zRqMGTMGAwYMqFMytnv3bqxcuRJffPFFYPJx7bXX4tFHH8Uf//hHfPPNN7j99tsDJWOffvop/v73v+P6669HZmYmRowYgcjISNx4442YPn06Tp48icWLF9cpLGtuKioqAjkBn8+HgoICzJs3DwAwdepU284jJiYGzzzzDCZMmICjR4/immuuQUJCAg4dOoQvvvgChw4dwuLFiwEAY8aMwfPPP48ePXqgX79+2Lx5M5566inxV6dP17Rp0zBt2jTTx1j9Grdr1w733HMP9u3bh+7du+Ott97C0qVLcc8999S72xcREYERI0Zg2rRp8Pv9ePLJJ1FSUlLnt1iefvppXHzxxRg+fDjuuecedO3aFaWlpfj222+xbt06vPfee2f0GhD9HCcfFHbefPNNFBYW4qGHHhIf89vf/harV6/Giy++iGnTpqF9+/b4+OOPsXTpUvzrX//CK6+8grKyMsTFxaF379647777xInMz1144YXYtm0b/vKXv+CVV17Bk08+CZ/Ph06dOuGyyy7DwoUL6zx+9uzZuPzyy/HMM89g5syZOHz4MKKiotC7d29MmzYt8CuWPXr0wKuvvopHHnkE48aNQ7t27TB+/HhMmzYNI0eOPLMXrJHs2bMHw4YNA1Dza6cejwf9+/fHM888g/T0dFvP5eabb0bnzp0xb9483HXXXSgtLQ0EcH/eHfL000/D5XJhzpw5KCsrw8CBA7F69Wo88sgjjX6OVr/GHo8HixYtwgMPPIBt27ahbdu2ePjhh7W/FjtlyhScPHkS9913H4qKitC7d2+8+eabuOiiiwKP6dWrFz7//HP88Y9/xCOPPIKioiK0adMGqampgdwHUbAYSinV1CdBRESnLyMjA4cPH8b27dtNH/f9998jJSUFTz31FB544AGbzo7o1PjbLkRERGQrTj6IiIjIVvzYhYiIiGzFOx9ERERkK04+iIiIyFacfBAREZGtml3Ph9/vx48//ojY2FjW9xIREYUIpRRKS0uRnJwMh8P83kazm3z8+OOP6NSpU1OfBhERETXA/v37T9kK3OwmH7GxsQCAizEKTria+GyIiIjodHhRjY/wVuD/42aa3eSj9qMWJ1xwGpx8EBERhYT/v7jjdCITDJwSERGRrTj5ICIiIls1u49diOj0RfTs3tSn0KL5vt7V1KdAFJJ454OIiIhsxckHERER2YqT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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FlashCam: bicubic_interpolation\n", - "157 µs ± 489 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "FACT - BilinearMapper:\n", + "Initialization time: \n", + "101 ms ± 175 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "38 µs ± 511 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABXzElEQVR4nO3de5hVZd0//vfax5lhhkEGmQHkMOAQCp4S0/AApWCKVpJ+Paam9TOVFHnKPFXio6BYXpQiPpgHTMmyKE9pkiXqV0tCMRQPkAh4QERgZjjM7NP9+4Mv8zTe71vXcs1azMD7dV1cV92z9jruPd6z1nt/Pp4xxkBEREQkJokdvQMiIiKya9HkQ0RERGKlyYeIiIjESpMPERERiZUmHyIiIhIrTT5EREQkVpp8iIiISKw0+RAREZFYafIhIiIisdLkQwTA3XffDc/z6L/vf//77Zb9xS9+Ac/zMGLEiE9c51tvvYWJEydi6NChKC8vR0VFBYYPH46rrroK7777Lp566innNj/+r6OMGTOm3XrT6TQGDRqEc889FytXrqTn5O23324bO/vsszFo0KB2yw0aNAhnn312h+1jVP7zfN999910mS9/+cvwPM86RhHpWKkdvQMincldd92FYcOGtRvr27dvu/9/5513AgBeffVV/OMf/8DBBx9sreeRRx7BKaecgl69emHixIk44IAD4HkelixZgjvvvBOPPvooFixYgOeff77d60444QQMGTIEP/3pTzv4yP7X4MGDcd999wEAcrkcXnnlFUyZMgXz58/H66+/joqKCgDA+PHj8fzzz6NPnz6fuL4//OEP6N69e2T729Gqqqpwxx13WBOmFStW4KmnnupSxyLSVWnyIfIfRowYgZEjRzp//s9//hMvv/wyxo8fj0cffRR33HGHNflYsWIFTjnlFAwdOhR/+9vfUF1d3fazL3/5y7jooova/oN9yCGHtHttNptFjx49rPGOVF5e3m79RxxxBMrKynDuuefi2Wefxbhx4wAAu+++O3bfffdPXd8BBxwQ2b52hHw+3+7u0cknn4xf/vKXWLZsGRoaGtrG77zzTvTr1w/77LMPli5duiN2tcNtP/ZUSr/qpXPRYxeRAO644w4AwPXXX49Ro0bh/vvvx5YtW9otc9NNN2Hz5s249dZb2008tvM8DxMmTIhlf/3avp/pdLptjD12YT7+2GX7441f//rXuPLKK9G3b190794dRx11FN544w3r9X/5y19w5JFHonv37qioqMChhx6KJ598st0yy5cvx7e+9S00NDSgoqIC/fr1w/HHH48lS5a0W277tn/1q1/hv/7rv9CvXz9ks1ksX768bZmxY8eif//+bXewAKBUKmHOnDk466yzkEjYvxZnzpyJI444Ar1790a3bt2wzz77YPr06cjn8+2WGzNmDEaMGIFnnnkGhxxyCMrLy9GvXz/86Ec/QrFYbFvu7bffhud5mD59Oq677joMGDAAZWVlGDlypHXsALBs2TKcdtpp6N27N7LZLPbaay/MnDkz8LGLdBaafIj8h2KxiEKh0O7fdlu3bsWvf/1rHHTQQRgxYgTOOeccNDc344EHHmi3jieeeAK1tbWR3r0Ia/uxbdmyBS+88AKuueYaDB48GKNGjeqwbVxxxRVYuXIlfvnLX2L27NlYtmwZjj/++Hb/Eb733nsxbtw4dO/eHXPmzMFvf/tb9OzZE0cffXS7/wi/9957qKmpwfXXX4/HH38cM2fORCqVwsEHH0wnNJdffjlWrVqF2267DQ8//DB69+7d9rNEIoGzzz4b99xzT9u+PPHEE3jnnXfwrW99ix7Lv//9b5x22mn41a9+hUceeQTnnnsubrzxRpx33nnWsmvWrMEpp5yC008/HQ8++CBOPPFEXHvttbj44outZW+55RY8/vjjmDFjBu69914kEgkcc8wx7R7HLV26FAcddBBeeeUV/OxnP8MjjzyC8ePH46KLLsKUKVMCHbtIp2FExNx1110GAP2Xz+eNMcbcc889BoC57bbbjDHGNDc3m8rKSnP44Ye3W1dZWZk55JBDPtN+DBw40IwfPz7cwXyC0aNH02McOnSoee2119otu/2crFixom3srLPOMgMHDrT2+ayzzmr7/3/7298MAHPssce2W+63v/2tAWCef/55Y4wxmzdvNj179jTHH398u+WKxaLZb7/9zBe+8AXncRQKBZPL5UxDQ4O55JJLrG0fccQR1mu2/+yBBx4wb731lvE8zzzyyCPGGGNOOukkM2bMGGOMMePHj7eO8eP7l8/nzT333GOSyaRZv35928+2n98HH3yw3Wu+853vmEQiYVauXGmMMWbFihUGgOnbt6/ZunVr23JNTU2mZ8+e5qijjmobO/roo80ee+xhGhsb261z4sSJpqysrG37n3TsIp2N7nyI/Id77rkHCxcubPdv+/PyO+64A+Xl5TjllFMAAJWVlTjppJPwzDPPYNmyZTtkfz9+p6ZUKn3qa4YMGdJ2bM8//zzmzp2L8vJyHHnkkR16HF/96lfb/f99990XANq+VfPcc89h/fr1OOuss6xj+MpXvoKFCxdi8+bNALbdqZk6dSr23ntvZDIZpFIpZDIZLFu2DK+99pq17W984xufuG/19fUYM2YM7rzzTnz00Ud48MEHcc455ziXf+mll/DVr34VNTU1SCaTSKfTOPPMM1EsFvHmm2+2W7aqqso69tNOOw2lUglPP/10u/EJEyagrKys3WuPP/54PP300ygWi2hpacGTTz6JE044ARUVFe3O07HHHouWlhb8/e9/D3TsIp2BJh8i/2GvvfbCyJEj2/0DtmUOnn76aYwfPx7GGGzcuBEbN27EiSeeCADt8gMDBgzAihUrYtnfIUOGIJ1Ot/275pprPvU127MFI0eOxCGHHIJTTz0Vjz32GN5//338+Mc/7rB9q6mpaff/s9ksgG2PrwDggw8+AACceOKJ7Y4hnU7jhhtugDEG69evBwBMnjwZP/rRj/D1r38dDz/8MP7xj39g4cKF2G+//drW958+7Rs6AHDuuefi4Ycfxk033YTy8vK2a/lxq1atwuGHH453330XP//5z/HMM89g4cKFbZmLj2+/trbWWkddXR0A4KOPPqLjHx/L5XLYtGkTPvroIxQKBdx8883WOTr22GMBAOvWrQt87CI7miLQIj7ceeedMMbgd7/7HX73u99ZP58zZw6uvfZaJJNJHH300bj55pvx97//PfLcx8MPP4zW1ta2///xrwX71adPH/Tq1Qsvv/xyR+3ap+rVqxcA4Oabb3aep+3/Ib/33ntx5plnYurUqe1+vm7dOvTo0cN6nZ/aKBMmTMCFF16I66+/Ht/5zndQXl5Ol/vjH/+IzZs3Y968eRg4cGDb+OLFi+ny2ydV/2nNmjUA7AnZ9vGPj2UyGVRWViKdTiOZTOKb3/wmLrzwQrq9+vr6dv+/I+vCiERFkw+RT1EsFjFnzhwMGTIEv/zlL62fP/LII/jZz36Gxx57DMcddxwuueQS3Hnnnbjgggusr9oCgDEGf/zjH3HCCSeE3rd99tkn9DoA4J133sG6deuw9957d8j6/Dj00EPRo0cPLF26FBMnTvzEZT3Pa7tzst2jjz6Kd999F3vuuedn2n55eTl+/OMf4+mnn8b555//idsG0G77xhjcfvvtdPnm5mY89NBD7R69zJ07F4lEAkcccUS7ZefNm4cbb7yx7dFLc3MzHn74YRx++OFIJpOoqKjAl770Jbz00kvYd999kclkPtOxinQ2mnyIfIrHHnsM7733Hm644QaMGTPG+vmIESNwyy234I477sBxxx2H+vp63H///Tj55JOx//77txUZA7Z9c2H7XZSOmHx8Flu3bm3LCRSLRaxYsQLTp08HAEyaNCm2/aisrMTNN9+Ms846C+vXr8eJJ56I3r1748MPP8TLL7+MDz/8ELNmzQIAHHfccbj77rsxbNgw7Lvvvli0aBFuvPFG7LHHHqH2YfLkyZg8efInLjN27FhkMhmceuqpuPTSS9HS0oJZs2Zhw4YNdPmamhqcf/75WLVqFYYOHYo//elPuP3223H++edjwIAB7ZZNJpMYO3YsJk+ejFKphBtuuAFNTU3tvsXy85//HIcddhgOP/xwnH/++Rg0aBCam5uxfPlyPPzww/jrX/8a6hyI7AiafIh8ijvuuAOZTMb5NcxevXrhhBNOwO9+9zt88MEHqK2txXHHHYclS5bgZz/7GW677TasXr0aiUQC9fX1+MpXvoLvfe97MR/F/3rrrbfwxS9+EcC2r53W1dVhv/32w80334zRo0fHui9nnHEGBgwYgOnTp+O8885Dc3Mzevfujf33379d7ZCf//znSKfTmDZtGjZt2oTPf/7zmDdvHq666qrI93HYsGH4/e9/j6uuugoTJkxATU0NTjvtNEyePBnHHHOMtXxdXR1mzpyJ73//+1iyZAl69uyJK664gn4tduLEiWhpacFFF12EtWvXYvjw4Xj00Udx6KGHti2z995748UXX8R///d/46qrrsLatWvRo0cPNDQ0tOU+RLoazxhjdvROiIjsDMaMGYN169bhlVde+cTl3n77bdTX1+PGG2+0egeJ7Ar0bRcRERGJlSYfIiIiEis9dhEREZFY6c6HiIiIxEqTDxEREYmVJh8iIiISq05X56NUKuG9995DVVWVygSLiIh0EcYYNDc3o2/fvkgkPvneRqebfLz33nvo37//jt4NERER+QxWr179qdWHO93ko6qqCgBwGI5FCukdvDciIiLiRwF5PIs/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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FlashCam: image_shifting\n", - "83.5 µs ± 276 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "HESS-I - BilinearMapper:\n", + "Initialization time: \n", + "47.1 ms ± 68.8 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "29.8 µs ± 27.8 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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kQj27dvXKSFraGhI+lzgX8lb37594ff7kyZZh+NHOpp9JzKByQdRCuzevTvpb5WHT7sfThxaWlpgWVbSU/ifXXfEiBHHNKbBgwenpJg1Go1iy5Yt8Pl8Cb1NnJSXl4fzzz8fb7/9NkaOHImcnBxxXcuykJOTk/CDtaGhIenVLl1x6623wu/348orr9RuG/j0rM2RfvOb34jPeeyxxzBmzJj4///7v/8bkUikU9O6uro6/O1vf0v408uqVauQn58fv+T5kksuQVVVFfr06RNPxogyAZMPos9x8ODBhPqCw3w+H0aPHg0AuPDCC9G/f39ceumlOP300xGLxbB582bcd9996N69e7zR1tatW3HhhRfi6quvxsSJE1FUVIQDBw7gueeew/LlyzFp0iTxt2xTNm3aFL+89pNPPsFDDz2Ef/zjH7jllluQm5trbBw///nPMWHCBHzpS1/Cd7/7XQwePBgtLS344IMP8Mwzz+DFF18E8OkP4DVr1mDWrFn46le/il27duGHP/whioqKsG3bNtvbLy8vR3l5uXad008/HUOGDMGdd94JpRR69+6NZ555BjU1NeJz1qxZA4/HgylTpsSvdhk1ahSuuuqqhPWKi4vxla98BZWVlSgqKsKjjz6Kmpoa/OQnP0FeXh4AoKKiAo8//jjOO+883HLLLRg5cmT8KqV169bh1ltvxbhx42zPAZFTmHwQfY6//vWvGD9+fKflJ598Mj766CMAwPe//3089dRT+NnPfobdu3cjFAqhqKgIkydPxrx58zB06FAAwKmnnoq5c+fixRdfxFNPPYU9e/bA6/WitLQUP/rRjzB37tzj3uvj3/7t3+L/7t27N0pLS/HQQw8l/FnBhDPOOANvvfUWfvjDH+L73/8+Ghsb0bNnT5SWluKiiy6Kr/etb30LjY2N+PWvf42HHnoIp5xyCu6880589NFHCY3cnOD1evHMM89gzpw5uPHGG+HxeDB58mSsX78eAwcOTPqcNWvWoLKyEsuWLYNlWbj00kuxZMmSTmd3zjzzTHzrW9/CggULsG3bNhQXF2Px4sW45ZZb4ut069YNr776Ku69914sX74c9fX18Pv9GDhwICZPnpx2l3ETHWYpJTQ3ICKilKmsrMTChQuxZ8+eTrUYnzV48GAMHz48aeM1ohMBL7UlIiIio5h8EBERkVH8swsREREZxTMf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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FlashCam: axial_addressing\n", - "85 µs ± 2.81 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "HESS-II - BilinearMapper:\n", + "Initialization time: \n", + "167 ms ± 339 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "44.2 µs ± 1.31 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAG5lJREFUeJztnX+MXFd1x79nZ2fXZNeJ4yR2NnFig2q1UJQ4lZsEglBICQohjRNKKKhQQ4MM6g8lqC3YVGpV+gcRqhBUaqsaSOuWH00aEmxFtGAMURQgCTb5gRPbcWJvbMfGS7xee/1zZ2ZP/5hn77vn7dw7b+fn+n4/kjXz5t5339n1nnnvnO8994qqghASHz2dNoAQ0hno/IRECp2fkEih8xMSKXR+QiKFzk9IpND5CYkUOj8hkULnJyRSett5sT7p1zkYaOcl20L5Yv/P1Pv68TZZQmJnHIdfV9VL6unbVuefgwFcJ7/Xzku2hUPvf7u3/aKv/rRNlpDY+aE+9Gq9ffnYT0ik0PkJiRQ6PyGR0taY/1zh0Cp/jO/tbyqomQ8gnYJ3fkIihc5PSKTQ+QmJFMb8dTD6CTfGl4rbrva36FsZTdzD8Q9f77323G8/6TeOkBnCOz8hkULnJyRS6PyERApj/mmwMX4GE7fbHIBFC1Pv+8ZNQkDMYAbmBEir4J2fkEih8xMSKXzsB3D4T97mHMuk+2g+WfA/mlvEPNn3j03W7KuhsQNhwenbrvW29z/6tH98Ei288xMSKXR+QiKFzk9IpNQV84vIMIBxABUAZVVdLiLzATwAYAmAYQAfVNXDrTGzuYzebabrBnYq7qn4221OoO+YifE9YbvNL9ipwZO97sn9RwO6osGXE2A+IG7y3PnfparLVHV5crwawCZVXQpgU3JMCJklNPLYvwLAuuT9OgB3NG4OIaRd1Ov8CuAHIrJFRFYlny1U1QMAkLwuaIWBhJDWUK/Of4Oq7heRBQA2isj2ei+QfFmsAoA5OG8GJjaHsY9Nafk2hs+r41vmWB3fxu3F2ufaOQE2PzBntOy9tvbO3PbJd17jbe95/JkZj026n7ru/Kq6P3kdAfAIgGsBHBSRIQBIXkdqnLtWVZer6vIi+ptjNSGkYYLOLyIDIjL3zHsA7wGwFcAGACuTbisBrG+VkYSQ5lPPY/9CAI9IdZppL4Bvqer/icjPATwoIncD2APgrtaZSQhpNkHnV9VdAK6e5vNDALp2763DH39bzTYbZ+fV8fuP1p6rX72AGd8Ttk+a/4HM2D3+mF7KftttTqB4pOTt79jGnMA5DWf4ERIpdH5CIoXOT0iknDP1/Ef+2I3xe8wU+MnUUlqaUxrP6PgGG7f7EDPUnFH/XP2gjh/ICfQdnqg9dqGx7/7CVW/2tlee39bQ+KS18M5PSKTQ+QmJFDo/IZEya2P+sZW1dfzpSMfaVue3MXvfUb92bvHp+Hb84rgb4wfzD4E5CDYn0Gd1fLsGYGrtAqn4cxk2J9A7dsptD6wv2HP1W2q2TT73ovdc0np45yckUuj8hEQKnZ+QSJk1Mf+RjwZ0/BzbZNs4e87hgI7fYL1//+HaSYHguv2B9EP/odP+03vN93sgTk9THD2Rb+wQqV9z7+IrvF3Lr+7NNzbJDe/8hEQKnZ+QSKHzExIpXRvz2xjfYuP2XNtkm5r5kNaee93+owHhP4WEdHw7dkjHt+OXPfsE9lod/6R3rDxjTzd+z5HjqZP9953eJYvNYO61mBNoHN75CYkUOj8hkdI1j/1H/8huk+22px/b68I8TfvkvMnA2KGwoH8ssLx2A1Jh/6hfypssut/f9vfmCwt6R4/XbAMAFPL+0l16Dh11P0hvTdZXrN02HSZMKFxwgbd75ciRkHnRwzs/IZFC5yckUuj8hERKx2L+ox8xUl4o5Msh5QFA33j9cl4mTs6MHZDy7NjmZ/HJeXbs4hF32a1Q2WzepbsdOc9T7gsAqAR+6SYnIGPj/v7pJcfKATm01/3T1NExtz3we2FOIAzv/IRECp2fkEih8xMSKW2N+ZdcNY77v/dEcvSE0/aBNX/d0Nj9Y258ml2qyxMjhspmR/1bXGWW184h6/cdPuVtDy6vHbC9+HptLb+Rcl8AkEOBuLk3xzwBk2/QkdcDYwf+dHP+LDHCOz8hkULnJyRS6PyERIqo1XZrdRQpANgM4DVVvU1E5gN4AMASAMMAPqiqh31jnC/z9Tqp7up9/1435i8EAuU71/yVc9x3NKBB5yCo44cIzRNI5QSKR/xz9fNicwKFnGW5acTG3SYnIGPHzMXzLXHuYPIBGR2/UYpuTuDVr17uXi818eOKD/yyudfuID/Uh7ao6vJ6+ua5898DIL352moAm1R1KYBNyTEhZJZQl/OLyCIA7wPwtdTHKwCsS96vA3BHc00jhLSSeu/8XwbwGbgPuAtV9QAAJK8LpjtRRFaJyGYR2VxCcx95CSEzJ6jzi8htAEZUdYuI3Jj3Aqq6FsBaoBrzn/k8M93dCPM2B/CPn/8X73U+9+lP5TXtLLl1fEvgK7RvtLaWn3v5a0OmJt/UxWuf0do9+QlbRxDU8Ruo95/89SFzcddu6esLDOBPtPhifFKlnkk+NwC4XURuBTAHwPki8g0AB0VkSFUPiMgQgJFWGkoIaS7B246qrlHVRaq6BMCHAPxIVT8CYAOAlUm3lQDWt8xKQkjTaeSZ8z4AN4vITgA3J8eEkFlC3Tp/M0jr/Bar+1tsDuCV0nn+/qZI/7P3/unZ95nlrxtk0sTtxbHaiU2rpYewOYHCmH8LrUbGlsOBevzMAIGfxeQEJke900ByIUV3DcDt//Qb3v5zBiZqttmf4spZrPu3SucnhJxD0PkJiRQ6PyGR0jXr9tuY3n4rlUxkNml69AQm2H/iiw/X7Pvvn/JPTgzF6X2HAltZp2Lf0Jp8lsKhY/4OeWrmASdOl18HYvAGa+YzWn761GK+Pz01un4oxidheOcnJFLo/IRECp2fkEjpGp3f8l97f+JtL5h488WJAefYxvVp3X/nxKWBvu7v5GufvNM5Lh7xr7vnxdbMGy28cMTkDxr9/7E5gcMNrFdvbTFae0bHD+2/58HmBLZ/8bf9JwyYNRhC6zIOTun+hR5/vujy97/gH6yLoM5PCAlC5yckUuj8hERK1+j8FhuF2W+piok/i+LGfAUT9E3Yzfw8VEzt941f+ak7tqkbePxjv+sO4IvTTa6iMBqYT99AzTwA4JAnDu8rmrbAYoTG9srBX/u759Ty0wRj/AZTIaE4PwZ45yckUuj8hERK10p9lnVG+rPfWlb621nqd9tTz4k9Rsp78fRlZmy/9PfyqYWm3f8ImQ4LesZqb58FIL+0Z8OCsSZuPW2m904eGs11unqkPhsSvPz5ZeZk97AyOOltz2CkPymYE1KHbxh0S7BDS34t+oOtgYt3Dkp9hJAgdH5CIoXOT0ikdK3UZymKLfl1j0tav3QzaWK6orhbfxVMzB+SCStqltoyOYDF/7rr7Pse0/bqh4bcwXKW/GogDpdQWa4zmBsXl3/lX5C5JyDlSU/tnyUT4zeZTIxPMvDOT0ik0PkJiRQ6PyGRMmt0fsu39rlTbm0OwC4L9mKpmGrz/8yvlNxtB20OwLLjlBu3+3T/V09e5BzbHECmv80JjB11DjVHrsNi8wGVnDp+eHx3+vDwmt+ZajP/BaXB2jr8dFQGzM+d0fHN1mODZrl2z/h2me/egnstmzO67M7uKfmlzk8ICULnJyRS6PyERMqs0fnzUoEt+Z2K22wMXwrp+OY70p5f7PGXE/vGnzRzBGwOoPf+k+YMN44uv3/mW4+VRwIluSZmzxDIN6Rj/CCBGN/mCDIxfhOxMf65Cu/8hEQKnZ+QSKHzExIpQZ1fROYAeBxAP6o5godU9e9EZD6ABwAsATAM4IOq6t3/qZk6vyWk+6fZVXZTHSEdf/uE0fED/XdNXGL61/4dv3xiQc02IJsDeO3EPNPu//+buNPNR5QP1d5CKy82J7D/XrucmXtYHvQMFtD9bdrE/tiVQbc+w+r8FhmYypX4av0BYMDU+1ud39JJ3b/ZOv9pADep6tUAlgG4RUSuB7AawCZVXQpgU3JMCJklBJ1fq5zZLbKY/FMAKwCsSz5fB8C/2yUhpKuoK+YXkYKIPAtgBMBGVX0KwEJVPQAAyeu0z68iskpENovI5hJOT9eFENIB6tL5VbUCYJmIzAPwiIi8td4LqOpaAGuBasw/IyvroJjZstvU+3vi9KCOn1kW3M4T8P8aKylbbPzf21Ox3R1sfBmKN20O4PA3LjQ9po7n3roLjRCK8Rshx0rryQmBdRCMbaz3z5ntV9UxAI8BuAXAQREZAoDk1b/yAyGkqwg6v4hcktzxISJvAPBuANsBbACwMum2EsD6VhlJCGk+9Tz2DwFYJyIFVL8sHlTVR0XkZwAeFJG7AewBcFcL7SSENJlZW88f4n/2Pekc+3T/HWX/A5CN8V8pWR0/UO9/eqhmm80BDJ+6yNtuGT4+39tucwAHj8+t2VdM38H37naOX//k9d5rlQa8zY42XzJmaOAZtDwQ+DsNrPOvJsZP29ITqPW36/ifZ3T/3oKbt7H9F67YNp3FLYH1/ISQIHR+QiKFzk9IpJyz9fyWyfRefSb+74Nfa6948gXV9tA8gdrj21r/jI5vDm0OwMb09rg86dqWHj9UFxCK8RshFOM3PL4nxs92zje2jfFnK7zzExIpdH5CIuWclfosVvpLY8OA3WX/o7Rl+8RCb3s6DNg1YZcF94+986S/5Neev+/kvBo9q6R/lr1H/eXBVvo79V335wz8WjLS36Rnyq633BeYpjzYlPwGbmOTA55HdTO2lf6yJb/u38vAwCnvta30d+kdL3r7NwKlPkJIEDo/IZFC5yckUqKR+opS+3uuYvIeGWnPxoQm2O3zSHmAu8W3XaobZpkuG8NnpT3/suNWKvTlKwo97li2b2WysXuDL8YPEprNa8duYuoqFOOfK/DOT0ik0PkJiRQ6PyGREo3On+a7rz3tHPcEvgNfKpW97TZW3lW6uHZfM/V326nLzVj+HIAt+Q3acuzimu227/5j53vHsrr/ie+4pco2xrfphonB2m2WktH9gyW/dotvi2lO6/52KrCld8D//29daHDQ1f17emqPf8nvb/eOnRfq/ISQIHR+QiKFzk9IpESj86exur7V2m0OoCj+ZbpKJiCtGF244AlwbblvWMf3b+ltdf5eq+Wngt9yzrpaO0e9IR0/dK2AaaGcQXieQPu2+A4tt94peOcnJFLo/IRECp2fkEiJUue3WN3fYnMAu8sT3v5Wm38hVe9v43+r+9t6/+zYbv8dJ1yt3eYArFa/58TUUt89gSXB9ozn2w78+PpLnWNfd1vrH5qrb3X/8DwB08ET41dsrX8gRi8MuPX+PQV/TmhwoPYeldb9FtzemO5PnZ8QEoTOT0ik0PkJiZQodX6Ljentmn5ls7S3rfcPrcOX1vILGR3f/S8I6fh2mXC7xbfNKZRy1ORbPbqV9f65t+DOS0jHb0B7D8X4IdqYZvPCOz8hkULnJyRSgs4vIleIyI9FZJuIvCAi9ySfzxeRjSKyM3m9sPXmEkKaRVDnF5EhAEOq+gsRmQtgC4A7AHwMwKiq3iciqwFcqKqf9Y3VrTq/5dHXtnjbC2Y9wG0lt37btw7fS6bW3+YArI7/4qlFznG23t9sH37K7AvgEcR3H3fXBrC6v+XACXdf7ZDuP/7wZc5xuhbAnmp1/NDc/HLOeQLluSZO98T8VvfPrOln6B1w533YGgjLYGqdf1sHYJn/vpe87Zam6vyqekBVf5G8HwewDcDlAFYAWJd0W4fqFwIhZJaQK+YXkSUArgHwFICFqnoAqH5BAPBPTSOEdBV1O7+IDAL4DoB7VfVojvNWichmEdlcQu1pjoSQ9lKXzi8iRVQd/5uq+nDy8UERGVLVA0leYGS6c1V1LYC1QDXmb4LNLWfSznk3un5F3TitD1YPd8cr5dCUrY5fFHf9OBtn23r/zHietQV6M3UA7nE5ULAf2iOgpfX+LRw7FOM3qtOH4vx2UU+2XwB8HcA2Vf1SqmkDgJXJ+5UA1jffPEJIq6jnzn8DgI8C+KWIPJt89jkA9wF4UETuBrAHwF2tMZEQ0gqCzq+qTwB2/6qzdL9uRwiZFtbz18GG1zY7xzYHYHX/V0on3P6p7tla/0vMWP54cNdpV1QJae07Ty50jn26/94T7jwtmwPI9D82z9tubTuyfkr3D9bj59Xx884TSNX7q2ddfQDQQVf3D7lMr6n3L5gYPz0P4PzBkzXbpuOi23Z421nPTwgJQucnJFJY0lsHRXGfOW0JcEn92zmlseXAfVbKM8+rJTQmt2WXBk8v3R0a219ebKVCu51XxZzvfdS3u2K3uOQ39KjfCPYxv1vhnZ+QSKHzExIpdH5CIoVS3wz43/3POMehLb53lo5N9Q3M9N1VMstlBzSrHaft0t3+/sOnpkqKQ313H6+91Xj1fDe2PXDc3eLb5gDSHH7ELVUOLt1tpD9LqETYN355MF+MPhkq+TWHfYP1l/zOHXDLw+12a9Zd571vp3NMqY8QEoTOT0ik0PkJiRTq/E1g0pb0ZspyNdXmUqpZNnFmbKPjw6/j2+nBE1r7vzg0R8AuCx46P2Or3Qk9NX4oxm+UZs4TsPmEUMlvI9gYv5Xwzk9IpND5CYkUOj8hkUKdvwnk0f2Hy+Omr58dJf92CDYHYLf49pUIv3Ty0pptQDYHsPekKfkNBOq+kl87B2B0/aIaPRNy6vgZ3d8zTyDT1yzzbUoUMv11rqntCLhUMVXya7f+snMA5g3Ykl//2Jtv/QJ1fkKIHzo/IZFC5yckUqjzN4H3XnaNt/37+5+r2WYjcvttnNHxTUA5EVy62x0xnQOwY1vssuBW17dTFGwOwG7x7djVwPbeQDjGb2jsQIyfPSHUbuY/dEm9P+/8hEQKnZ+QSKHzExIp1Pk7zL/tecLbbr+dd5XdmnmbA7BsN/X+zrlmDsDuU+4y4qF6/10nAvX+xrb9J86v0TN7rZGHr3SOQ3P17ZbdGTzzBGyMb6kMBGL0kO6fWS9wKgfQZ7b3Do19gdH9Wc9PCMkNnZ+QSKHzExIp1Pk7zCevfIe3/auBnIDdB8DmAHxavtXx7fbgULuFt926XL3tZRNMp+cJhPIJDdfjB1JZzvjNTnt5YvxGsTF+I/DOT0ik0PkJiZSg84vI/SIyIiJbU5/NF5GNIrIzefXXnRJCuo6gzi8i7wRwDMB/qupbk8++CGBUVe8TkdUALlTVz4YuRp2/+azZ9by33eYAXjH1/k5fo/vnrfffc3J+oP/U+MPj802bP39wcL2r+ze8xbenr8Veq2x0fw2t6TfoqaEIrPG/+C7//6+lqTq/qj4OYNR8vALAuuT9OgB35LKQENJxZhrzL1TVAwCQvNa+nRBCupKWS30isgrAKgCYg/Nafbno+MKbrvK227Agvbx2aBku++htw4LSpL/k156f3vLbLlGdkQmbXPKbh1BIob3+7bkaIe9jfiPM9Dd8UESGACB5HanVUVXXqupyVV1eRP8ML0cIaTYzdf4NAFYm71cCWN8ccwgh7aIeqe/bAH4G4DdFZJ+I3A3gPgA3i8hOADcnx4SQWQRLeiPmD7f/yjnOLMNlS35PuyW/Fnv+zuNuHjgd19vtvfcdn1ez73TH+x9e4hzbFIGdUGuX+vbF6bY8OCTlWekvg13+bHCq5Hfpxzf7z80JS3oJIUHo/IRECp2fkEhhSW/EPPBb/um7H95+wDn2LQMOZLfotlt8F1Jxu50jECKzHXgLb1vB6bo2hs/Z3uw4f6bwzk9IpND5CYkUOj8hkUKdn8yY659zl6i2OQCr++8+eVGqr39JsN3H/CW/lv3rFzvHoYWz0mW8mToAW8I7aOfy+0e3uv/Sv3gyYE3zoM5PCAlC5yckUuj8hEQKdX4yY5682v/nc8PztbeiqgS2+87U+5tA3C4LnpeGlwb30M4YvxF45yckUuj8hEQKnZ+QSGHMT1rGT67qM58cO/tu0VO2wN7l8vOOOMevnbjAOe41cwquvGO3c7z3u290jm2KoDg+9b4012sKeo+5CQlb7//G1T/1D9Cl8M5PSKTQ+QmJFDo/IZHCmJ90hH3XHfO2L37av4eWXTvAzgNocBqAl9ka41t45yckUuj8hEQKnZ+QSGHMT7qSV689bj5xj3sfu8w5tjmAK293df89613dP03xqHtsdf8r/uHciPEtvPMTEil0fkIihc5PSKQw5iezkvKN+73tfY8NzXjsczXGt/DOT0ik0PkJiZSGHvtF5BYAXwFQAPA1Vb2vKVYR0iATN7pbjV0K9/hXn377VNuX43jMt8z4zi8iBQD/DOC9AN4C4MMi8pZmGUYIaS2NPPZfC+BlVd2lqhMA/hvAiuaYRQhpNY04/+UA9qaO9yWfEUJmAY3E/NPtWZTZU0lEVgFYlRye/qE+tLWBa7aSiwG83mkjatCttnWrXUDIti89dPZtB/4gW/l7WxzuUqUR598H4IrU8SIAGfFVVdcCWAsAIrK53n3E2g1ty0+32gXQtnpo5LH/5wCWisgbRaQPwIcAbGiOWYSQVjPjO7+qlkXkzwF8H1Wp735VfaFplhFCWkpDOr+qfg/A93KcsraR67UY2pafbrULoG1BRNW/7zkh5NyE03sJiZS2OL+I3CIiO0TkZRFZ3Y5rBuy5X0RGRGRr6rP5IrJRRHYmrxd2wK4rROTHIrJNRF4QkXu6yLY5IvK0iDyX2Pb33WJbYkdBRJ4RkUe7ya7ElmER+aWIPCsim7vFvpY7f5dOA/4PALeYz1YD2KSqSwFsSo7bTRnAX6rqmwFcD+DPkt9VN9h2GsBNqno1gGUAbhGR67vENgC4B8C21HG32HWGd6nqspTE13n7VLWl/wC8DcD3U8drAKxp9XXrsGsJgK2p4x0AhpL3QwB2dIGN6wHc3G22ATgPwC8AXNcNtqE6x2QTgJsAPNpt/58AhgFcbD7ruH3teOyfLdOAF6rqAQBIXhd00hgRWQLgGgBPoUtsSx6tnwUwAmCjqnaLbV8G8BkA6d07u8GuMyiAH4jIlmTGK9AF9rVjJZ+6pgGTKURkEMB3ANyrqkdFpvsVth9VrQBYJiLzADwiIm/ttE0ichuAEVXdIiI3dtqeGtygqvtFZAGAjSKyvdMGAe1J+NU1DbgLOCgiQwCQvI50wggRKaLq+N9U1Ye7ybYzqOoYgMdQzZt02rYbANwuIsOoVpbeJCLf6AK7zqKq+5PXEQCPoFoR23H72uH8s2Ua8AYAK5P3K1GNt9uKVG/xXwewTVW/1GW2XZLc8SEibwDwbgDbO22bqq5R1UWqugTVv60fqepHOm3XGURkQETmnnkP4D2o1hJ13r42JTxuBfASgFcA/E2nEi8pe74N4ACAEqpPJncDuAjVpNHO5HV+B+x6B6oh0fMAnk3+3doltl0F4JnEtq0A/jb5vOO2pWy8EVMJv66wC8CbADyX/HvhzN9/N9jHGX6ERApn+BESKXR+QiKFzk9IpND5CYkUOj8hkULnJyRS6PyERAqdn5BI+X8GgWYz9lJ++AAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGxCAYAAABIjE2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABaWElEQVR4nO3de3wV1bk38N/M7EsuhHArCZGL0YKAaKugHiMtWBQrXstbL1VbbT2nesQLB+uFF6uICC1tkdO3FbWnFXosL5y22mq1LaiIerBVUbygxfqKgErEC5CEJPsys94/POw6sx5k2Jm19yT+vp+Pn497ZbLn2bN3wsqsZz2PpZRSICIiIooRu9wBEBEREQVxgkJERESxwwkKERERxQ4nKERERBQ7nKAQERFR7HCCQkRERLHDCQoRERHFDicoREREFDucoBAREVHscIJCBGDJkiWwLAvPPvus+PVTTz0VBx54oG/swAMPhGVZ4n8TJ070HfvXv/4VX/nKVzB06FCk02nU1dXh2GOPxdVXX+07LpfL4c4778RRRx2Ffv36oaqqCsOGDcMZZ5yB++67L9RrsSwLl19+eeHxm2++Ccuy8MMf/jDU94d10UUX+V6z4zgYPHgwzj77bLz88su+Yx977DFYloXHHnusMDZ79mxYluU7buLEidq1i6M919SyLMyePVs85lvf+lbhGCLaf4lyB0DUnR133HHiP/y9e/cu/P+DDz6I008/HRMnTsSCBQswaNAgbNu2Dc8++yyWL1+OH/3oR4Vjv/71r+Pee+/F9OnTcfPNNyOdTuONN97An/70J/z5z3/GV77ylZK8rrAqKyvx6KOPAgDy+Txef/11zJ07F01NTXj11VdxwAEHAACOPPJIPPXUUxg9evQnPt/tt99uPOYo1dTUYMmSJbjxxhth2//4e6+trQ2//vWv0bt3b7S0tJQxQqLuixMUoi7o06cP/umf/ukTj1mwYAEaGxvx5z//GYnEP37kzj33XCxYsKDweNOmTVixYgVuvPFG3HzzzYXxSZMm4V/+5V/geV70L6CLbNv2vf7x48dj6NChmDRpEh588EF8+9vfBvDRhG1f1wnAPicw5ea6LvL5fOHxOeecg//4j//AI488ghNPPLEwvmLFCriuizPPPBP33HNPOUKN3J7Xnk6nyx0KfUpwiYfIsA8++AADBgzwTU72+Phf3R988AEAYNCgQeLzfPzYOKutrQUAJJPJwpi0xCMJLvF8fHlq4cKFaGxsRK9evXDsscfiL3/5i/b9zz77LE4//XT069cPFRUVOOKII/Bf//VfvmPee+89XHbZZRg9ejR69eqFgQMH4ktf+hKeeOIJ33F7zr1gwQLMnTsXjY2NSKfTWL16deGYQw45BE1NTfjFL37h+95f/OIXmDp1auFafNyKFSswefJkDBo0CJWVlRg1ahSuv/567N6923fcRRddhF69emHDhg2YNGkSqqur8ZnPfAaXX3452tvbfcfuWda78847MWLECKTTaYwePRrLly/Xzt/c3IxLLrkEgwcPRiqVQmNjI26++WbfxCvMaycyjXdQiD4m+BfyHntr+q2UEo93HKeQe3DsscfiP/7jP3DllVfi/PPPx5FHHun7x3uPUaNGoU+fPrj55pth2zYmT56s5b3E0Z7Xv2eJ55prrkHfvn1xyimnRHaOn/70pxg5ciQWLVoEAPjud7+LKVOmYNOmTYVJwOrVq/HlL38ZxxxzDO644w7U1tZi+fLlOOecc9De3o6LLroIAPDhhx8CAG666SbU19ejra0N9913HyZOnIhHHnlEy4H58Y9/jBEjRuCHP/whevfujeHDh/u+fvHFF2PatGnYsWMH+vbti40bN2Lt2rWYO3cufvvb32qv5e9//zumTJmC6dOno7q6Gn/729/w/e9/H08//XRhuWyPXC6HKVOm4JJLLsH1119feN7NmzfjgQce8B17//33Y/Xq1ZgzZw6qq6tx++2342tf+xoSiQS++tWvAvhocnL00UfDtm3ceOONOPjgg/HUU09h7ty5ePPNN3H33Xfv12snMkoRkbr77rsVgE/8b9iwYb7vGTZs2F6PveWWWwrHvf/++2r8+PGFryWTSdXU1KTmz5+vWltbfc/54IMPqgEDBhSO7d+/vzrrrLPU/fffH/q1AFDTpk0rPN60aZMCoH7wgx8Ud3H24sILLxRf+6BBg9STTz7pO3b16tUKgFq9enVh7KabblLBX0ETJkxQEyZM0GI/7LDDVD6fL4w//fTTCoD6v//3/xbGRo4cqY444giVy+V8z3nqqaeqQYMGKdd1xdeRz+dVLpdTkyZNUl/5yle0cx988MEqm836vufj17S1tVX16tVL/eQnP1FKKXXNNdeoxsZG5XmemjZtmvYaP87zPJXL5dSaNWsUAPXCCy8Uvrbn+v77v/+773tuvfVWBcB3jQGoyspK1dzc7HtdI0eOVJ/97GcLY5dcconq1auX2rx5s+85f/jDHyoAasOGDft87USl0j3uGROVyC9/+Us888wz2n/jx48Xjx8/frx4/MUXX1w4pn///njiiSfwzDPP4Hvf+x7OOOMMvPbaa5g5cyYOO+wwvP/++4Vjp0yZgi1btuC+++7Dd77zHRx66KH43e9+h9NPP923M2fPnZ49/0WRn1LMc1ZWVhZe81//+lfce++9GDFiBKZMmYKnnnqqyzHtccopp8BxnMLjww8/HACwefNmAMDrr7+Ov/3tbzj//PMBwPc6pkyZgm3btmHjxo2F77/jjjtw5JFHoqKiAolEAslkEo888gheffVV7dynn366eMdrj169euGss87CL37xC+Tzefzyl7/EN7/5zb3u3nnjjTdw3nnnob6+Ho7jIJlMYsKECQAgnn/Pa9rjvPPOAwBtuWXSpEmoq6srPHYcB+eccw5ef/11vPXWWwCAP/zhDzj++OPR0NDgu0Ynn3wyAGDNmjX79dqJTOISD9HHjBo1CuPGjdPGa2trsXXrVnFcOl4ybty4wrG5XA7XXXcdbrvtNixYsMCXLFtZWYkzzzwTZ555JgBgy5YtOPnkk/HTn/4U//qv/4pDDz0UBx98cOEfZ+Cj5Yq9bXcNa9KkSb5/oC688EIsWbLkE7/Htm3t9Z900kkYMmQIZsyYEdkkpX///r7HexI1Ozo6AADvvvsuAOA73/kOvvOd74jPsWciuHDhQlx99dW49NJLccstt2DAgAFwHAff/e53xQnC3nKCPu7iiy/G+PHjceutt+K9994rLCcFtbW14Qtf+AIqKiowd+5cjBgxAlVVVdi6dSumTp1aeD17JBIJ7bXX19cD+EfOUnB8b8cOHjwY7777Lh544IG9Tjo+PlkGwr12IlM4QSEqg2QyiZtuugm33XabVjMkaOjQofj2t7+N6dOnY8OGDTj00EPxwAMPIJPJFI5paGjockx33nknWltbC48HDBhQ1PNUVVXh4IMPxgsvvNDlmMLaE+vMmTMxdepU8ZhDDjkEAHDPPfdg4sSJWLx4se/rH3/tHxemjslxxx2HQw45BHPmzMGJJ56IIUOGiMc9+uijeOedd/DYY48V7poAwM6dO8Xj8/k8PvjgA98kpbm5GYA+adszLo3tOXbAgAE4/PDDceutt4rnC36OWMOFyokTFCLDtm3bJv4luuev9T3/KLS2tsKyLPTq1Wufxx522GGRx7nnH/Cuamtrw+uvv46BAwdG8nxhHHLIIRg+fDheeOEFzJs37xOPtSxL2yr74osv4qmnntrrxCKMG264Ab/5zW8wbdq0Tzw3AO38d955516/51e/+hWuvPLKwuNly5YBgJbM+8gjj+Ddd98tLPO4rosVK1bg4IMPxuDBgwF8VHDwoYcewsEHH4y+ffuGf3FEZcAJClEX7Ny5U9zumk6nccQRRwD4aMlj8ODBOO200zBy5Eh4nof169fjRz/6EXr16oWrrroKALBx40acdNJJOPfcczFhwgQMGjQIO3bswIMPPoi77roLEydORFNTU0lf3754nld4/Z7n4e2338aPf/xj7Nixo8tLTvvrzjvvxMknn4yTTjoJF110EQ444AB8+OGHePXVV/Hcc8/h17/+NYCP/pG+5ZZbcNNNN2HChAnYuHEj5syZg8bGRnFHVlgXXHABLrjggk88pqmpCX379sWll16Km266CclkEr/61a/2ercplUrhRz/6Edra2nDUUUcVdvGcfPLJWl7UgAED8KUvfQnf/e53C7t4/va3v/m2Gs+ZMwerVq1CU1MTrrzyShxyyCHo7OzEm2++iYceegh33HFHYTJDVG6coBB1wX//93/j2GOP1cYPOOCAQmLiDTfcgN///ve47bbbsG3bNmQyGQwaNAgnnHACZs6ciVGjRgEAPvvZz2LGjBl49NFH8fvf/x7vvfcekskkhg8fjrlz52LGjBmxq4XS0dHhe/0DBw7EqFGjcN999xVyaErl+OOPx9NPP41bb70V06dPx44dO9C/f3+MHj0aZ599duG4WbNmob29HT//+c+xYMECjB49GnfccQfuu+++fdZp6ar+/fvjwQcfxNVXX40LLrgA1dXVOOOMM7BixQoceeSR2vHJZBJ/+MMfcOWVV2Lu3LmorKzEv/zLv+AHP/iBduzpp5+OQw89FDfccAO2bNmCgw8+GL/61a9wzjnnFI4ZNGgQnn32Wdxyyy34wQ9+gLfeegs1NTVobGzEl7/8Zd5VoVixlNpLgQciIiqbiy66CL/5zW/Q1ta2z2Mty8K0adPwk5/8pASREZVGvP4cIyIiIgInKERERBRDXOIhIiKi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5xWO4bWPzuOPP47TTjsNDQ0NsCwLv/vd73xfD3OtM5kMrrjiCgwYMADV1dU4/fTT8dZbb0UToOpmli9frpLJpPrZz36mXnnlFXXVVVep6upqtXnz5nKH1qOcdNJJ6u6771Yvv/yyWr9+vTrllFPU0KFDVVtbW+GY733ve6qmpkb99re/VS+99JI655xz1KBBg1RLS0sZI+9Znn76aXXggQeqww8/XF111VWFcV57cz788EM1bNgwddFFF6m//vWvatOmTerhhx9Wr7/+euEYXn8z5s6dq/r376/+8Ic/qE2bNqlf//rXqlevXmrRokWFY3jto/PQQw+pWbNmqd/+9rcKgLrvvvt8Xw9zrS+99FJ1wAEHqFWrVqnnnntOHX/88epzn/ucyufzXY6v201Qjj76aHXppZf6xkaOHKmuv/76MkX06bB9+3YFQK1Zs0YppZTneaq+vl5973vfKxzT2dmpamtr1R133FGuMHuU1tZWNXz4cLVq1So1YcKEwgSF196s6667To0fP36vX+f1N+eUU05R3/rWt3xjU6dOVRdccIFSitfepOAEJcy13rlzp0omk2r58uWFY95++21l27b605/+1OWYutUSTzabxbp16zB58mTf+OTJk7F27doyRfXpsGvXLgBAv379AACbNm1Cc3Oz771Ip9OYMGEC34uITJs2DaeccgpOOOEE3zivvVn3338/xo0bh7POOgsDBw7EEUccgZ/97GeFr/P6mzN+/Hg88sgjeO211wAAL7zwAp588klMmTIFAK99KYW51uvWrUMul/Md09DQgDFjxkTyfpSt1H0x3n//fbiuq3U8rqur0zojU3SUUpgxYwbGjx+PMWPGAEDhekvvxebNm0seY0+zfPlyPPfcc3jmmWe0r/Ham/XGG29g8eLFmDFjBv73//7fePrpp3HllVcinU7jG9/4Bq+/Qddddx127dqFkSNHwnEcuK6LW2+9FV/72tcA8LNfSmGudXNzM1KpFPr27asdE8W/yd1qgrKHZVm+x0opbYyic/nll+PFF1/Ek08+qX2N70X0tm7diquuugorV65ERUXFXo/jtTfD8zyMGzcO8+bNAwAcccQR2LBhAxYvXoxvfOMbheN4/aO3YsUK3HPPPVi2bBkOPfRQrF+/HtOnT0dDQwMuvPDCwnG89qVTzLWO6v3oVks8AwYMgOM42sxs+/bt2iyPonHFFVfg/vvvx+rVqzF48ODCeH19PQDwvTBg3bp12L59O8aOHYtEIoFEIoE1a9bgxz/+MRKJROH68tqbMWjQIIwePdo3NmrUKGzZsgUAP/smXXPNNbj++utx7rnn4rDDDsPXv/51/Nu//Rvmz58PgNe+lMJc6/r6emSzWezYsWOvx3RFt5qgpFIpjB07FqtWrfKNr1q1Ck1NTWWKqmdSSuHyyy/Hvffei0cffRSNjY2+rzc2NqK+vt73XmSzWaxZs4bvRRdNmjQJL730EtavX1/4b9y4cTj//POxfv16HHTQQbz2Bh133HHalvrXXnut0Gmdn31z2tvbYdv+f5YcxylsM+a1L50w13rs2LFIJpO+Y7Zt24aXX345mvejy2m2JbZnm/HPf/5z9corr6jp06er6upq9eabb5Y7tB7lX//1X1Vtba167LHH1LZt2wr/tbe3F4753ve+p2pra9W9996rXnrpJfW1r32N2/0M+fguHqV47U16+umnVSKRULfeeqv6+9//rn71q1+pqqoqdc899xSO4fU348ILL1QHHHBAYZvxvffeqwYMGKCuvfbawjG89tFpbW1Vzz//vHr++ecVALVw4UL1/PPPF8p2hLnWl156qRo8eLB6+OGH1XPPPae+9KUvfXq3GSul1E9/+lM1bNgwlUql1JFHHlnY+krRASD+d/fddxeO8TxP3XTTTaq+vl6l02n1xS9+Ub300kvlC7oHC05QeO3NeuCBB9SYMWNUOp1WI0eOVHfddZfv67z+ZrS0tKirrrpKDR06VFVUVKiDDjpIzZo1S2UymcIxvPbRWb16tfh7/sILL1RKhbvWHR0d6vLLL1f9+vVTlZWV6tRTT1VbtmyJJD5LKaW6fh+GiIiIKDrdKgeFiIiIPh04QSEiIqLY4QSFiIiIYocTFCIiIoodTlCIiIgodjhBISIiotjhBIWIiIhihxMUIiIiih1OUIiIiCh2OEEhIiKi2OEEhYiIiGLn/wMne60k/gmXgwAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "NectarCam: oversampling\n", - "97.4 µs ± 4.86 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "LSTCam - BicubicMapper:\n", + "Initialization time: \n", + "1.29 s ± 10.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "83.6 µs ± 1.2 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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Z87EZZddhu985zv47Gc/i9raWjPuN7/5DbZt24Z77rlncDUM2J4vY7Fhwwbve9jZ/WYyGQwfPhzpdBrJZBIf//jHcdlll5nn+0e3GgAzKZmQ3Q0lHkLKsH79enN/b28vVq9ejba2tl0a78orr8SwYcMG66RIoigalEJ2/MXwj38RA8BPf/rTXTpnpUyePBnHHXfc4H8HH3xwReOUSiU8//zzyGazO60JUltbi+nTp+NXv/rVTicbO64JAJ577jln//3332/GL1u2DM8++6yz76677kJ9ff2g5bnSa7GO++Y3v4n3vve9zmqbxPpcoyjCrbfeasb39PTgvvvuU/cQBAFOPfVUZ/8999yDgYEB59j7778f73znO5FMJlFXV4d3vetdeOaZZ3DkkUc6n++O/3Y2cSNkT8IVFEIA/P73vzftqeeccw5uuOEG/OlPf8JHPvIRHH300aitrcWKFSvwwx/+EJs2bcL3vve9XTpXe3s77r777sHxdhRqA7a7K2677TZEUYQPfvCDOOSQQ3DggQfi6quvRhRFaGpqwv3334+FCxdW47Z3G0uWLBm0Fm/YsAG33XYb/v73v+PKK69UUtM/Mn/+fJxyyik44YQTcPXVV+Oggw7Chg0bcN999+GnP/0p6uvrcc4556CpqQmf/vSncd111yGVSmHBggVYvXq1OWZbWxve9773Yc6cORg7dizuvPNOLFy4EN/97ndRV1f3lq7FYvbs2Zg9e/abPp8zzjgDmUwGF1xwAa666ioMDAzglltuwZYtW8z45uZmfP7zn8eqVaswdepUPPjgg7j11lvx+c9/HhMnTnRik8kkzjjjDMyePRthGOK73/0uuru7HXfOv/zLv+CUU07BO9/5Tnz+85/H5MmT0dPTg1deeQX3338/fv/737/p9ROyJ+AEhRAAX/3qV839K1aswMc//nEAwN13343vfe976OrqQlNTE4499lg8+OCDTvKpL+eddx6ef/55fP/738dPfvITrF69GkEQoL29He95z3vwhS98AcD2uiH3338/rrjiClxyySVIpVI4/fTT8cgjj6i/mOLEe97znsH/b2pqwpQpU3Dbbbc5MpXFUUcdhcWLF+Nb3/oWrrnmGvT09KC1tRWnnXYaMpkMgO0F8B566CHMmjULH/vYx9DY2IjPfOYzOPvss/GZz3xGjXn00Ufj4osvxre+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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "NectarCam: rebinning\n", - "109 µs ± 346 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "FlashCam - BicubicMapper:\n", + "Initialization time: \n", + "1.28 s ± 13.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "82.5 µs ± 798 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGxCAYAAABIjE2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABs00lEQVR4nO2de5xWZbn3f8/5mRlmBgZkhpFz4Qal8oCyRQvygKVSSTtLtFBrv7pRk6hUYqfjCdLdy8t+2+/Wj6ZgKakVmZ2lMk2xraKkoWEpgijjcJzzPMf1/uH22d7XfcG6Z/HMzBr4fT8fPh/v9VxrrXsdnsd77t/9u66I53keCCGEEEJCRHSgO0AIIYQQIuEAhRBCCCGhgwMUQgghhIQODlAIIYQQEjo4QCGEEEJI6OAAhRBCCCGhgwMUQgghhIQODlAIIYQQEjo4QCGEEEJI6OAAhRzUrFq1CpFIRP33ta99rRQ3fvx4XHjhhX3Shz/84Q+IRCL40Y9+5LzPz372M8yZMwf19fVIJpOoq6vDqaeeivvuuw+5XK5P+tnXjB8/3rj/6XQa73//+7Fo0SLs3LnTiG1qakIkEumzvvTmmQTty4UXXohIJILq6mp0dHRYn2/ZsgXRaBSRSARNTU29Pj4hBzvxge4AIf3BypUrMXnyZGNbY2PjAPVm33ieh4svvhirVq3CmWeeieXLl2PMmDFobW3Fo48+igULFmDnzp248sorB7qrgTjppJPw7W9/GwDQ3d2NZ599Fk1NTXj88cfx7LPPluK+9KUv4WMf+9hAddPgQPqSSCSQz+fxwAMP4Itf/KLx2cqVK1FdXY22trZydJOQgw4OUMghwdSpUzFt2rSB7oYv//Zv/4ZVq1bh+uuvx7XXXmt8NmfOHFx11VX4+9//PkC9O3CGDh2Kf/zHfyy1P/rRj6K9vR033ngjXnnlFRxxxBEAgNGjR2P06NED1U2DA+lLMpnEnDlzcPfddxsDFM/zsGrVKnz2s5/FnXfeWa6uDjhdXV2orKwc6G6QgwRKPIQo9PT04Ktf/SqOPvpo1NbWoq6uDieeeCJ++tOfWrE//OEPMX36dNTW1qKyshITJ07ExRdfbMXlcjksWbIEjY2NqKmpwWmnnYZNmzYZn99yyy2YPHkyvvnNb6r9amhowMknn1xqX3/99Zg+fTrq6upQU1ODY489FnfddRdkDdDx48fj7LPPxs9//nMcc8wxqKiowJQpU/Dzn/8cwDtS2JQpU1BVVYUTTjjBmM3oa2prawG8M9vwLvuSVVavXo0TTzwRQ4YMwZAhQ3D00UfjrrvuKn2+L6lu1qxZmDVrlrW9p6cHixYtQkNDAyoqKjBz5kw8//zzRkzQvrzLxRdfjHXr1hnP+re//S22bNmCiy66yIrfsWMHFixYgCOPPBJDhgzByJEjccopp+CPf/yjEff6668jEong1ltvxc0334yxY8cinU5j2rRp+N3vfqdew/PPP4+5c+eipqYGtbW1uOCCC7Bjxw6rDw888ABOPPFEVFVVYciQITjjjDOs+3LhhRdiyJAhePHFFzF79mxUV1fj1FNPtY5FSFA4QCGHBIVCAfl83vi3PzKZDHbv3o2vfe1reOihh/CDH/wAJ598MubOnYvvfe97pbinnnoKn/3sZzFx4kTcf//9+MUvfoFrr71WPf43vvENbNmyBd/97ndxxx134G9/+xvmzJmDQqEAAHj22Wexe/dufPKTn3Re8/D666/jkksuwYMPPog1a9Zg7ty5uOKKK3DjjTdasX/+85+xePFiXH311VizZg1qa2sxd+5cXHfddfjud7+LpUuX4r777kNrayvOPvtsdHd3O/WhN3ieV7r/HR0dePTRR7FixQqcdNJJmDBhwn73vfbaa3H++eejsbERq1atwk9+8hPMnz8fW7ZsCdyfb3zjG3jttdfw3e9+F9/97nfx1ltvYdasWXjttdfK1pfTTjsN48aNw913313adtddd+EjH/kIJk2aZMXv3r0bAHDdddfhF7/4BVauXImJEydi1qxZ+MMf/mDF/8d//Ad+/etfY8WKFbj33nsRjUbx8Y9/HE899ZQVe8455+D9738/fvSjH6GpqQkPPfQQzjjjDGNd09KlS3HeeefhyCOPxIMPPojvf//7aG9vx4c//GG89NJLxvGy2Sw+8YlP4JRTTsFPf/pTXH/99fu9b4T0Co+Qg5iVK1d6ANR/uVyuFDdu3Dhv/vz5+zxOPp/3crmc98UvftE75phjStu//e1vewC8vXv37nPfRx991APgnXnmmcb2Bx980APgPfXUU57ned7999/vAfBuv/32QNdaKBS8XC7n3XDDDd7w4cO9YrFoXF9FRYW3bdu20rYNGzZ4ALxRo0Z5nZ2dpe0PPfSQB8B7+OGHA/VjX4wbN059DieccIK3fft2I/a6667z3vvz9Nprr3mxWMw7//zzfc+hPceZM2d6M2fOLLXffSbHHnuscZ9ef/11L5FIeF/60pcOuC/z58/3qqqqSsdoaGjwcrmct2vXLi+VSnmrVq3yduzY4QHwrrvuun0e591379RTT/XOOeec0vbNmzd7ALzGxkavu7u7tL2trc2rq6vzTjvtNOsavvKVrxjHvu+++zwA3r333ut5nudt3brVi8fj3hVXXGHEtbe3ew0NDd65555rXB8A7+67797vfSAkKJxBIYcE3/ve9/DMM88Y/+Lx/S/B+uEPf4iTTjoJQ4YMQTweRyKRwF133YWXX365FHP88ccDAM4991w8+OCDePPNN/d5vE984hNG+4Mf/CAAHNAMwO9//3ucdtppqK2tRSwWQyKRwLXXXotdu3ahpaXFiD366KNx+OGHl9pTpkwB8I788d51A+9u9+uXnJHyhKykcfLJJ5fu/5NPPom77roLO3bswCmnnGI5ed7L2rVrUSgUcNlll/meozfMmzfPmK0aN24cZsyYgUcffbSsfbnooovw9ttv41e/+hXuu+8+JJNJfOYzn9ln/O23345jjz0W6XS69O797ne/M969d5k7dy7S6XSpXV1djTlz5uDxxx8vzc69y/nnn2+0zz33XMTj8dL1/uY3v0E+n8cXvvAF49mm02nMnDlTncH59Kc/7XwfCOkNHKCQQ4IpU6Zg2rRpxr/9sWbNGpx77rk4/PDDce+99+Kpp57CM888g4svvhg9PT2luI985CN46KGHSj/qo0ePxtSpU/GDH/zAOubw4cONdiqVAoCSlDJ27FgAwObNm52u6emnn8bs2bMBAHfeeSeefPJJPPPMM1iyZIlx3Hepq6sz2slkcr/b33udGolEwvh3zz33+Pa5tra2dP9nzJiBiy++GKtXr8bLL7+M//2///c+93t3nUS5F842NDSo23bt2lXWvowbNw6nnnoq7r77btx999343Oc+t8/FpMuXL8e//Mu/YPr06fjxj3+MP/3pT3jmmWfwsY99TJXd9nUN2WzWsjfL2Hg8juHDh5eu9+233wbwzsBbPt8HHnjAGkRWVlaipqbG+T4Q0hvo4iFE4d5778WECRPwwAMPGH9hZzIZK/aTn/wkPvnJTyKTyeBPf/oTli1bhnnz5mH8+PE48cQTnc85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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "NectarCam: nearest_interpolation\n", - "98.8 µs ± 239 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "NectarCam - BicubicMapper:\n", + "Initialization time: \n", + "1.31 s ± 37.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "98.6 µs ± 2.79 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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FaeccgruvPNO8fsBAwYgkUjg+eefRzqdFr/fcW7gwIEAkMs32V0effRRbNu2DY888giGDx+eO79y5cqdzjvkhBNOQHFxMR599FFcfvnlee95//33Y+TIkXjooYe88Xa1E1EoamtrsWzZMu/c5z73uUhj7Uj6ffXVV3caM3DgQLS3t6Ourm6X/1NMp9Pq69/ZgqOurk49t//+++/xXEIuuugiXH/99UgkEpg2bdpO4+6//35ccMEFmDt3rnf+k08+QZ8+fcyvIVyMtLW14dNPP/XO77h2xznr92UHUXcbCdkBd1BIj+bkk0/GKaecgptuuglbt271fjdlyhQ457Bhw4bcv9z/8efQQw8FsH1rv6qqCnfccccupYodf6DDf8nu+EP9j3/AnXO7ZSGtqanBpZdeij/+8Y9qkiuwPRH3tddey92zpKTE+59EXV2d6uIpNCUlJeJZVlZWRhprxyJu0KBBO42ZPHkyAOD222/f5VgjRozIPZ8dPP300+JzsYPf/OY33vHSpUuxdu1aTJw4cY/nEjJt2jScfvrpuPbaazFkyJCdxiUSCbEQ+D//5/9gw4YNavwDDzzgfWbXrl2LpUuXqq8hfL2LFi0CgFys9ftCSKHgDgrp8dx6660YM2YMNm7ciEMOOSR3/thjj8X/+B//AxdddBGWL1+O448/HhUVFfjwww/xwgsv4NBDD8W3vvUt9OrVCz/5yU9w6aWX4uSTT8Y3v/lNVFdX4+2338arr76Kn//85wCQ+wN96623YvLkyUilUjjssMNwyimnoKSkBN/4xjcwc+ZMNDc34/bbb8emTZt263XMnz8f7777Li688EL88Y9/xFe+8hVUV1fjk08+weLFi3HPPffgwQcfxGGHHYYpU6bgkUcewRVXXIGzzjoL69evx//8n/8TgwcPxltvvVW4h1tAPvroI/zlL38BsF1CWrlyJebMmYM+ffrgoosu2ul1xx13HM4//3zMmTMHH330EaZMmYJ0Oo1XXnkF5eXluPrqqwEA559/Pn70ox/hX/7lXzBhwgS88cYb+PnPf46qqip13OXLl+PSSy/F1772Naxfvx6zZs3CkCFDdulGsc4lpLa2Fo8++mjeZzRlyhQsXLgQBx54IA477DCsWLECP/7xj3cqP27cuBFf+cpX8M1vfhP19fW44YYbUFpaiuuuu86LKykpwU9+8hNs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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "NectarCam: bilinear_interpolation\n", - "113 µs ± 990 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "DigiCam - BicubicMapper:\n", + "Initialization time: \n", + "919 ms ± 3.34 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "66.6 µs ± 1.75 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABbCUlEQVR4nO3df5zUVb0/8NfM7MzsD3YXFtxfyE+FKwolgpmIQqF0lbw3STP8haI97KIpUaF+yURSULv64FqKP66hXSXJotQyg0xRL5RIYoqFWQj4Y11+78L+nJnz/WMuU8t5HTyzM3x2gdfz8eDxkLPn82NnZtfD57zP64SMMQYiIiIiAQl39Q2IiIjI4UWDDxEREQmUBh8iIiISKA0+REREJFAafIiIiEigNPgQERGRQGnwISIiIoHS4ENEREQCpcGHiIiIBEqDDznkPPzwwwiFQpk/hYWFqK6uxmc+8xnMnz8f9fX11jFz5sxBKBTq1PVeeOEFhEIhvPDCC9bXXnrpJXzpS19C3759EYvFUF5ejjFjxmDhwoXYs2dPp67X1caPH9/h9Y1Goxg4cCAuv/xybNy4sUPfve/Fu+++e0Du5d1330UoFMJ//ud/fmzfzt7L3s9GOBzG3//+d+vre/bsQVlZGUKhEC699NKszi1yuNLgQw5ZixYtwqpVq7B8+XLcc889OP7443H77bdj2LBh+O1vf9uh7xVXXIFVq1Z16jonnHACVq1ahRNOOKFD+0033YTTTjsN77//Pr773e9i+fLlePzxxzFhwgTMmTMH3/72tzv9vXW1wYMHY9WqVVi1ahWee+45zJo1C7/85S9x6qmnoqmpKdNv0qRJWLVqFWpqarrwbvNzLz169MCiRYus9ieeeALt7e2IRqO53qLI4cOIHGIWLVpkAJjVq1dbX9u4caPp16+fKS0tNXV1dQfsHn7yk58YAObyyy83qVTK+npDQ4P5zW9+c8CufyCNGzfOHHfccVb7Qw89ZAAE+n1t2LDBADDf+973Dtg1brrpJgPAXHHFFaZfv34mmUx2+PrYsWPNlClTTElJiZk6deoBu48g7dmzp6tvQQ5xevIhh5X+/fvjzjvvRGNjI+6///5MO5t2aW1txTe+8Q1UV1ejuLgYp512GtasWYOBAwd2eLzOpl3mzp2LXr164e6776bTOaWlpZg4cWLm7/fccw9OO+00VFZWoqSkBCNGjMAdd9yB9vb2DseNHz8ew4cPx6pVqzBmzBgUFRVh4MCBmX+R/+pXv8IJJ5yA4uJijBgxAs8++2wuL1dWysvLAaDDEwDXVMezzz6LCRMmoLy8HMXFxRg2bBjmz5+f+fr48eMxfvx46xqXXnopBg4caLWnUinceuut6N+/PwoLCzF69Gg899xzHfp09l72mjZtGjZv3ozly5dn2t5++228/PLLmDZtmtW/paUF3/jGN3D88cejvLwcFRUVOPnkk/Hkk09afUOhEK6++mrcf//9GDp0KOLxOI499lg8/vjj9HtYvnw5LrvsMlRUVKCkpARnn302nRL67W9/iwkTJqCsrAzFxcU45ZRTrNdl72f/j3/8I84991z06tULRx11lHUukXzS4EMOO2eddRYikQhefPHF/fa77LLLsGDBAlx22WV48skn8cUvfhHnnHMOdu7cud/jPvzwQ7z55puYOHEiiouLve7pb3/7Gy644AL8z//8D375y1/i8ssvx/e+9z1ceeWVVt+6ujpcdtlluOKKK/Dkk09ixIgRmDZtGubOnYsbbrgBs2bNws9+9jP06NEDX/jCF/DBBx943UO2EokEEokEmpqa8Morr2Du3LkYPHgwxowZs9/jHnroIZx11llIpVK477778PTTT+Oaa67Be++91+l7+cEPfoBnn30WCxYswKOPPopwOIwzzzzzY6fSsrmXIUOG4NRTT8UPf/jDTNsPf/hDDBw4EBMmTLD6t7a2Yvv27fjmN7+JX/ziF/jxj3+MsWPHYvLkyfjRj35k9X/qqadw9913Y+7cufjpT3+KAQMGYMqUKfjpT39q9b388ssRDoexePFiLFiwAK+88grGjx/f4bP56KOPYuLEiSgrK8MjjzyCn/zkJ6ioqMDnPvc5awACAJMnT8bRRx+NJ554Avfdd99+XzeRnHX1oxeRfNvftMteVVVVZtiwYZm/7320vte6desMAHPdddd1OO7HP/6xAdDh8frzzz9vAJjnn3/eGGPM73//ewPAXH/99Z26/2Qyadrb282PfvQjE4lEzPbt2zNfGzdunAFgXn311Uzbtm3bTCQSMUVFReb999/PtK9du9YAMHfffXen7sNl7z3s+2fo0KHmz3/+c4e+e9+LDRs2GGOMaWxsNGVlZWbs2LF0OuqfrzFu3DirferUqWbAgAGZv++ddqmtrTXNzc2Z9oaGBlNRUWFOP/30nO9l72djy5YtZtGiRSYej5tt27aZRCJhampqzJw5c4wx5mOnXRKJhGlvbzeXX365GTlyZIevATBFRUUdpgITiYQ55phjzNFHH219D+ecc06H4//3f//XADC33HKLMSY9bVJRUWHOPvvsDv2SyaT55Cc/aT71qU9Z3993vvMd572L5JuefMhhyRiz36+vWLECAPClL32pQ/u5556LgoKCvN/Pa6+9hn/7t39D7969EYlEEI1GcckllyCZTOLtt9/u0LempgajRo3K/L2iogKVlZU4/vjjUVtbm2kfNmwYAFgrUPaVTCYzTzESiQRSqdTH3u9RRx2F1atXY/Xq1Vi1ahUWL16MoqIiTJgwAX/961+dx61cuRINDQ2YPn16p1cXMZMnT0ZhYWHm76WlpTj77LPx4osvIplM5u1ezjvvPMRiMTz22GN45plnUFdXt98VLk888QROOeUU9OjRAwUFBYhGo3jooYfw5z//2eo7YcIEVFVVZf4eiURw/vnn45133rGexFx44YUd/j5mzBgMGDAAzz//fOZ72759O6ZOnWq9t//6r/+K1atXW6utvvjFL3q9BiL5oMGHHHb27NmDbdu2dfgf9b62bdsGAB3+ZwAABQUF6N27937P379/fwDAhg0bvO5n06ZNOPXUU/H+++/jv/7rv/DSSy9h9erVuOeeewAAzc3NHfpXVFRY54jFYlZ7LBYDkK492J+jjjoK0Wg082fu3Lkfe8976ypGjx6NT3/605gyZQp+/etf48MPP8R3vvMd53FbtmwBABx55JEfe41sVFdX07a2tjbs3r07b/dSUlKC888/Hz/84Q/x0EMP4fTTT8eAAQNo36VLl2aWWT/66KNYtWoVVq9ejWnTptH3xPU9AP/4PH5c3739PvroIwDpwfI/v7fRaBS33347jDHYvn17h+O7w4okOXzk/59wIt3cr371KySTSVrQuNfeAcZHH32Evn37ZtoTiYT1P4J91dTUYMSIEVi2bBmampo+tu7jF7/4Bfbs2YOlS5d2+B/Z2rVrP/6byYOnn34ara2tmb/vb1C2PzU1NejTpw9ef/11Z58jjjgCAD62vqOwsBC7du2y2rdu3Ur719XV0bZYLIYePXrkdC/7mjZtGv77v/8bf/rTn/DYY485+z366KMYNGgQlixZ0uHJyj+/1vver6tt3wGvq+/RRx8NAOjTpw8A4Pvf/z4+/elP0+vtO7DO55MokY+jJx9yWNm0aRO++c1vory8nBZz7nXaaacBAJYsWdKh/ac//SkSicTHXufGG2/Ejh07cM0119Apnt27d2PZsmUA/vFLPx6PZ75ujMGDDz748d9QHowYMSLzFGP06NGdHny899572Lp1KyorK519xowZg/Lyctx33337nfoaOHAg3n777Q7/o962bRtWrlxJ+y9durTD04TGxkY8/fTTOPXUUxGJRHK6l32dfPLJmDZtGs455xycc845zn6hUAixWKzD/9Tr6uroahcAeO655zJPLID0dNiSJUtw1FFHWU9n9h30rFy5Ehs3bswMqE855RT07NkTb731Vof39p//7H0yJtIV9ORDDllvvvlmZq67vr4eL730EhYtWoRIJIKf//znmX/5MscddxymTJmCO++8E5FIBJ/97Gexbt063HnnnSgvL0c4vP9x+3nnnYcbb7wR3/3ud/GXv/wFl19+OY466ig0NTXhD3/4A+6//36cf/75mDhxIs444wzEYjFMmTIFs2bNQktLCxYuXIgdO3bk+yXJm+bmZvz+978HkP6f5IYNG3DHHXcAAGbMmOE8rkePHrjzzjtxxRVX4PTTT8dXvvIVVFVV4Z133sHrr7+OH/zgBwCAiy++GPfffz8uuugifOUrX8G2bdtwxx13oKysjJ43EongjDPOwMyZM5FKpXD77bejoaEBN998c873wjz00EMf9xLh85//PJYuXYrp06fj3HPPxebNm/Hd734XNTU1tC6mT58++OxnP4sbb7wRJSUluPfee/GXv/zFWm4LAK+++iquuOIKnHfeedi8eTNmz56Nvn37Yvr06Znv7fvf/z6mTp2K7du349xzz0VlZSW2bNmC119/HVu2bMHChQs/9nsQOWC6stpV5EDYuyJg759YLGYqKyvNuHHjzLx580x9fb11zL6rXYwxpqWlxcycOdNUVlaawsJC8+lPf9qsWrXKlJeXm69//euZfvuudvlnK1asMOeee66pqakx0WjUlJWVmZNPPtl873vfMw0NDZl+Tz/9tPnkJz9pCgsLTd++fc23vvUt8+tf/9o6ryvga8CAAWbSpElWOwBz1VVX+bxs3vZd7RIOh01tba0588wzzQsvvNCh774rTPZ65plnzLhx40xJ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iIiIHGCNjY0oLy/fb58DlvMRCoU6/N0YY7UBwA033ICZM2dm/r5z504MGDAAmzZt+tibl+A1NDSgX79+2Lx5M8rKyrr6duSf6L3pvvTedG96f/LDGIPGxkbU1tZ+bN+8Dz769OmDSCRiPeWor6+3noYAQDweRzwet9rLy8v1IejGysrK9P50U3pvui+9N92b3p/c+T40yHvBaSwWw6hRo7B8+fIO7cuXL8eYMWPyfTkRERE5yByQaZeZM2fi4osvxujRo3HyySfjgQcewKZNm/DVr371QFxOREREDiIHZPBx/vnnY9u2bZg7dy4+/PBDDB8+HM888wwGDBjwscfG43HcdNNNdCpGup7en+5L7033pfeme9P7E7yQ8VkTIyIiIpIn2ttFREREAqXBh4iIiARKgw8REREJlAYfIiIiEigNPkRERCRQ3W7wce+992LQoEEoLCzEqFGj8NJLL3X1LR125s+fjxNPPBGlpaWorKzEF77wBaxfv75DH2MM5syZg9raWhQVFWH8+PFYt25dF93x4Wv+/PkIhUKYMWNGpk3vTdd6//33cdFFF6F3794oLi7G8ccfjzVr1mS+rvenayQSCXz729/GoEGDUFRUhMGDB2Pu3LlIpVKZPnpvAmS6kccff9xEo1Hz4IMPmrfeestce+21pqSkxGzcuLGrb+2w8rnPfc4sWrTIvPnmm2bt2rVm0qRJpn///mb37t2ZPrfddpspLS01P/vZz8wbb7xhzj//fFNTU2MaGhq68M4PL6+88ooZOHCg+cQnPmGuvfbaTLvem66zfft2M2DAAHPppZeaP/zhD2bDhg3mt7/9rXnnnXcyffT+dI1bbrnF9O7d2/zyl780GzZsME888YTp0aOHWbBgQaaP3pvgdKvBx6c+9Snz1a9+tUPbMcccY66//vouuiMxxpj6+noDwKxYscIYY0wqlTLV1dXmtttuy/RpaWkx5eXl5r777uuq2zysNDY2miFDhpjly5ebcePGZQYfem+61nXXXWfGjh3r/Lren64zadIkM23atA5tkydPNhdddJExRu9N0LrNtEtbWxvWrFmDiRMndmifOHEiVq5c2UV3JQCwa9cuAEBFRQUAYMOGDairq+vwXsXjcYwbN07vVUCuuuoqTJo0CaeffnqHdr03Xeupp57C6NGjcd5556GyshIjR47Egw8+mPm63p+uM3bsWDz33HN4++23AQCvv/46Xn75ZZx11lkA9N4E7YDEq3fG1q1bkUwmrZ1vq6qqrB1yJTjGGMycORNjx47F8OHDASDzfrD3auPGjYHf4+Hm8ccfxx//+EesXr3a+prem67197//HQsXLsTMmTPx//7f/8Mrr7yCa665BvF4HJdcconeny503XXXYdeuXTjmmGMQiUSQTCZx6623YsqUKQD0sxO0bjP42CsUCnX4uzHGapPgXH311fjTn/6El19+2fqa3qvgbd68Gddeey2WLVuGwsJCZz+9N10jlUph9OjRmDdvHgBg5MiRWLduHRYuXIhLLrkk00/vT/CWLFmCRx99FIsXL8Zxxx2HtWvXYsaMGaitrcXUqVMz/fTeBKPbTLv06dMHkUjEespRX19vjUQlGF/72tfw1FNP4fnnn8eRRx6Zaa+urgYAvVddYM2aNaivr8eoUaNQUFCAgoICrFixAnfffTcKCgoyr7/em65RU1ODY489tkPbsGHDsGnTJgD62elK3/rWt3D99dfjy1/+MkaMGIGLL74YX//61zF//nwAem+C1m0GH7FYDKNGjcLy5cs7tC9fvhxjxozpors6PBljcPXVV2Pp0qX43e9+h0GDBnX4+qBBg1BdXd3hvWpra8OKFSv0Xh1gEyZMwBtvvIG1a9dm/owePRoXXngh1q5di8GDB+u96UKnnHKKtSz97bffzuzorZ+drtPU1IRwuOP/8iKRSGaprd6bgHVhsatl71Lbhx56yLz11ltmxowZpqSkxLz77rtdfWuHlf/4j/8w5eXl5oUXXjAffvhh5k9TU1Omz2233WbKy8vN0qVLzRtvvGGmTJmiJWld5J9Xuxij96YrvfLKK6agoMDceuut5q9//at57LHHTHFxsXn00UczffT+dI2pU6eavn37ZpbaLl261PTp08fMmjUr00fvTXC61eDDGGPuueceM2DAABOLxcwJJ5yQWd4pwQFA/yxatCjTJ5VKmZtuuslUV1ebeDxuTjvtNPPGG2903U0fxvYdfOi96VpPP/20GT58uInH4+aYY44xDzzwQIev6/3pGg0NDebaa681/fv3N4WFhWbw4MFm9uzZprW1NdNH701wQsYY05VPXkREROTw0m1qPkREROTwoMGHiIiIBEqDDxEREQmUBh8iIiISKA0+REREJFAafIiIiEigNPgQERGRQGnwISIiIoHS4ENEREQCpcGHiIiIBEqDDxEREQnU/weDrgB05cF/ewAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "NectarCam: bicubic_interpolation\n", - "167 µs ± 8.74 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "VERITAS - BicubicMapper:\n", + "Initialization time: \n", + "315 ms ± 1.16 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "35.5 µs ± 97.9 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGEklEQVR4nO3deZRU9Z3//1dVdXX1SrN30yzaIq6I+Q0QhETBGMhgNJlhsqlJcDTGBTPhkBkn6mRsPQoZJ+FgDqOTGGN0JhyyqTEZQZgRMA5jggsR0bhEZFGaHXqv7qr6/P7wS8W2wfcbKa7d7fNxTp8DVW/u/dTtqsu7b9er3rEQQhAAAEBE4u/3AgAAwAcLzQcAAIgUzQcAAIgUzQcAAIgUzQcAAIgUzQcAAIgUzQcAAIgUzQcAAIgUzQcAAIgUzQf6nL/+679WaWmp9u/ff9iaSy65RMlkUjt27JAkxWKxw35deuml+X9XX1/f5b5kMqlRo0bpiiuuUENDQ7f9HH/88brgggskSZdeeum77udQ+9u9e7dSqZRisZieeuqpQz6WEIKWLl2qs88+W0OHDlVJSYlGjBihT3ziE/rhD3945AfwXfz4xz/utt4hQ4Zo2rRp+s1vftOtPhaLqb6+vqBreLtp06Zp7Nixrtr3spbXX389/zgP928vu+yyfA0An6L3ewFAoV1++eV66KGHtGTJEl1zzTXd7j9w4IAefPBBXXDBBaqurs7f/pnPfEbf+MY3utUPGTKk223Lly9XVVWVmpubtWLFCn33u9/V2rVrtX79eiWTyUOu61vf+pauuuqq/N+feeYZzZkzR/Pnz9e55557yP39x3/8hzo6OiRJ99xzjyZMmNBtu9dff73+5V/+RVdccYX+4R/+QZWVldq8ebMee+wx/epXv9JXvvKVQ67naNx777065ZRTFEJQQ0ODFi9erAsvvFAPP/ywLrzwwnzd//3f/2nEiBEF3/97cTRrqays1I9//GP98z//s+LxP//M1tzcrJ///Ofq16+fGhsbC7VUoO8LQB+TyWRCbW1tGD9+/CHvv+uuu4Kk8Otf/zp/m6QwZ84cc9s33XRTkBR27drV5fa//du/DZLCY4891uX24447Lnzyk5885LZWrVoVJIWf//znh93f2LFjw9ChQ8PEiRNDVVVVaG1t7XJ/a2trSKVS4ctf/vIh/302mzUf05G49957g6Swbt26Q67joosuKuj+LFOnTg2nn376Mdv+pk2bgqTwla98JUgKK1as6HL/D3/4w1BaWhq++MUvhr5yOs1kMqG9vf39Xgb6OH7tgj4nkUho9uzZevrpp7Vhw4Zu9997770aNmyYZs6cWbB9HrwicfDXOIXwu9/9Ts8//7y+9KUv6YorrtCBAwf0y1/+sktNS0uL0um0hg0bdshtvP2n9GOppKRExcXF3a76HOrXFW+88Ya++tWvauTIkSouLlZtba0+85nP5I/dwV/tvP76613+3erVqxWLxbR69epu+//tb3+rs846S6WlpRo+fLi+9a1vKZvNHvVaDjr55JM1ZcoU/ehHP+py+49+9CPNmjVLVVVV3db005/+VDNmzNCwYcNUWlqqU089Vd/85jfV0tLSpe7SSy9VRUWFNm7cqPPOO0/l5eUaMmSIrr32WrW2tnZ7DNdee62+//3v66STTlIqldJpp52mpUuXdtt/Q0ODrrzySo0YMULFxcWqq6vTzTffrEwmk685+Gul22+/Xbfeeqvq6uqUSqW0atWqbtsDConmA33Swd/Dv/M/ixdeeEG///3vNXv2bCUSiS73hRCUyWS6fQXH4OdNmzZJkk466aSCPYZ77rlH0luP5Qtf+ILKysrytx00ePBgnXjiibrzzju1cOFC/fGPf3St92hls1llMhl1dnZq27Ztmjt3rlpaWnTxxRe/67974403NHHiRD344IOaN2+eli1bpkWLFqmqqkr79u17T2tpaGjQF77wBV1yySX61a9+pc985jO69dZb9fWvf72gazn467yD97300ktau3atLr/88kNu/5VXXtH555+ve+65R8uXL9fcuXP1s5/9rMuvpQ7q7OzU+eefr/POO08PPfRQvsH4/Oc/36324Ycf1ve+9z3dcsst+sUvfqHjjjtOF110kX7xi190OSYf/vCH9eijj+qf//mftWzZMl1++eVasGCBrrjiim7b/N73vqfHHntM3/nOd7Rs2TKdcsop73rsgKP2Pl95AY6ZqVOnhsGDB4eOjo78bd/4xjeCpPDyyy93qZV02K//+I//yNcd/LVLQ0ND6OzsDPv27Qs/+9nPQnl5+SF/5fBef+3S0tIS+vXrF84666z8bbNnzw6xWCy8+uqrXWp///vfh1GjRuXXW1lZGS644IJw//33h1wu5ztYTgd/7fLOr1QqFe68885u9ZLCTTfdlP/7ZZddFpLJZHjhhRfMfWzatKnL7QeP16pVq/K3TZ06NUgKv/rVr7rUXnHFFSEej4fNmzcf1VoO/trlX//1X0NTU1OoqKgIixcvDiGE8A//8A+hrq4u5HK5MGfOnHf9tUsulwudnZ1hzZo1QVL4wx/+kL9v9uzZQVK44447uvyb2267LUgKTzzxRJfHUFpaGhoaGvK3ZTKZcMopp4QTTzwxf9uVV14ZKioqujz+EEL4zne+EySFjRs3dnl8o0eP7vI6AY41rnygz7r88su1e/duPfzww5KkTCaj//zP/9TZZ5+tMWPGdKv/3Oc+p3Xr1nX7Ov/887vV1tTUKJlMasCAAfrc5z6n8ePH67777ivY2n/2s5+psbFRl112Wf62yy67TCEE3XvvvV1qJ06cqFdffVXLly/XDTfcoMmTJ+t//ud/9OUvf1mf+tSn3vVKSC6X63KV552/qjic+++/P398li1bptmzZ2vOnDlavHjxu/67ZcuW6dxzz9Wpp57q2o9HZWWlPvWpT3W57eKLL1Yul9Pjjz9esLVUVFTos5/9rH70ox8pk8no/vvv19/+7d8eNuXy2muv6eKLL1ZNTY0SiYSSyaSmTp0qSXrxxRe71V9yySXdHoOkbr8COe+887q8UTqRSOjzn/+8Xn31VW3btk2S9Jvf/Ebnnnuuamtru3x/D/6qcc2aNV22+alPfeqwb5QGjgWaD/RZn/nMZ1RVVZX/z/qRRx7Rjh07DnuZfMiQIZowYUK3r4EDB3ar/e///m+tW7dOjz76qP7mb/5Gjz/+uL72ta8VbO333HOPSkpK9Jd/+Zfav3+/9u/fr3Hjxun444/Xj3/8425NQjKZ1Cc+8QnddtttevTRR7V169Z8/HXZsmWH3c8tt9yiZDKZ/xo9erRrfaeeemr++PzlX/6lvv/972vGjBm67rrr3jXivGvXroKnX97+H/FBNTU1kqQ9e/YUdC2XX365nnnmGd12223atWtXl1j02zU3N+vss8/W7373O916661avXq11q1bpwceeECS1NbW1qW+qKhIgwYNcj2Gg7e/W+2OHTv061//usv3NplM6vTTT5f0VoT77Q73niHgWCFqiz6rtLRUF110ke6++25t375dP/rRj1RZWanPfvazR73tM888U4MHD5YkTZ8+XZ/4xCf0gx/8QJdffrkmTpx4VNt++eWX9cQTT0iSRo0adciaRx999JBXZA4aNGiQ5s6dq9WrV+v5558/bO1Xv/rV/OeQSFIqlXrP6x43bpweffRRvfzyy/rwhz98yJohQ4bkfzo/nJKSEklSOp3ucvs7/8M86FBv8j34mSvv/A/9SNfyTh/5yEd08skn65ZbbtH06dM1cuTIQ9Y99thjevPNN7V69er81Q5Jh23MMpmM9uzZ02W9h3sMh/o8mXfWDh48WOPGjdNtt912yP3V1tZ2+TufUYKoceUDfdrll1+ubDarf/3Xf9UjjzySf+NmIcViMf3bv/2bEomE/umf/umot3fwTaV33323Vq1a1eXrkUceUTKZzL+RtrOz87A/3R+8tP/O/2jerra2tstVnjPOOOM9r3v9+vWSDv25KAfNnDlTq1at0ksvvXTYmuOPP16S9Nxzz3W5/eCvz96pqamp231LlixRPB7XOeecc1RrOZR/+qd/0oUXXnjIz4Q56OB/5u9s5r7//e8f9t/85Cc/6fL3JUuWSHrrg9Te7n/+53+6NFzZbFY//elPNXr06PyVnAsuuEDPP/+8Ro8efciree/2nACiwJUP9GkTJkzQuHHjtGjRIoUQDvsrF+mtn6CffPLJbrf369dPp5122rvuZ8yYMfrqV7+qO++8U0888YQ++tGPvqf1HnwvwamnnnrYDwc7+GFeu3btUiwW0/HHH6/Pfvaz+vjHP66RI0equblZq1ev1h133KFTTz1Vs2bNek9reTfPP/98PrK5Z88ePfDAA1q5cqX++q//WnV1dYf9d7fccouWLVumc845RzfccIPOOOMM7d+/X8uXL9e8efN0yimnaOLEiTr55JP193//98pkMhowYIAefPDB/NWgdxo0aJCuvvpqbdmyRSeddJIeeeQR3X333br66qsPe+XIu5ZD+eIXv6gvfvGL73p8pkyZogEDBuiqq67STTfdpGQyqZ/85Cf6wx/+cMj64uJiffe731Vzc7MmTpyotWvX6tZbb9XMmTO7PZcGDx6sj33sY/rWt76l8vJy3XnnnfrjH//YJW57yy23aOXKlZoyZYr+7u/+TieffLLa29v1+uuv65FHHtG///u/95gPf8MH1Pv8hlfgmLvjjjuCpHDaaacdtkbvknb5yEc+kq873IeMhRDCjh07QkVFRTj33HPztx1p2uWhhx4KksKiRYsOu9bly5cHSeG73/1uSKfT4Tvf+U6YOXNmGDVqVEilUqGkpCSceuqp4brrrgt79ux512NzpA6Vdqmqqgof+tCHwsKFC7t9OJXekTAJIYStW7eGyy67LNTU1IRkMhlqa2vD5z73ubBjx458zcsvvxxmzJgR+vXrF4YMGRK+9rWvhf/6r/86ZNrl9NNPD6tXrw4TJkwIqVQqDBs2LNxwww2hs7PzqNfy9rTLuzlU2mXt2rVh8uTJoaysLAwZMiR85StfCc8880yQFO6999583ezZs0N5eXl47rnnwrRp00JpaWkYOHBguPrqq0Nzc3O3xzBnzpxw5513htGjR4dkMhlOOeWU8JOf/KTbmnbt2hX+7u/+LtTV1YVkMhkGDhwYxo8fH2688cb8dr2PDyi0WAgRfCgAAOCQLr30Uv3iF79Qc3OzWRuLxVypIqCn4z0fAAAgUjQfAAAgUvzaBQAARIorHwAAIFI0HwAAIFI0HwAAIFI97kPGcrmc3nzzTVVWVvKRvwAA9BIhBDU1Nam2tlbx+Ltf2+hxzcebb7552HkJAACgZ9u6dav5Cbo9rvmorKyUJH1U56tIjHgGDidWZL8+QqbTrCka6Zvzkdn6pr2t4fZ01Mwb2yPbjndbcoT+Mtt3OraTc6wI6Jsy6tQTeiT///i76XHNx8FftRQpqaIYzQdwODHH6yM4fnNZFHdOsnXsz7WtCLfj3pbnEwdc+6P5wAfY/3sZed4ywRtOAQBApGg+AABApGg+AABApGg+AABApHrcG06Bvi5eXFyY7QyrNmuy1f3Nmo5S3xs391wwyqwZtLHdrNl74XFmzcAX7O1otP34JanDUVPUbFd5Tpa5XbsdVY7tdHhW7XsuebcFRIkrHwAAIFI0HwAAIFI0HwAAIFI0HwAAIFI0HwAAIFI0HwAAIFJEbQGHoiGD7aKUc0aKQ2bUELOmZai9v63n2zNLKl/2nQY6Ptxs1mTKKgqynU7PdibZ25GkXM6eM5HZV27WjHqkzKxJ7bK/b0Xb7DhubtsbZo0kxSrsdWsvUVv0PFz5AAAAkaL5AAAAkaL5AAAAkaL5AAAAkaL5AAAAkaL5AAAAkSJqi14rlkjYNY6pn/EB/c2aMNiu6RhkRzElqX2wPUW24SP2dipP2G/WTBi4x6w5bdJ2e2dOuZPsWKvLSYXZjCSlg328X2ocata8MsSO0Xa+ZkeEa54cYda0nW9P/pWkof9rx3aLkvbjz+1vtGvSjknDgBNXPgAAQKSOqPmor69XLBbr8lVTU5O/P4Sg+vp61dbWqrS0VNOmTdPGjRsLvmgAANB7HfGVj9NPP13bt2/Pf23YsCF/3+23366FCxdq8eLFWrdunWpqajR9+nQ1NTUVdNEAAKD3OuLmo6ioSDU1NfmvIf/v96AhBC1atEg33nijZs2apbFjx+q+++5Ta2urlixZUvCFAwCA3umIm49XXnlFtbW1qqur0xe+8AW99tprkqRNmzapoaFBM2bMyNemUilNnTpVa9euPez20um0Ghsbu3wBAIC+64iaj0mTJun+++/Xo48+qrvvvlsNDQ2aMmWK9uzZo4aGBklSdXV1l39TXV2dv+9QFixYoKqqqvzXyJEj38PDAAAAvcURRW1nzpyZ//MZZ5yhyZMna/To0brvvvt01llnSZJisa5RuxBCt9ve7vrrr9e8efPyf29sbKQBgUu8zI62xvpVmjVtY4ebNVs/br9UMlVZs0aSUv1bzZra/vb7pCYO3mLWnFG2zaypSe43awopG3peyO741C6zZlipfV56ttR+Lm0fbsdxc/vtiLgkle4ZaNYUH+hn1pS8+Ka9s337zZJcq/3cBqSjjNqWl5frjDPO0CuvvJJPvbzzKsfOnTu7XQ15u1QqpX79+nX5AgAAfddRNR/pdFovvviihg0bprq6OtXU1GjlypX5+zs6OrRmzRpNmTLlqBcKAAD6hiP6tcvf//3f68ILL9SoUaO0c+dO3XrrrWpsbNTs2bMVi8U0d+5czZ8/X2PGjNGYMWM0f/58lZWV6eKLLz5W6wcAAL3METUf27Zt00UXXaTdu3dryJAhOuuss/Tkk0/quOPe+ijg6667Tm1tbbrmmmu0b98+TZo0SStWrFBlpf17dwAA8MFwRM3H0qVL3/X+WCym+vp61dfXH82aAABAH8ZgOUQq4bwKFitJmTWZEx0plRnlZk3b8IxZUzqw2awZXuX7JN/yZIdZc1LlTrNmQJGdLBhUZK+7MxTuNJANBRos59lXAUdTDSxqMWv6J+3jfeYQOzXyavFgs6alvy/tsuOzduIrs6vUrCn78PFmzchH7c9gSry61ayRJOVyZkmWT8bu03pe5g0AAPRpNB8AACBSNB8AACBSNB8AACBSNB8AACBSNB8AACBSRG0RKXd87ozRZknT8XaEsOOkNrOmbuhes2ZIqR3FrCmxo4iSlJUdR03F7fhvY9Z+/M+2Hudak0eUA+FyEUZ2JV9sty1rx19L451mTV2/Pa41eTSU27Owdlbag+z2VNjbaX7J3k55bJRZI0nhqQ2uOvRdXPkAAACRovkAAACRovkAAACRovkAAACRovkAAACRovkAAACRImqLgimqHmrWdJxsT6KVpNcvLLH3V2dPbB09cJ9ZU5KwY63xWDBrdqZ9E3s99siONUYdR805IsIF21fUjy3C/Xn25Xm+eQ0stafxJmvsKbPbZ9nP76I/+V4DxyXPtLf18jazJrOncLFlRIsrHwAAIFI0HwAAIFI0HwAAIFI0HwAAIFI0HwAAIFI0HwAAIFJEbeESLyuzi8rtmgOj7QitJKX22nHEMZN2mjUnV+4waza1DDZrdraVmzXtmaRZI0mZbGF6/iijr5IUelgctZBC4ZKtBZGI+xZUnMiaNYMcE5lPHmC/loqL7Ej63mfsScuS1HiCfa4Y+Ia9rXizfT7Jpdtda0K0uPIBAAAiRfMBAAAiRfMBAAAiRfMBAAAiRfMBAAAiRfMBAAAiRdQWvmm0p44wa16bVWzWlAxvcq1pXM12s6Yq2WbW7O20I7K72+3Y3+5me8psusP3cspmEmZNwaKfEUdIo4zjukV4DDyPP+aYWBsv8i06WWzHXz3761dsx1EHldjTccsvfN2skaSXtlWbNbv+YqRZM/qXdky+6E9vmjWZHXbUGIXFlQ8AABApmg8AABApmg8AABApmg8AABApmg8AABApmg8AABApora9VDzlmw4bH15j1rzxqVqzpvFDabNmzKhtZs34gVvNGklKxuxpnZ7Jp8832o9tX5sdtW1tTZk1mVbfyynW6ej5c44N9bBJrJKkCKO2jgRpYTn253n0wfHtzzqjtrlye4/7Y/Z02N3FdiR9dOVusybu/KbUjGk0a14cZJ+7XikbZNYMeO5Eez3/ZX9MQPZNe0K2JIVMp6vug44rHwAAIFI0HwAAIFI0HwAAIFI0HwAAIFI0HwAAIFKkXXqpXNoeBCVJsXI7FVNkz2fT+BO3mDWT+m8ya6qTB+ydSXq13R48taOjn1mzL22/07+13X6nuyfJEm+xB8ZJUjxtJxTimQgHtEWcGumJKZUoBcfTJJtypl1i9vOyw5Gc2d9mv072pexEzIDiFrNGkj5UaafeBhXbg+z+kLLPg/uftAfUhUo78UaKpbC48gEAACJF8wEAACJF8wEAACJF8wEAACJF8wEAACJF8wEAACJF1LYHipfasbd4rT10SZI2f3KgWTPwY9vNmnMGvmzWnF1m17zeaQ+CknxD4/ak7ehfY7sdNe5sc8RoW+18ZKLV18t7os3xjGNDjuFzfTrW2sMitJJcP855oraxrC9qnYnZG8sW20+U5pQ9OHF3ux1HHZRqNmskqTxuD6o8u/Ils6bIMYDy4U9XmTXp/oPNmuHNjheupMxm3/DMDzqufAAAgEjRfAAAgEjRfAAAgEjRfAAAgEjRfAAAgEjRfAAAgEgRte2Bcm12pMszrVaSUvvtmrOGbDZrji/ebdZ0OjKEb3YOsBckaVdHpVmzr70wE2tz7fbLoMgxidYToZWkIsfgT0/U1hXH9ejrU209PGtypF+D48e5bNKxL6eQsBeVa7Nfl+mUvShPbH1Xyn7dStKbxfZ5oLrInoA9onivWTOx1o6+vnDAnpAdKuzzDfy48gEAACJF8wEAACJ1VM3HggULFIvFNHfu3PxtIQTV19ertrZWpaWlmjZtmjZu3Hi06wQAAH3Ee24+1q1bpx/84AcaN25cl9tvv/12LVy4UIsXL9a6detUU1Oj6dOnq6mp6agXCwAAer/31Hw0Nzfrkksu0d13360BA/78xqEQghYtWqQbb7xRs2bN0tixY3XfffeptbVVS5YsKdiiAQBA7/Wemo85c+bok5/8pD7+8Y93uX3Tpk1qaGjQjBkz8relUilNnTpVa9euPeS20um0Ghsbu3wBAIC+64ijtkuXLtUzzzyjdevWdbuvoaFBklRdXd3l9urqam3efOg454IFC3TzzTcf6TL6tKITjjdrNp/vi6x6JtaOTO0xa44vsmtez9gTa3d02hMmJWlPhz2xdr8jatvpiNHG2+0ePNFuRxoT7WbJW3X2QE/f5NusnQ+NOSbfukUYke2J03g9MVrXxNoSR2bXN9RWWTtJrnjaXrgnbt7UZkdt95b44qhvpu3zQHXSPsfVJveZNcNK7Mne6z5l/9Bbsc2O40pSSdMIsyazZZtrW33ZEV352Lp1q77+9a/rP//zP1VScvgnYizW9ZUTQuh220HXX3+9Dhw4kP/aupVxxAAA9GVHdOXj6aef1s6dOzV+/Pj8bdlsVo8//rgWL16sl156SdJbV0CGDRuWr9m5c2e3qyEHpVIppVKp97J2AADQCx3RlY/zzjtPGzZs0Pr16/NfEyZM0CWXXKL169frhBNOUE1NjVauXJn/Nx0dHVqzZo2mTJlS8MUDAIDe54iufFRWVmrs2LFdbisvL9egQYPyt8+dO1fz58/XmDFjNGbMGM2fP19lZWW6+OKLC7dqAADQaxV8tst1112ntrY2XXPNNdq3b58mTZqkFStWqLLS95n/AACgbzvq5mP16tVd/h6LxVRfX6/6+vqj3TQAAOiDmGrbAwXHxNoSO2EmqXATaztkZwjfcEys3dVRYdZI0p62MrOmLW1P4sy12+su6rBzjfEOs0QJR40kFTkiuck2O/sZ73TUZCLOrPbhOG7OEaPNJZ0ZWYNnWq3ki3fnih2Tb4vtt/91pOz/Ljzxd0nak7LPA9tT/c0aV9S2eL9Z45l8+2Lt6WaNJKXesM9dYLAcAACIGM0HAACIFM0HAACIFM0HAACIFM0HAACIFM0HAACIFFHbiHkm1rYcZ09PLJ3V4NpflBNrd3ba696V9n3YXGPajht3tNlR25gjauuaWOuYROupkaSidjsjmmi3x9EWpR1TbR1R21iu78ZxJSkW7B2GuP0c8NRkSxw/zzlStFlnZNfznMs5arKeybdp+7+LljbfnK7dKTuO2pCyzydvOibfjkza57c3UvZ2fvepZrNGkiresM9xqRYm33LlAwAARIrmAwAARIrmAwAARIrmAwAARIrmAwAARIrmAwAARIqobcQ8E2ubh9vflo8Pfc21P8/E2qwj+9fQWWXW7OywI2Z7nVMvW9uLzZpc2hGjjXBirWc7kpRwRGQ9MdpEa9asiWfsyG4s68y+OiKrBRNxHFeOGG0uWZif1XIJezue77/knFjrmHyb8GynrTCTbyVflN4Ty/dMvq1JHjBrhqfs6bgTh28xayTppeGnmTXFbzL5lisfAAAgUjQfAAAgUjQfAAAgUjQfAAAgUjQfAAAgUqRdCihRZSdCMlX2u7zbZjSaNZ53Z0vSCUk77fJ650CzZocj7bKr3X53uudd7pLU0W4/NWPtdu9cqKFxvkSML6EQ77Tr4mk7pZJI22mXWIejJmvXSJLsJbl4Br1FLSQcg9xy9iBDz9C4nGNoXM75XEqkHcPuHMv2pLk8w+eyjtetJDU7BtDtTdnJOM/wuTccw+dqk/b5tH+y2qyRpJ0fsw/mgOftb0qiosKsyTb7ht31RFz5AAAAkaL5AAAAkaL5AAAAkaL5AAAAkaL5AAAAkaL5AAAAkSJqW0DZxia7psQ+5P3L7e0kY754ZGew+8sdGTtG29BhR9r2pu1oXIsjYidJubR9nOKO6J8rRuuo8WzHG7VNOGK0cU9E1lETb7djfzHH8DlJUrZAWduoo7YxR/61yB5S6PpJzTGgzvP998RxJSmRdAwgjHL4XMr382xHmx01PVBin092lTiGzxX3N2uGO6K2RXHfObe00j5Z5Eoc+edeHKP14MoHAACIFM0HAACIFM0HAACIFM0HAACIFM0HAACIFM0HAACIFFHbAoqX2hNbsyWF6fdKYp2uujcy/c2aNzvsqY970vaExcZ2+/F3OCK0kiTPxFrHRE/fNFpHjWMSbSLtnGqbcUy17fDEcTNmTazTEQ9M+55Lyjm2let5E2s98deYZ2Kt46UbSzgiu0nHc7vDd57wxLsTHY7JtwWKm+ccr1tJypTYx6mlvdis2dNWZtbsKLY/JuC1oqFmTSLme25ns47pvyn78SeL7cef63CcvHoornwAAIBI0XwAAIBI0XwAAIBI0XwAAIBI0XwAAIBI0XwAAIBIEbUtoHhFuVmz53T7kBd12LG/7Z39PUvSto6BZs2uDnsypGdibXO7PbE21+57yhVqYq1vGq2nxhFpdMRxJWeM1hORLVSM1hvXy3qitgWafOvhmVYrSY74q2t3cfs5GU/Y8efgiNrGvVFbR9w8URzd5NucYzuSlG2zvycdKfs82Fhix/t3OT4moDMMN2uSMd9zu9Nxjttzun2uHPYH+/8T7SVqCwAA4ELzAQAAIkXzAQAAIkXzAQAAIkXzAQAAIkXzAQAAIkXUtpDK7AmLFdvs2FtZWatZ05q1Jx5KUipuR/92pu2o7f42O2qbbndMBnVOvUy0OybWRhmjdUys9URo36qzI6ueabSxTvt7q0yBaiQFT12250VtY4kCrSnuiOwWOabaOr7/8Q5fPDhR5Ijaphw1jshuznHK8UzHlXyv70y7fQya2+zI6r6Ufe6qKLIX3pqz9yVJqTI73l65zT5Xxhz/n2jvPs+SeiSufAAAgEjRfAAAgEjRfAAAgEjRfAAAgEjRfAAAgEjRfAAAgEgRtXVK9O9v1oQKx4TFCfa+xiTsKF5jxo6PeXkm1rak7ZxdLu2IGTqm1UqFm1gbL1DUNu6YWOuN2sY6HXWeibUZR41jEq0rQitJHXaEMHim2gbf9F+Td6pt0hFrjDu25ZiOG+t0RGQdNfG043srKe6YkOuJiRcl7RrPxNqE7xMAlPNEex2TbztT9n9h+0vs81tVyh7Z25HzxZ+Lk/bradeH7G1VbrAPZqLS/piEbFOTWfN+4MoHAACI1BE1H3fddZfGjRunfv36qV+/fpo8ebKWLVuWvz+EoPr6etXW1qq0tFTTpk3Txo0bC75oAADQex1R8zFixAh9+9vf1lNPPaWnnnpKH/vYx/TpT38632DcfvvtWrhwoRYvXqx169appqZG06dPV1MPvewDAACid0TNx4UXXqjzzz9fJ510kk466STddtttqqio0JNPPqkQghYtWqQbb7xRs2bN0tixY3XfffeptbVVS5YsOVbrBwAAvcx7fs9HNpvV0qVL1dLSosmTJ2vTpk1qaGjQjBkz8jWpVEpTp07V2rVrD7uddDqtxsbGLl8AAKDvOuK0y4YNGzR58mS1t7eroqJCDz74oE477bR8g1FdXd2lvrq6Wps3bz7s9hYsWKCbb775SJcRuVxzi1kTK7YPZ66f/U7o4rj9Tvea1AGzRpKeb6o1aw60e4bGOd7G7hgEFXe8y13ypVTidvjCl2Rx1dgpjrgnxSLn0DhPkqVQQ+Ocw+CCIznjSdcUTMz5s5Pj9RQ67edlrMhxuux0PCk77e3EO3wJpHiHJ+3iSJYkC5NkSTgSMZJvAJ3nXJFpt49la5u98H2ORMzwct85981YP7MmU2Gfc0KxndLKOv5f6qmO+MrHySefrPXr1+vJJ5/U1VdfrdmzZ+uFF17I3x97R/wthNDttre7/vrrdeDAgfzX1q1bj3RJAACgFzniKx/FxcU68cQTJUkTJkzQunXrdMcdd+gf//EfJUkNDQ0aNmxYvn7nzp3droa8XSqVUirlG1UMAAB6v6P+nI8QgtLptOrq6lRTU6OVK1fm7+vo6NCaNWs0ZcqUo90NAADoI47oyscNN9ygmTNnauTIkWpqatLSpUu1evVqLV++XLFYTHPnztX8+fM1ZswYjRkzRvPnz1dZWZkuvvjiY7V+AADQyxxR87Fjxw596Utf0vbt21VVVaVx48Zp+fLlmj59uiTpuuuuU1tbm6655hrt27dPkyZN0ooVK1Tp+AhYAADwwXBEzcc999zzrvfHYjHV19ervr7+aNYEAAD6MAbLOYWMY6hWiWOAVbEd+yt2DJbblyk3ayRpf4cdIWvrcES6Ohwx2g5HXM8RoX1rW3aNZ1sJTxzXMzTOUeOKx0qKFSqy6hnilnMMcfPGYx3bCp79BV+01xLzzflyRYRjjqFxrtiyZ/icK0bte3DxjOO5W7Aa+/Udd84o9MTk4574s+Ock3Gcu1o67DhuptQ5WM5x/s6W2K+BUGqflwv1Wno/MFgOAABEiuYDAABEiuYDAABEiuYDAABEiuYDAABEiuYDAABEiqitU6KiwqxJl9uHMzhSdhVF9sjH7e325ERJas/Ya+pwxPqCI2anrCMa50x1eupijpRZLOuIyLq2Yxd59iVJ8tS5IquO6KsjZho8kd23CgtS44njxuL2c8kV65U/ktuThHcZxtm10Pmc64162ENr7PTNIOtf2mbW7HJsJ1Nhx3+LUiVmTS7d7thb9LjyAQAAIkXzAQAAIkXzAQAAIkXzAQAAIkXzAQAAIkXzAQAAIkXUNnKFyY/FC5hDc4b6euHOCsgRffTGIyM9BI7Iaizu+xkkxBx1MU+M1pNttvflieO+VeioSzgem+c4FTlOqZ59Ffm+J7mkXZcrsh+/pyabdGzHMYjVW5crdkTJHTVFKTtuXl5sj8jul7Q/AkGSMsHxvUsWZtJwb8aVDwAAECmaDwAAECmaDwAAECmaDwAAECmaDwAAECmaDwAAECmitk7Z5mazpqglY9bEHZG21ow9zbCufLdZI0l702VmTXHSXnd7kWNaaZEjGueMRwbHMzM4ppW6YoaO7QTHdpRwRj89McoCRT9jjsiqe4KqJ7YbPNsq0JhZT6xVUixp5zpjnm2l7NelUva+cq4a32PLltjHMlNqPwc6y+zvW6bUXo+nRpIy9mlJ2XL7nFNU0WnW9C+3p8wOLz9g1ozrt82skaRn9h9n1sRK7XNurMOOCPfUibUeXPkAAACRovkAAACRovkAAACRovkAAACRovkAAACRovkAAACRImrrFCtyxPXSdnwq11Fi1nQ4sp8Dki1mjSQNTLWaNXuKy82a1hL7sWXa7KdTNmWWSJISjgGSWUfyMeGZnumaDGrHiD3bkaRY0v7+xooccdRC1WR90ddYcESpXVvy7MwR60041+2J0XpqHJHd4Pje5krt7WRLfY/NU+eJ2mZKCxS1dURoJV+MVuX2Oaeiwo7RDqtoNGtOKLM/uqC6yN6OJBUn7HWHjP09iXfY28l6Jk0Hx7F+H3DlAwAARIrmAwAARIrmAwAARIrmAwAARIrmAwAARIrmAwAARIqorVO8wo6jKm1PWIw3Vpg1nqjtzo5+9nokVZc0mTW7S+3H1pK2c61Nnghhh2+CajbtiaI5tuPYX9axnXinvZ14xhePjHc6JgQX2y/NWMaeeqkiuyaW80XxPDFaV/zVsz/HxF7X5F9JKnbkrYvt53dwbCe4Jtbax8gzrVbyRmQdNfYnACjriNFmynxh61BuPy9LK+y8/dAKe9r4qLJ9Zs3okp1mzQHPAZAUd7xSYk2O17cjapvoV2nWZA/YE3vfD1z5AAAAkaL5AAAAkaL5AAAAkaL5AAAAkaL5AAAAkSLt4pTdv9+sKepfZdYMecrxzvNxdk9YVWQPVJKkMkckZEfKfsf0/hJ7qlRbif1O/0y7r9/NljjSJQVKsmQ8aZcOT/rG907/eLFjsFynoybpePlmHckSx8A4SYo5hr15t+XYmV3jHCwnz3HyDODzDI1zfG9zxfZzKVvsTIU56jzDHLOetItjO7kSX3Iq7hhUWVlqp10GpuzzYG2JnXYZVGSnZrz2d9jnyqG/d3x/2+0TU09Nsnhw5QMAAESK5gMAAESK5gMAAESK5gMAAESK5gMAAESK5gMAAESKqG0htbaaJU0j7IhVZ6s96M0TofXyDJ/bm7aHKrWU2sO5Gtt9TznPYLlEuyNmaC9JiQLFFROdvl4+56iLdToGT3U6hsZlHcc7+OKRrmFvUUZt4744qpKegXD2cQq9NWrrmKuXc8VxHd/bUsewQ0mpEnsIZ1WJHaMdmrLPXdVFja41WfonWlx1Dc32Rxe0Ov4fGNji219vxZUPAAAQKZoPAAAQKZoPAAAQKZoPAAAQKZoPAAAQKZoPAAAQKaK2BZRrtqNRgzfa0xyz59oxtBHFe11rGpKwY2Z/iI0ya3aVVJg1+9OOybeOOK4kdabtyGKm1DH5ttMxRdg+3Io7arJpXzwy7ohaeqbohmJPjNaOR8a8kVXPhNwoJXw/OwVHRDgU2cfSFaNNFiZG647aRjmxNmV//+MpX9S2oqQwE2trUvZU1+FJ+1x5ctKefPtS5wCzRpJKi+2TRdlzdk2usXCTdnsirnwAAIBI0XwAAIBIHVHzsWDBAk2cOFGVlZUaOnSo/uqv/kovvfRSl5oQgurr61VbW6vS0lJNmzZNGzduLOiiAQBA73VEzceaNWs0Z84cPfnkk1q5cqUymYxmzJihlrd9DOztt9+uhQsXavHixVq3bp1qamo0ffp0NTXZH4MLAAD6viN6w+ny5cu7/P3ee+/V0KFD9fTTT+ucc85RCEGLFi3SjTfeqFmzZkmS7rvvPlVXV2vJkiW68soru20znU4rnf7zm48aGwvzOfwAAKBnOqr3fBw48NY7jQcOHChJ2rRpkxoaGjRjxox8TSqV0tSpU7V27dpDbmPBggWqqqrKf40cOfJolgQAAHq49xy1DSFo3rx5+uhHP6qxY8dKkhoaGiRJ1dXVXWqrq6u1efPmQ27n+uuv17x58/J/b2xs7LUNSK6t3axJtNlxtVzMjke25xyjKiWNckTRdiX3mzU7U/3Mmr0l9uTbphJHpk9Sp2PKaC5VmFhj3JH+dcUjHZFGyTf9NpuyY52xrP08iXumzHqm1UqFm1jr4Zlq6xSKHFHbQk2sLdBzMptyRm0LNbE25fjeltjnruKU/VECktSvxD5XeibWDnOcu2oS9nZGFdmTaJ9J+85dcdnHMtFmR5JzafsY9Wbvufm49tpr9dxzz+mJJ57odl/sHSeOEEK32w5KpVJKpXzfVAAA0Pu9p1+7fO1rX9PDDz+sVatWacSIEfnba2pqJP35CshBO3fu7HY1BAAAfDAdUfMRQtC1116rBx54QI899pjq6uq63F9XV6eamhqtXLkyf1tHR4fWrFmjKVOmFGbFAACgVzuiX7vMmTNHS5Ys0a9+9StVVlbmr3BUVVWptLRUsVhMc+fO1fz58zVmzBiNGTNG8+fPV1lZmS6++OJj8gAAAEDvckTNx1133SVJmjZtWpfb7733Xl166aWSpOuuu05tbW265pprtG/fPk2aNEkrVqxQZaX9hh4AAND3HVHzETxDqmIx1dfXq76+/r2uCQAA9GFMtS2gRD/76k5ot6NoO5rtyGp78EVtPQNLhxfZEx13FFfZNQWK40q+6beeybeeSbOJDkf0scMscdVIzvhvxhHZzNqP3yUXYYTWq3BJW1dsN1fkib86vifJwkyszfqGP/titI5t+SbW2ueu8lJ7Wq3km1g7pNiOyNY4orbVCTvW2hbsdbfkBpo1ktRwwD4Pjmqzj2W8wp4knm3uvZNvGSwHAAAiRfMBAAAiRfMBAAAiRfMBAAAiRfMBAAAiRfMBAAAiRdS2gLIH7AmyRQfsSYWpFXak640TBrjW9LojIjuqyF53bdKO425P2fvyRm2bHVHbA+2OybftEU6+9U4idURy4xnHtrKOaa2OCGks4qhtKODEWhfH7nIJRxy3QNNoPc+3nDNqm3VEbXOOibXBM7G2xI6H9kv5JrEOKbFjtLXF9jmnJtFo1gxN2JHVDR129Hdbpy9qW/ao/ZEL8ZY9Zk1vjtF6cOUDAABEiuYDAABEiuYDAABEiuYDAABEiuYDAABEirRLxGIt9rvBK9+w31X+v7tOcO2vrmSXWTPaMZypxpGIGVZs1+wqsd95Lkn70qVmjWf4XNozfM4xWC7e6UgxdJolkqSMY3+xnCPJ4khxxO2ZWpJjWrUk14C2QvE8toLuz/FjWM4xNC5TUpgki3uwnCuFZX9/4yn7ieIZGjewxE6NSFJNsZ1SqXacc2oS9rmyOWefc1/uHGrW/NebY80aSarcap8IYs2+VFBfxpUPAAAQKZoPAAAQKZoPAAAQKZoPAAAQKZoPAAAQKZoPAAAQKaK2Ecu89rpZU1Zhx0x3PDDctb/NVw02a14v3mnWjCyyB0E1OIbP7Uj1M2skaXfKjuQ2ldhTtTpSSbMml7J7cNdQMWc8Ml5i18Qc6ddcwl53zJ4XVlgRR2Q9XLFd1/A5R43jeZJxDIPzDIx7q84zNM6O0aZK7XioZ2jckJR9npCk6qQjRlvkGRpnD6p8rsOe5Phqutqsaf3FMLNGkoa+sdesyby+2bWtvowrHwAAIFI0HwAAIFI0HwAAIFI0HwAAIFI0HwAAIFI0HwAAIFJEbXugWLM9GTI9YIBrW084pt/WpezJtyc4Ym+1RXbUtqG4yqyRpB0llWZNpJNv047Jt45ptZIUc0yaDY4Jsp6JtYWM2kY6aTbqqbaO/Xkm3wbHGTVrP21d02olKVtSoIm1JXYc1TOxtiZlnyckqdYRy69J2FN0W3P2E/yVDjtG65lYW7nFN7Y61uSb7PtBx5UPAAAQKZoPAAAQKZoPAAAQKZoPAAAQKZoPAAAQKZoPAAAQKaK2PZBn8u3I/7KnOUrSjv0jzJpNV75m1mx2TL6tLWo2a2qK7GmWklSd6m/W7C0pN2uaS+3xoJ3t9ssg12736dlSZ9TWMbHWE9n0RHYLKdKorUfU6/FMvnV83zwx2kyZ40ki38Ta4tKMWeOZWDuouMWsGZr0RW1dE2vjdiZ5Y6f92F7rGGLWeCbWeqbVSkys9eLKBwAAiBTNBwAAiBTNBwAAiBTNBwAAiBTNBwAAiBTNBwAAiBRR2x4oXmpHzOKOybeS1NG/v1lTsMm3ySazxjP5VvJNv91dUmHWeCbfthZq8q17gqzd83titIWaWBt5hLYP7y9nP00UiuwYba7U9831TKwtc0ysHeCYWFvtmFg73DGtVvJNrG1z5M1f6agxazwTa9OOYduxFjuODD+ufAAAgEjRfAAAgEjRfAAAgEjRfAAAgEjRfAAAgEjRfAAAgEgRte2Bcm127C33p02ubY36TYlZs2OfPfl21ZftabQ5R6ZxZHKPWSNJCdlRw+piO/q3xzH5trHEPkaZMkfU1plZzTmilrFsTxshW0ARP7RIo8SekcVJR03KF7VNlXWaNf1K7IjokJQ9kXpY8X6zpiM4ssaS9jsyyb9N15o1K/edZta0/tyeWDvy/+zzkmfaOPy48gEAACJF8wEAACJF8wEAACJF8wEAACJF8wEAACJF2qWXiqfshIYkxRwD6DIlA8ya//2TPXyu+biUWTN5wGtmjSSVxe3BU5533+9KVZo1+0rs4XOdGfvd+e3OVEUuYxeGnOfnAkdqopAiTI3EPKkR77YKVlQY8SI7yZJw1EhSvzI7yTIgVZihcUOK7Jpc8P08+9vWMWbNqj2nmDXr/nScWVNlv7wVa7aPY6woaW9IUsjYCSRw5QMAAESM5gMAAETqiJuPxx9/XBdeeKFqa2sVi8X00EMPdbk/hKD6+nrV1taqtLRU06ZN08aNGwu1XgAA0MsdcfPR0tKiM888U4sXLz7k/bfffrsWLlyoxYsXa926daqpqdH06dPV1NR01IsFAAC93xG/4XTmzJmaOXPmIe8LIWjRokW68cYbNWvWLEnSfffdp+rqai1ZskRXXnnl0a0WAAD0egV9z8emTZvU0NCgGTNm5G9LpVKaOnWq1q5de8h/k06n1djY2OULAAD0XQWN2jY0NEiSqquru9xeXV2tzZs3H/LfLFiwQDfffHMhl/GBkEvb0TBJyjmGIY1Y0mrWpJ8badY8+zd1Zs2mkQPNGkk6q+Z1s2ZQssWs8UQID5TZWbyMI0LYVuyL2Hliu1EqZKzVt79Id6d4xI/PkojZMdrioqxrW/0dMdrhZfvNmuqkPThyU3qoWbM3Yw9ylKTlW081a/ZvqzJrRi+1X3PFL9vx/sz2BrMGhXVM0i6xd5xdQgjdbjvo+uuv14EDB/JfW7duPRZLAgAAPURBr3zU1NRIeusKyLBhfx5jvHPnzm5XQw5KpVJKpewPpwIAAH1DQa981NXVqaamRitXrszf1tHRoTVr1mjKlCmF3BUAAOiljvjKR3Nzs1599dX83zdt2qT169dr4MCBGjVqlObOnav58+drzJgxGjNmjObPn6+ysjJdfPHFBV04AADonY64+Xjqqad07rnn5v8+b948SdLs2bP14x//WNddd53a2tp0zTXXaN++fZo0aZJWrFihykp7xgYAAOj7jrj5mDZtmkI4/LvHY7GY6uvrVV9ffzTrAgAAfRRTbaHMjp1mTXGLHcc99fUhZs3Oc4eZNZK0utaO5E7+5HNmzYcq7fRUY4k9ITjuiEe2ZorNGknKuCbWFkbUMdMo99eXH1tJwhfbLk90mDU1xXbcvCRu7++F1lqz5rFfjzdrJKl8m11z6qo3zZrc9h1mTabNjiMjegyWAwAAkaL5AAAAkaL5AAAAkaL5AAAAkaL5AAAAkaL5AAAAkSJqC5dsc7NZU1ReZtZU/Snt2t/eM5JmzR92DTdr2rP2dsqLHHHFEjuumChgFDMuO9pbsH1FHFlNRPjYpGgfn2dirUdcvjV3BntCcnPWnp312/0nmTUv7j30fK636xjge/zDV9uvOTXbU6tzxGh7La58AACASNF8AACASNF8AACASNF8AACASNF8AACASNF8AACASBG1RcF4puMmHDWSNDrz/5k1jXX25Nv1n7ajtmOrG8ya8oQdER6e2mfWeFXG2wuynf4JexpxIXmm/xZK1JHdlpwdWfVoypUWZDuStCU9yKzZ2jbArHluhz2xtvyBfmbN6D85o69r15slGd+W0Etx5QMAAESK5gMAAESK5gMAAESK5gMAAESK5gMAAESK5gMAAESKqC0ilaiqctXFXtpm1vTTCLNm3x/teOC6ZjtCOWSwHVccVWXXSFK/pB1HHFfxhllTnTxg1nwoZW8nHjNLIpdwTnUtlM5gH4Sn0yPNmr2ZcrPmuWZ7Owc6fXHcLU39zZrtO+ya5Db7NVD7qj1lNvHSFrNGkuQ4D2QP2M9v9F5c+QAAAJGi+QAAAJGi+QAAAJGi+QAAAJGi+QAAAJGi+QAAAJEiaotIFTI+V9RmT349cZMdtW09c7hZs2WGPT10V397X5JUNcCOLO7vKDNrzhn4ilnTUGRP2q0tajZrCinqGK3nJ6yGbIVZs6PTjoc+vneMWbNpvz2N+cA++/svSUMftSOyx+3PmjVlG+yIbNi736zJNkf7XELvxZUPAAAQKZoPAAAQKZoPAAAQKZoPAAAQKZoPAAAQKdIu6LVyra1mTSyTMWvK1tvpi5Pe7G/WdAz2JRTahtgD6J79qJ2s2DnaTmi8NLDarBlXYQ/xK6SEcpHurzMkzBrPsLfn9tSaNQ2vDjZrataaJQpDfD8X9n9+v1kT32UnnnL77O3k2uyBiIAXVz4AAECkaD4AAECkaD4AAECkaD4AAECkaD4AAECkaD4AAECkiNqi1wpZe2BWcMQDc2/YNUWdnWZNyd4Ss0aSSl62a8q32ZHN9iFDzZrlF9pDzB5/6S/sBUlKTNpv1mR/19+sKTrLjn5mnrTjyJ7tSFIIMbOmyTHIbfiv7cjuibvSZk1yy26zpnLzVrNGkuKD7IGHmT17XNsCosSVDwAAECmaDwAAECmaDwAAECmaDwAAECmaDwAAECmaDwAAECmitoBDZueugm0rnrIjuUUN9v76DbMn1pa90d+syZbaU30laU+zva0hz9tR0z3Ndoy25gV7O/q9b4qwx7Ame3+JBsd02B12jLaQM31zTU0F3BoQHa58AACASNF8AACASNF8AACASNF8AACASNF8AACASNF8AACASBG1BSKWS7cXZDth25t20eubzZLUqBGu/Q1dtc2sKXJsq1DbyWyxt+PdlnJ23DjzxnZ7O6GQQVpbrqMj0v0BhcKVDwAAEKlj1nzceeedqqurU0lJicaPH6/f/va3x2pXAACgFzkmzcdPf/pTzZ07VzfeeKOeffZZnX322Zo5c6a2bNlyLHYHAAB6kWPSfCxcuFCXX365vvKVr+jUU0/VokWLNHLkSN11113HYncAAKAXKfgbTjs6OvT000/rm9/8ZpfbZ8yYobVr13arT6fTSqf/PFfhwIEDkqSMOiXfyAngAynmeH2E0GkX5RxzVCRlCrStSLfj3JbrDaee/UX8hlOgJ8norddICPbrqeDNx+7du5XNZlVd3XXoVXV1tRoaGrrVL1iwQDfffHO325/QI4VeGtC3ZAq0na0F2k4ht9UT1wTApampSVVVVe9ac8yitrFYrMvfQwjdbpOk66+/XvPmzcv/ff/+/TruuOO0ZcsWc/E4eo2NjRo5cqS2bt2qfv36vd/L6fM43tHieEeL4x2tnna8QwhqampSbW2tWVvw5mPw4MFKJBLdrnLs3Lmz29UQSUqlUkqlUt1ur6qq6hEH84OiX79+HO8IcbyjxfGOFsc7Wj3peHsvGhT8DafFxcUaP368Vq5c2eX2lStXasqUKYXeHQAA6GWOya9d5s2bpy996UuaMGGCJk+erB/84AfasmWLrrrqqmOxOwAA0Isck+bj85//vPbs2aNbbrlF27dv19ixY/XII4/ouOOOM/9tKpXSTTfddMhfxaDwON7R4nhHi+MdLY53tHrz8Y4FTyYGAACgQJjtAgAAIkXzAQAAIkXzAQAAIkXzAQAAIkXzAQAAItXjmo8777xTdXV1Kikp0fjx4/Xb3/72/V5Sn/D444/rwgsvVG1trWKxmB566KEu94cQVF9fr9raWpWWlmratGnauHHj+7PYXm7BggWaOHGiKisrNXToUP3VX/2VXnrppS41HO/CueuuuzRu3Lj8pzxOnjxZy5Yty9/PsT62FixYoFgsprlz5+Zv45gXTn19vWKxWJevmpqa/P299Vj3qObjpz/9qebOnasbb7xRzz77rM4++2zNnDlTW7Zseb+X1uu1tLTozDPP1OLFiw95/+23366FCxdq8eLFWrdunWpqajR9+nQ1NTVFvNLeb82aNZozZ46efPJJrVy5UplMRjNmzFBLS0u+huNdOCNGjNC3v/1tPfXUU3rqqaf0sY99TJ/+9KfzJ2CO9bGzbt06/eAHP9C4ceO63M4xL6zTTz9d27dvz39t2LAhf1+vPdahB/nwhz8crrrqqi63nXLKKeGb3/zm+7SivklSePDBB/N/z+VyoaamJnz729/O39be3h6qqqrCv//7v78PK+xbdu7cGSSFNWvWhBA43lEYMGBA+OEPf8ixPoaamprCmDFjwsqVK8PUqVPD17/+9RACz+9Cu+mmm8KZZ555yPt687HuMVc+Ojo69PTTT2vGjBldbp8xY4bWrl37Pq3qg2HTpk1qaGjocuxTqZSmTp3KsS+AAwcOSJIGDhwoieN9LGWzWS1dulQtLS2aPHkyx/oYmjNnjj75yU/q4x//eJfbOeaF98orr6i2tlZ1dXX6whe+oNdee01S7z7Wx+Tj1d+L3bt3K5vNdpt8W11d3W1CLgrr4PE91LHfvHnz+7GkPiOEoHnz5umjH/2oxo4dK4njfSxs2LBBkydPVnt7uyoqKvTggw/qtNNOy5+AOdaFtXTpUj3zzDNat25dt/t4fhfWpEmTdP/99+ukk07Sjh07dOutt2rKlCnauHFjrz7WPab5OCgWi3X5ewih2204Njj2hXfttdfqueee0xNPPNHtPo534Zx88slav3699u/fr1/+8peaPXu21qxZk7+fY104W7du1de//nWtWLFCJSUlh63jmBfGzJkz838+44wzNHnyZI0ePVr33XefzjrrLEm981j3mF+7DB48WIlEottVjp07d3br6lBYB985zbEvrK997Wt6+OGHtWrVKo0YMSJ/O8e78IqLi3XiiSdqwoQJWrBggc4880zdcccdHOtj4Omnn9bOnTs1fvx4FRUVqaioSGvWrNH3vvc9FRUV5Y8rx/zYKC8v1xlnnKFXXnmlVz+/e0zzUVxcrPHjx2vlypVdbl+5cqWmTJnyPq3qg6Gurk41NTVdjn1HR4fWrFnDsX8PQgi69tpr9cADD+ixxx5TXV1dl/s53sdeCEHpdJpjfQycd9552rBhg9avX5//mjBhgi655BKtX79eJ5xwAsf8GEqn03rxxRc1bNiw3v38ft/e6noIS5cuDclkMtxzzz3hhRdeCHPnzg3l5eXh9ddff7+X1us1NTWFZ599Njz77LNBUli4cGF49tlnw+bNm0MIIXz7298OVVVV4YEHHggbNmwIF110URg2bFhobGx8n1fe+1x99dWhqqoqrF69Omzfvj3/1dramq/heBfO9ddfHx5//PGwadOm8Nxzz4UbbrghxOPxsGLFihACxzoKb0+7hMAxL6RvfOMbYfXq1eG1114LTz75ZLjgggtCZWVl/v/F3nqse1TzEUII//Zv/xaOO+64UFxcHP7iL/4iH0/E0Vm1alWQ1O1r9uzZIYS3Ils33XRTqKmpCalUKpxzzjlhw4YN7++ie6lDHWdJ4d57783XcLwL57LLLsufM4YMGRLOO++8fOMRAsc6Cu9sPjjmhfP5z38+DBs2LCSTyVBbWxtmzZoVNm7cmL+/tx7rWAghvD/XXAAAwAdRj3nPBwAA+GCg+QAAAJGi+QAAAJGi+QAAAJGi+QAAAJGi+QAAAJGi+QAAAJGi+QAAAJGi+QAAAJGi+QAAAJGi+QAAAJH6/wHycSP4xgrZ8QAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "NectarCam: image_shifting\n", - "84.7 µs ± 31.1 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "MAGICCam - BicubicMapper:\n", + "Initialization time: \n", + "665 ms ± 13 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "60.6 µs ± 2.54 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABhjElEQVR4nO3de3hU1b038O+ea+4JAXJDIAhBuWkVFIkXOEWiiPTC0WPFWijaowc9yss5B4s8rcG2QfEtL22xWDmUokjtRVRsvRBbjfagNaIooAJKgAiEQMg9YZKZWe8fHKaErN/SPYSdzOT7eR6eR9eevWfvycywmPnmuyyllAIRERGRQ1zdfQJERETUu3DyQURERI7i5IOIiIgcxckHEREROYqTDyIiInIUJx9ERETkKE4+iIiIyFGcfBAREZGjOPkgIiIiR3HyQTHhN7/5DSzLgmVZeP311zttV0ph2LBhsCwLkyZN0h7j6NGj8Pv9sCwL7777rnhfgUAAjz76KCZOnIi+ffvC6/Wib9++mDRpEn71q1+hsbGxw+0ty8Ldd9/d6TiHDx/G97//fYwZMwYpKSlISEhAQUEB7r33XuzevbvT7d988038y7/8CwYMGACfz4f09HQUFhZi5cqVaG5uNj9APdSkSZMiPzfLsuD1epGfn4/bbrsN+/bt63Dbkz/jvXv3npVz2bt3LyzLwv/9v//3C28b7bkUFxfDsiy4XC7s2bOn0/bm5makpaXBsizMnj3b1rGJ4omnu0+AyI7U1FSsXr260wSjrKwMn332GVJTU8V9n3zySbS1tQEAVq9ejXHjxnW6zZEjR3Dttddi+/btmDVrFu655x5kZWWhpqYGf/3rX7FgwQL87W9/w5NPPmk8z3feeQfXX389lFK4++67MWHCBPh8PuzcuRPr1q3DpZdeitra2sjtH3jgATz44IMoLCzEj370IwwdOhQtLS3YvHkziouLsWvXLvy///f/bDxSPce5556Lp556CgDQ1taG7du3Y/HixSgtLcUnn3yCpKQkAMC0adPw1ltvITc3tztPt0vOJSUlBWvWrMGPfvSjDuN/+MMf0N7eDq/X2xWnSRS7FFEMWLNmjQKgbr/9dpWYmKjq6+s7bP/2t7+tJkyYoEaNGqUmTpyoPcbo0aNVVlaWuuSSS1R6erpqaWnpdJuioiLl9XpVWVmZ9hhHjx5VTz75ZIcxAOquu+6K/H99fb3KyclRAwcOVJWVldrj/OEPf4j89+9//3sFQN12220qHA53um1DQ4N65ZVXtMfp6SZOnKhGjRrVaXz16tUKgKPXVVFRoQCoRx555KzdxwMPPBB5ng4cOFCFQqEO26+44gp18803q+TkZDVr1qyzdh5Oam5u7u5ToBjEr10optx8880AgN/+9reRsfr6ejzzzDOYM2eOuN/f//53bN++Hbfeeiu+973vRfY5VXl5OTZt2oR//dd/xVVXXaU9Tt++ffHtb3/beI6rVq1CVVUVli5dinPOOUd7mxtuuCHy3w8++CD69OmDn//857Asq9NtU1NTUVRUFPn/Rx99FFdddRWysrKQnJyMMWPGYOnSpWhvb++w36RJkzB69Gi89dZbKCwsRGJiIvLz87FmzRoAwJ///GdcfPHFSEpKwpgxY/Dyyy8br6srpaenA0CHTwCkrzpefvllTJ48Genp6UhKSsKIESOwZMmSyPZJkyZpv2qbPXs28vPzO42Hw2H85Cc/waBBg5CQkIBx48bhL3/5S4fbRHsuJ82ZMweVlZUoLS2NjO3atQt/+9vftM/T48eP4z/+4z/wla98Benp6cjMzMSECRPw/PPPd7rtya/5fvWrX2H48OHw+/0YOXIknn76ae01lJaW4rvf/S4yMzORnJyM6dOna78SevXVVzF58mSkpaUhKSkJl19+eafH5eTXSu+99x5uuOEG9OnTB0OHDu10LKIvwskHxZS0tDTccMMN+PWvfx0Z++1vfwuXy4WbbrpJ3G/16tUATvyl8K1vfQtJSUmRsZNO/kXxta997YzOcdOmTXC73Zg+ffoX3vbQoUPYvn07ioqKIl8/fJHPPvsMM2fOxJNPPok//elPuO222/DII4/gjjvu6HTbqqoqfPe738Xtt9+O559/HmPGjMGcOXPw4IMPYuHChViwYAGeeeYZpKSk4Bvf+AYOHjxo+3q/jGAwiGAwiJaWFrzzzjt48MEHce6556KwsNC43+rVq3HdddchHA7jsccewwsvvIB77rkHn3/+edTnsmLFCrz88stYvnw51q1bB5fLhalTp+Ktt97qsnMpKCjAlVde2eF5+utf/xr5+fmYPHlyp9sHAgEcO3YM//mf/4nnnnsOv/3tb3HFFVdgxowZeOKJJzrdfuPGjfj5z3+OBx98EH/84x8x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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "NectarCam: axial_addressing\n", - "86.2 µs ± 2.54 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "FACT - BicubicMapper:\n", + "Initialization time: \n", + "921 ms ± 3.16 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "67.6 µs ± 420 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABeBUlEQVR4nO3de5RcVZ02/ufUpaur+pZ0QroTIFeCXILCEEUDGkYgjkR/IxmQmwoDztI3MBKZGZTB0YSRBJh5WVmCgPDGTFwQYfDFV5wRJToQZAISYUAEuYcQSJrcuzvpa1Xt3x+Z9Njs5wtnU10n3cnzWStr6c4+lzpV3eyc89T3GznnHEREREQSktrXJyAiIiIHFi0+REREJFFafIiIiEiitPgQERGRRGnxISIiIonS4kNEREQSpcWHiIiIJEqLDxEREUmUFh8iIiKSKC0+RP7Iv/zLvyCKIvrnb//2bwfN/c53voMoijBjxox33Oerr76KSy+9FIcffjjy+TwKhQKOPvpofOMb38Cbb76Jhx56yDzm2/8MlZNPPnnQfrPZLCZPnoyLL74Y69evp9fktddeG7Lj/7HXXnsNURThn//5n9917ns9l4ULFyKKIqRSKbz66qve3+/evRuNjY2IoggXXnhh0L5FJFxmX5+AyHC0fPlyHHHEEYPGJkyYMOj/f//73wcAPPvss/jNb36DE044wdvPv/3bv+Gcc87B2LFjcemll+K4445DFEV45pln8P3vfx///u//jtWrV+PRRx8dtN0ZZ5yBadOmxfoP8ns1depU3HnnnQCAvr4+/P73v8eiRYuwatUqPP/88ygUCgCAuXPn4tFHH8X48eOrdi5xVXou9fX1WL58Of7xH/9x0Pg999yD/v5+ZLPZoThNEXkXWnyIEDNmzMDMmTPNv//tb3+Lp59+GnPnzsW///u/Y9myZd7iY926dTjnnHNw+OGH48EHH0RTU9PA33384x/HV77yFfz4xz9GY2MjPvzhDw/aNpfLYdSoUd74UMrn84P2/7GPfQy1tbW4+OKL8cgjj2DOnDkAgIMOOggHHXRQ1c4jRKXncvbZZ2PFihVYtGgRUqn/ufG7bNkynHHGGbjvvvuG4jSHha6uroEFpMhwo8cuIu/BsmXLAADXXnstZs2ahbvuugtdXV2D5txwww3YvXs3br755kELj72iKMK8efMSOd+49p7nH98BsB51/PznP8cpp5yCpqYmFAoFHHnkkViyZMnA35988sk4+eSTvWNceOGFmDx5sjdeLpdxzTXXYOLEiaitrcXMmTPxq1/9atCc93oue1100UXYsGEDVq1aNTD24osv4pFHHsFFF13kze/p6cHf/M3f4Nhjj0VTUxOam5vxkY98BD/5yU+8uVEU4dJLL8X3vvc9HH744cjlcjjqqKNw11130dewatUq/OVf/iWam5tRV1eHT3/60/SR0C9/+UuccsopaGxsRKFQwIknnuhdl72PlZ588kmceeaZGD16NKZNm+btS2S40OJDhCiVSigWi4P+7NXd3Y0f/vCH+OAHP4gZM2bgoosuQmdnJ+65555B+3jggQfQ0tJS1bsXldr72rq6uvD444/j6quvxtSpUzFr1qx33G7ZsmU4/fTTUS6Xceutt+KnP/0pvvKVr+CNN954z+dy00034ec//zmWLl2KO+64A6lUCp/85Ce9R1KVnMv06dPx0Y9+dOCRGbDn8dnkyZNxyimnePN7e3uxfft2/O3f/i3+3//7f/jhD3+Ik046CfPmzcMPfvADb/59992H73znO7j66qvxox/9CJMmTcK5556LH/3oR97ciy++GKlUCitXrsTSpUvx+OOP4+STT8bOnTsH5txxxx2YM2cOGhsbsWLFCvzrv/4rmpub8YlPfMJbgADAvHnzcNhhh+Gee+7Brbfe+o7XTWSfciIyYPny5Q4A/dPf3++cc+4HP/iBA+BuvfVW55xznZ2drr6+3n30ox8dtK/a2lr34Q9/+D2dx6RJk9zcuXMrezHvYPbs2fQ1Hn744e4Pf/jDoLl7r8m6deucc3teb2NjozvppJNcuVx+x2PMnj3bG7/gggvcpEmTBv7/unXrHAA3YcIE193dPTDe0dHhmpub3amnnlrxuXzrW99yANyWLVvc8uXLXS6Xc9u2bXPFYtGNHz/eLVy40DnnXF1dnbvgggvM/RSLRdff3+8uvvhid9xxxw36OwAun8+7tra2QfOPOOIId9hhh3mv4Ywzzhi0/X/+5386AO7b3/62c8653bt3u+bmZvfpT3960LxSqeQ+8IEPuA996EPe6/vmN79pnrvIcKI7HyLED37wA6xdu3bQn0xmT0Rq2bJlyOfzOOeccwDsCTGeddZZ+PWvf42XXnppn5zv2+/UlMvld91m2rRpA6/t0UcfxcqVK5HP53HKKae84+tYs2YNOjo6MH/+/CH9Bs68efNQW1s78P8bGhrw6U9/Gg8//DBKpdKQnctZZ52Fmpoa3HnnnfjZz36Gtra2d/yGyz333IMTTzwR9fX1yGQyyGazWLZsGf7whz94c0855RS0tLQM/P90Oo2zzz4bL7/8sncn5vzzzx/0/2fNmoVJkybhwQcfHHht27dvxwUXXOC9t3/2Z3+GtWvXYvfu3YP28Rd/8RexroHIvqbFhwhx5JFHYubMmYP+AMDLL7+Mhx9+GHPnzoVzDjt37sTOnTtx5plnAsCg2/kTJ07EunXrEjnfadOmIZvNDvy5+uqr33WbvbmKmTNn4sMf/jDOPfdc3H///di0aRO++c1vmttt2bIFAHDIIYcM2fkDQGtrKx3r6+vDrl27huxc6urqcPbZZ+P73/8+li1bhlNPPRWTJk2ic++991589rOfxcEHH4w77rgDjz76KNauXYuLLroIPT09sV8DAGzbti3W3L3z3nrrLQDAmWeeOei9zWazuO666+Ccw/bt2wdtPxy+kSQSh77tIhLg+9//Ppxz+NGPfkSf469YsQLf/va3kU6n8YlPfAI33ngjHnvssarnPn7605+it7d34P+//WvBcY0fPx5jx47F008/bc7Z+22Td8t31NbWor293RvfunUrnd/W1kbHampqUF9fX9G5vN1FF12E//N//g9+97vfDXzdmLnjjjswZcoU3H333YPurPzxtX77+VpjY8aMiTX3sMMOAwCMHTsWAHDjjTean58/vssCYEjvRIlUk+58iMRUKpWwYsUKTJs2DQ8++KD352/+5m+wadMm3H///QCAr371q6irq8P8+fPpf4Sdc/jxj388JOd2zDHHDLpL814XH2+88Qa2bt2KcePGmXNmzZqFpqYm3HrrrXDOmfMmT56MF198cdB/qLdt24Y1a9bQ+ffee++guwmdnZ346U9/io9+9KNIp9MVncvbfeQjH8FFF12EM844A2eccYY5L4oi1NTUDPqPeltbG/22CwD86le/GrhjAez5zNx9992YNm2ad3fm7YueNWvWYP369QPfEDrxxBMxatQoPPfcc95duL1/ampqYr9mkeFEdz5EYrr//vuxceNGXHfddfQrpDNmzMBNN92EZcuW4VOf+hSmTJmCu+66C2effTaOPfbYgSJjAPDc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WbNmDfXhREREZISpymOXyy+/HJ///Ocxc+ZMfOQjH8Ftt92G119/HV/+8percTgREREZQaqy+Dj77LOxbds2XH311di0aRNmzJiBn/3sZ5g0adK7bpvL5fCtb32LPoqR4Ufv18ii92tk0fs1suj9ii9ycb4TIyIiIjJE1NtFREREEqXFh4iIiCRKiw8RERFJlBYfIiIikigtPkRERCRRw27xcfPNN2PKlCmora3F8ccfj1//+tf7+pQOeEuWLMEHP/hBNDQ0YNy4cfjMZz6DF154YdAc5xwWLlyICRMmIJ/P4+STT8azzz67j85Y/tiSJUsQRREWLFgwMKb3a3h588038bnPfQ5jxoxBoVDAscceiyeeeGLg7/V+DR/FYhHf+MY3MGXKFOTzeUydOhVXX301yuX/aUyo9ysGN4zcddddLpvNuttvv90999xz7rLLLnN1dXVu/fr1+/rUDmif+MQn3PLly93vf/9799RTT7m5c+e6iRMnul27dg3Mufbaa11DQ4P7v//3/7pnnnnGnX322W78+PGuo6NjH565PP74427y5Mnu/e9/v7vssssGxvV+DR/bt293kyZNchdeeKH7zW9+49atW+d++ctfupdffnlgjt6v4ePb3/62GzNmjPu3f/s3t27dOnfPPfe4+vp6t3Tp0oE5er/e3bBafHzoQx9yX/7ylweNHXHEEe7rX//6PjojYTZv3uwAuNWrVzvnnCuXy661tdVde+21A3N6enpcU1OTu/XWW/fVaR7wOjs73fTp092qVavc7NmzBxYfer+Gl6997WvupJNOMv9e79fwMnfuXHfRRRcNGps3b5773Oc+55zT+xXXsHns0tfXhyeeeAJz5swZND5nzhysWbNmH52VMO3t7QCA5uZmAMC6devQ1tY26L3L5XKYPXu23rt96JJLLsHcuXNx6qmnDhrX+zW83HfffZg5cybOOussjBs3Dscddxxuv/32gb/X+zW8nHTSSfjVr36FF198EQDw9NNP45FHHsHpp58OQO9XXFUpr/5ebN26FaVSyet829LS4nXIlX3HOYfLL78cJ510EmbMmAEAA+8Pe+/Wr1+f+DkKcNddd+HJJ5/E2rVrvb/T+zW8vPrqq7jllltw+eWX4+///u/x+OOP4ytf+QpyuRy+8IUv6P0aZr72ta+hvb0dRxxxBNLpNEqlEq655hqce+65APTzFdewWXzsFUXRoP/vnPPGZN+59NJL8bvf/Q6PPPKI93d674aHDRs24LLLLsMDDzyA2tpac57er+GhXC5j5syZWLx4MQDguOOOw7PPPotbbrkFX/jCFwbm6f0aHu6++27ccccdWLlyJY4++mg89dRTWLBgASZMmIALLrhgYJ7er3c2bB67jB07Ful02rvLsXnzZm8FKfvGX//1X+O+++7Dgw8+iEMOOWRgvLW1FQD03g0TTzzxBDZv3ozjjz8emUwGmUwGq1evxne+8x1kMpmB90Tv1/Awfvx4HHXUUYPGjjzySLz++usA9PM13Pzd3/0dvv71r+Occ87BMcccg89//vP46le/iiVLlgDQ+xXXsFl81NTU4Pjjj8eqVasGja9atQqzZs3aR2clwJ4V+6WXXop7770X//Ef/4EpU6YM+vspU6agtbV10HvX19eH1atX673bB0455RQ888wzeOqppwb+zJw5E+effz6eeuopTJ06Ve/XMHLiiSd6X11/8cUXB7qA6+dreOnq6kIqNfg/nel0euCrtnq/YtqHYVfP3q/aLlu2zD333HNuwYIFrq6uzr322mv7+tQOaP/rf/0v19TU5B566CG3adOmgT9dXV0Dc6699lrX1NTk7r33XvfMM8+4c889V18tG0b++Nsuzun9Gk4ef/xxl8lk3DXXXONeeukld+edd7pCoeDuuOOOgTl6v4aPCy64wB188MEDX7W999573dixY90VV1wxMEfv17sbVosP55z77ne/6yZNmuRqamrcn/zJnwx8nVP2HQD0z/LlywfmlMtl961vfcu1tra6XC7nPvaxj7lnnnlm3520DPL2xYfer+Hlpz/9qZsxY4bL5XLuiCOOcLfddtugv9f7NXx0dHS4yy67zE2cONHV1ta6qVOnuquuusr19vYOzNH79e4i55zbl3deRERE5MAybDIfIiIicmDQ4kNEREQSpcWHiIiIJEqLDxEREUmUFh8iIiKSKC0+REREJFFafIiIiEiitPgQERGRRGnxISIiIonS4kNEREQSpcWHiIiIJOr/B72k27sNNulZAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "DigiCam: oversampling\n", - "90.2 µs ± 287 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "HESS-I - BicubicMapper:\n", + "Initialization time: \n", + "586 ms ± 2.04 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "59.3 µs ± 1.68 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABOlklEQVR4nO3de3hU1b0+8HfPJJncg9wyCdeIsSoXa8EiEU2qgg/irbS2isdLtT1esEppDxZ5fiV4NFE8UmyxtFhFrIdDn1ZQ8AaxFWgPVSNKRWhRD5GgEiIakkDuM+v3B4c5DNnrC7PYe5GQ9/M88zy616y9114zhMXOu7/bUUopEBEREVkSONEDICIiop6Fiw8iIiKyiosPIiIisoqLDyIiIrKKiw8iIiKyiosPIiIisoqLDyIiIrKKiw8iIiKyiosPIiIisoqLD+pxnn76aTiOg7ffftu1/fLLL8fQoUPjtg0dOhSO47i+SkpK4t775ptv4pvf/CYGDx6MUCiE3NxcjBs3Dj/+8Y/j3tfe3o7f/OY3OPfcc9G7d2+kp6djyJAhuOqqq7By5cpjOhfHcXDXXXcd87kfi9LS0rjzCwQCyMvLw2WXXYb//u//jnvvxx9/DMdx8PTTT3s6hsMNHToUl19++VHfZzqWdevWxc5V1/eiiy6C4zidvhdEZCbpRA+AqLs4//zz8R//8R+dtmdnZ8f++6WXXsKVV16JkpISzJs3D3l5edi9ezfefvttLF++HI8++mjsvTfccANWrFiB6dOnY+7cuQiFQtixYwdeffVVrFmzBt/85jetnJfOq6++ipycHESjUVRXV2PevHkoKSnBm2++ia997WsAgLy8PPztb3/DsGHDTuhYvRhLVlYWnnzySdx8881x26uqqrBu3bq4z5mIjg8XH0THqFevXjjvvPPE98ybNw8FBQVYs2YNkpL+74/Xtddei3nz5sX+v6qqCr///e/xs5/9DHPnzo1tv/jii/GDH/wA0WjU+xNI0OjRo9G3b18AQFFREb7+9a9j2LBh+OMf/xhbfIRCoaPOiS3HO5bvfve7+O1vf4sPP/wQhYWFse1PPfUUBgwYgJEjR2Lbtm1eDPWEa29vh+M4cd9RIpv4axciD33xxRfo27ev6w/1QCAQ9z7g4L/W3Rz+3q4iJycHAJCcnBzbpvtVxz//+U9cd911yM3NRSgUwuDBg3HjjTeitbUVwP/9audIh34l9vHHH3dqW7lyJUaNGoXU1FSceuqp+MUvfhHXbjqWQyZMmIBBgwbhqaeeim2LRqNYunQpbrrpJtfP5PHHH8eFF16I/v37IyMjAyNHjsS8efPQ3t4e976SkhKMGDECf/nLX3DeeechLS0NAwYMwP/7f/8PkUik0znMmzcPDz74IAYPHozU1FSMGTMGf/rTnzod/8MPP8TUqVPRv39/hEIhnHnmmXj88cfj3nPo10q/+93v8OMf/xgDBgxAKBTCRx991Gl/RLZ0vZ9wRJZEIhF0dHR0euke9KyUOur7x40bhzfffBN333033nzzzU5/CR1y5plnolevXpg7dy4WL17s+pftiXZoftra2vDRRx9h2rRpCIVC+Pa3vy32+/vf/45zzz0Xb7zxBu6//3688sorKC8vR2trK9ra2ozGsnnzZkyfPh0/+tGPsHLlShQVFeGee+5x/TWY6VgCgQBuvvlmPPPMM7EFwdq1a/HJJ5/ge9/7nuv+/+d//gdTp07F7373O7z44ou49dZb8cgjj+C2227r9N6amhpce+21uP766/HCCy/g29/+Nh544AHcc889nd67cOFCvPrqq1iwYAGeffZZBAIBTJo0CX/7299i79m2bRvOPfdcvP/++3j00Ufx4osvYvLkybj77rvjrqYdMmvWLFRXV+PXv/41Vq9ejf79+4tzR+QrRdTDLFmyRAEQX0OGDInrM2TIEO17//3f/z32vr1796rx48fH2pKTk1VRUZEqLy9XjY2Ncft86aWXVN++fWPv7dOnj7rmmmvUqlWrjvlcAKhp06Yd13wcac6cOa7nmZ2drVasWBH33qqqKgVALVmyJLbtoosuUr169VK1tbVHPcaRDn02VVVVsW1DhgxRjuOozZs3x713woQJKjs7Wx04cOC4xvL6668rAOoPf/iD2rFjh3IcR7344otKKaWuueYaVVJSopRSavLkyZ2+F4eLRCKqvb1dPfPMMyoYDKovv/wy1lZcXKwAqBdeeCGuzw9+8AMVCATUzp07484hPz9fNTc3x97X0NCgevfurS655JLYtksvvVQNHDhQ1dfXx+3zrrvuUqmpqbHjHzq/Cy+8UDt2Itt45YN6rGeeeQaVlZWdXuPHj3d9//jx413ff+utt8be06dPH/zlL39BZWUlHnroIVx11VX44IMPMGvWLIwcORJ79+6Nvfeyyy5DdXU1Vq5ciZ/85CcYPnw4nn/+eVx55ZVxd7AceYUm0TxINBqN63/4ZX7Ja6+9hsrKSrz11lt48cUXcckll+Daa68V78RpamrC+vXr8Z3vfAf9+vVLaJyS4cOH4+yzz47bNnXqVDQ0NOCdd97xbCwFBQUoKSnBU089hS+++AIvvPACbrnlFu373333XVx55ZXo06cPgsEgkpOTceONNyISieCDDz6Ie29WVhauvPLKTucQjUaxYcOGuO1TpkxBampqXN8rrrgCGzZsQCQSQUtLC/70pz/hm9/8JtLT0+M+38suuwwtLS1444034vb5rW9965jmgMgGpo2oxzrzzDMxZsyYTttzcnKwa9cu1+1u73czZsyY2Hvb29tx77334uc//znmzZsXFzxNS0vD1VdfjauvvhoAUF1djUmTJuHxxx/HHXfcgeHDh2PYsGHYuXNnrM+cOXNQWlp6zOd5yy23YOnSpbH/Ly4uxrp1647a7+yzz44FTgFg0qRJGDlyJKZNm6a9E6eurg6RSAQDBw485vEdi3A4rN12KD/j1VhuvfVWfO9738P8+fORlpam/TVTdXU1LrjgAnzlK1/BY489hqFDhyI1NRVvvfUWpk2bhubm5rj35+bmHvM56M63ra0N+/fvx/79+9HR0YFf/vKX+OUvf+k6vsMXuoA+X0R0InDxQeSz5ORkzJkzBz//+c/x/vvvi+8dPHgw/vVf/xXTp0/H1q1bMXz4cKxevTouHJmfn5/Q8UtLS+OupGRlZSV2Av8rEAhg+PDh+MMf/oDa2lrXzEDv3r0RDAbxySefiPs69K/61tZWhEKh2PYj/8I8pKamRrutT58+rn2OdSxHmjJlCqZNm4aHHnoIP/jBD5CWlub6vueffx4HDhzAihUrMGTIkNj2zZs3u75/z549x3wOuvNNSUlBZmYmkpOTEQwGccMNN2DatGmuxysoKIj7f7eAL9GJwsUHkYd2797t+i/Mf/zjHwD+b+HQ2NgIx3GQmZl51PeOHDnyuMY0dOhQT4pjRSIRbNmyBaFQSFvzIi0tDcXFxfjDH/6ABx98MO7KyZFjAoD33nsP5557bmz76tWrXd+/detW/P3vf4/71cuyZcuQlZUVu+3XdCxu/X72s59hw4YNuOOOO7TvO/SX+eGLJ6UUnnjiCdf3NzY2YtWqVXG/elm2bBkCgQAuvPDCuPeuWLECjzzySGyR1tjYiNWrV+OCCy5AMBhEeno6vvGNb+Ddd9/FqFGjkJKSckznRtRVcPFBdIz27dvX6ffowMG/fM455xwAwKWXXoqBAwfiiiuuwBlnnIFoNIrNmzfj0UcfRWZmZuzOhu3bt+PSSy/Ftddei+LiYuTl5aGurg4vvfQSFi9ejJKSEhQVFVk9vyNt2rQpdnvtnj178NRTT+Gf//wnfvSjH8XlEY40f/58jB8/HmPHjsVPf/pTnHbaadizZw9WrVqF3/zmN8jKysJll12G3r1749Zbb8X999+PpKQkPP30066/7gIOLsSuvPJKlJaWIi8vD88++ywqKirw8MMPIz09/bjG4mbGjBmYMWOGOD8TJkxASkoKrrvuOsycORMtLS1YtGgR6urqXN/fp08f3HHHHaiursbpp5+Ol19+GU888QTuuOMODB48OO69wWAQEyZMwIwZMxCNRvHwww+joaEh7i6Wxx57DOPHj8cFF1yAO+64A0OHDkVjYyM++ugjrF69Gn/+85/F8ROdUCc68Upk26E7KiorK13b3e5qkO52GTBgQOx9v//979XUqVNVYWGhyszMVMnJyWrw4MHqhhtuUNu2bYu9r66uTj3wwAPqoosuUgMGDFApKSkqIyNDffWrX1UPPPCAampqOqZzgaW7XXr37q3Gjh2rnnrqKRWJRGLvdbvDRCmltm3bpq655hrVp08flZKSogYPHqxuvvlm1dLSEnvPW2+9pYqKilRGRoYaMGCAmjNnjvrtb3/rerfL5MmT1R//+Ec1fPhwlZKSooYOHarmz58fd0zTsRx+t4vE7XuxevVqdfbZZ6vU1FQ1YMAA9W//9m/qlVdeUQDU66+/HntfcXGxGj58uFq3bp0aM2aMCoVCKi8vT913332qvb290zk8/PDDau7cuWrgwIEqJSVFnXPOOWrNmjWdxlRVVaVuueUWNWDAAJWcnKz69eunioqK1AMPPBB7z7GeH5FNjlKaogZEROSJkpIS7N2796iZn48//hgFBQV45JFH8JOf/MTS6Ijs4622REREZBUXH0RERGQVf+1CREREVvHKBxEREVnFxQcRERFZxcUHERERWdXlioxFo1F89tlnyMrKYjlgIiKibkIphcbGRuTn5yMQkK9tdLnFx2effYZBgwad6GEQERGRgV27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nDnq7LPPdm3rifOhlFL33nuvGj9+vLa9p87L4e655x41bNgwFY1GfZ+PLvNrl7a2NmzatAkTJ06M2z5x4kRs3LjxBI2q66iqqkJNTU3c/IRCIRQXF/eY+amvrwcA9O7dGwDnJBKJYPny5Thw4ADGjRvX4+dj2rRpmDx5Mi655JK47T11Xj788EPk5+ejoKAA1157LXbs2AGg587HqlWrMGbMGFxzzTXo378/zjnnHDzxxBOx9p46L4e0tbXh2WefxS233ALHcXyfjy6z+Ni7dy8ikUinJ9/m5uZ2ekJuT3RoDnrq/CilMGPGDIwfPx4jRowA0HPnZMuWLcjMzEQoFMLtt9+OlStX4qyzzuqx8wEAy5cvxzvvvIPy8vJObT1xXsaOHYtnnnkGa9aswRNPPIGamhoUFRXhiy++6JHzAQA7duzAokWLUFhYiDVr1uD222/H3XffjWeeeQZAz/yeHO7555/Hvn37cPPNNwPwfz58ebbL8XAcJ+7/lVKdtvVkPXV+7rrrLrz33nv461//2qmtp83JV77yFWzevBn79u3Dc889h5tuugnr16+Ptfe0+di1axfuuecerF27Fqmpqdr39aR5mTRpUuy/R44ciXHjxmHYsGFYunQpzjvvPAA9az4AIBqNYsyYMSgrKwMAnHPOOdi6dSsWLVqEG2+8Mfa+njYvhzz55JOYNGkS8vPz47b7NR9d5spH3759EQwGO62oamtrO628eqJDSfWeOD8//OEPsWrVKrz++usYOHBgbHtPnZOUlBScdtppGDNmDMrLy3H22Wfjscce67HzsWnTJtTW1mL06NFISkpCUlIS1q9fj1/84hdISkqKnXtPm5fDZWRkYOTIkfjwww977PckLy8PZ511Vty2M888E9XV1QB67s8TANi5cydee+01fP/7349t83s+usziIyUlBaNHj0ZFRUXc9oqKChQVFZ2gUXUdBQUFCIfDcfPT1taG9evXn7Tzo5TCXXfdhRUrVuDPf/4zCgoK4tp74py4UUqhtbW1x87HxRdfjC1btmDz5s2x15gxY3D99ddj8+bNOPXUU3vkvByutbUV//jHP5CXl9djvyfnn39+p1v1P/jgg9jT1nvqvADAkiVL0L9/f0yePDm2zff5OO7IqocO3Wr75JNPqm3btqnp06erjIwM9fHHH5/ooVnR2Nio3n33XfXuu+8qAGr+/Pnq3Xffjd1q/NBDD6mcnBy1YsUKtWXLFnXddded1LeB3XHHHSonJ0etW7cu7nawpqam2Ht62pzMmjVLbdiwQVVVVan33ntP3XfffSoQCKi1a9cqpXrefOgcfreLUj1vXn784x+rdevWqR07dqg33nhDXX755SorKyv2s7SnzYdSB2/DTkpKUg8++KD68MMP1X/+53+q9PR09eyzz8be0xPnJRKJqMGDB6t77723U5uf89GlFh9KKfX444+rIUOGqJSUFPW1r30tdltlT/D6668rAJ1eN910k1Lq4K1gc+bMUeFwWIVCIXXhhReqLVu2nNhB+8htLgCoJUuWxN7T0+bklltuif356Nevn7r44otjCw+let586By5+Ohp83KoHkNycrLKz89XU6ZMUVu3bo2197T5OGT16tVqxIgRKhQKqTPOOEMtXrw4rr0nzsuaNWsUALV9+/ZObX7Oh6OUUsd//YSIiIjo2HSZzAcRERH1DFx8EBERkVVcfBAREZFVXHwQERGRVVx8EBERkVVcfBAREZFVXHwQERGRVVx8EBERkVVcfBAREZFVXHwQERGRVVx8EBERkVX/H5jJJmHGICqlAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "DigiCam: rebinning\n", - "97.9 µs ± 178 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "HESS-II - BicubicMapper:\n", + "Initialization time: \n", + "1.29 s ± 10.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "93.6 µs ± 1.31 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGxCAYAAABIjE2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABaCElEQVR4nO3de3hU1b0//veeSTJJIAkkQC7cQSgIWhWsFekBq+LPu6XWa+u1rdYrUi+lWg1WQTkt8niO91qxVYq9eGttK7Qq1mO/iihWUbEqAioxXJNArjOzfn94mOPe6xOyWLN2Zgfer+fheZzF2mvW7CRkuT+fz1qeUkqBiIiIKEJiuZ4AERERURAXKERERBQ5XKAQERFR5HCBQkRERJHDBQoRERFFDhcoREREFDlcoBAREVHkcIFCREREkcMFChEREUUOFyhE/2vhwoXwPA+vvvqq+PfHH388hg0b5msbNmwYPM8T/0ydOtXX9+WXX8Y3vvENDBkyBIlEApWVlTj00EPxwx/+0Nevo6MD9957Lw4++GCUl5ejuLgYQ4cOxUknnYTHH3/c6LN4nodLL7008/qjjz6C53n42c9+ZnS9qXPPPdf3mePxOAYNGoRTTz0Vb731lq/v888/D8/z8PzzzzudwxcFP3dnbOey83uks2uVUthnn33Erz8R7Z68XE+AqKc77LDDxF/8paWlmf9++umnceKJJ2Lq1KmYN28eqqursWHDBrz66qtYvHgxfv7zn2f6fuc738Fjjz2GGTNmYPbs2UgkEvjwww/x17/+Fc888wy+8Y1vdMvnMlVUVIRnn30WAJBMJvH+++/j5ptvxqRJk/DOO+9g4MCBAICDDjoI//znP7HvvvvmcrpO5lJSUoIHHnhAW4QsW7YMH3zwAUpKShzMkmjvxgUKUZb69OmDr371q7vsM2/ePAwfPhzPPPMM8vL+78fu9NNPx7x58zKv16xZg0cffRQ33HADZs+enWk/4ogj8L3vfQ/pdNr9B8hSLBbzff7JkydjyJAhOOKII/D000/j+9//PoDPF2xd3afuku1cTjvtNDzyyCO48847fQvRBx54AIceeigaGxtdTDMSWlpaUFhYCM/zcj0V2sswxEPUDTZv3ox+/fr5Fic7xWIxXz8AqK6uFsf5Yt8oKysrAwDk5+dn2joLq7z88ss44YQTUFFRgcLCQowcORIzZszI/P25556rhdYAoLa2ttNfmvfeey9Gjx6NRCKBfffdF4sXL/b9ve1cdjrjjDMAAL/5zW8ybQ0NDfjDH/6A888/X5zT7Nmzccghh6C8vBylpaU46KCD8MADDyB4XuuwYcNw/PHH4/HHH8f++++PwsJCjBgxAnfccYf4GR5++GHMnDkTVVVVKCoqwpQpU/D6669r7//qq6/ixBNPRHl5OQoLC3HggQfit7/9ra/PzhDWkiVLcP7556N///4oLi5GW1ub+JmIwtQz/rUj6kapVArJZFL709nB30qpLvsfeuihePnll3H55Zfj5ZdfRkdHhzjW2LFj0adPH8yePRv33XcfPvroozA+onM7P3NrayveeustXH311ejbty+OO+64XV73zDPP4Gtf+xrWrVuH+fPn4y9/+Quuv/56fPbZZ9Zzeeqpp3DHHXfgpptuwu9//3sMHToUZ5xxBn7/+987m0tpaSlOOeUU/PKXv8y0/eY3v0EsFsNpp50mjv/RRx/hwgsvxG9/+1s89thjmD59Oi677DL89Kc/1fquXLkSM2bMwJVXXonHH38ckyZNwhVXXCGGEn/84x/jww8/xC9+8Qv84he/wKeffoqpU6fiww8/zPR57rnncNhhh2Hbtm2455578OSTT+KAAw7AaaedhoULF2pjnn/++cjPz8evf/1r/P73v/ctNIm6jSIipZRSDz74oAKwyz9Dhw71XTN06NBO+/70pz/N9Nu0aZOaPHly5u/y8/PVpEmT1Ny5c1VTU5NvzKefflr169cv07eiokJ961vfUk899ZTxZwGgLrnkkszrNWvWKADqP//zP+1uTifOOecc8bNXV1erF1980df3ueeeUwDUc889l2kbOXKkGjlypGppadnlewTvu1JK3XjjjSr4TxgAVVRUpOrq6jJtyWRSjRkzRu2zzz5Zz2Xn98jy5cszY7z11ltKKaUOPvhgde655yqllBo3bpyaMmVKp+OkUinV0dGhbrrpJlVRUaHS6XTm74YOHao8z1MrV670XXPUUUep0tJStWPHDt9nOOigg3zXf/TRRyo/P19997vfzbSNGTNGHXjggaqjo8M35vHHH6+qq6tVKpXyfb6zzz6707kTdRc+QSEK+NWvfoXly5drfyZPniz2nzx5stj/ggsuyPSpqKjAP/7xDyxfvhy33norTjrpJLz33nuYNWsW9ttvP2zatCnT99hjj8W6devw+OOP46qrrsK4cePwxBNP4MQTT/RVqASf9LjIT7EZs6ioKPOZX375ZTz22GMYPXo0jj32WPzzn//s9Lr33nsPH3zwAS644AIUFhZmPfedjjjiCFRWVmZex+NxnHbaaXj//ffx8ccfO5vLlClTMHLkSPzyl7/Em2++ieXLl3ca3gGAZ599FkceeSTKysoQj8eRn5+PG264AZs3b0Z9fb2v77hx4/DlL3/Z13bmmWeisbERr732mtb+xVDX0KFDMWnSJDz33HMAgPfffx/vvvsuzjrrLADwfX2PPfZYbNiwAatXr/aN+c1vftPoHhCFiUmyRAFjx47FxIkTtfaysjKsX79ebJf6SyZOnJjp29HRgWuvvRa333475s2b50uWLSoqwsknn4yTTz4ZALBu3Tocc8wxuPPOO/GDH/wA48aNw8iRI7F27drMNTfeeCNqa2t345PqjjjiCCxbtizz+pxzzhFDAF8Ui8W0z3/00Udj8ODBmDlzZqeLlI0bNwIABg0alNWcg6qqqjpt27x5s/h+NnPxPA/nnXce7rjjDrS2tmL06NH42te+JvZ95ZVXMG3aNEydOhX3338/Bg0ahIKCAjzxxBO45ZZb0NLSslufwaTvG2+8AQCZENVVV12Fq666SpzfFxfIQOc5UETdiQsUohzJz8/HjTfeiNtvv13bMyRoyJAh+P73v48ZM2Zg1apVGDduHP74xz/6khdramqyntO9996LpqamzOt+/fpZjVNcXIyRI0dmfklK+vfvDwCdPtXYqbCwUEzSDP5S3amurq7TtoqKiqzmEnTuuefihhtuwD333INbbrml036LFy9Gfn4+/vSnP/me0DzxxBNi/935DJ313dlv59dw1qxZmD59uvh+X/rSl3yvWbFDUcAFClE32LBhg/h/pe+88w6A/1tcNDU1wfM89O7du8u+++23n/N5Bn9R2dq+fTvef/99DBgwoNM+o0ePzoRIZs6ciUQiIfYbNmwY6uvr8dlnn2VCN+3t7XjmmWfE/n//+999fVOpFB599FGMHDmy0yckpnMJGjhwIK6++mq8++67OOecczrt53ke8vLyEI/HM20tLS349a9/LfZftWoV3njjDV+YZ9GiRSgpKcFBBx3k6/ub3/wGM2fOzCwq1q5di5deeglnn302gM+/pqNGjcIbb7yB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rqe2Rzn66KPVgw8+qN566y21cuVKddxxx6khQ4ao7du3Z/rceuutqqSkRP3hD39Qb775pjrttNNUdXW1amxszOHM9yyvvPKKGjZsmNp///3VFVdckWnnvQ/Pli1b1NChQ9W5556rXn75ZbVmzRr1t7/9Tb3//vuZPrz/4bj55ptVRUWF+tOf/qTWrFmjfve736nevXurBQsWZPrw3rvz5z//WV133XXqD3/4gwKgHn/8cd/fm9zriy66SA0cOFAtXbpUvfbaa+rwww9XX/7yl1Uymcx6fj1ugfKVr3xFXXTRRb62MWPGqB/96Ec5mtHeob6+XgFQy5YtU0oplU6nVVVVlbr11lszfVpbW1VZWZm65557cjXNPUpTU5MaNWqUWrp0qZoyZUpmgcJ7H65rr71WTZ48udO/5/0Pz3HHHafOP/98X9v06dPVt7/9baUU732YggsUk3u9bds2lZ+frxYvXpzp88knn6hYLKb++te/Zj2nHhXiaW9vx4oVKzBt2jRf+7Rp0/DSSy/laFZ7h4aGBgBAeXk5AGDNmjWoq6vzfS0SiQSmTJnCr4Ujl1xyCY477jgceeSRvnbe+3A99dRTmDhxIr71rW9hwIABOPDAA3H//fdn/p73PzyTJ0/G3//+d7z33nsAgDfeeAMvvvgijj32WAC8993J5F6vWLECHR0dvj41NTUYP368k69Hzra6t7Fp0yakUintxOPKykrtZGRyRymFmTNnYvLkyRg/fjwAZO639LVYu3Ztt89xT7N48WK89tprWL58ufZ3vPfh+vDDD3H33Xdj5syZ+PGPf4xXXnkFl19+ORKJBM4++2ze/xBde+21aGhowJgxYxCPx5FKpXDLLbfgjDPOAMDv/e5kcq/r6upQUFCAvn37an1c/E7uUQuUnTzP871WSmlt5M6ll16Kf/3rX3jxxRe1v+PXwr3169fjiiuuwJIlS1BYWNhpP977cKTTaUycOBFz5swBABx44IFYtWoV7r77bpx99tmZfrz/7j366KN4+OGHsWjRIowbNw4rV67EjBkzUFNTg3POOSfTj/e++9jca1dfjx4V4unXrx/i8bi2Mquvr9dWeeTGZZddhqeeegrPPfccBg0alGmvqqoCAH4tQrBixQrU19djwoQJyMvLQ15eHpYtW4Y77rgDeXl5mfvLex+O6upq7Lvvvr62sWPHYt26dQD4vR+mq6++Gj/60Y9w+umnY7/99sN3vvMdXHnllZg7dy4A3vvuZHKvq6qq0N7ejq1bt3baJxs9aoFSUFCACRMmYOnSpb72pUuXYtKkSTma1Z5JKYVLL70Ujz32GJ599lkMHz7c9/fDhw9HVVWV72vR3t6OZcuW8WuRpSOOOAJvvvkmVq5cmfkzceJEnHXWWVi5ciVGjBjBex+iww47TCupf++99zInrfN7PzzNzc2Ixfy/luLxeKbMmPe++5jc6wkTJiA/P9/XZ8OGDXjrrbfcfD2yTrPtZjvLjB944AH19ttvqxkzZqhevXqpjz76KNdT26P84Ac/UGVlZer5559XGzZsyPxpbm7O9Ln11ltVWVmZeuyxx9Sbb76pzjjjDJb7heSLVTxK8d6H6ZVXXlF5eXnqlltuUf/+97/VI488ooqLi9XDDz+c6cP7H45zzjlHDRw4MFNm/Nhjj6l+/fqpa665JtOH996dpqYm9frrr6vXX39dAVDz589Xr7/+embbDpN7fdFFF6lBgwapv/3tb+q1115TX//61/feMmOllLrzzjvV0KFDVUFBgTrooIMypa/kDgDxz4MPPpjpk06n1Y033qiqqqpUIpFQ//Ef/6HefPPN3E16DxZcoPDeh+uPf/yjGj9+vEokEmrMmDHqvvvu8/097384Ghsb1RVXXKGGDBmiCgsL1YgRI9R1112n2traMn1479157rnnxH/nzznnHKWU2b1uaWlRl156qSovL1dFRUXq+OOPV+vWrXMyP08ppbJ/DkNERETkTo/KQSEiIqK9AxcoREREFDlcoBAREVHkcIFCREREkcMFChEREUUOFyhEREQUOVygEBERUeRwgUJERESRwwUKERERRQ4XKERERBQ5XKAQERFR5Pz/8iE+ZP2m2wEAAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "DigiCam: nearest_interpolation\n", - "91.4 µs ± 262 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "LSTCam - RebinMapper:\n", + "Initialization time: \n", + "822 ms ± 2.98 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "38.1 µs ± 395 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGxCAYAAABIjE2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABu4klEQVR4nO3deXhV1bk/8HefOQkZSICEMEaFOuCAaFX0V7AqtlVbpXW2pWp7sagVsXWo1qJXobW3lFtbsXoVvFepQ0Vre70tOGEtbVEUB2xxACEMMUDInDPv3x/WtOt9Xzwrmx2yA9/P8/g87p119l57n30O66x3vWs5ruu6BAAAABAgob6uAAAAAACHBgoAAAAEDhooAAAAEDhooAAAAEDgoIECAAAAgYMGCgAAAAQOGigAAAAQOGigAAAAQOCggQIAAACBgwYKgGLRokXkOA698sorn1iuvr6eZsyYQWPHjqWioiKqrKykQw89lL75zW9SfX09ffDBB+Q4jtV/H3zwARERrVu3jq644oruYxYXF9MhhxxCN910E23evHkPXL3/Zs+ebVxrNBqlkSNH0je/+U1qaGjYrWNu3769YNnJkyfT5MmTd+s8oVCI1q1bJ/7e0dFBZWVl5DgOff3rX/d0DgCQIn1dAYD+atOmTXTkkUdSRUUFXXPNNfSpT32KWlpa6O2336ZHH32U1q1bR8ceeyz9+c9/Nl43Y8YMamlpoYceesjYP3ToUPrd735H5513Hg0aNIiuuOIKGj9+PDmOQ2+++Sbdf//99L//+7/02muv7cnL9NXvf/97Ki8vp/b2dlq6dCn95Cc/oRUrVtDq1aspGo322nnvuuuu3T7GgAEDaOHChfTv//7vxv7HHnuMMplMr9YfYF+EBgqAR/feey9t376dVq5cSXV1dd37zzzzTPre975H+XyeQqEQHXvsscbrysrKKJ1Oi/3r16+n8847j8aOHUvPP/88lZeXd//ts5/9LH3729+mJ554oncvqpdNmDCBBg0aREREJ598Mm3fvp0WLlxIL730Ep144om9dt6DDz54t49x7rnn0gMPPEC33HILhUL/7Hy+77776KyzzqKnnnpqt88RFJ2dnVRcXNzX1YB9HEI8AB7t2LGDQqEQDRkyRP37v/4jZmPevHnU0dFBd911l9E4+ZjjODR16tTu7WXLltGXvvQlGj58OCUSCTrggANo+vTpIuTxcYjijTfeoLPPPpvKy8upsrKSZs2aRdlsltauXUuf+9znqLS0lEaPHk133HFHj+q9O4466igiIvrwww+N/c888wyddNJJVFZWRsXFxXT88cfTs88+qx6jvr6epk6dSmVlZVReXk4XXXQRbdu2zSjDQzwfh97+4z/+g+bNm0d1dXU0YMAAOu644+gvf/mLep5LLrmE6uvradmyZd373nnnHXrppZfokksuEeWTySRdc801dMQRR3Tf8+OOO45+85vfiLKO49AVV1xBv/zlL2ns2LEUj8fp4IMPpocfftgo93HocdmyZXTxxRdTZWUllZSU0BlnnKGGn2zu48fPx6uvvkpf+cpXaODAgbT//vur9wBgT0IDBcCj4447jvL5PE2dOpX+8Ic/UGtr624db+nSpVRdXS16Vnbl/fffp+OOO44WLFhAS5cupZtvvpn++te/0gknnECZTEaUP+ecc+jwww+nxx9/nL75zW/ST3/6U7r66qvpzDPPpNNOO42eeOIJ+uxnP0vXXXcdLVmyZLeuxdb69euJiGjs2LHd+x588EGaMmUKlZWV0QMPPECPPvooVVZW0qmnnqo2Us466yw64IAD6Ne//jXNnj2bnnzySTr11FPVe8D94he/oGXLltH8+fPpoYceoo6ODvrCF75ALS0touyYMWPo//2//0f3339/977777+fRo8eTSeddJIon0qlqKmpib7zne/Qk08+Sb/61a/ohBNOoKlTp9J///d/i/JPPfUU/exnP6Nbb72Vfv3rX9OoUaPo/PPPp1//+tei7KWXXkqhUIgWL15M8+fPp5UrV9LkyZOpubnZ832cOnUqHXDAAfTYY4/R3XffXfDeAfQ6FwCEhQsXukTkvvzyy7ssk8/n3enTp7uhUMglItdxHPeggw5yr776anf9+vW7fN2kSZPcQw45ROxPJBLuscce66m++XzezWQy7oYNG1wicn/zm990/+0HP/iBS0TuT37yE+M1RxxxhEtE7pIlS7r3ZTIZd/Dgwe7UqVM91WNXPq5DQ0ODm8lk3J07d7qPPvqoW1JS4p5//vnd5To6OtzKykr3jDPOMF6fy+Xcww8/3P30pz8tjnn11VcbZR966CGXiNwHH3ywe9+kSZPcSZMmdW+vX7/eJSL30EMPdbPZbPf+lStXukTk/upXvxLn2bZtm7tw4UI3Ho+7O3bscLPZrDt06FB39uzZruu6bklJiTtt2rRd3oNsNutmMhn30ksvdcePH2/8jYjcoqIit6GhwSh/4IEHugcccED3vo+fy7POOst4/Z/+9CeXiNzbbrvN8328+eabd1l3gL6AHhQAjxzHobvvvpvWrVtHd911F1188cWUyWTopz/9KR1yyCG0fPnyXj1/Y2MjXXbZZTRixAiKRCIUjUZp1KhRRET0t7/9TZQ//fTTje2DDjqIHMehz3/+8937IpEIHXDAAbRhw4ZPPHc+n6dsNtv9Xy6Xs6pzTU0NRaNRGjhwIJ1zzjk0YcIEeuCBB7r/vmLFCmpqaqJp06YZx8/n8/S5z32OXn75Zero6DCOeeGFFxrb55xzDkUiEXr++ecL1ue0006jcDjcvX3YYYcREe3y+s8++2yKxWL00EMP0dNPP00NDQ2fmLnz2GOP0fHHH08DBgzofo/uu+8+9f056aSTqLq6uns7HA7TueeeS++99x5t2rTpE6954sSJNGrUqO5r9nIfv/zlL+/yOgD6AgbJAuymUaNG0be+9a3u7UcffZTOP/98+u53v0srV660Ps7IkSO7Qx6F5PN5mjJlCm3ZsoW+//3v06GHHkolJSWUz+fp2GOPpa6uLvGayspKYzsWi1FxcTElEgmxv1C46pJLLjEaFpMmTaIXXnihYL2feeYZKi8vp6amJrrnnnvo8ccfpyuvvLI7pPDxWJSvfOUruzxGU1MTlZSUdG/X1NQYf49EIlRVVUU7duwoWJ+qqipjOx6PExGp94+IqKSkhM4991y6//77adSoUXTyySd3Nwq5JUuW0DnnnENnn302ffe736WamhqKRCK0YMECI0y0q+v41307duyg4cOHFyz78TV7uY9Dhw7dZVmAvoAGCoDPzjnnHJo7dy699dZbPXrdqaeeSnfeeSf95S9/KTgO5a233qLXX3+dFi1aRNOmTeve/95773mqc0/Nnj2brrjiiu7t0tJSq9cdfvjh3Vk8p5xyCp166ql0zz330KWXXkpHH31099/uvPPOXd6Df+1lICJqaGigYcOGdW9ns1nasWOHaHz45ZJLLqH/+q//ojfeeEOkiv+rBx98kOrq6uiRRx4hx3G696dSKbW8Nh/Mx/v4teyq7AEHHEBE5Ok+/msdAYIADRQAj7Zu3ar+6mxvb6f6+nqqra3t0fGuvvpquv/++2nGjBkizZiIyHVdevLJJ+mss87q/sfk41/8H/vlL3/Zw6vwZvTo0TR69OjdOobjOPSLX/yCDj74YLrpppvoD3/4Ax1//PFUUVFBb7/9ttEA+iQPPfQQTZgwoXv70UcfpWw263litkKOO+44uuSSS6ilpYXOOuusXZZzHIdisZjxD39DQ4OaxUNE9Oyzz9KHH37Y3XDI5XL0yCOP0P7772/0nhB9dM3/GpJZsWIFbdiwgb7xjW8QEXm6jwBBgwYKwCd47rnnumd4/Vdf+MIX6Pbbb6c//elPdO6559IRRxxBRUVFtH79evr5z39OO3bsoB//+Mc9OlddXR09/PDD3cf7eKI2IqK3336b7r//fnJdl8466yw68MADaf/996frr7+eXNelyspK+u1vf2ukwPYHY8aMoX/7t3+ju+66i1566SU64YQT6M4776Rp06ZRU1MTfeUrX6EhQ4bQtm3b6PXXX6dt27bRggULjGMsWbKEIpEInXLKKbRmzRr6/ve/T4cffjidc845vVbv++67r2CZ008/nZYsWUIzZsygr3zlK1RfX0///u//TkOHDqV3331XlB80aBB99rOfpe9///tUUlJCd911F/39738XqcZERK+88gp94xvfoLPPPpvq6+vpxhtvpGHDhtGMGTOI6KNJ5Xp6HwGCBg0UgE9w3XXXqfvXr19PX/3qV4mI6OGHH6Yf//jH1NLSQpWVlTRhwgR6+umnjcGntk4//XR688036Sc/+QndfffdVF9fT6FQiOrq6uhzn/scXXnllUREFI1G6be//S1dddVVNH36dIpEInTyySfTM888QyNHjvR+wX3gBz/4Af33f/833XzzzfTcc8/RRRddRCNHjqQ77riDpk+fTm1tbTRkyBA64ogj1AGpS5YsodmzZ9OCBQvIcRw644wzaP78+RSLxfb8xfyLiy++mBobG+nuu++m+++/n/bbbz+6/vrradOmTXTLLbeI8l/84he7lzTYuHEj7b///vTQQw/RueeeK8red9999D//8z903nnnUSqVohNPPJH+8z//0xhn1NP7CBA0juu6bl9XAgBgX+Y4Dl1++eX085///BPLLVq0iC6++GJ6+eWXuye5A9hbIc0YAAAAAgcNFAAAAAgchHgAAAAgcNCDAgAAAIGDBgoAAAAEDhooAAAAEDj9ch6UfD5PW7Zs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2kC56667qK6ujhKJBE2YMIH++Mc/9mV1AAAAICD6LMTzyCOP0MyZM+muu+6i448/nn75y1/S5z//eXr77bdp5MiRfVUtAOgncm3mjKuli/8syvDsn5JfN/RijQDAT33WgzJv3jy69NJL6Rvf+AYddNBBNH/+fBoxYgQtWLCgr6oEAAAAAdEnPSjpdJpWrVpF119/vbF/ypQptGKFXAcjlUpRKpXq3m5paSEioixliNzerSsAAAD4I0sZIiJy3cL/ePdJA2X79u2Uy+Wourra2F9dXU0NDbILdu7cuXTLLbeI/S/R071WRwAAAOgdbW1tVF5e/oll+jTN2HEcY9t1XbGPiOiGG26gWbP+mULY3NxMo0aNoo0bNxa8QNg9ra2tNGLECKqvr6eysrK+rs5eC/d5z8B93jNwn/eM/nifXdeltrY2qq2tLVi2TxoogwYNonA4LHpLGhsbRa8KEVE8Hqd4PC72l5eX95s3pb8rKyvDvd4DcJ/3DNznPQP3ec/ob/fZtmOhTwbJxmIxmjBhAi1btszYv2zZMpo4cWJfVAkAAAACpM9CPLNmzaKvfvWrdNRRR9Fxxx1H99xzD23cuJEuu+yyvqoSAAAABESfNVDOPfdc2rFjB9166620detWGjduHD399NM0atSogq+Nx+P0gx/8QA37gL9wr/cM3Oc9A/d5z8B93jP29vvsuDa5PgAAAAB7ENbiAQAAgMBBAwUAAAACBw0UAAAACBw0UAAAACBw0EABAACAwOmXDZS77rqL6urqKJFI0IQJE+iPf/xjX1epX5s7dy4dffTRVFpaSkOGDKEzzzyT1q5da5RxXZdmz55NtbW1VFRURJMnT6Y1a9b0UY33DnPnziXHcWjmzJnd+3Cf/bF582a66KKLqKqqioqLi+mII46gVatWdf8d93n3ZbNZuummm6iuro6Kiopov/32o1tvvZXy+Xx3Gdxnb1588UU644wzqLa2lhzHoSeffNL4u819TaVSdOWVV9KgQYOopKSEvvjFL9KmTZv24FX4wO1nHn74YTcajbr33nuv+/bbb7tXXXWVW1JS4m7YsKGvq9ZvnXrqqe7ChQvdt956y129erV72mmnuSNHjnTb29u7y/zwhz90S0tL3ccff9x988033XPPPdcdOnSo29ra2oc1779Wrlzpjh492j3ssMPcq666qns/7vPua2pqckeNGuV+/etfd//617+669evd5955hn3vffe6y6D+7z7brvtNreqqsr93e9+565fv9597LHH3AEDBrjz58/vLoP77M3TTz/t3njjje7jjz/uEpH7xBNPGH+3ua+XXXaZO2zYMHfZsmXuq6++6p544onu4Ycf7maz2T18Nd71uwbKpz/9afeyyy4z9h144IHu9ddf30c12vs0Nja6ROQuX77cdV3Xzefzbk1NjfvDH/6wu0wymXTLy8vdu+++u6+q2W+1tbW5Y8aMcZctW+ZOmjSpu4GC++yP6667zj3hhBN2+XfcZ3+cdtpp7iWXXGLsmzp1qnvRRRe5rov77BfeQLG5r83NzW40GnUffvjh7jKbN292Q6GQ+/vf/36P1X139asQTzqdplWrVtGUKVOM/VOmTKEVK1b0Ua32Pi0tLUREVFlZSURE69evp4aGBuO+x+NxmjRpEu67B5dffjmddtppdPLJJxv7cZ/98dRTT9FRRx1FZ599Ng0ZMoTGjx9P9957b/ffcZ/9ccIJJ9Czzz5L77zzDhERvf766/TSSy/RF77wBSLCfe4tNvd11apVlMlkjDK1tbU0bty4fnXv+2yqey+2b99OuVxOrHhcXV0tVkYGb1zXpVmzZtEJJ5xA48aNIyLqvrfafd+wYcMer2N/9vDDD9Orr75KL7/8svgb7rM/1q1bRwsWLKBZs2bR9773PVq5ciV9+9vfpng8Tl/72tdwn31y3XXXUUtLCx144IEUDocpl8vR7bffTueffz4R4XnuLTb3taGhgWKxGA0cOFCU6U//VvarBsrHHMcxtl3XFfvAmyuuuILeeOMNeumll8TfcN93T319PV111VW0dOlSSiQSuyyH+7x78vk8HXXUUTRnzhwiIho/fjytWbOGFixYQF/72te6y+E+755HHnmEHnzwQVq8eDEdcsghtHr1apo5cybV1tbStGnTusvhPvcOL/e1v937fhXiGTRoEIXDYdECbGxsFK1J6Lkrr7ySnnrqKXr++edp+PDh3ftramqIiHDfd9OqVauosbGRJkyYQJFIhCKRCC1fvpx+9rOfUSQS6b6XuM+7Z+jQoXTwwQcb+w466CDauHEjEeF59st3v/tduv766+m8886jQw89lL761a/S1VdfTXPnziUi3OfeYnNfa2pqKJ1O086dO3dZpj/oVw2UWCxGEyZMoGXLlhn7ly1bRhMnTuyjWvV/ruvSFVdcQUuWLKHnnnuO6urqjL/X1dVRTU2Ncd/T6TQtX74c970HTjrpJHrzzTdp9erV3f8dddRRdOGFF9Lq1atpv/32w332wfHHHy/S5N95553uldLxPPujs7OTQiHzn5BwONydZoz73Dts7uuECRMoGo0aZbZu3UpvvfVW/7r3fTY816OP04zvu+8+9+2333ZnzpzplpSUuB988EFfV63f+ta3vuWWl5e7L7zwgrt169bu/zo7O7vL/PCHP3TLy8vdJUuWuG+++aZ7/vnnI13QB/+axeO6uM9+WLlypRuJRNzbb7/dfffdd92HHnrILS4udh988MHuMrjPu2/atGnusGHDutOMlyxZ4g4aNMi99tpru8vgPnvT1tbmvvbaa+5rr73mEpE7b94897XXXuueTsPmvl522WXu8OHD3WeeecZ99dVX3c9+9rNIM94TfvGLX7ijRo1yY7GYe+SRR3anw4I3RKT+t3Dhwu4y+Xze/cEPfuDW1NS48Xjc/cxnPuO++eabfVfpvQRvoOA+++O3v/2tO27cODcej7sHHnige8899xh/x33efa2tre5VV13ljhw50k0kEu5+++3n3njjjW4qleoug/vszfPPP69+J0+bNs11Xbv72tXV5V5xxRVuZWWlW1RU5J5++unuxo0b++BqvHNc13X7pu8GAAAAQNevxqAAAADAvgENFAAAAAgcNFAAAAAgcNBAAQAAgMBBAwUAAAACBw0UAAAACBw0UAAAACBw0EABAACAwEEDBQAAAAIHDRQAAAAIHDRQAAAAIHD+P85A1FK5SRftAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "DigiCam: bilinear_interpolation\n", - "102 µs ± 155 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "FlashCam - RebinMapper:\n", + "Initialization time: \n", + "846 ms ± 10.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "38.3 µs ± 368 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGxCAYAAABIjE2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABlw0lEQVR4nO3deXhV1b0//veZcjInJEhCIEwKgqKCgFTgClalVxGt1FrFVgVtVdSCVFHLrUaLoLY/irVVK1VAkWL9irNXxapQi8okimhxQiYJYchEhjPu3x9eTl0D7JXNPskOvF/Pw/O4dtbee519zokr67M+a/ksy7JARERE5CH+tm4AERERkYwdFCIiIvIcdlCIiIjIc9hBISIiIs9hB4WIiIg8hx0UIiIi8hx2UIiIiMhz2EEhIiIiz2EHhYiIiDyHHRQ6Ys2fPx8+n0/776abbkrV69GjB6644oq0tOHtt9+Gz+fD//t//8/4nBdffBFjx45FSUkJMjIyUFRUhDPOOANPPvkkYrFYWtqZbj169BCef05ODk4++WT86U9/gtPFrnv06IFzzz3Xtt7XX38Nn8+H+fPnO76Pz+fDqFGjtD9//PHHU6/r7bffdnQPoiNRsK0bQNTW5s2bh759+wrHysrK2qg1B2ZZFiZOnIj58+fjnHPOwezZs1FeXo7a2lq89dZbmDRpEnbv3o3Jkye3dVMdGT58OH7/+98DAL755hvMnj0bN9xwA+rq6vDrX/86bfft3Lkz3n33XRx99NGOr5GXl4fly5fjyy+/VK7z2GOPIT8/H3V1dYfaVKIjCjsodMTr378/Bg8e3NbNsPW73/0O8+fPx5133onbb79d+NnYsWMxbdo0fPHFF23UukNXWFiI733ve6nymWeeiW7duuEvf/lLWjso4XBYuK8TI0aMwPr16/HYY4/h7rvvTh3/8ssvsXz5clx11VWYO3fuoTbVM5qampCVldXWzaDDHEM8RC3U3NyMX/3qVxgwYAAKCgpQVFSEU089Fc8//7xS9+mnn8bQoUNRUFCA7Oxs9OrVCxMnTlTqxWIxTJ8+HWVlZcjPz8eZZ56JjRs3Cj+/99570bdvX/zmN7/Rtqu0tBQjRoxIle+8804MHToURUVFyM/Px8knn4xHH31UCZnsD4W89NJLGDhwILKystCvXz+89NJLAL4NhfXr1w85OTk45ZRTsHr1akfPraXy8/PRp08f7Ny5UzgejUYxY8YM9O3bF+FwGEcddRQmTJiAXbt2aa/z7LPP4sQTT0RmZiZ69eqFP/7xj8LPdSGeiooK+Hw+bNiwAZdccgkKCgpQUlKCiRMnora2VrmH3+/HZZddhgULFiCZTKaOP/bYYygvL8eZZ56pnLN69WpcfPHF6NGjB7KystCjRw9ccskl2Lx5s1Bvfyhy6dKlmDBhAoqKipCTk4OxY8fiq6++EuqOGjUK/fv3xz//+U9873vfQ1ZWFrp06YLf/OY3SCQSjp7j/s/HkiVLMHDgQGRmZuLOO+/UPmsiN7GDQke8RCKBeDwu/DuYSCSCvXv34qabbsJzzz2Hv/3tbxgxYgTGjRuHxx9/PFXv3XffxU9+8hP06tULixcvxssvv4zbb79de/1f//rX2Lx5M/7617/ikUceweeff46xY8em/qeyevVq7N27F+effz58Pp/R6/r6669x9dVX4+9//zuWLFmCcePG4YYbbsBvf/tbpe6HH36I2267DbfccguWLFmCgoICjBs3DnfccQf++te/YubMmXjyySdRW1uLc889F01NTUZtOBTxeBxbt25Fnz59UseSySTOP/983HPPPRg/fjxefvll3HPPPVi6dClGjRqltGvdunWYMmUKbrzxRjz77LMYNmwYJk+enAol2fnRj36EPn364JlnnsGtt96KRYsW4cYbb9TWnThxIr755hu89tprAL79XC1YsABXXHEF/H71V+3XX3+NY489FnPmzMFrr72Ge++9Fzt27MCQIUOwe/dupf6VV14Jv9+PRYsWYc6cOVi5ciVGjRqFmpoaoV5lZSUuvvhiXHrppXj++edx4YUXYsaMGULor6XPce3atbj55pvxy1/+Eq+++ip+9KMfGT0/okNiER2h5s2bZwHQ/ovFYql63bt3ty6//PIDXicej1uxWMy68sorrYEDB6aO//73v7cAWDU1NQc896233rIAWOecc45w/O9//7sFwHr33Xcty7KsxYsXWwCshx9+2NFrTSQSViwWs+666y6ruLjYSiaTwuvLysqytm3bljq2bt06C4DVuXNnq6GhIXX8ueeeswBYL7zwgqN2HEj37t2tc845x4rFYlYsFrM2b95s/fznP7dCoZD10ksvper97W9/swBYzzzzjHD+qlWrLADWgw8+KFzT5/NZ69atE+qeddZZVn5+fup1bdq0yQJgzZs3L1XnjjvusABY9913n3DupEmTrMzMTOX5jRkzxrIsyxo5cqR14YUXWpZlWS+//LLl8/msTZs2WU8//bQFwHrrrbcO+Azi8bi1b98+Kycnx7r//vtTx/d/Ti+44AKh/r/+9S8LgDVjxozUsZEjR1oArOeff16o+/Of/9zy+/3W5s2bHT3HQCBgbdy48YBtJ0oHjqDQEe/xxx/HqlWrhH/B4MGnZz399NMYPnw4cnNzEQwGEQqF8Oijj+LTTz9N1RkyZAgA4KKLLsLf//53bN++/YDXO++884TyiSeeCADKcH9LvPnmmzjzzDNRUFCAQCCAUCiE22+/HXv27EFVVZVQd8CAAejSpUuq3K9fPwDfhgyys7OV43btkkekLINMnFdeeQWhUAihUAjdu3fH3Llz8cADD2DMmDGpOi+99BIKCwsxduxY4foDBgxAaWmpkiVz/PHH46STThKOjR8/HnV1dVi7dq1tm3TvS3Nzs/L89ps4cSJeeOEF7NmzB48++ihOP/109OjRQ1t33759uOWWW3DMMccgGAwiGAwiNzcXDQ0Nwudov0svvVQoDxs2DN27d8dbb70lHM/Ly1PaPX78eCSTSSxfvhxAy5/jiSeeKIxkEbUGdlDoiNevXz8MHjxY+HcwS5YswUUXXYQuXbpg4cKFePfdd7Fq1SpMnDgRzc3NqXqnnXYannvuOcTjcVx22WXo2rUr+vfvj7/97W/KNYuLi4VyOBwGgNRQe7du3QAAmzZtMnpNK1euxOjRowEAc+fOxb/+9S+sWrUK06dPF667X1FRkVDOyMg46PHvvk6d/R2N/f8WLFhg2+YRI0Zg1apVeO+99/DEE0+gR48euP766/HOO++k6uzcuRM1NTXIyMhQ7lFZWamERkpLS5X77D+2Z88e2zbZvS+yCy+8EJmZmfjDH/6AF198EVdeeeUBrz1+/Hj86U9/wlVXXYXXXnsNK1euxKpVq3DUUUdpr3+g1yK/jpKSkgOeu79uS59j586dD/g6iNKFWTxELbRw4UL07NkTTz31lDAfJBKJKHXPP/98nH/++YhEInjvvfcwa9YsjB8/Hj169MCpp55qfM/BgwejqKgIzz//PGbNmmU7D2Xx4sUIhUJ46aWXkJmZmTr+3HPPGd/zUKxatUoo9+zZ0/acgoKCVOdw6NChGDp0KE466SRMmjQJ69atg9/vR8eOHVFcXIxXX31Ve428vDyhXFlZqdTZf0zufLghOzsbF198MWbNmoX8/HyMGzdOW6+2thYvvfQS7rjjDtx6662p4/vnN+kc6LUcc8wxwjF5UvF3z93/mlv6HE3nPRG5iSMoRC3k8/mQkZEh/NKurKzUZvHsFw6HMXLkSNx7770AgA8++KBF9wyFQrjlllvw73//WzvJFQCqqqrwr3/9K9XGYDCIQCCQ+nlTUxOeeOKJFt3XKXlEyklnoHfv3pg2bRrWr1+Pp556CgBw7rnnYs+ePUgkEso9Bg8ejGOPPVa4xoYNG/Dhhx8KxxYtWoS8vDycfPLJzl/gQVx77bUYO3Ysbr/9dqFz+F0+nw+WZaVGZPb761//qmTb7Pfkk08K5RUrVmDz5s3KAnH19fV44YUXhGOLFi2C3+/HaaedBqDlz5GoLXAEhaiF9qdcTpo0CRdeeCG2bt2K3/72t+jcuTM+//zzVL3bb78d27ZtwxlnnIGuXbuipqYG999/P0KhEEaOHNni+95888349NNPcccdd2DlypUYP358aqG25cuX45FHHsGdd96J4cOHY8yYMZg9ezbGjx+PX/ziF9izZw9+//vfK/9D9LqbbroJDz/8MO68805cdNFFuPjii/Hkk0/inHPOweTJk3HKKacgFAph27ZteOutt3D++efjggsuSJ1fVlaG8847DxUVFejcuTMWLlyIpUuX4t577xXm1rhpwIABtiNV+fn5OO200/C73/0OHTt2RI8ePbBs2TI8+uijKCws1J6zevVqXHXVVfjxj3+MrVu3Yvr06ejSpQsmTZok1CsuLsa1116LLVu2oE+fPnjllVcwd+5cXHvttalQYUufI1FbYAeFqIUmTJiAqqoqPPzww3jsscfQq1cv3Hrrrdi2bZuwPsTQoUOxevVq3HLLLdi1axcKCwsxePBgvPnmmzj++ONbfF+fz4d58+bhggsuwCOPPIIpU6aguroaeXl5GDBgAO69915MmDABAPD9738fjz32GO69916MHTsWXbp0wc9//nN06tTpoPMivCY3Nxe33347rrvuOjz55JO47LLL8MILL+D+++/HE088gVmzZiEYDKJr164YOXIkTjjhBOH8AQMGYMKECbjjjjvw+eefo6ysDLNnzz5gqnBrWrRoESZPnoxp06YhHo9j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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "DigiCam: bicubic_interpolation\n", - "145 µs ± 8.44 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "NectarCam - RebinMapper:\n", + "Initialization time: \n", + "840 ms ± 27 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "38 µs ± 590 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGxCAYAAABIjE2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABkuklEQVR4nO3deZhU1bU+/remHmlaBummEbE1oAjiAEZFIziAV0WTmDihEadcDWpENKhBY2sU1NzL5SZRjF4DJEo0JsTpmkScUH+YiCiImGBUFBxaRIaea9y/P7zU17P20tocTtGnm/fzPDyP5/SuM1VVu3uvvfaKGGMMiIiIiEIk2tkXQERERCSxg0JEREShww4KERERhQ47KERERBQ67KAQERFR6LCDQkRERKHDDgoRERGFDjsoREREFDrsoBAREVHosINC3d68efMQiURQVlaG999/3/r52LFjMXz48KKd/4knnkBDQ0PRjg8AuVwOv/3tb3Hssceib9++SCQS6NevHyZMmIDHHnsMuVyuqOcvlkgk4vnXs2dPjB49Gr/73e+265iXXnppwXbPPfccIpEInnvuOd/niUQiOPfcc9Wf33TTTfk27733nq9zEHVn7KDQTiOZTOK6667b4ed94okncOONNxbt+B0dHTjhhBMwadIk9OvXD3PmzMEzzzyDu+66C3V1dTj11FPx2GOPFe38xfbd734XL730EpYsWYK77roLTU1NmDhxIhYsWFDU8x500EF46aWXcNBBB/k+RlVVFR566CE0Nzd79htjMG/ePPTs2XN7L5Oo22IHhXYa//Zv/4YFCxZgxYoVnX0pgWhrawMATJ06FX/9618xb948LFiwAKeeeiq+8Y1v4JRTTsHdd9+NlStXor6+vpOv1r+amhoceuihOOywwzBx4kT87//+LwDgV7/6VVHP27NnTxx66KHb1Yn45je/CWMMHnjgAc/+Z555BmvWrMHpp5++vZcZGsYYtLe3d/ZlUDfCDgrtNKZNm4Y+ffrg6quvLtjWGIM777wTBxxwAMrLy9GrVy9897vfxbvvvmu1/ctf/oJjjjkG1dXVqKiowNChQzFz5kwAwLnnnos77rgDgDdcsXVI/4477sCRRx6Jfv36obKyEvvttx9uv/12pNNpzzm2hqGef/55jB49GhUVFTj//PPR2NiI//mf/8Fxxx2Hc845R72XwYMHY8SIEQA+H2258sorccABB6C6uhq9e/fGYYcdhkceecR63dZQyNy5c7H33nujvLwco0aNwt/+9jcYY/Czn/0M9fX16NGjB44++mi8/fbbBZ9rEAYNGoRdd90Vn3zyiWd/U1MTrrrqKtTX16OkpAQDBgzAlClT0Nraqh7nV7/6FYYMGYLS0lLsu+++VidCC/Gce+656NGjB95++22ccMIJ6NGjBwYOHIgrr7wSyWTSOkd1dTW+/e1v49e//rVn/69//WscfvjhGDJkiPWaRYsW4Zvf/CZ22203lJWV4Wtf+xouuugibNiwwdOuoaEBkUgEr732Gk455RT07NkT1dXVOPvss/Hpp5962u6xxx6YMGEC/vSnP2HEiBEoKyvDnnvuiZ///OfW+V2f49bPx1133YWhQ4eitLQU8+fPV581kR/xzr4Aoh2lqqoK1113HS6//HI888wzOProo7+07UUXXYR58+bhhz/8IW677TZs3LgRN910E0aPHo0VK1agpqYGAHDvvffi+9//PsaMGYO77roL/fr1w1tvvYU33ngDAHD99dejtbUVf/jDH/DSSy/lj9+/f38AwDvvvIOJEyfm/2ewYsUK3HLLLfjnP/9p/U/t448/xtlnn41p06ZhxowZiEajePbZZ5FOp/Gtb33L6Rkkk0ls3LgRV111FQYMGIBUKoWnnnoKp5xyCubOnWt1ch5//HG89tpruPXWWxGJRHD11VfjxBNPxKRJk/Duu+/il7/8JbZs2YKpU6fiO9/5DpYvX45IJOJ0LX5t2bIFGzduxKGHHprf19bWhjFjxuCDDz7Aj3/8Y4wYMQKrVq3CT37yE6xcuRJPPfWU57oeffRRPPvss7jppptQWVmJO++8E2eeeSbi8Ti++93vfuX50+k0Tj75ZFxwwQW48sor8fzzz+OnP/0pqqur8ZOf/MRqf8EFF+CYY47BP/7xDwwdOhSbN2/GwoULceedd+Kzzz6z2r/zzjs47LDDcOGFF6K6uhrvvfceZs2ahSOOOAIrV65EIpHwtP/2t7+N0047DRdffDFWrVqF66+/Hm+++Sb+/ve/e9ouX74cU6ZMQUNDA2pra3H//ffj8ssvRyqVwlVXXeXrOT788MN44YUX8JOf/AS1tbXo169fgXePaBsYom5u7ty5BoBZunSpSSaTZs899zSjRo0yuVzOGGPMmDFjzLBhw/LtX3rpJQPA/Od//qfnOOvWrTPl5eVm2rRpxhhjmpubTc+ePc0RRxyRP5bmkksuMS5ftWw2a9LptPnNb35jYrGY2bhxY/5nY8aMMQDM008/7XnNrbfeagCYv/zlL4UfhCKTyZh0Om0uuOACc+CBB3p+BsDU1taalpaW/L6HH37YADAHHHCA555nz55tAJjXX3/d13V8GQBm8uTJJp1Om1QqZd566y1z8sknm6qqKvPKK6/k282cOdNEo1GzdOlSz+v/8Ic/GADmiSee8ByzvLzcNDY25vdlMhmzzz77mK997Wv5fc8++6wBYJ599tn8vkmTJhkA5ve//73nPCeccILZe++9rWu/5JJLTC6XM/X19eaqq64yxhhzxx13mB49epjm5mbzs5/9zAAwa9asUe8/l8uZdDpt3n//fQPAPPLII/mf3XDDDQaAueKKKzyvuf/++w0Ac9999+X3DRo0yEQiEbN8+XJP23HjxpmePXua1tZWX8+xurra8zklChJDPLRTKSkpwc0334xXXnkFv//979U2jz/+OCKRCM4++2xkMpn8v9raWuy///75If8lS5agqakJkydP9j1q8Nprr+Hkk09Gnz59EIvFkEgkcM455yCbzeKtt97ytO3Vq9dXjvq4euihh3D44YejR48eiMfjSCQSuPfee/GPf/zDanvUUUehsrIyvz106FAAwPHHH++55637tSypL/ri88xkMjDGFLzeO++8E4lEAiUlJRgyZAj+/Oc/43e/+x1GjhyZb/P4449j+PDhOOCAAzzHP+6449RMnGOOOSY/CgYAsVgMp59+Ot5++2188MEHX3k9kUgEJ510kmffiBEjvvTet2by/Pa3v0Umk8G9996L0047DT169FDbr1+/HhdffDEGDhyYf38GDRoEAOp7dNZZZ3m2TzvtNMTjcTz77LOe/cOGDcP+++/v2Tdx4kQ0NTXh1VdfBbDtz/Hoo49Gr1691Psg2l7soNBO54wzzsBBBx2E6dOnW3M9AOCTTz6BMQY1NTVIJBKef3/729/ycwG2xvl32203X9exdu1afOMb38CHH36I//7v/8YLL7yApUuX5uesyAmHW8NCX7T77rsDANasWeN0zoULF+K0007DgAEDcN999+Gll17C0qVLcf7556Ojo8Nq37t3b892SUnJV+7XjrHVe++9Zz3PxYsXF7zm0047DUuXLsWSJUvwq1/9ClVVVTjjjDPwr3/9K9/mk08+weuvv24dv6qqCsYYa/5GbW2tdZ6t+7SwyxdVVFSgrKzMs6+0tPQr7/28887Dp59+ihkzZuDVV1/FBRdcoLbL5XIYP348Fi5ciGnTpuHpp5/Gyy+/jL/97W8A7M+Edi/xeBx9+vSx7sPlnrf1OWqfSaKgcA4K7XQikQhuu+02jBs3Dnfffbf18759+yISieCFF15AaWmp9fOt+3bddVcAKPgX95d5+OGH0draioULF+b/QgY+nyvwZdctHXXUUUgkEnj44Ydx8cUXFzznfffdh/r6ejz44IOe42kTPINWV1eHpUuXevbtvffeBV+36667YtSoUQCAww47DEOHDsWYMWNwxRVX4PHHHwfw+XtWXl5uzdvZqm/fvp7txsZGq83WfX369Cl8M9to4MCBOPbYY3HjjTdi7733xujRo9V2b7zxBlasWIF58+Zh0qRJ+f1fNQG5sbERAwYMyG9nMhl89tln1n243PO2PsdizzeinRs7KLRTOvbYYzFu3DjcdNNNGDhwoOdnEyZMwK233ooPP/wQp5122pceY/To0aiursZdd92FM84440t/WW/t0LS3t6O8vDy/f2v7L3aCjDG45557nO+jtrYWF154IebMmYPf/OY3aibPO++8g9bWVowYMQKRSAQlJSWea21sbFSzeIJWUlKS72hsj2984xs455xzMH/+fLz00ks47LDDMGHCBMyYMQN9+vRxSql++umn8cknn+TDPNlsFg8++CD22msv3yNihVx55ZUoLy/Hqaee+qVttM8E8NUp1ffff78n3PX73/8emUwGY8eO9bRbtWoVVqxY4QnzLFiwAFVVVfm1Xrb1ORIVEzsotNO67bbbMHLkSKxfvx7Dhg3L7z/88MPx7//+7zjvvPPwyiuv4Mgjj0RlZSU+/vhjvPjii9hvv/3wgx/8AD169MB//ud/4sILL8Sxxx6L73//+6ipqcHbb7+NFStW4Je//CUAYL/99suf7/jjj0csFsOIESMwbtw4lJSU4Mwzz8S0adPQ0dGBOXPmYNOmTdt0H7NmzcK7776Lc889F3/961/x7W9/GzU1NdiwYQMWLVqEuXPn4oEHHsCIESMwYcIELFy4EJMnT8Z3v/tdrFu3Dj/96U/Rv39/T8gk7H7605/iwQcfxPXXX4+nnnoKU6ZMwR//+EcceeSRuOKKKzBixAjkcjmsXbsWTz75JK688koccsgh+df37dsXRx99NK6//vp8Fs8///lPK9U4SOPHj8f48eO/ss0+++yDvfbaC9dccw2MMejduzcee+wxLFq06Etfs3DhQsTjcYwbNy6fxbP//vtbneu6ujqcfPLJaGhoQP/+/XHfffdh0aJFuO2221BRUQEA2/wciYqqM2foEu0IX8zikSZOnGgAeLJ4tvr1r39tDjnkEFNZWWnKy8vNXnvtZc455xxP9ogxxjzxxBNmzJgxprKy0lRUVJh9993X3HbbbfmfJ5NJc+GFF5pdd93VRCIRT9bGY489Zvbff39TVlZmBgwYYH70ox+ZP//5z1b2iMw0kjKZjJk/f745+uijTe/evU08Hje77rqrOf74482CBQtMNpvNt7311lvNHnvsYUpLS83QoUPNPffck88I+SL8XxbKF61Zs8YAMD/72c88+7dmvDz00ENfeo1+aNew1Y9+9CMDwCxevNgYY0xLS4u57rrrzN57721KSkpMdXW12W+//cwVV1zhydjZesw777zT7LXXXiaRSJh99tnH3H///eo9ySyeyspK61pcn5+kZfG8+eabZty4caaqqsr06tXLnHrqqWbt2rUGgLnhhhuscy5btsycdNJJpkePHqaqqsqceeaZ5pNPPvGcZ9CgQebEE080f/jDH8ywYcNMSUmJ2WOPPcysWbOsa9rW50hULBFjHKbRExFRqDQ0NODGG2/Ep59+as0NkfbYYw8MHz48P2eHqCtgFg8RERGFDjsoREREFDoM8RAREVHocASFiIiIQocdFCIiIgoddlCIiIgodLrkQm25XA4fffQRqqqquNQyERFRF2GMQXNzM+rq6hCNfvUYSZfsoHz00UfW8uRERETUNaxbt65gWYku2UGpqqoCAByBExBHopOvhoiIiFxkkMaLeCL///Gv0iU7KFvDOnEkEI+wg0JERNQl/N/CJi7TMzhJloiIiEKnS46gEFHna/vOoda+qmdXe7Y3H7e31ab6kdc927m2tmAvjIi6BY6gEBERUeiwg0JEREShwxAPETmRIZ2H/3uW1eajjPdvnrr4/1ptRh1zuWd7yIVLA7g6IupuOIJCREREocMOChEREYUOQzxEIZUbc5Bnu6NvidUmms55tuPtOatNfNErgVzPx4cXXreg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Ro4ciXg8jng8jsWLF+PnP/854vF4/lnyOW+f/v37Y9999/XsGzp0KNauXQuAn+eg/OhHP8I111yDM844A/vttx++973v4YorrsDMmTMB8DkXi8tzra2tRSqVwqZNm760TVfQpTooJSUlGDlyJBYtWuTZv2jRIowePbqTrqrrM8bg0ksvxcKFC/HMM8+gvr7e8/P6+nrU1tZ6nnsqlcLixYv53LfBMcccg5UrV2L58uX5f6NGjcJZZ52F5cuXY8899+RzDsDhhx9upcm/9dZb+Urp/DwHo62tDdGo938hsVgsn2bM51wcLs915MiRSCQSnjYff/wx3njjja717Dtteq5PW9OM7733XvPmm2+aKVOmmMrKSvPee+919qV1WT/4wQ9MdXW1ee6558zHH3+c/9fW1pZvc+utt5rq6mqzcOFCs3LlSnPmmWcyXTAAX8ziMYbPOQgvv/yyicfj5pZbbjH/+te/zP33328qKirMfffdl2/D57z9Jk2aZAYMGJBPM164cKHp27evmTZtWr4Nn7M/zc3N5rXXXjOvvfaaAWBmzZplXnvttfxyGi7P9eKLLza77babeeqpp8yrr75qjj76aKYZ7wh33HGHGTRokCkpKTEHHXRQPh2W/AGg/ps7d26+TS6XMzfccIOpra01paWl5sgjjzQrV67svIvuJmQHhc85GI899pgZPny4KS0tNfvss4+5++67PT/nc95+TU1N5vLLLze77767KSsrM3vuuaeZPn26SSaT+TZ8zv48++yz6u/kSZMmGWPcnmt7e7u59NJLTe/evU15ebmZMGGCWbt2bSfcjX8RY4zpnLEbIiIiIl2XmoNCREREOwd2UIiIiCh02EEhIiKi0GEHhYiIiEKHHRQiIiIKHXZQiIiIKHTYQSEiIqLQYQeFiIiIQocdFCIiIgoddlCIiIgodNhBISIiotD5/wHu3b0YL+7QZwAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "DigiCam: image_shifting\n", - "82.8 µs ± 491 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "DigiCam - RebinMapper:\n", + "Initialization time: \n", + "599 ms ± 1.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "33.1 µs ± 263 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABbkUlEQVR4nO3df5hVVb0/8Pf5PTMwDAIyAwoINl4RMBTIQi9gKuWPyrhWiiaC+jWVBLmlkppIyJheuZipoXnBMtJMUjMzqATxgRRJFLGwEsGLIKnIDAwz58de3z/mcnJY76XrcM7sGeT9ep6eJxfr7L3PPmdgzV6f9V4RY4yBiIiISEii7X0BIiIicmDR4ENERERCpcGHiIiIhEqDDxEREQmVBh8iIiISKg0+REREJFQafIiIiEioNPgQERGRUGnwISIiIqHS4EMOKAsWLEAkEsn/r6ysDDU1NTjxxBNRV1eHbdu2Wa+ZMWMGIpHIPp1v6dKliEQiWLp0qfVny5cvx1e/+lUccsghSCaTqKqqwsiRI3H33Xdj165d+3S+9jZmzBjr/h511FGYNWsW0un0Ph9z8ODBXn0jkQhmzJixz+eJRCIYMGAAWPDzM888k39fCxYs2KdziEgLDT7kgDR//nysXLkSS5YswZ133omhQ4fi+9//PgYOHIjf//73rfpedNFFWLly5T6d59hjj8XKlStx7LHHtmq/4YYbMGrUKGzevBnf+973sGTJEjz44IM46aSTMGPGDFx33XX7/N7a24ABA7By5UqsXLkSDz/8MGpra3H99ddj8uTJbX7ulStX4qKLLtrn11dWVmLDhg344x//aP3Z//zP/6BLly7FXJ6I7GFEDiDz5883AMyqVausP9u4caPp06ePqaysNFu3bm2za/jFL35hAJgLL7zQBEFg/Xl9fb353e9+12bnb0ujR482gwYNatWWyWRMbW2tSSaTZvfu3SU5ZlvYc55Pf/rTZvz48a3+rL6+3lRUVJiLL77YADDz589v8+sJw65du9r7EuQApScfIv+nb9++uO2229DQ0IB58+bl29m0S3NzM/7zP/8TNTU1qKiowKhRo7B69WocdthhuOCCC/L92LTLzJkzcdBBB+EHP/gBnc6prKzE2LFj8/995513YtSoUejZsyc6deqEIUOG4JZbbkEmk2n1uj3TEytXrsTIkSNRXl6Oww47DPPnzwcA/OY3v8Gxxx6LiooKDBkyBE899VQxt8tbPB7H0KFDkU6n8f777+fbjTG46667MHToUJSXl+Oggw7CWWedhddff50eZ/ny5fj0pz+N8vJyHHLIIbj++uuRy+Va9dl72mXPNNvTTz+NSy+9FD169ED37t0xbtw4vPXWW/Q8kyZNwqJFi1pd64MPPggAOPvss63+f//73zFx4kTU1taioqIChxxyCL7whS9g7dq1rfrt+S488MADmDZtGmpqalBeXo7Ro0fjxRdfbNX3ggsuQOfOnbFu3TqcdNJJ6NSpEw4++GBMnjwZjY2Nrfr63sc9349nnnkGI0eOREVFBSZNmkTvgUhb0+BD5ANOO+00xGIxPPPMMx/ab+LEiZg7dy4mTpyIxx57DP/xH/+BL3/5y63+wWK2bNmCV155BWPHjkVFRYXXNf3jH//A+PHj8dOf/hRPPPEELrzwQtx666245JJLrL5bt27FxIkTcdFFF+Gxxx7DkCFDMGnSJMycORPTp0/HVVddhUceeQSdO3fGmWee6fwHuNQ2bNiArl274uCDD863XXLJJZg6dSpOPvlkPProo7jrrruwbt06jBw5Em+//bb1vs4++2yce+65eOyxx3DWWWdh1qxZmDJlitf5L7roIiQSCSxcuBC33HILli5divPOO4/2PfvssxGLxfDzn/8833bffffhrLPOotMub731Frp3746bb74ZTz31FO68807E43Ecd9xxWL9+vdX/O9/5Dl5//XX8+Mc/xo9//GO89dZbGDNmjDVYyGQyOO2003DSSSfh0UcfxeTJkzFv3jx87Wtfa9WvkPu4ZcsWnHfeeRg/fjyefPJJXHbZZV73T6Tk2vvRi0iYPmzaZY/q6mozcODA/H/fcMMN5oM/KuvWrTMAzNVXX93qdT//+c8NADNhwoR829NPP20AmKefftoYY8yf/vQnA8Bcc801+3T9uVzOZDIZ85Of/MTEYjHz3nvv5f9s9OjRBoB54YUX8m3vvvuuicVipry83GzevDnfvmbNGgPA/OAHP9in63DZM3WRyWRMJpMxW7ZsMd/97ncNAPOjH/0o32/lypUGgLnttttavf7NN9805eXl5qqrrrLe12OPPdaq78UXX2yi0ajZuHFjvg2AueGGG/L/vefzvuyyy1q99pZbbjEAzJYtW6xrN8aYCRMmmOHDhxtj/vV5L1261Kxateojp12y2axJp9OmtrbWXHnllfn2Pd+FY489ttV02xtvvGESiYS56KKL8m0TJkwwAMztt9/e6tg33XSTAWCeffbZfb6Pf/jDH5zXLhIWPfkQ2YshKx0+aNmyZQCAr371q63azzrrLMTj8ZJfz4svvogvfvGL6N69O2KxGBKJBM4//3zkcjm89tprrfr26tULw4YNy/93t27d0LNnTwwdOhS9e/fOtw8cOBAAsHHjxg89dy6XQzabzf8vCIKPvN5169YhkUggkUigV69e+acuH3xS88QTTyASieC8885rdfyamhp88pOftFYHVVZW4otf/GKrtvHjxyMIgo98SgXAeu3RRx8NwP3+J02ahBdeeAFr167Ffffdh8MPPxyjRo2ifbPZLGbPno2jjjoKyWQS8XgcyWQSf/vb3/CXv/zF6j9+/PhW0239+vXDyJEj8fTTT1t9zz33XOu1APJ9C72PBx10ED772c/S9yESJg0+RD5g165dePfdd1v9Q723d999FwBQXV3dqj0ej6N79+4fevy+ffsCaJmG8LFp0yb8+7//OzZv3ozbb78dy5cvx6pVq3DnnXcCAHbv3t2qf7du3axjJJNJqz2ZTAIAmpqaPvT8hx9+eH4gkUgkMHPmzI+85sMPPxyrVq3C888/j4cffhif/OQnUVdXl6+bAIC3334bxhhUV1e3On4ikcCf/vQnvPPOO62Oufe9BoCamhoA//o8Pszen0sqlQJg3789Ro0ahdraWsybNw8//elPMWnSJOdy62nTpuH666/HmWeeiV//+td47rnnsGrVKnzyk5+kx99z3Xu37f0+2Pdp7/dc6H3s1asXfQ8iYSv9r2ki+7Hf/OY3yOVyGDNmjLPPnn8Q3n77bRxyyCH59mw2+5H/EPbq1QtDhgzB4sWL0djY+JF1H48++ih27dqFRYsWoV+/fvn2NWvWfPSbKYFf//rXaG5uzv/3hw3K9igrK8Pw4cMBACNGjMCJJ56IQYMGYerUqTjjjDPQuXNn9OjRA5FIBMuXL88PBD5o77a9axeAljoQwB5YlMrEiRNx3XXXIRKJYMKECc5+DzzwAM4//3zMnj27Vfs777yDrl27Wv33XPfebXu/jz3fpw+27/2eC72P+5pXI1JqevIh8n82bdqEb33rW6iqqqLFnHvsefz+0EMPtWr/5S9/iWw2+5Hnuf7667F9+3ZcccUVdIpn586dWLx4MYB//WPxwX9EjDG49957P/oNlcCQIUMwfPjw/P98Bh9721OM+fbbb+OOO+4AAJxxxhkwxmDz5s2tjr/nf0OGDGl1jIaGBjz++OOt2hYuXIhoNOqcDinWhAkT8IUvfAHf/va3Ww0y9xaJRKx/5H/zm99g8+bNtP/Pf/7zVp/7xo0bsWLFCjrg/dnPftbqvxcuXAgA+b6F3keRjkJPPuSA9Morr+Tnx7dt24bly5dj/vz5iMVi+NWvftVqVcbeBg0ahHPOOQe33XYbYrEYPvvZz2LdunW47bbbUFVVhWj0w8f0X/nKV3D99dfje9/7Hv7617/iwgsvxOGHH47GxkY899xz+RUNY8eOxSmnnIJkMolzzjkHV111FZqamnD33Xdj+/btpb4lber888/HnDlz8F//9V+4/PLLcfzxx+P//b//h4kTJ+KFF17AqFGj0KlTJ2zZsgXPPvsshgwZgksvvTT/+u7du+PSSy/Fpk2bcMQRR+DJJ5/Evffei0svvTQ/lVVqvXv3xqOPPvqR/c444wwsWLAARx55JI4++misXr0at956Kw499FDaf9u2bfjyl7+Miy++GDt27MANN9yAsrIyTJ8+vVW/ZDKJ2267DTt37sSIESOwYsUKzJo1C6eeeipOOOEEACj4Pop0FBp8yAFp4sSJAFr+gu/atSsGDhyIq6++GhdddNGHDjz2mD9/Pnr16oX77rsP//3f/42hQ4fiF7/4BT7/+c/TR+17mzlzJk4++WTccccduPbaa/HOO++gvLwcgwYNwrRp0/JPXo488kg88sgjuO666zBu3Dh0794d48ePx7Rp03DqqacWdQ/CFI1GcfPNN+P000/H3Llz8d3vfhfz5s3Dpz/9acybNw933XUXgiBA7969cfzxx+NTn/pUq9fX1NTgzjvvxLe+9S2sXbsW3bp1w3e+8x3ceOON7fSO/uX2229HIpFAXV0ddu7ciWOPPRaLFi1yptTOnj0bq1atwsSJE1FfX49PfepTePDBB3H44Ye36pdIJPDEE0/giiuuwKxZs1BeXo6LL74Yt956a6t+hdxHkY4iYj6qtF9EvKxYsQLHH388fvazn+VXJYjssXTpUpx44ol4+OGHcdZZZ31o3wsuuAC//OUvsXPnzpCuTiRcevIhsg+WLFmClStXYtiwYSgvL8dLL72Em2++GbW1tRg3blx7X56ISIemwYfIPujSpQsWL16MuXPnoqGhAT169MCpp56Kuro6lJWVtffliYh0aJp2ERERkVBpqa2IiIiESoMPERERCZUGHyIiIhKqDldwGgQB3nrrLVRWVioKWEREZD9hjEFDQwN69+79kWGLHW7w8dZbb6FPnz7tfRkiIiKyD958801nwu8eHW7wUVlZCQA4AachjkQ7X42IiIj4yCKDZ/Fk/t/xD9PhBh97plriSCAe0eBDRERkv/B/wR0+JRMqOBUREZFQdbgnHyLy8RatqLDagsZGu1/KTooNmpva5JpEJFx68iEiIiKh0uBDREREQqXBh4iIiIRKNR8i0mbivWqstlzfnlZbbFez/WISUhR7/U16ntzOnYVfnIi0Gz35EBERkVBp8CEiIiKh0uBDREREQqWaDxEpSKyqirbnduywGzvZmR6MSdlpxpFMzm5LpfgBdpGckGTSalNOiEjHoCcfIiIiEioNPkRERCRUGnyIiIhIqFTzISJO8e7drbbdwwfQvrEmu0YjTfpFM4HfyY2x2w6xM0IAIN6tKzkR2VlzwyarKUizqxSRtqQnHyIiIhIqDT5EREQkVJp2ETkAsdjz4N337I5kOsOQ2QwACJL27zLRtD3FYmL2ASL2jA0QsfsZ0gYASMbsl2ftc0fKy+22gEzvECab8eonIh9NTz5EREQkVBp8iIiISKg0+BAREZFQqeZD5GMuSuoc3h91mNUWa+5ntUVIOYSrRoKtjA0SpA6ELLU1Mb/fgyLsJAAM+asskrNrNCI1B1ttsaZmr3NnN77p1U9EPpqefIiIiEioNPgQERGRUGnwISIiIqFSzYfIfijerw//gxyJLu9k13wY8mtHLmVnaMSaWdEHPzXN/2C/3pB+LPsDAckDceV8wL5OmieSJe8nTv4aJPcxmipznJtcTc4OLlFOiMi/6MmHiIiIhEqDDxEREQmVBh8iIiISKtV8iOyH3v6co+aDlDTE0nZjhJSGxDJ2vyBh101EHaULJkEaSd8gTrI/QPZhydnnDhL2Hi4AECX5Hyz7A0HWPg95j8il7XOQjBAAQMY+JjL2G8/+8x3+epEDkJ58iIiISKg0+BAREZFQafAhIiIioVLNh0g7iQ84zGoLDupstUUa7foDltMB8FoO1pft2VJMTofr9ayr69qtfiynw7WvTNQ+aIRkbYDlibDsD7bXDDlcy4nIMcn1RJNJch67hsWkyefN3ovIfkxPPkRERCRUGnyIiIhIqDT4EBERkVCp5kOknbwzqpfVtrs72V+F5Wrw0gfEmu22IO5XO8H60ewPVjcBIMrqSNjfMCQWo5jsj5bz+NV8GNg1FpEsKZRJsP1e7FqMlr4k4ITkjkS7d7P7pe0P15C9ZnINDfzcIvspPfkQERGRUGnwISIiIqHS4ENERERCpZoPkX3EcjoAYOfgnlZbp3+8b7U1dXUEZuyF5nQ4Yh8M2fqE9fXO/oiSa4w5Ck58z0MOWUz2B8BrWAzJ0IgEpA6E1YuwOhCW/QEAOdKX5HwgYP3I+yH1JpE42zgHiJD3GJCcEBhybpF2pCcfIiIiEioNPkRERCRUmnYR2UdsqSwA1Pcn29AP6WG1sWmOKHliHpCplJhj2sW3r/fyW3Y8xxN8tgTXe/kt6ee7/BbgS3DpdAqZ+mDLb5GzLygSJ/0APu3CpmjYtAtZVktT7rvYsfuuc7PfKIPmJv56kXaiJx8iIiISKg0+REREJFQafIiIiEioVPMhB7R430Ottn+e1Mdq6/q33VbbzkP9lsoC/jHjdKksiyN3lB9E2XLXIpbfMnT5LcCX4NLzkHoTUgDDrsewdbrgNSzRNDkmqwMx5CLZkl7jeN+sFoR8Zt7Lb8l7jET4h2PIfYuwpbpZsuzYd5muSBvQkw8REREJlQYfIiIiEioNPkRERCRUqvmQA1rDsYdYbe8NsfttH1hutbkizqP2Lul0mE9jxn3rMxw1H6zGIiA/5Sz7g0WX09hyx68sEVK+wLM/WBQ6uxnkJCw4BOD1GKS2xJAPIkJuGo1mZ5HrgKPmg9WReNZ8kHOD3LOWdhZ/b78+Wm5/f03OvkZWB8L6iRRLTz5EREQkVBp8iIiISKgKGnxks1lcd9116N+/P8rLyzFgwADMnDkTwQceHRpjMGPGDPTu3Rvl5eUYM2YM1q1bV/ILFxERkf1TQTUf3//+9/GjH/0I999/PwYNGoQXXngBEydORFVVFaZMmQIAuOWWWzBnzhwsWLAARxxxBGbNmoVTTjkF69evR2VlZZu8CTlwxavt7esBYOOkT1htB79oF2NsG0bm16Nk/w9aD8GviWV6REgdCK3boHuc2G20rgQ8/8M3+4Nh/Vybs0cCUn8QJ/Ud5AD0/pL9Vdh+LwAQJbUTNPsjQ64nQeo7MqQOhPRz9Q0j+6Ol2X49y/6gr2d5IvEEPY8v1YeIr4KefKxcuRJf+tKXcPrpp+Owww7DWWedhbFjx+KFF14A0PLUY+7cubj22msxbtw4DB48GPfffz8aGxuxcOHCNnkDIiIisn8paPBxwgkn4A9/+ANee+01AMBLL72EZ599FqeddhoAYMOGDdi6dSvGjh2bf00qlcLo0aOxYsUKeszm5mbU19e3+p+IiIh8fBU07XL11Vdjx44dOPLIIxGLxZDL5XDTTTfhnHPOAQBs3boVAFBdXd3qddXV1di4cSM9Zl1dHW688cZ9uXYRERHZDxU0+HjooYfwwAMPYOHChRg0aBDWrFmDqVOnonfv3pgwYUK+X2SvuURjjNW2x/Tp0zFt2rT8f9fX16NPH3tvDREm278Xbd91uF0U0diPfAdZ1kGWzIWzfUZcmRMg+RLs68+yP9jh2PNJxzYjtJaDZX+QfjFWi8H2YSG1GMUe07A8EZr94bjn7B6xm07+HjKk7oJmf7D6DEdf/0yPIrI/AH4/2Psm4SwRlrdCThGBow6EFO+o5kN8FTT4+Pa3v41rrrkGZ599NgBgyJAh2LhxI+rq6jBhwgTU1NQAaHkC0qvXv/5R2LZtm/U0ZI9UKoVUKrWv1y8iIiL7mYJqPhobGxHda/Qfi8XyS2379++PmpoaLFmyJP/n6XQay5Ytw8iRI0twuSIiIrK/K+jJxxe+8AXcdNNN6Nu3LwYNGoQXX3wRc+bMwaRJkwC0TLdMnToVs2fPRm1tLWprazF79mxUVFRg/PjxbfIGREREZP9S0ODjjjvuwPXXX4/LLrsM27ZtQ+/evXHJJZfgu9/9br7PVVddhd27d+Oyyy7D9u3bcdxxx2Hx4sXK+BCnWLeDrLa/f3ug1VZJapbrB/AagAgJwqD7ppBsChOzj8miEwzJkQCACMuSIH1Z9kdAptdZpgfL/gCAKMmSoDkhrB/LCGHv2zMjBOD1HUVlfzhKPgJS00CzPxKkX9ov04PmeRTS11W3YR2QvEm2VwzAszrY/iykpoZeD6s3YZ8hQGuJWE6Idx0I+xLIx1bEGFcFV/uor69HVVUVxuBLiEeKC7yR/UNbDD5yPcjgI8cGAKzgz26KkiJUsFAt8MFChJybBoWRt8OPR09NBxWsbzH9olnHgI/9e8uunfxDGE2TNno9jnOT9mja/iD5uUnRcY681jH4YBvO0b7kmKzgGVly012DD9aXFZJmfPuxNDzHPxHk2mnhsAYfB4ysyWApHsOOHTvQpUuXD+2rvV1EREQkVAVNu4i0iV4HW02RAbustvrD7KcHAXtyAQCB3xMNPq/gt1TWsXrce1ktPSY/pP1a1xN89guu51Jd/36O6Sb2Wy9dAstezJbAkuO5bhA7D7vnnnfYkCWwzmkXtgSXZO9H2H1jh/SMQgfAp07Y0xB6bjK9SN6LYVMxLZ1JE5s/87znWqV7QNGTDxEREQmVBh8iIiISKg0+REREJFSq+ZA284+5n7baEu/b493mHvZkb1mskRyRzEeTZbEt2JIV8nryExBhNR+ey29bjslW1ZDt4RN2v1jaPp7v8lugyGW17Hie/QC+WIEv3yW1Owm2CoUcz7G8mX0NcmRZbayZLL9N2hdJl98m+V+XkTS5wXHyXWMrjIpZfutC4+LJIYtZfgvwaHi28oct/WUrYOgeBloB83GlJx8iIiISKg0+REREJFQafIiIiEioVPMhbmQONlpeZvdjyY0Aute+a7UFZPY5niaRzGwOP8dyBfhcOEsz5UUNpI0Vc7AcCkd8AYtk8M0JKSb7A4D3rxM0f4NMw/v2a+lLal1YXYHn+6bHc9Q+eOew+GZ/FPJ5s+uhdRee0eW+2R8uLHfENzbdM/sDcOR/FFG3wXJQDMvrKeCY0nHpyYeIiIiESoMPERERCZUGHyIiIhIq1XyI099+OMJqS1Xb+RvN9Sn6+r7Jd6y23aS+I5WwAxCaM/ZXMxajm7PQc/P8D/J6klVAtx5h2R9ka3gAiLCNQUmmR4Ts5Oqd/ZGkp+bZGJ45IcVkf7j60uwPlkXimf1Btkz5v2OS+1ZU9gepd2p27O1C8j9o9keC5F2wXX99sz8A//wP3+wP/zP7v55FepC3yLI/6H44cNSCqA5kv6InHyIiIhIqDT5EREQkVBp8iIiISKhU83EAivc82GrLvfe+1XbwYe9ZbTWdG6y2nV15AYJxBSPsJeLaJGUf+wE8/4Nmf/jGJ9BzO+aj2WnIy4vK/ihgcp5mdTCe98J5PJoTsu/ZH5Qr74LckKKyPwL/XA1DDkrrITz7eWd/AP75Hyyrw7depJCMkfakvWH2K3ryISIiIqHS4ENERERCpcGHiIiIhEo1Hx9zG2eOtNpGnPKq1fbiliOstmO6bbbadmbsTI/OCRIuAaAhbfdlmR7prP01LC77A2Dj6jCyPwCe/1FU9keSZFg001PT/I8wsj8AR34H60fvm/2+WfZHLsnrFGJplhNC+rHsD5LpEUuT7I8Uz99g+R/7RfYH2ZslErev22TJdQMA6RshfUud/QG49oFhtUSqA+mo9ORDREREQqXBh4iIiIRKgw8REREJlWo+9kPRY46y2szL62nfXK29F0u3hN02ovebVluWBDpEC8naIH3jpMaCVYyw17Jzmyifvw1ITkM42R/8AEVlf3j2c14S6+uZJ0J/PXFkTnjGuhSVJ+La24XetyL68XO4brrn5+3bj53DsccJ/SyKyf5w1FiEgtVnuH7GVLex39OTDxEREQmVBh8iIiISKk27dHBv3mAvlb3kq7+12p7YOpi+fnyPF6y2+myZ1dYpbq/dbMjY/Sri9iQJW34L8CW4OzP2WtCyhL22sCljr5NMxMkj4SxfghiQKRa6rJZt5Z5j/dgjYXpqeky2/BZsBWMRy2+BApbVsrku9rcBuUa2/BZwLKv1XKrLlt9GySJNV+x5kCDLm8nHGJD76738tskxxUf6suW3AVl+Gy1i+S0ARBLkQ/OddmHfP8/lt4BjCW5Ry2/JuR3TTSaw73mETMFq+W3HpScfIiIiEioNPkRERCRUGnyIiIhIqFTz0cEl7B3sqc/2fI22N5EJf7ZkNUYimemyWtLkWn7LY7TJ6/kMsIUtv3Uek8z/BqwAwXdtaiG7irN6E991qHRreLYVu/8yX+9uRSyBBRzT5p7T6967thfwORhSLxDJsfvreRrn+6brallPfgDretgycWdnr2PyA5AaqgKW30bIMQ3NTWfvh7yW1Vo533g7LgmWktCTDxEREQmVBh8iIiISKg0+REREJFSq+ejgauassNpurx1rtU0ZtZi+Pkcm6DuT/djrjZ3p0SXeZLW9nym3j0cyQgCgnuaE2IEFjVm7LqWo7A+A5n/4Zn/wLAnSz1X8wH6qyDENy6YgW8Mbso18pNmRd2HHqPhnf7AsCc/sDwAwnru+sx3facoCy0tx1P3EWF4LuRcR8lVl98I3+wPg+R80+yNNvkMk0yPC6hkcN5fVWERynr9TkqwMWqtCsj8AADHfvAxy7ST7g2WWmAz/skViJAuFlZso+6PD0pMPERERCZUGHyIiIhIqDT5EREQkVKr56OBinTtbbRXVO/1fTza4yJD54wSZG20mc8fxqD2xmnVs9sHyP3zbDCsMINj7A4AMmWf2zf6IkNoQnuXgcYH5k7MiAs8t1guIDfGNLfGMnCgsV6PE29rT7XQc0/C0Lyud8Mw38c7+AGBi5E88Yyh4hotfP+c1sVoMVrcRJT+3AamxYNkfAM3/KCb7gxYDOfZ2AavbYHzzTSR0evIhIiIiodLgQ0REREKlwYeIiIiESjUfHdxr3xtitd0w6JdWW0POztQAgAoyvGQ1H+UkDCJDcgA6x+x+7wd29gcAVMTtvjszKdLPDpjYmbFDGnyzPwBH/kcR2R+sCCDg6RQ8/6OI7A9kyLw3yf4AXDkW9utLnv0B0PwPVxSK1c9zCp9nsABBnGShkI8nSNqvjzXZr82Rfo44G0dOiH1M3+yPIGnf4GjaP1yFZn94h7C0we+jxWR/kDyPlkP69TWsLsWzn3NfGeV/lISefIiIiEioNPgQERGRUGnwISIiIqFSzUcH1/VVe+654XN2fUeChRoAyBj7I2Z92R4wxWR/ADz/g2V6ML7ZH67jsfyPLJnD9c3+8A/QKKCvZ/ZHIXg2BtvLguUskCaWd+G6RHZIz6yOYrI/nMf0zf4gWRLsnjnPTa6U5nL43h/69eE3nWWM0L8KnB/a3v3Ym3TUOHges+TZHwDP//DN/iAi5Hh0DxgpGT35EBERkVBp8CEiIiKh0uBDREREQqWajw6u+70rrLb/+uRpVtuNpyyir2eZHiz7g9V8sDAI3+wPgOd/lDr7Ixnn+Qcs/yMes+euDcvv8Mz+cGVOMHSvmiKyPyJpRw0AOWbEN9ODfYzkeM5MDhbJwOpISpz9AfDPoqjsD5aX4vjbMpYmmR4kW4Vlf5i4fTMiZB8W1g8AIhlyk1iOBcv+IPVbVCHZH6xuI06+GCwrI0pucJoFzTiyOorI/mC1LhFSD9ZyHnI/lP1RMD35EBERkVBp8CEiIiKh0rRLBxevPdxq+7dB/+v9erqslow5E1H7kWUmZz+y9F1+C/AluGz5bZwcM0sebbJ+xrE0lS3BLWr5LZm+ipJpHADIFbNU13P5Ld0aHkCEzHP4LiWlyxd9t6UH6K8ydPWk5/JS36Wyzr5s+S37aHxj4R3TQPTcJV5+67rpEXJM7+W3MTZ9wJZlu35HJTeYxaGziHO2/JZNXbiW87Lr9Fx+W/SyWk2xlISefIiIiEioNPgQERGRUGnwISIiIqFSzUcH95cre1htt/d5wGrbFdjLVQHQ4SWr5agg6yybyXrMcs/ltwBfgsuW35bF7OV0jYYsq6U1JPzcbAluOmt/3b2X39IaCXpqx1JdW6mX3wJ8CS5dqttM3iOZrqerDR1/a0TIqki6kzur72DnYSUJBfy6RJffkpOzegi6VDbH73kQJ31DWH7r7FvM8lt2g11rnotZM82+QxnPGhIAyHouq2VFS/TvDEcxkbQZPfkQERGRUGnwISIiIqHS4ENERERCpZqPDu7QxXbbSyf0tdoGlm+mr8+R+gWa/UHmb1NRexKf1YGkSEYIAOzO2XUbqZjdtzlnfw1ZTgfL+WBtgDv/Y2+lzv4AeP5HQO6vYeEWLPchRuoUso54dd+8C5pNse/ZH65jskPS7A/PaBTHLffPCSkm+4PkZwAASC2Id/YHzaYg53b9mkh+vr2zP1gtUZTUkLCbBjjyPwrI6rC6kZ8Rx8+3b56IL5794brpqg8pBT35EBERkVBp8CEiIiKhKnjwsXnzZpx33nno3r07KioqMHToUKxevTr/58YYzJgxA71790Z5eTnGjBmDdevWlfSiRUREZP9VUM3H9u3bcfzxx+PEE0/Eb3/7W/Ts2RP/+Mc/0LVr13yfW265BXPmzMGCBQtwxBFHYNasWTjllFOwfv16VFZWlvr6P/bKH33OavufsaOsttvH2tkfAJCJ2B9xGanlKCb7o4LkebT0tc+dZHvIkIAJ3+yPMlJDAgABmQuPx+gGF1ZLlOR0xMlcduCaEybT0QE5dTROjpm2Xxwh/UA+LwAwZBt5ZNg253ZThHyMNPujgG0wfGssGLqdieOW05oIupN7abM/AJ7/4Z39QWoxYiRThuV5ADz/g2Z/sB8T9kEatt28o2Yj7vlFZx8aq89gx2PZHwDfl4bci2KyPyIF1JuYIupNDlQFDT6+//3vo0+fPpg/f36+7bDDDsv/f2MM5s6di2uvvRbjxo0DANx///2orq7GwoULcckll5TmqkVERGS/VdC0y+OPP47hw4fjK1/5Cnr27IljjjkG9957b/7PN2zYgK1bt2Ls2LH5tlQqhdGjR2PFihX0mM3Nzaivr2/1PxEREfn4Kmjw8frrr+Puu+9GbW0tfve73+Eb3/gGrrjiCvzkJz8BAGzduhUAUF1d3ep11dXV+T/bW11dHaqqqvL/69Onz768DxEREdlPFDTtEgQBhg8fjtmzZwMAjjnmGKxbtw533303zj///Hy/vdeZG2Po2nMAmD59OqZNm5b/7/r6eg1APsD8+zFW21c/Y9eBRNn6egBlZCI/Z+x9YFgdCNsvhtWBNAZ2LQbgyP8gl5kge7YEJKcjTgoIAsf3iuWEsPPkyFwv65cmhQoxkucBAEGW1JGw7I8sGfuTTA+Qe8GyPwBH/ge7ReT+0CwI36AO8BoN7+wPMmXum/3hOo93podnngitm4Aj/4PVgbD6GZb94ZlR4zw3+yDYZ+ab/cFqMQBEMuSGxMk/KWQfFt9+rGYDcNRYkIwSVgdC70UB272ovqM0Cnry0atXLxx11FGt2gYOHIhNmzYBAGpqagDAesqxbds262nIHqlUCl26dGn1PxEREfn4Kmjwcfzxx2P9+vWt2l577TX069cPANC/f3/U1NRgyZIl+T9Pp9NYtmwZRo4cWYLLFRERkf1dQdMuV155JUaOHInZs2fjq1/9Kp5//nncc889uOeeewC0TLdMnToVs2fPRm1tLWprazF79mxUVFRg/PjxbfIGREREZP9S0OBjxIgR+NWvfoXp06dj5syZ6N+/P+bOnYtzzz033+eqq67C7t27cdlll2H79u047rjjsHjxYmV87KO/n2fnalxf9ZLVtotkYABAQB5uxcgkdwp2zUcT2D4uJH+jgJoPlv1RznJHyAR5kmR6ZB2bXiRZHQmZC4+RtfyG9TOkRsLwmo8c2/PCN/uD1YaQe0GzPwCa/+Gd/cGm18lpWO0C4IiN8Kz5cO5dsnc/VzkEy/Twi3UBWGkSy0FxTPWz/A9WDsTqSAzJ9PDN/mg5pl/NB6vloDedhrg4vmvOvU/2Pjn7rpHX0iwSxzlY3YXvHjLkmKyOg302UjoFbyx3xhln4IwzznD+eSQSwYwZMzBjxoxirktEREQ+prS3i4iIiISq4CcfEq4j72yw2n56jF28O77HSvr6HHm0ypbf7iLLb9my2oagzKsfwKdjfKdi+DJdux9bfguAPl5nUzQBeTbPlt/GyfRMjj3KBl+Cy5bfxsjUSS7j+SjcsRzTkGNGyJJePs1BYsbZlu9kCqrlmKyv3USXwLJpDns2zhnNzpbB+h6TRaFHsywynZ/b86sKMrvIlwiTqZTA8V1jH2OELs1mEefkw2HR7Gn+M2bI9EUkR/qy5bJFLL8FCohNZzfYc/ltJME/cLrU1jEFK2568iEiIiKh0uBDREREQqXBh4iIiIRKNR8dXO7lv1htv3/xU1bb10/hG/fFXDURVj82j2/Pt8bIsju2/BYofc0H68eW3wJANmufm9WHZMmyWN/lt66Vfez17Dx8wp50YzUkZEktALDTUCyenUVrey6/BUDfD63vKGb5rStenX0W5PW0n+fyW9/lwM6+5Avju/wWrJ4GvNSA196Qeh7faHbXclf2RWDx/s7X78V3+a3rmKwWgx2T1Hz4Lr8FgCipBQnSvO5N3PTkQ0REREKlwYeIiIiESoMPERERCZVqPjq47ZM+Y7XdcdICqy3qmIgvI8EGLNOj1NkfANA51mS17czZfctj9jXuzrFod89ABfB4dcY3+4PVfCRj/BzNZCI/Gbf7povI/nDFqxuW6VHi7A+2Fburr3HkU1jX4xlH7iph8s3VCOyvFWJkup5FpkczvOCEnpvUPgQk5p71c2WZMKw+xJDcElbLQbM/WIaLo9glQu6HSZKtANLk5yRBPogM+cBY9gdA8z8ipK9hOSEsd8RR38GovqM09ORDREREQqXBh4iIiIRKgw8REREJlWo+Orh/ftqeizwk/r7V1sQ2sgAQkPnaUmd/uCRce5B79NsNe044Tuo4WPaHq2+a7AXvm/0RIfciSu8Pz/9gr2fVEBG2jws7Ht36nMdgRFimB92+3C/7g164A927pJjsD8e5PXdTp9fumxHi4pv/YVitDNlDht4zx48Sy/Rg2R8RljFCPm/Wz3lzC+m7r/1YXQoAkP2XaH4H+Vk2JIeHbQsDlrciJaMnHyIiIhIqDT5EREQkVBp8iIiISKhU89HBHXX9G1bbjUd+0Wq7oe/j9PU5MoHciWV6wN4LpVO02WqrJzkdXWON9NwNpG8x2R9sXrachTQA2J2z308x2R+sSIJlfwBAWdzuuztj/6glPLM/4gm7Xzbt2NuFZHoUlf3B6kVc6P0oIvuD1Xw4/sYicTY008M3+4P349fN8j949gc5pmdGSLHZH0HC/myjJNPDt18LlukRQvYHwLM6aD9S10JObcjxIvZfIf/3epIDlHVcpzjpyYeIiIiESoMPERERCZUGHyIiIhIq1Xx0cNm3t1ltf3l9mN2xL389y/Rg2R8M2y+GZn+wYAGHGE2isLHsj+YIqZtwZJbsJm1R0jdKcgBc+R17Y9kd7r5FvL6AXA2W/0GzP3x/7Sjg3PRXGTa/7pv9QYNQ+KlZXxolUcj72fscbZH9UWQ/Wr9Asj8iLLOC3iDffgX0LXX2BwCQ90izOnyP6Xs8ABFSH6Kaj8LpyYeIiIiESoMPERERCZUGHyIiIhIq1Xx0cG9dNdJq+/WJt1ltgStzImKHC4SR/QEAlSTTwzf7ozGXstpSLCjBgeV/REnNCKt/KYvZ5+H3l18Py//wzf5IJex+zaRfPMknpLMZkleQaMfsD7afSYmzPwCe1cEiYGimh2c/R6QMckn72mMk74LnidivDRJkHyHSD/DP/2BRHQH53dM3+8PVN5TsD4Dnf5Q6+8ORbxI0239fSeH05ENERERCpcGHiIiIhErTLh3crj72o/AkWQKbdqydzJEpALb81nMFrP/yW8B7CS5bVuvbr9nxFfZdLhsnkessXj3Oliw7lvGxJbS8jb2a9GPdyJJaF3Zu7+W37D4WsiTSsytdfstWdbt2d2fHZKs+/S6Hdizs3Ozk7F6S17Jln44fUHrf2BSC773wXX7r6MuXPLfB8lvW7rnUu6Dvr7QZPfkQERGRUGnwISIiIqHS4ENERERCpZqPDu6IqaustklHfN1qWzDwp/T1bIkoW367y5BltZ7LbyujLMwcaAjK7b6ey299+1WwdZIOruXIe8sG9pI9tlQ2m+Fj9/K4vQywMWPfN9/lt0nP5bcAEE+QGha2/DZGlt+S30XYFvbOsG3fMhRaGEDqUlg/x2pKVk7Bl7aSfmTrdN/lt85j+i6rjZNltWQFt+vckSyLUmcd7SZDItfZslq+pNbVl2w3n/Bcfpuyv2yRZsfyerYEt9TLb1P2cn8AiObs9xjs5n8HipuefIiIiEioNPgQERGRUGnwISIiIqFSzUcHZ8j8YkMTn4tkaN4FaSom+6MQLCeE9qMT16yf/0X69qXn9sz+AIA0ybwudfaHk298AskJIdP1hUUi+PZlv/KwW15APIR332LaCuGbb1JkP5rKwbI/6Fea1YsUkOtC71sR2R9tgWWmFJv9oZyQktCTDxEREQmVBh8iIiISKg0+REREJFSq+ejg/vHfn7Halh17q9WWcZQFlJHJ3kZSk9ApYq+Rrzd2bUllhORvwM7fAHj+RxjZH4B//odv9kdAJtJZTgcABCR7wTf7ozxB+qXtTIMUyf4AeP5HPEmyP9Klzf4AHPUHvuUqbG6eZGDQ7A+A/k1GvtI0LyPW7NfP9ZUqJifEO/vDUUTCtn0PaKgHOTc9nt0WOPaNijaTvAvP7I8gaX9g0Wb7A2PZH4Aj/6PE2R8mxz/woLHR6/Xy4fTkQ0REREKlwYeIiIiESoMPERERCZVqPjq4+M7SrylneRes9oFlf+RYiECx10NCHtg1+maEuF7PJMh7JCUAiEdJ3UTOMRfumcvBcj5YKEIh2R+0q+e92F+zP1yn8dxChvfzPQngH8NS4uwPwJHVwS6oiHM7X8q+CJ7ZH/SmsX6uoiGa3+H5Qfhmf7B+UjJ68iEiIiKh0uBDREREQqXBh4iIiIRKNR8dXL/rV1htpwy81Gr743E/oq9vInOmLPujiYxDO8FeI78L9lr6Stj5GwDP/+gUtSsqdgV2ngjr55v94erLsj8aYYc0pAzP0NhbNuB5ASz/I5ux72+psz8AIEnyP2j2R4LUsGRI9kecZH9k+e8sLP+jqOyPmGetABz5H77ZH0XkdBTSN+qZO+Kb/QEAUfJVZZ8Dy/6gWxOR63F9XkGSZHqw7I+k/b2KkpwO3+wPADAJ8l1l+9IUkf0RSfE9tGKVlVZbrqGB9hU3PfkQERGRUGnwISIiIqHS4ENERERCpZqPDo7NL/5bz23er2ejS7akvS3ESFBDjrTxfvYcdSHZHyyjhL0+xo7pmYvBsj8Anv8RJ9eTJnvs+GZ/xEgmBwDkyO3wzsCgGQ0k+8OVtVFMpge7lYXkXXhGTrCYmojvuV3X43udhRxzL22R/UHvRZHZKt5ZHcVkf7iwXA7faCD6Wsd+Ormw/gb9eNOTDxEREQmVBh8iIiISKk27dHB//cG/WW2rB9xhtWUcMwVJ8tgy8Fx+20imBTqRtYr1hi9Jq4jYaxBzZLxbQZbV5oJy+9yey3RbjknOTZ4zB2ztJVlBy+LnXdgS3AqyrDbI2sf0XX6bIst5Ab4EN5W0j9lE+sXinstvo/xZtiH3ly6/ZctD/XY5d0dek6WodPktwaYa2BLYGMvdd/T1Xn7rvUyXvxe2BLeY5bds5sP1GyqbTSlq+e1uv+W3Lce0v9N0+S1Z0uu9/LaZfDgAgsZG2i6F0ZMPERERCZUGHyIiIhIqDT5EREQkVKr56OC6vGTP9zecZM+hdorycSSr7/Bd6ci2m8+Qef0kXavIl5KyZbVs6tl3+a1LlFy77/JbNu/N7kXWsSSXLcFN50h0tOde7DFWYxHwz5stwc2RJYNFLb91LPM17KP1XV7K3g4rLXH9uuS5RLSY5besH+CIKfd9P773x/HVZ9fE3rfv8tuCljd7LtXlW9iTc7M4fdYP8F+C67v8NkLeTNKRp8/6si+/fCg9+RAREZFQafAhIiIiodLgQ0REREKlmo8OrnruCqvtsyO+abWtGn0XfT2rK/DN/mDzvzlyvDLwzAlWo1EBe+18gymz+xWR/QHw/I8U29OcoJkeJIeC1b8AQDnp65v9kc3Yx2TZHzvTPN+E5X/szthz18mE3S+dIX8dkOyPXJaHckRi9ry3Ib/f0K8aK70p5Fcjmunhl/1BP27P7A+A538E5FbSTA/Wj3xNWb+WvuT9xNj7tl/rm/1B6zgA+q8HK30IEiT7I/DM/mA5HeD5H97ZHxlS0BMn32nDP/B4t4Ostuy779K+4qYnHyIiIhIqDT5EREQkVEUNPurq6hCJRDB16tR8mzEGM2bMQO/evVFeXo4xY8Zg3bp1xV6niIiIfEzsc83HqlWrcM899+Doo49u1X7LLbdgzpw5WLBgAY444gjMmjULp5xyCtavX49Ksj28fLjYYHtvlwuG/Mn/9Z71HXwUSragJ210jwhHX5onwlrJIRNkU5CcY/8OlhOSIOENzbDndRMkp6M5R/o5JsOzJN8kSTbcaCLHTLKMEFIvQrM/AAQ5v75sH5YIKbxgkQa0QAOO3dRZP5YTwl7sm5UB8OwRkm9STKaHI86G7ktD+3rGQ9BzuyJhaKYHafPN/iAnIl8/APyW+2Z/mBj5/mXJ99SRXxQhXwTWNxJ4hs/45oZAe7uUyj49+di5cyfOPfdc3HvvvTjooH8V3xhjMHfuXFx77bUYN24cBg8ejPvvvx+NjY1YuHBhyS5aRERE9l/7NPi4/PLLcfrpp+Pkk09u1b5hwwZs3boVY8eOzbelUimMHj0aK1bYqzYAoLm5GfX19a3+JyIiIh9fBU+7PPjgg/jzn/+MVatWWX+2detWAEB1dXWr9urqamzcuJEer66uDjfeeGOhlyEiIiL7qYIGH2+++SamTJmCxYsXo6zMzmbYI7LX/JkxxmrbY/r06Zg2bVr+v+vr69GnT59CLutj7bVrKqy2R7q/ZLVlHLUPjG/2RxOpDSkjE7iuPVdY/gfrWwZ7fX6GTKSXRex+AS1KAAISlpAj+6HQ7A8yTZwi52bZH4Aj/4P0TZPwhrKYfc+y5Hgs+wPg7zEZI1kdpF+CZHqw7I8YC8EAkCOfWYTVm7DsD5JNQZM7nFtoeG7kEifnyZG6KPI3o+Nt86wOlnfhmenB8jdYTofzmFm/7A+6xQl9j/znm2d6eB6TvUdaEOao+Wgm3yuW6ZEmmSdxUhvCbnATzxAKdu+m7VKYggYfq1evxrZt2zBs2LB8Wy6XwzPPPIMf/vCHWL9+PYCWJyC9evXK99m2bZv1NGSPVCqFVIoHJomIiMjHT0E1HyeddBLWrl2LNWvW5P83fPhwnHvuuVizZg0GDBiAmpoaLFmyJP+adDqNZcuWYeTIkSW/eBEREdn/FPTko7KyEoMHD27V1qlTJ3Tv3j3fPnXqVMyePRu1tbWora3F7NmzUVFRgfHjx5fuqkVERGS/VfK9Xa666irs3r0bl112GbZv347jjjsOixcvVsbHPuq1KGm1PfuZTlbbZ1I76evZXiy+2R8JMtWbIVOjSUf4QhMpdGDZH2xSOMEmgFkUhCNrg2WHsOwPVkeSidjX7Zv9AQApkumRJfkbvtkfcfIe0yxcwnGdGc+cEJb9EfWs2QBAwyhYSY4JfPuRHApHnQ39CpI6B9B6CLubb/YH4KhpYH1p6AnpxvIzXCVd3pke5NTkPQYx+8WxHC848c70iPv9ReKb/dFybtKXZX+Q9xNhN4jVJHay6+0AIJqy6x2D5ibaV9yKHnwsXbq01X9HIhHMmDEDM2bMKPbQIiIi8jGkvV1EREQkVCWfdpHSqlj0nNV26bjzrLa1J86jr6fbwxNs+S17Jpwh/RKO7Oc06cuW3+4iW1fTZbXkvbB+LX3JUlLynDlHxt+sH1vSG3flbZMhfZQ8uk6RZbW+y29Z5DoAJMiyWjbt4rv8Nk7WlwakH8CX4PLlt+SRO51TY/MP9NSOKZEilt+yaHbHlA+bamAfT1HLb13nZveDTcWQnx22/JZxnZveTDqVQ6Z+2Qp3Ms/r+hFjS3Dp8tsY+f6Rn0W+/Jb/8xjt1tVqC7ZspX3FTU8+REREJFQafIiIiEioNPgQERGRUKnmo4NLn/4pq+2/jvPfITjqiEbeW0D3Q9/35bcAX4KbJrUTCec+6a1FyfXEHEtt2RLcMjKZniFLYH2X37LjAUAjiesuj6Wttl05O9nXd/ktqwNp6Wv/SBez/Jb9fsKW3wKOJbhs+S2pIShm+a3rmOxrZVh9R8azHsJRP0WXnLJ+ztqJjz5eIbUuvvUmvktl2fJbgC/BpecmX1XDajYyrGbD8ftxzq9vUctvyTkAIHjvfX5NUhA9+RAREZFQafAhIiIiodLgQ0REREKlmo8O7s3xdl3B6RU7rLbAGXlNchpYLQd5fY4s2k94Zn8APP+D7HCNJDlPhlyPb/YHACRZVgeZ5GZ1G3S7ec/sDwCIkvedIJPu8YCEGJA5c5b9kSR1HACv+UjF7Un3TJpFyJOcDnIvYix/A0BApshLnv3hyJSh2Ra0poHUd7CvEItc52U2PJ6d1Vj4xrh7Hg/wr9vwzv4oJFuF1rCUNvuDRrPDcd9YVger2yDR7PR71dRMz60o9dLQkw8REREJlQYfIiIiEioNPkRERCRUqvno4D5xuz3RfNfQT1htl3X9O309n/6151EDumeLPTbNGPuILPujpa/dVursjwSbUAaQI3vIpEkYBHt9kkzusxwUlv0BABVRO9NjJ8n0SJEAhCBH6lLIZHhjNknPzfI/fLM/GN9+AJCjGRz2+wlIbUmEZDTQ7A/H31iGZHXQPBFWv+Cb/UH6AQCy5OeJ5V141ncwfO8a0HqMYrI/WKZHjHwOzr4s+4PUbUTJXw4s+wMk+6OQvjwnhL1x8t2t6kTPHdtRabXlGhpoX3HTkw8REREJlQYfIiIiEioNPkRERCRUqvno4Mzza622H740xmq7bDSv+YjS/Tb8sj9iNNPDxrI/Wvrax4zSTS/sJt/sD1fNR4YENfhmf0Rp/QvJPGFhA+D5Hyz7g9V87M7ZtRys7oIdD+D5H7TmI+a734t9Hsc0POIk0yNNckKiLNODHJNmfzj2dqE5DexXK/ZyUs/jm/0BOPI/2LlZzQf78fTsBzjyRIrI/qA1JK7toVh2iGcNC7vnvtkfAGDIXyT0rxbP7A8TI9kzbH8fAJGqLnajaj4KpicfIiIiEioNPkRERCRUGnyIiIhIqFTz0cG9d+FIq+2pE24lPcvo63mmh80/08OvHwCUkXndJlJbUursj5a+rB7Dzt/IkWssI3s/BKTWgOV5AECGTHz7Zn90itv7SezK2v1Y9gcANOUS9rnjLCfE7pckGSFp8leEK/uD1dlEWZiEZ/ZHlMzX59jmQOD5HzT7g2R1sH6+2R8AECRIbRPpS7M2yPG86ybgyC1h/Vj2B7lnbGsXltMBADGS1UEzPchFFpX9AfBMjyKyPyLs75aMo6Zr2z/5NUlB9ORDREREQqXBh4iIiIRKgw8REREJlWo+OrjtJ+622vrHK7xfnyP1GCz7I/Csp/DN/mg5j58EyWhgU/ss+yNwZIzESGABu84YOXeM3jOWg8LvGc3/IDcjGpBMD0duyd5YRgjAaz7iJOSB5YTESd1FhuzrwbI/ACDHsmJYVgfpR0pvYMg1suwPgOeE0OwPdiJ2vEJ+LfPNEylx9kchfb2zP2gOiuPcvn3ZZ+t5f1mdDMDzP7yzP8ieNBFS0xVJ87/Zcmle6yWF0ZMPERERCZUGHyIiIhIqTbt0cP/27S1W2+THP2O1/fCQld7HZMtv2Tg0Qbr5Lr919WXLb9PkMXwZeSbcVEC8OpOj79tv+W0n8hYbAr68mS+rtftWxpqsth3ZcvvcnstvAaCC9G2kS3XtaZumApbVMjny6Jptux6Q5/UxEs1uWPS9Y1v7HFtWS5bAmjTrx5ZZkqlJcjwAiGTJeyTXGWX9yLQCnYLyX2XuvVS3mOW3ABCQvyBiZL7Ud/ltLmlfEFvOCwAB6RtNl3b5ba57Z3rueMPBVltWy28LpicfIiIiEioNPkRERCRUGnyIiIhIqFTz0cFlt2y12p7eOMRqix7yHD8AmT9my28ZtiSXhbOz5bcAX9rqO9plS2VZW8D2AHecu5jltznyvtny25bzsKWt7PVkLpycu5C6FnbtDFt+S/vR5be8qIAtq2XLb9l7DEhb1PN4ABAhr6ddWT+2RLOIZbotfT37+f2IOZemso+RLYGldSQ0252dhJ+bnYcuv/X9oS/g9tJrJ2+SLjFm/VjtTc5xQRX+UQfipicfIiIiEioNPkRERCRUGnyIiIhIqFTz0cH973UjrbaXP3MH6ck/Slq3QTOH7cljVk/BMj1YngcAlEXsidQmY9cvJD2zP1gMO50gB5DzrJPwzv4wdlZGp6idqQHw/I/KKMn0yNlzx77ZH10Sdj8AqM/Y5+5o2R/sq8qyP9hnG7Djged/FJP9Ad9+AMCyR4rI/ijkV0JHCYxfP1bWQtpY9gcAREnBFMv+iJKsjlzSLyMkx8KGwOPVA3tnAXqNhuSOgOxWEG3kMerZjW/SdimMnnyIiIhIqDT4EBERkVBp8CEiIiKhUs1HB7e7tz2/noiU/mOLkVqOgNRnsBoSV94FqxmJ0cABv4lrntPhmBP2zPRgGRo58h59sz8Afj9YlUQx2R+FbPbhm/1Bz0Ow7A+A53/Q7A9yM2j2B7kXrqgNQ15fVPYHOzc/dXGZHr79HB83zfRg/Vjpl2dGiPP9+eZ8FHLMfe0HdxaK3Y99tuxnzPHzUMhGO+KkJx8iIiISKg0+REREJFQafIiIiEioVPPRwR3xzResttOPOtVq+80Rv/U+JqvbCMikcoLkdGRIHQjr5+xLc0fscyfJ8fyzPwA2Se6b/ZGB/X4qYGdl5IydqQEAlbHdVhvN9PDM/qiKN1pt2zOd6LlZ/kcY2R8AkCJ9GZrp4Zn9EY/zzzCbJd/BBPkOpO1+EdLPZMj3NMnn+k2a9C119gf/EePX45v94Vm64PoRy5FcjRiJxghIrgbN9PDM/mg5N+nLsj/IXyRRdo0Jkl/Unf+MJQ/rZ7Vl39hI+4qbnnyIiIhIqDT4EBERkVBp8CEiIiKhUs1HB2dIKMJfXuljtWVq+Xz7Xe9/wmqbctAbRV9XW/MdFbM8D4Dnf4SR/QEAOdJcTPZHztgT/s5MDjKRz44Zo3kidr+4K1iD8M0J8e0XI3kiAckSAXimBwuJ4Nkffu/R1Y2e2/e++X7RC8m7CCP7w3VJntkfvtfo5NnZ86Mt7OQkJ0QKpycfIiIiEioNPkRERCRUGnyIiIhIqFTzsR+qnfyc1faleefSvsGrf7MbX7abWB1IMdkfhfT1zf5gqRpNjlADnv+x79kfAR2n21kZAM//YNkfDblyu18R2R8AsCNr9+0ct4MNWPZHGQlKaCSFASz7A+D5H0VlfxC5wPX7EqsPIXUtxWR/kH4AgASpI0mT90P6IUOyP0i/KOkHwDv/o9TZHwDP//DN/mCZHvFmv+yPlmOSviXO/ojX2z+LAJB9/Q3aLoXRkw8REREJlQYfIiIiEipNu3xM5Nb+1bvvA2+MsNo+WW7HAz+zc5DVdl2PdYVdWDvhy2r3ffltlO5pzp95JyJkqS6ZvoiRqSW2jbzv8lsXdu1tsfyWLSdmy2p92xi2/BbgS3CjUfJoPlfE8lvHNRrPJb3e60t9t6qH/4peuqyWzDj6Lr91XZPv8lu6g30hy2+LuG/JHfZPeJAi358GPu1SwMyUfAg9+RAREZFQafAhIiIiodLgQ0REREKlmo8DULfTX7Pabu15ktUW7Giw2lb/1Z4oHkbmSwHHstoQlt8CfAluMctvWU1C4Fz2acuQGo2KqL1Uly2r7Rqzl9W+l+1Mz8OW4Pouv92ZtdcgsuW3fCYcKCNbp4OstKXLasnfRKwfj1HnS3AjpKiB1nIUsfwWcCzBZctvWTER+9Fh1xjj75vWCPkuq/VdptvBlt+2HJPUb5Gf+VgTqXd65kX7PEn7u59Nk4uUktGTDxEREQmVBh8iIiISKg0+REREJFSq+RAAQHbbP736ffeNL1ltn+m+gfZNRe1J7qkH/cXrPNHCNti2xMjLAzIn7Jv9wULYefZHyxH25pv9wfqxehGWv9FyTLtvjEWPe97fBDmPq+aD5XzQfkVkeuRyvFCB9c3mWB2IfW6WleGd/QHQIgtDot29MzBYm+vXRPbF9M3A8Mz0YP2cfT2zOorJHQGAiq12MZEhdSDJ9/3qNgLVd4ROTz5EREQkVBp8iIiISKgKGnzU1dVhxIgRqKysRM+ePXHmmWdi/fr1rfoYYzBjxgz07t0b5eXlGDNmDNat2z8iuUVERKTtFVTzsWzZMlx++eUYMWIEstksrr32WowdOxavvvoqOnXqBAC45ZZbMGfOHCxYsABHHHEEZs2ahVNOOQXr169HZWVlm7wJCY85eavVtjLehfaN9j3Eapu21N6DptTZHwDo3hF8bw62xwnbeIK81DF0983/CNgBSPZHQ67camPZHwDP/+gct6s0Sp39AfBakGTM81646in2wvI8AABxUlND+sZJv3Ta/mswlrT7ZZv5X5eRuP0dMhlynSTvgmZ/sNNkHfcnTvJnisn+YD9Ojn8lAnJMVj/DIkoClv1Bzu368U4+tcruG7P/HjE5VhQjHUFBg4+nnnqq1X/Pnz8fPXv2xOrVqzFq1CgYYzB37lxce+21GDduHADg/vvvR3V1NRYuXIhLLrmkdFcuIiIi+6Wiaj527NgBAOjWrRsAYMOGDdi6dSvGjh2b75NKpTB69GisWLGCHqO5uRn19fWt/iciIiIfX/s8+DDGYNq0aTjhhBMwePBgAMDWrS2P5Kurq1v1ra6uzv/Z3urq6lBVVZX/X58+ffb1kkRERGQ/sM85H5MnT8bLL7+MZ5991vqzyF4Tf8YYq22P6dOnY9q0afn/rq+v1wCkA2NzqK551ci2d6y2mf8carU98ne7bdKRK622b3S1C5edeSCkOUNyPnxH3zSbwjGPzvI/YuT7HyUT7DGWO0ImvgPHxhwsJ4Rt4uGb/cHed8yR08H6xsm1p0kOSpzkdGQCct2kH8DzP3yzP6KkICJgOR2OwgmW6UFzNWieiGc/euYP+4O9jllEpoer7qKYc1e8bR80uZPsw9Lsv7GM6jv2L/s0+PjmN7+Jxx9/HM888wwOPfTQfHtNTQ2AlicgvXr1yrdv27bNehqyRyqVQiqV2pfLEBERkf1QQdMuxhhMnjwZixYtwh//+Ef079+/1Z/3798fNTU1WLJkSb4tnU5j2bJlGDlyZGmuWERERPZrBT35uPzyy7Fw4UI89thjqKyszNdxVFVVoby8HJFIBFOnTsXs2bNRW1uL2tpazJ49GxUVFRg/fnybvAERERHZv0SMIRPhrs6Ouo358+fjggsuANDydOTGG2/EvHnzsH37dhx33HG4884780WpH6W+vh5VVVUYgy8hHiGLwWW/5rsWP3vycKvtsQV3Wm2Bo/AiQ2oacnRvF7utiUy6s0yDXYaP3XPkgWJjYOdl5Mik+fs5O3+DeS9n53kAfL+YHeSY7Nws+yNL6kVY9gcANAf2/WjK2T/DadYvy15rt7E6EABoytjnyZHPsSlt92N/A2Yy9rlZHQgA5NLkmliJEMn+iLBjZki9SY6fm7VH7G1PaL8o60dKLMgWTe6+bIsUci8OvWet1ZZraOAnkv1G1mSwFI9hx44d6NKF5z/tUdCTD59xSiQSwYwZMzBjxoxCDi0iIiIHCO3tIiIiIqHa56W2IvvCdzlc2d/ettqmbD7Janv6eT6d991TfmW1faHzBquNLb9NkOfEzWSagm03D/CpjwR5Fp4z9hQAWyqbIVMfdEmtg+/yW9aPxZ7TZcfg9yNN+kbJ/aXLdD2X3wJ8WS1bfhuPkfubtfuxZbWOt037GjYdQn7VYw+T6fLbAra1p79SFrGs1nXucvtHFF022XM0zQfZ9zfYzcL45UCiJx8iIiISKg0+REREJFQafIiIiEioVPMhHVJ245tW2/8eZ/erxZ/o6+d86z+sti9Nvc1qS7CMaDK5z+pA+P7jQABSY+EZ994p2my1seW3ldHd9NxsCW5lzO77XtbuV0bWVLJ6kxRbowleH5IkfVm/OCksYP1Y1HzLH9hNuYD8bkX2bc961oakydJfAIjGSb0Jq01he8aza2SncSx3pfUYLJ+d7WtP+rnqO5ief3rPasut/avVxgITvPMd5GNLTz5EREQkVBp8iIiISKg0+BAREZFQqeZDPpZ6L7Wjms87w64D2fTkYVbblZMWWW0nV/zd+9w0B4M0+WZ/sFqMpoBvPZCKkJwFzzwRhmZ/OLZZyEZInoNn9kcySiL2ST1EktRiAEBzltSHlDj7I8rqJgAE5JKipL4jyJF4dd/sD8evibSvZ1ZH+bt2W/ULdv5G/WGOXcff3MrbRTzoyYeIiIiESoMPERERCZUGHyIiIhIq1XzIx5J5wd6yOzvG7tcbb1lts4463Wr73Em3W22ukXuS5H9k2OYantkfZaSOo4mmJziyOkg+RQXJE9lB8kTY8Vj+BgAEMbuGJUOKDbyzP0jNhuvcWdI3QfJWSp39AfD8jwirD2EvZ/1892tx9KV7tpD71nO1/R2ILv2z1dbVcWr/3YVEbHryISIiIqHS4ENERERCpcGHiIiIhEo1HyJ76f8ze378xLLLrbbOyzvR11815UGrbWjqf622phJnfwA8/4MdMyAFJyl2TFJTQHNMAMRJFUCChE6UOvsD4PUhrL4jQeo2DMn08M3+AIAY29sla5/bP/uD7Lni2A0l9Y79V3jf39l7+Wz/t3L7ta/a+yfxXXtESk9PPkRERCRUGnyIiIhIqDT4EBERkVCp5kNkL/ElL1ht/Zf4v/6200622hYOnu/12jJSn5Ex9o8py/4AeP5HJ5LpwbI/2DEzZL8WV71JkGNZHSRrg9SbxANWXGI3xaO87oJJk2tPkOtJw+7H9pBh2R+AYw8ZcvEs+yMS2G2GZn/wfJPOm+y2yPIXrbZuy+1+qu+Q9qQnHyIiIhIqDT5EREQkVBp8iIiISKhU8yFSYp1/WGW1ff7z/2m1dVtrj/1vnn6P1dYl2mS17TJJem5W37ErSFlttG6DlF0kInbtQxDhv7OweooUqSzIBnbtRHksbbXtytrXzbI/Wo5pX1NZ3D737oxdE5OMkzoQz+wPgNeC+GZ/mJ329RxxP8npGMgzZXos32JfD+0p0rHoyYeIiIiESoMPERERCZWmXURKLPnbVVbbJ37r99pXruxjtY3u9Fe7I0/bptMkvJ/9cJ4t0/Vdfus6d4YsY6XLb8lSUtaPxcK39CXXRKaRIiTG3Xf5bZzEowN82oVF0LPVsmVb7Nea51622ro+R0+tKRbZb+nJh4iIiIRKgw8REREJlQYfIiIiEirVfIh0IIumn2K1/bzq81ZbLM2LPm6um2e1seW3TWSpru/yW1e0O/tVJmPsmoYK2Mtq2fLbVNRvmS4AlMXsa2ok77EibvfblbH7pRL2uZsz/K/LgBRz9J1t99vd21463GntZqtNdRxyINCTDxEREQmVBh8iIiISKg0+REREJFSq+RDpQMoef95uK+D1TbP3/UfaN/uDZVgAoNkjpc7+cJ076go+8Xg9y/5gh8sZ/rta8277HgWr7W3tU6vt16q+Qw5UevIhIiIiodLgQ0REREKlwYeIiIiESjUfIh8jdZddYLUl322y2t4eWWm1zbzifqvNN/sDAIII2bykiOyPwNjHK4/Z/QBgV9bO0KiI230bs37ZH7u/d7Ddr4Gfu2djo9Xmt8OOyIFLTz5EREQkVBp8iIiISKg0+BAREZFQqeZD5GMk8btVVhtLwKgxg+3GK+ym/013s9p6xBv4uUmmR5OxMzB8sz9YJocr54PlhLA9V7Y3l1ttnRJ2LUfq5Y1WW/af79Bzq75DpHB68iEiIiKh0uBDREREQqXBh4iIiIRKNR8iB6Bg9StW25wp51ptFas2WG2vX15Lj3n11x6x2soiJCekxNkfAEBKRvCXuXZdy0HL7FqOoPogu+2fr/LziEhJ6MmHiIiIhEqDDxEREQmVBh8iIiISKtV8iAgAIPmb5622LOlX9Y9P0NfHIvamL6/sOsRq+0TFNquNZX/kIvbvRq819KTn7lPxvtXW9eX3rLbsW1vsF7M2EWlTevIhIiIiodLgQ0REREKlaRcRKUjVT1bS9p+tP9VufGGd1fS7/x5rtV1x0u+stoUPnGS1HTr3z/Tcm444zGrLrfsr7Ssi7U9PPkRERCRUGnyIiIhIqDT4EBERkVCp5kNESsI897JXv86vk9957PIOdNloL90Nmpv4QdeqvkNkf6InHyIiIhIqDT5EREQkVBp8iIiISKhU8yEioaqZu8Jqe2r58VZb59V/CuNyRKQd6MmHiIiIhEqDDxEREQlVmw0+7rrrLvTv3x9lZWUYNmwYli9f3lanEhERkf1Im9R8PPTQQ5g6dSruuusuHH/88Zg3bx5OPfVUvPrqq+jbt29bnFJE9mPB6lfa+xJEJERt8uRjzpw5uPDCC3HRRRdh4MCBmDt3Lvr06YO77767LU4nIiIi+5GSP/lIp9NYvXo1rrnmmlbtY8eOxYoVdpV7c3Mzmpub8/+9Y8cOAEAWGcCU+upERESkLWSRAQAY89H/eJd88PHOO+8gl8uhurq6VXt1dTW2bt1q9a+rq8ONN95otT+LJ0t9aSIiItLGGhoaUFVV9aF92iznIxKJtPpvY4zVBgDTp0/HtGnT8v/9/vvvo1+/fti0adNHXryEr76+Hn369MGbb76JLl26tPflyAfos+m49Nl0bPp8SsMYg4aGBvTu3fsj+5Z88NGjRw/EYjHrKce2bduspyEAkEqlkEqlrPaqqip9CTqwLl266PPpoPTZdFz6bDo2fT7F831oUPKC02QyiWHDhmHJkiWt2pcsWYKRI0eW+nQiIiKyn2mTaZdp06bh61//OoYPH47PfOYzuOeee7Bp0yZ84xvfaIvTiYiIyH6kTQYfX/va1/Duu+9i5syZ2LJlCwYPHownn3wS/fr1+8jXplIp3HDDDXQqRtqfPp+OS59Nx6XPpmPT5xO+iPFZEyMiIiJSItrbRUREREKlwYeIiIiESoMPERERCZUGHyIiIhIqDT5EREQkVB1u8HHXXXehf//+KCsrw7Bhw7B8+fL2vqQDTl1dHUaMGIHKykr07NkTZ555JtavX9+qjzEGM2bMQO/evVFeXo4xY8Zg3bp17XTFB666ujpEIhFMnTo136bPpn1t3rwZ5513Hrp3746KigoMHToUq1evzv+5Pp/2kc1mcd1116F///4oLy/HgAEDMHPmTARBkO+jzyZEpgN58MEHTSKRMPfee6959dVXzZQpU0ynTp3Mxo0b2/vSDiif+9znzPz5880rr7xi1qxZY04//XTTt29fs3Pnznyfm2++2VRWVppHHnnErF271nzta18zvXr1MvX19e145QeW559/3hx22GHm6KOPNlOmTMm367NpP++9957p16+fueCCC8xzzz1nNmzYYH7/+9+bv//97/k++nzax6xZs0z37t3NE088YTZs2GAefvhh07lzZzN37tx8H3024elQg49PfepT5hvf+EartiOPPNJcc8017XRFYowx27ZtMwDMsmXLjDHGBEFgampqzM0335zv09TUZKqqqsyPfvSj9rrMA0pDQ4Opra01S5YsMaNHj84PPvTZtK+rr77anHDCCc4/1+fTfk4//XQzadKkVm3jxo0z5513njFGn03YOsy0SzqdxurVqzF27NhW7WPHjsWKFSva6aoEAHbs2AEA6NatGwBgw4YN2Lp1a6vPKpVKYfTo0fqsQnL55Zfj9NNPx8knn9yqXZ9N+3r88ccxfPhwfOUrX0HPnj1xzDHH4N57783/uT6f9nPCCSfgD3/4A1577TUAwEsvvYRnn30Wp512GgB9NmFrk3j1ffHOO+8gl8tZO99WV1dbO+RKeIwxmDZtGk444QQMHjwYAPKfB/usNm7cGPo1HmgefPBB/PnPf8aqVausP9Nn075ef/113H333Zg2bRq+853v4Pnnn8cVV1yBVCqF888/X59PO7r66quxY8cOHHnkkYjFYsjlcrjppptwzjnnANDPTtg6zOBjj0gk0uq/jTFWm4Rn8uTJePnll/Hss89af6bPKnxvvvkmpkyZgsWLF6OsrMzZT59N+wiCAMOHD8fs2bMBAMcccwzWrVuHu+++G+eff36+nz6f8D300EN44IEHsHDhQgwaNAhr1qzB1KlT0bt3b0yYMCHfT59NODrMtEuPHj0Qi8Wspxzbtm2zRqISjm9+85t4/PHH8fTTT+PQQw/Nt9fU1ACAPqt2sHr1amzbtg3Dhg1DPB5HPB7HsmXL8IMf/ADxeDx///XZtI9evXrhqKOOatU2cOBAbNq0CYB+dtrTt7/9bVxzzTU4++yzMWTIEHz961/HlVdeibq6OgD6bMLWYQYfyWQSw4YNw5IlS1q1L1myBCNHjmynqzowGWMwefJkLFq0CH/84x/Rv3//Vn/ev39/1NTUtPqs0uk0li1bps+qjZ100klYu3Yt1qxZk//f8OHDce6552LNmjUYMGCAPpt2dPzxx1vL0l977bX8jt762Wk/jY2NiEZb/5MXi8XyS2312YSsHYtdLXuW2t53333m1VdfNVOnTjWdOnUyb7zxRntf2gHl0ksvNVVVVWbp0qVmy5Yt+f81Njbm+9x8882mqqrKLFq0yKxdu9acc845WpLWTj642sUYfTbt6fnnnzfxeNzcdNNN5m9/+5v52c9+ZioqKswDDzyQ76PPp31MmDDBHHLIIfmltosWLTI9evQwV111Vb6PPpvwdKjBhzHG3HnnnaZfv34mmUyaY489Nr+8U8IDgP5v/vz5+T5BEJgbbrjB1NTUmFQqZUaNGmXWrl3bfhd9ANt78KHPpn39+te/NoMHDzapVMoceeSR5p577mn15/p82kd9fb2ZMmWK6du3rykrKzMDBgww1157rWlubs730WcTnogxxrTnkxcRERE5sHSYmg8RERE5MGjwISIiIqHS4ENERERCpcGHiIiIhEqDDxEREQmVBh8iIiISKg0+REREJFQafIiIiEioNPgQERGRUGnwISIiIqHS4ENERERC9f8Bx/YECD2m6FQAAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "DigiCam: axial_addressing\n", - "83.3 µs ± 1.25 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "VERITAS - RebinMapper:\n", + "Initialization time: \n", + "194 ms ± 9.78 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "24.9 µs ± 827 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABEmUlEQVR4nO3de3xU9bX///eezGRyIQn3hCg3NSpKsQoWwQtYBYuXWqn1glWol9p6OXJoS4uc1uhRsNTyxf6oWhVvWEqt9+NRhFMFqxxqQLFI1WJFpEqIICQhl0ky8/n94SE1TfCzIsMmgdfz8ZjHw+xZfvZnf2bPsGbPrFmBc84JAAAgJJG9PQEAALB/IfkAAAChIvkAAAChIvkAAAChIvkAAAChIvkAAAChIvkAAAChIvkAAAChIvkAAAChIvnAfuOcc85Rdna2tm/fvsuYiy66SLFYTJs3b5YkBUGwy9ukSZOa/7/S0tIW98ViMfXr109XXHGFysvLW+1nwIABOvPMMyVJkyZN+tz9tLW/LVu2KB6PKwgCrVy5ss1jcc5p4cKFOvHEE9W7d29lZWXpwAMP1GmnnaZ77723/Qv4OR544IEWc41Go+rTp48uuOACrVu3brfG3NXxfdakSZM0YMCA3dpPEARaunRpq/udczrkkEMUBIFGjx79hfYBoKXo3p4AEJbLLrtMTz75pBYsWKCrrrqq1f2VlZV64okndOaZZ6qwsLB5+7nnnqsf/OAHreJ79erVatuiRYtUUFCgHTt2aPHixfrlL3+p5cuXa/Xq1YrFYm3O66c//am+973vNf/92muv6eqrr9aMGTN08sknt7m/+fPnq6GhQZI0b948DRs2rNW406ZN089//nNdccUV+tGPfqS8vDxt2LBBL7zwgp566ildfvnlbc5nd9x///06/PDDVV9fr1deeUW33HKLXnzxRb399tvq1q1b2ve3009/+lNdd911uzVGXl6e5s2b1yrBWLZsmf7+978rLy9vt8YH8BkO2E80NTW54uJiN3To0Dbvv/POO50k91//9V/N2yS5q6++2jv2DTfc4CS5jz/+uMX273znO06Se+GFF1ps79+/vzvjjDPaHOvFF190ktwf/vCHXe5v8ODBrnfv3u7YY491BQUFrra2tsX9tbW1Lh6Pu0suuaTN/z+ZTHqPqT3uv/9+J8mVlZW12H7jjTc6Se6+++5L25jptnM/l19+ucvOznaVlZUt7v/2t7/tRowY4Y488kg3atSoPTqXsNTW1rpUKrW3p4H9GB+7YL+RkZGhiRMnatWqVVqzZk2r+++//3716dNH48aNS9s+d16R2PkxTjr8+c9/1ptvvqmLL75YV1xxhSorK/XYY4+1iKmpqVEikVCfPn3aHCMSCeepv6vjX7lypb7+9a+re/fuysrK0tFHH61HHnmkzTG2bdum73znO+revbtyc3N11lln6b333msR09bHLkEQ6JprrtH8+fM1aNAg5eTk6KijjtIzzzzT5n4uvPBCSdLvfve75m071/bSSy9t8/+58cYbNXz4cHXv3l35+fk65phjNG/ePLl/6de582O2J554QkOGDFFWVpYOOugg/epXv2oRt3TpUgVBoIcfflhTpkxRUVGRsrOzNWrUKL3++uut9m9Zx50fKy1evFiXXnqpevXqpZycHCUSiTaPCQgDyQf2K5deeqmCINB9993XYvtf//pXvfrqq5o4caIyMjJa3OecU1NTU6vbv/4D05b169dLkg499NC0HcO8efMkfXosF1xwgXJycpq37dSzZ08dcsghuuOOOzR79my9/fbbpvmmW1vH/+KLL+r444/X9u3bddddd+mpp57Sl7/8ZZ1//vl64IEHWo1x2WWXKRKJaMGCBZozZ45effVVjR49+nO/u7PTf//3f2vu3Lm66aab9Nhjj6l79+4655xzWiUvkpSfn69zzz23xbnxu9/9TpFIROeff36b47///vu68sor9cgjj+jxxx/X+PHjde211+o///M/W8WuXr1akydP1r//+7/riSee0MiRI3XdddfptttuaxV7/fXX67333tO9996re++9Vx999JFGjx7dYt7tXcdLL71UsVhM8+fP16OPPrrLjwGBUOzdCy9A+EaNGuV69uzpGhoamrf94Ac/cJLc3/72txaxknZ5mz9/fnPczo9dysvLXWNjo9u2bZt75JFHXG5urrvwwgtbzeGLfuxSU1Pj8vPz3XHHHde8beLEiS4IAvfuu++2iH311Vddv379muebl5fnzjzzTPfQQw+l/ZL7zo8uVqxY4RobG111dbVbtGiRKyoqcieddJJrbGxsjj388MPd0Ucf3WKbc86deeaZrk+fPs0fCe0c85xzzmkR98orrzhJ7uabb26xBv37928RJ8kVFha6qqqq5m3l5eUuEom4mTNntpp7WVlZ89q/+eabzjnnjj32WDdp0iTnnPN+7JJMJl1jY6O76aabXI8ePVqscf/+/V0QBG716tUt/p8xY8a4/Px8V1NT45z752N/zDHHtPj/33//fReLxdzll1/+hddxVx/BAXsDVz6w37nsssu0ZcsWPf3005KkpqYmPfzwwzrxxBNVUlLSKv68885TWVlZq9vpp5/eKraoqEixWEzdunXTeeedp6FDh+rBBx9M29wfeeQRVVVVtfgY4NJLL5VzTvfff3+L2GOPPVbvvvuuFi1apOuvv14jRozQH//4R11yySX6+te//rlXQlKpVIurPMlk0jS/4447TrFYTHl5efra176mbt266amnnlI0+ul329999129/fbbuuiiiySpxT5OP/10bdq0Se+8806LMXfG7jRy5Ej1799fL774onc+J598cosvihYWFqp3797asGFDm/GjRo3SwQcfrPvuu09r1qxRWVnZLj9ykaQXXnhBp556qgoKCpSRkaFYLKaf/exn2rp1qyoqKlrEHnnkkTrqqKNabJswYYKqqqr02muvtdoeBEHz3/3799fIkSObj/mLrOM3v/nNXR4HEDaSD+x3zj33XBUUFDT/Y/3ss89q8+bNuuyyy9qM79Wrl4YNG9bq1r1791ax//M//6OysjI9//zz+uY3v6mXXnpJ1157bdrmPm/ePGVlZelrX/uatm/fru3bt2vIkCEaMGCAHnjggVZJQiwW02mnnaZbbrlFzz//vDZu3KjRo0frmWee0XPPPbfL/dx0002KxWLNt4MPPtg0v4ceekhlZWV64YUXdOWVV+qtt95q/i6F9M/vfvzwhz9sMX4sFmuuQNqyZUuLMYuKilrtp6ioSFu3bvXOp0ePHq22xeNx1dXVtRkfBIG+853v6OGHH9Zdd92lQw89VCeeeGKbsa+++qrGjh0rSbrnnnv0yiuvqKysTNOnT5ekVvvY1XFIanUsvmP+Iuu4q+//AHsDpbbY72RnZ+vCCy/UPffco02bNum+++5TXl6evvWtb+322EcddZR69uwpSRozZoxOO+003X333brssst07LHH7tbYf/vb3/Tyyy9Lkvr169dmzPPPP9/mFZmdevToocmTJ2vp0qV68803dxn73e9+t/l3SKRP/8G2GDRoUPOXTE8++WQlk0nde++9evTRR3Xuuec2r820adM0fvz4Nsc47LDDWvzd1u+klJeX65BDDjHNqb0mTZqkn/3sZ7rrrrt0yy237DJu4cKFisVieuaZZ5SVldW8/cknn2wzflfHIbVOknYVuzPui6zjZ6+kAHsbyQf2S5dddpnuuusu/eIXv9Czzz6rSZMmKScnJ637CIJAv/71r3XEEUfoP/7jP/T888/v1ng7v1R6zz33tPqHt66uTmeffbbuu+8+nX766WpsbFRVVVWb7/zfeustSVJxcfEu91VcXPy591vNmjVLjz32mH72s59p/PjxOuyww1RSUqI33nhDM2bMMI3x29/+tsVHBsuXL9eGDRv2yO+USNIBBxygH/3oR3r77bc1ceLEXcbt/DG1z35Bua6uTvPnz28zfu3atXrjjTdafPSyYMEC5eXl6ZhjjmkR+7vf/U5TpkxpThg2bNig5cuX65JLLpGkL7SOQEdC8oH90rBhwzRkyBDNmTNHzrldfuQifXqJe8WKFa225+fn64gjjvjc/ZSUlOi73/2u7rjjDr388ss64YQTvtB8m5qa9NBDD2nQoEG7/Ef3rLPO0tNPP62PP/5YQRBowIAB+ta3vqVTTz1Vffv21Y4dO7R06VLdfvvtGjRo0C7fMadTt27dNG3aNE2dOlULFizQt7/9bf3mN7/RuHHjdNppp2nSpEk64IAD9Mknn+itt97Sa6+9pj/84Q8txli5cqUuv/xyfetb39LGjRs1ffp0HXDAAW3+UFy63Hrrrd6YM844Q7Nnz9aECRP03e9+V1u3btVtt922y6tExcXF+vrXv67S0lL16dNHDz/8sJYsWaKf//znrRLfiooKnXPOOc2l1DfccIOysrI0bdq05pj2riPQoezlL7wCe83tt9/uJLkjjjhilzH6nGqX448/vjluVz8y5pxzmzdvdl26dHEnn3xy87b2Vrs8+eSTTpKbM2fOLue6aNEiJ8n98pe/dIlEwt12221u3Lhxrl+/fi4ej7usrCw3aNAgN3XqVLd169bPXZv2+rwfBKurq3P9+vVzJSUlrqmpyTnn3BtvvOHOO+8817t3bxeLxVxRUZH76le/6u66665WYy5evNhdfPHFrmvXri47O9udfvrpbt26dS32satql7Z+IK5///5u4sSJprl/VlvVLvfdd5877LDDXDwedwcddJCbOXOmmzdvnpPk1q9f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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "VERITAS: oversampling\n", - "82.8 µs ± 1.86 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "MAGICCam - RebinMapper:\n", + "Initialization time: \n", + "467 ms ± 174 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "31.5 µs ± 397 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABioElEQVR4nO3deXhV1b038O8+Y3KSEMZMgIAYJ0AcoEgcQlViUWktr1ZFK4h6UbRKuW+xyLUGq8HiLcUWxIKIKBdte0XEOoFXiHhxiFQqoiIKBoSEAJI5OeN6/+Dl1JD1W7oPYUNOvp/nyfPoOnutPZyBlX1++S5LKaVARERE5BDXsT4AIiIi6lg4+SAiIiJHcfJBREREjuLkg4iIiBzFyQcRERE5ipMPIiIichQnH0REROQoTj6IiIjIUZx8EBERkaM4+aB276mnnoJlWbAsC2vXrm31uFIKJ510EizLwogRI7Rj7Nu3D36/H5Zl4YMPPhD3FQwGMW/ePBQWFqJbt27wer3o1q0bRowYgT//+c+oq6trsb1lWbjzzjtbjbNnzx78+te/xqBBg5Ceno6UlBTk5+fj7rvvxtatW1ttv27dOvzsZz9Dz5494fP5kJmZiYKCAsyfPx8NDQ3mC3ScGjFiRPx5sywLKSkpOP300/Hggw8iFAolPObAgQO/17aWZaG4uDjh/ViWhRNPPBG6kOi33norfl5PPfVUQvsgSmaeY30ARG0lIyMDixYtajXBKC0txZdffomMjAyx7zPPPBP/B2/RokUYMmRIq2327t2LH/3oR/j4448xbtw43HXXXcjKysL+/fvx5ptvYurUqXj77bfxzDPPGI/z/fffxxVXXAGlFO68804MHz4cPp8PW7ZswdKlS/GDH/wABw4ciG9///3344EHHkBBQQF++9vfon///mhsbMT69etRXFyMzz//HH/4wx9sXKnjx4knnoj/+q//AnDw+j7xxBO47777sGPHDixYsOCo7vudd95Br169Eu6fkZGB7du3480338TFF1/c4rEnn3wSnTp1Qm1t7ZEeJlFyUkTt3OLFixUAdcstt6jU1FRVU1PT4vEbbrhBDR8+XA0YMEAVFhZqxxg4cKDKyspSQ4cOVZmZmaqxsbHVNkVFRcrr9arS0lLtGPv27VPPPPNMizYA6o477oj/f01NjcrJyVG9e/dWO3fu1I7zt7/9Lf7ff/3rXxUAdfPNN6tYLNZq29raWvX6669rxzneFRYWqgEDBrRoC4fDKj8/X/l8PtXU1NQmYx4Nh/Zz7rnnqrFjx7Z4rLa2VgUCAXXrrbcqAGrx4sVH/Xic0NDQcKwPgZIIv3ahpHHdddcBAJ599tl4W01NDZ5//nlMmDBB7Pfee+/h448/xs9//nPceuut8T7fVlZWhlWrVuHf/u3fcOGFF2rH6datG2644QbjMS5cuBCVlZWYNWuW+Fv3VVddFf/vBx54AF26dMEf//hHWJbVatuMjAwUFRXF/3/evHm48MILkZWVhbS0NAwaNAizZs1COBxu0e/Q1xPvvPMOCgoKkJqair59+2Lx4sUAgJdffhlnn302AoEABg0ahNdee814Xm3F4/HgzDPPRCgUQnV1dbxdKYXHHnsMZ555JlJTU9GlSxdcddVV2LZtm3acdevW4dxzz0Vqaip69uyJ++67D9FotMU2h3/tcujruzVr1uD2229H9+7d0a1bN4wZMwa7d+/W7mfChAlYvnx5i2N97rnnAADXXnttq+2/+OIL3HTTTcjPz0cgEEDPnj0xevRobNq0qcV2a9euhWVZWLp0KaZMmYKcnBykpqaisLAQH374YYttx48fj/T0dGzevBkXX3wx0tLS0KNHD9x5551obGxsse33vY6HXh9vvfUWCgoKEAgEjO8hIrs4+aCk0alTJ1x11VV48skn423PPvssXC4XrrnmGrHfokWLABz8h+Taa69FIBCItx2yevVqAMCPf/zjIzrGVatWwe12Y/To0d+5bUVFBT7++GMUFRUhEAh8r/G//PJLjB07Fs888wz+/ve/4+abb8YjjzyCiRMnttq2srISN910E2655Ra8+OKLGDRoECZMmIAHHngA06ZNw9SpU/H8888jPT0dV155pfgPcFvbvn07OnfujB49esTbJk6ciMmTJ+OSSy7BihUr8Nhjj2Hz5s0oKCjAnj17Wp3Xtddei+uvvx4vvvgirrrqKjz44IO4++67v9f+b7nlFni9XixbtgyzZs3C2rVrxUnltddeC7fb3WLCu2jRIlx11VXo1KlTq+13796Nbt264eGHH8Zrr72GefPmwePxYNiwYdiyZUur7e+9915s27YNTzzxBJ544gns3r0bI0aMaDVZCIfDuOyyy3DxxRdjxYoVuPPOO/HnP/+51eveznWsqKjADTfcgLFjx+KVV17BpEmTvtf1I/pejvWtF6Ijdehrl7KyMrVmzRoFQH388cdKKaWGDh2qxo8fr5RS2q9dGhoaVKdOndS5554bbxs3bpyyLEt98cUX8bbbbrtNAVCfffZZi/6xWEyFw+H4TyQSafE4Dvva5dRTT1U5OTnf67zeffddBUD9+te//l7bHy4ajapwOKyefvpp5Xa71TfffBN/rLCwUAFQH3zwQbxt//79yu12q9TUVLVr1654+8aNGxUA9cc//jGh45Ac+uri0LWrqKhQv/nNbxQA9fjjj8e3e+eddxQA9fvf/75F/507d6rU1FQ1derUVuf14osvttj21ltvVS6XS5WXl8fbAKj7778//v+HXkeTJk1q0XfWrFkKgKqoqGh17EodfL0MGTJEKaXU5s2bFQC1du1aVVZW9p1fu0QiERUKhVR+fr765S9/GW8/9Do+++yzW3zd9tVXXymv16tuueWWeNu4ceMUAPXoo4+2GPuhhx5SANTbb7+d8HX8n//5H/HYiY4E73xQUiksLET//v3x5JNPYtOmTSgrKzPeLv7rX/+K2traFttMmDABSqn4VxAmL774Irxeb/wnMzOzTc4jUR9++CF+/OMfo1u3bnC73fB6vbjxxhsRjUbx+eeft9g2NzcX55xzTvz/u3btiqysLJx55pnIy8uLt5922mkAgPLycuO+o9EoIpFI/CcWi33n8W7evDl+7XJzc+N3Xb59p+bvf/87LMvCDTfc0GL8nJwcDB48uNVfOGVkZLS6QzV27FjEYjG89dZb33lMh/c944wzAMjnP2HCBHzwwQfYtGkTFi1ahP79+4tfzUUiEZSUlOD000+Hz+eDx+OBz+fD1q1b8emnn7bafuzYsS2+buvTpw8KCgqwZs2aVttef/31rfoCiG9r9zp26dIFF110kfY8iI4UJx+UVCzLwk033YSlS5fi8ccfx8knn4wLLrhA3H7RokVISUnBj370I1RXV6O6uhpnnHEG+vbti6eeeipeJ3DCCScAaP0P0IgRI1BWVoaysjJcccUV33l8J5xwAvbu3fu9/jz20D63b9/+ndsCwI4dO3DBBRdg165dePTRR7Fu3TqUlZVh3rx5AICmpqYW23ft2rXVGD6fr1W7z+cDADQ3Nxv3379//xYTsQceeOA7j7l///4oKyvD+++/j7/97W8YPHgwZs6cGa+bAA7+WbJSCtnZ2S3G93q9ePfdd7Fv374WY2ZnZ7faT05ODgBg//7933lM3bp1a/H/fr8fQOvrd8iFF16I/Px8/PnPf8YzzzyDCRMmaOtzAGDKlCm47777cOWVV+Kll17Ce++9h7KyMgwePFg7/qHjPrzt8PPweDytjvvwc7Z7HXNzc7XnQNQW+Ke2lHTGjx+P3/zmN3j88cfx0EMPidt9/vnnePvttwH86x/6w73++uu47LLLMHLkSNx7771YuXJliwLPzp07x/8s9/APf51LL70Uq1atwksvvaQtSPy23NxcDBo0CKtWrUJjY+N31n2sWLECDQ0NWL58Ofr06RNv37hx43ceV1t46aWXEAwG4///7bsnkpSUlPj1Gzp0KH74wx9iwIABmDx5Mq644gqkp6eje/fusCwL69ati08Evu3wtsNrF4CDdSDA93uOEnHTTTfhP/7jP2BZFsaNGydut3TpUtx4440oKSlp0b5v3z507ty51faHjvvwtsPPIxKJYP/+/S3aDz9nu9dRmkARtQXe+aCk07NnT/zqV7/C6NGjjf8QHCoqXbhwIdasWdPi55VXXoHX640Xrw4ZMgRFRUVYuHAh1q1bl/Cx3XzzzcjJycHUqVOxa9cu7TbLly+P//d9992HAwcO4K677tKGWdXX12PVqlUA/vWPxbf/EVFKYeHChQkfrx2DBg3CkCFD4j/fZ/JxuEPFmHv27MGf/vQnAIhnouzatavF+Id+Bg0a1GKMuro6rFy5skXbsmXL4HK5xK9DjtS4ceMwevRo/OpXv0LPnj3F7SzLavWP/Msvvyy+Fp599tkWz3t5eTnWr1+vDcs7lJdyyLJlywAgvq3d60h0NPHOByWlhx9+2Ph4JBLB008/jdNOOw233HKLdpvRo0dj5cqV2Lt3L3r06IGlS5fi0ksvxSWXXILx48fj0ksvRVZWFmpra/HRRx/hjTfe0P6Fw7dlZmbixRdfxBVXXIGzzjqrRcjY1q1bsXTpUvzzn//EmDFjAABXX3017rvvPvz2t7/FZ599hptvvjkeMvbee+/F/6KhqKgII0eOhM/nw3XXXYepU6eiubkZ8+fPbxFY1h7ceOONmD17Nv7zP/8Td9xxB8477zz827/9G2666SZ88MEHuPDCC5GWloaKigq8/fbbGDRoEG6//fZ4/27duuH222/Hjh07cPLJJ+OVV17BwoULcfvtt4t3uI5UXl4eVqxY8Z3bXXHFFXjqqadw6qmn4owzzsCGDRvwyCOPiH92XVVVhZ/+9KfxPwG///77kZKSgmnTprXYzufz4fe//z3q6+sxdOhQrF+/Hg8++CBGjRqF888/HwBsX0eio+rY1boStY1v/7WLybf/2mXFihUKgJozZ464/WuvvdbqrwOam5vVn/70J3X++eerzp07K4/Ho7p27aouuOAC9bvf/U7t37+/xRg47K9dDqmsrFT33HOPGjBggAoEAsrv96uTTjpJTZw4UW3atKnV9qWlpeqqq65Subm5yuv1qk6dOqnhw4erRx55RNXW1sa3e+mll9TgwYNVSkqK6tmzp/rVr36lXn31VQVArVmzJr6dFMbVp08fdfnll7dql87jSJgCwV5++WUFQM2YMSPe9uSTT6phw4aptLQ0lZqaqvr3769uvPHGFn+xc2jMtWvXqiFDhii/369yc3PVvffeq8LhcKtz0v21y+Gvo0N/efJ9rt+36f7a5cCBA+rmm29WWVlZKhAIqPPPP1+tW7dOFRYWtvhLrEP7fOaZZ9Rdd92levToofx+v7rgggtanK9SB//aJS0tTX300UdqxIgRKjU1VXXt2lXdfvvtqr6+vtVx2bmOREeLpZTmXi4RER0za9euxQ9/+EP87W9/axE6pzN+/Hj893//N+rr6x06OqIjx5oPIiIichQnH0REROQofu1CREREjuKdDyIiInIUJx9ERETkKE4+iIiIyFHHXchYLBbD7t27kZGRwXhfIiKidkIphbq6OuTl5cHlMt/bOO4mH7t370bv3r2P9WEQERFRAnbu3Cmm9h5y3E0+MjIyAADn4zJ44D3GR0NERETfRwRhvI1X4v+Omxx3k49DX7V44IXH4uSDiIioXfj/wR3fp2SCBadERETkKE4+iIiIyFHH3dcuRPT9BUf/QHws8EW1tv3A2d3EPl1Ld2jbqy7to23PemmrONaen+Rr27Nf1PeRtgeA7FfLte37LjlB2959XaU4VvXQbG17xrYGbXu4k18cy/PGB+JjRCTjnQ8iIiJyFCcfRERE5ChOPoiIiMhRnHwQERGRo1hwStQOeProU39XPD5X7NOsotr2dMsn9qlXIVt96mfotzf12f+bZm17N1eKOJbUp4tLXwx6IBYUx5L67Ivp95FhyR+TV/c6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jnzuQMc+/4587gDPvyOe/1FLOCUiIiLS4douRERE5ChOPoiIiMhRnHwQERGRozj5ICIiIkdx8kFERESOOu4mH4899hj69euHlJQUnHPOOVi3bt2xPqSj4q233sLo0aORl5cHy7KwYsWKFo8rpVBcXIy8vDykpqZixIgR2Lx587E52DY2c+ZMDB06FBkZGcjKysKVV16JLVu2tNgmWc9//vz5OOOMM+JJhsOHD8err74afzxZz1syc+ZMWJaFyZMnx9uS+RoUFxfDsqwWPzk5OfHHk/ncAWDXrl244YYb0K1bNwQCAZx55pnYsGFD/PFkPv++ffu2eu4ty8Idd9wBILnPXUsdR5577jnl9XrVwoUL1SeffKLuvvtulZaWpsrLy4/1obW5V155RU2fPl09//zzCoB64YUXWjz+8MMPq4yMDPX888+rTZs2qWuuuUbl5uaq2traY3PAbejSSy9VixcvVh9//LHauHGjuvzyy9UJJ5yg6uvr49sk6/mvXLlSvfzyy2rLli1qy5Yt6t5771Ver1d9/PHHSqnkPW+d999/X/Xt21edccYZ6u677463J/M1uP/++9WAAQNURUVF/Keqqir+eDKf+zfffKP69Omjxo8fr9577z21fft29cYbb6gvvvgivk0yn39VVVWL53316tUKgFqzZo1SKrnPXee4mnz84Ac/ULfddluLtlNPPVX9+te/PkZH5IzDJx+xWEzl5OSohx9+ON7W3NysMjMz1eOPP34MjvDoqqqqUgBUaWmpUqrjnX+XLl3UE0880aHOu66uTuXn56vVq1erwsLC+OQj2a/B/fffrwYPHqx9LNnP/Z577lHnn3+++Hiyn//h7r77btW/f38Vi8U63LkrpdRx87VLKBTChg0bUFRU1KK9qKgI69evP0ZHdWxs374dlZWVLa6F3+9HYWFhUl6LmpoaAEDXrl0BdJzzj0ajeO6559DQ0IDhw4d3mPMGgDvuuAOXX345LrnkkhbtHeEabN26FXl5eejXrx+uvfZabNu2DUDyn/vKlSsxZMgQXH311cjKysJZZ52FhQsXxh9P9vP/tlAohKVLl2LChAmwLKtDnfshx83kY9++fYhGo61Wvs3Ozm61Qm6yO3S+HeFaKKUwZcoUnH/++Rg4cCCA5D//TZs2IT09HX6/H7fddhteeOEFnH766Ul/3oc899xz+Mc//oGZM2e2eizZr8GwYcPw9NNP4/XXX8fChQtRWVmJgoIC7N+/P+nPfdu2bZg/fz7y8/Px+uuv47bbbsNdd92Fp59+GkDyP/fftmLFClRXV2P8+PEAOta5H3JU1nY5EpZltfh/pVSrto6iI1yLO++8Ex999BHefvvtVo8l6/mfcsop2LhxI6qrq/H8889j3LhxKC0tjT+erOcNADt37sTdd9+NVatWISUlRdwuWa/BqFGj4v89aNAgDB8+HP3798eSJUtw7rnnAkjec4/FYhgyZAhKSkoAAGeddRY2b96M+fPn48Ybb4xvl6zn/22LFi3CqFGjkJeX16K9I5z7IcfNnY/u3bvD7Xa3muVVVVW1mg0mu0PV78l+LX7xi19g5cqVWLNmDXr16hVvT/bz9/l8OOmkkzBkyBDMnDkTgwcPxqOPPpr05w0AGzZsQFVVFc455xx4PB54PB6Ulpbij3/8IzweT/w8k/kafFtaWhoGDRqErVu3Jv3zn5ubi9NPP71F22mnnYYdO3YASP73/SHl5eV44403cMstt8TbOsq5f9txM/nw+Xw455xzsHr16hbtq1evRkFBwTE6qmOjX79+yMnJaXEtQqEQSktLk+JaKKVw5513Yvny5XjzzTfRr1+/Fo8n+/kfTimFYDDYIc774osvxqZNm7Bx48b4z5AhQ3D99ddj48aNOPHEE5P+GnxbMBjEp59+itzc3KR//s8777xWf1L/+eefx1c7T/bzP2Tx4sXIysrC5ZdfHm/rKOfewjEqdNU69Ke2ixYtUp988omaPHmySktLU1999dWxPrQ2V1dXpz788EP14YcfKgBq9uzZ6sMPP4z/WfHDDz+sMjMz1fLly9WmTZvUddddlzR/dnX77berzMxMtXbt2hZ/etbY2BjfJlnPf9q0aeqtt95S27dvVx999JG69957lcvlUqtWrVJKJe95m3z7r12USu5r8O///u9q7dq1atu2berdd99VV1xxhcrIyIh/xiXzub///vvK4/Gohx56SG3dulX913/9lwoEAmrp0qXxbZL5/JVSKhqNqhNOOEHdc889rR5L9nM/3HE1+VBKqXnz5qk+ffoon8+nzj777PifXyabNWvWKACtfsaNG6eUOvhnZ/fff7/KyclRfr9fXXjhhWrTpk3H9qDbiO68AajFixfHt0nW858wYUL89d2jRw918cUXxyceSiXveZscPvlI5mtwKLvB6/WqvLw8NWbMGLV58+b448l87kop9dJLL6mBAwcqv9+vTj31VLVgwYIWjyf7+b/++usKgNqyZUurx5L93A9nKaXUMbnlQkRERB3ScVPzQURERB0DJx9ERETkKE4+iIiIyFGcfBAREZGjOPkgIiIiR3HyQURERI7i5IOIiIgcxckHEREROYqTDyIiInIUJx9ERETkKE4+iIiIyFH/D5wCpZ2R5elGAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "VERITAS: rebinning\n", - "87.9 µs ± 3.61 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "FACT - RebinMapper:\n", + "Initialization time: \n", + "588 ms ± 29.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "34.3 µs ± 308 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJztnXuUXXWV57/7vuuZSuUdEhJgAgrIy2AQ7BZ5SSsjzEPantXT0aZXfDf20mbQWcu27R7HxRq7dZY6dqaxzWg/UJQFog1CFMUBAoSHgKA8DCHkUUklVanXff/mj1zG+n5vcU4V9brJ2Z+1alXt+zv3nH3OPb97av/2y0IIcBwneaTmWwHHceYHn/yOk1B88jtOQvHJ7zgJxSe/4yQUn/yOk1B88jtOQvHJ7zgJxSe/4ySUzFweLGf5UEDHXB7ScRLFEA4dCCEsmcy2czr5C+jABrt4Lg/pOIni7nDzi5Pd1v/td5yE4pPfcRKKT37HSShzavM70yOVL5C8+4PnkLzq+3tI3nvZCpKXbhsk+fDJXSTnD9Uij19amCa5+9dDJO87bwHJK+5kfXa9i/VZ+dVHSK6XipHHd2YWf/I7TkLxye84CcUnv+MkFLf5jyJ2/Snb+Pdf+7cklz7BNnsebKNXUCe5YDw+VSqB95c3vp0qn2J9snK89dk/JXnlDfdNSx9naviT33ESik9+x0koPvkdJ6FMyuY3sx0AhgDUAFRDCOvNrBfATQDWAtgB4OoQwqHZUfPopHLZepL3nZsj+bifjpK88+3tJK/54QjJ2d89SPJoqJJ8sG4k96R4fESqtBeMbfJaTBX3nPH+i1L2vSvFawADdR7vlfHCWw/wAe49k8QdV3AS2Jo7xkjedWEbycsfrJCcvfMhOK/OVJ78bwshnBVCeOWOvh7A1hDCOgBbG7LjOEcJ0/m3/0oAWxp/bwFw1fTVcRxnrpjs5A8AfmRm281sU+O1ZSGEPQDQ+L10ojea2SYze9jMHq6gNH2NHceZEWwy7brMbGUIYbeZLQVwF4CPArgthNAzbptDIYSFUfvptt6QpHz+Nz3GNvV5nc+RnDa2gadLGtPbXwrTa9023fNJT/P4Px85meR73tD2Klseu9wdbt4+zjSPZFJP/hDC7sbvPgC3AHgTgH1mtgIAGr/7Xpu6juPMB7GT38w6zKzrlb8BXAbgSQC3AdjY2GwjgFtnS0nHcWaeybj6lgG4xY64eTIA/imEcIeZPQTg22Z2DYCdAN49e2o6jjPTxE7+EMILAM6c4PV+AMe0AZ/KsV/+xU+KKSUmbsdulkfr2/j95cUkH6hyPv2K7ADJu8q9JK/Js198d5mXWFbmOMxiX4Xz6xdmOG5gtM7nl7XofP5K4Nj8njTHKeyX81kp57O70kPyqizHLeyq9EaO76nw+S7Lcn0C1a9/0/lQRlbKCxy6gLX/7WGS6+Vy0z6OFTzCz3ESik9+x0koPvkdJ6FMys8/Uxxtfv7MmtUkf2jr3ZHb/+AQL42M1dimTk3XD24z+1lN168/3fNJTfN84uIC8ulq02tXLtge+Z7PXcSBqtUdky6D3xLMuJ/fcZxjD5/8jpNQfPI7TkLxGn7jyCzl/oa/+hz75evyXfno6BqS1cbfOcx+7eFSnuTuAtepHyhyLHpvG/vRB8Z4vKeN89sH5f0LCjw+XObjFzKc/14L0c+CbIrjAIrVLMnd+ZjzKfD5HCxy/YLFbRyHcGCsI3L8UIn3vzDP53tip9QLAPBIcS3J5xR2kPz8DRwbcdJHOV+tuu/YiWL3J7/jJBSf/I6TUHzyO05CcZt/HJWTjyP5bzd8O3L734wujhw/MNzJ+69y7PlwkW1wZbSYixwfKUWPD8e8fxDc+09K9E2Zw2OFyPG48407Hx03iRMYq/AaxNoOzg0AgOdGl5GsNv+N67eQ/Jcn/zEf021+x3GOdnzyO05C8cnvOAnlmLb56xdyb7s/+NoPSf6re/8tyWedspPkWmAj+N6hU3j/Mv7cIK8BqI1fHBabd0R65bVLPv1ozPiYjLfJeFHG8zJe4e/+kI6JtZe+AJaV2P6SPEsKMfqovnI+1s6x+WGMb9dUB8cpdHWzn/+Xg2zfA8DpPXtI/tnI60h+S8evSV5xwwsk3/vLc0n+q7d8j+R/+ADnBqR/Ep1LMJ/4k99xEopPfsdJKD75HSehHNM2/543s9/5P3buIPmSt3N/+8fLbCOO1NlGP1Biv70yOBrt51Yb3qpiQw/yxxHU735YPq6pjpejx3XzpuMLVpQ1g5SsGQyx3x2av39YxuX9YTAXOV6TNQB0s6i5BRPRV+a6g+V2/ow+uPzHJH9x9R0kdxrr+Lnz+Z5Z9ZNYFeYNf/I7TkLxye84CcUnv+MklGPK5tc67Xd+6AaSh8TkfKLM+fuHa2yz/3SQfcDK431cBL5W5+/SUj/bnFZhIzp7mLeXsvoQdZAuTXFcTWYpaSdl7hFb0k/XAMTNH+RuSrEbvkmftJTEr0kYhJ5PRZZcqmLjD/bzBgsWDUPZ1reW5A1Ld5C8deg0ki/ueorkF6p80uukJsLPP/gFki/p/zjJi792X5NO84U/+R0nofjkd5yE4pPfcRLKMWXzHzyfjcQu49PbXWN7TXu7Dda4plypxu8v1tgvXaqIX14c46ax7oLaxEp2iOV6dmrjuoagNr4eP9avL2sCWvLPxIavy92VHYkZFxNdz0fXAKq6RiHXWz8PAChW+aAlVUIYqvPCSkeKlSgGPumFKd5+4AKua7j4a5GHm1P8ye84CcUnv+MkFJ/8jpNQJm3zm1kawMMAXg4hXGFmvQBuArAWwA4AV4cQDr36Hmaelz7Nfv3tl7CPdZ/Y+M9I7P5AjevCbxs8keSy2INP7F0RqU+5T/z6YpPmD/J3rdqwaqNnR3gH9QzbsKmajKenNh7XKk9N5libX/3+ssZgkr6v5raOV/njafLz5w7yAcqLeAeDfc25GAuX80LJQ33Hk3z+sh0k3zd8MsmXdj9B8ouy8JDO8of67MU3knzaZz5M8vGfmT+//1Se/NcCeHqcfD2ArSGEdQC2NmTHcY4SJjX5zWwVgHcC+PtxL18J4JVSp1sAXKXvcxyndZnsk/+LAK4DB3QuCyHsAYDG76UTvdFxnNYk1uY3sysA9IUQtpvZhVM9gJltArAJAApoj9k6mnQX517n3hi9xDBQj64Tf6DK+6tL8PrhCr9fTeRqJSY/vyaytouXHabj/P6jks8usfLZMRlXv39J8uX1q19PUGx+XQNoihMQG78pdj8nuQ1N5yNrFno9RD9dI9BcA73+QHNdRZ0BAxVet1mc4uCD/hrfMz0prhs4UmclFso17jyX+wemF3BvwNrgYJPOs8VkFvwuAPAuM3sHgAKAbjP7FoB9ZrYihLDHzFYAmLCbQQhhM4DNANBtvXGpI47jzBGx//aHED4ZQlgVQlgL4D0AfhxC+EMAtwHY2NhsI4BbZ01Lx3FmnOn4+T8P4FIzexbApQ3ZcZyjhCnF9ocQ7gFwT+PvfgAXz7xKr87L31xN8j1vZB/qi1X+LttZ7SV5X4Xtq8eHVpE8LDb+8/uje/HV+6TXnRg1hQO6BsDjucMsp8q8g5wUIMgU1agVhWJs9ukSF/vf1OwvqJEevYNKO48H489Tr1eph+V8P9vzpaW6KACM7GXff+/qAZKf6l9O8jlLd5H80PAJJHd0S7CGkLNRkredfRPJG/7p91mfd86dze8Rfo6TUHzyO05C8cnvOAmlpfP5M+tOIvk9J3Hfs0pgG3igzsHgdXFk7yn3yDjbmIdK0XXeK0W+XGrja42+Jr+z+Pm1pp7GxqckblyPl5I1gHpW/eQhctxq6vePtsm1LH+QXAOrsI1dz/H1T5V5vFaQ8Up07oFer5TmCjTVF2g+n5DjnY4UOViio8DBCf0lvqe6Mpyf/3JlIclL0rwwMSSf6aIUv/C+E+4n+QenbCC5+qvnMFv4k99xEopPfsdJKD75HSehtLTNf/jLbJ9tWvgoyTuqbK/119iH+4LU5X9hlP326tffO8CF4Osam98vwfRC/qBsL/Zek19fbPrcsOSGi82eLrKRmxmOTgYIMX71WKYbJxB3fIvu5Zcd4QtY7hK/v7jEixzWgdyh5mdbaRlfw9J+zjfJr+SFhRcH2aZflOeiCy8UOZ+tJ81+/WxuH8n9dV4z+FAPxxHc8tWzSE7NYiSNP/kdJ6H45HechOKT33ESSkvZ/KUr3kTyB9Z+l2TNld4vNv6o5O/vLXEsf7XOsd/7Rjg3W2Pjq6Nsk6YkLiA9Fm3jpySfXWvqNfmtK7ID3b4kjm2JnU8VeYchK7nr0mcO6Ska9WrDy+cR0lLfoCZ+/wJfz3RJ4wLk+oqfXtdINC6hqX6A9DIEgNQYP+/qbXwOI6N8Dy3o4nz9l0f5nuro4tj+3RWOJTkuwzUnBozXaRZK0YKPr/0Ryf/9XRtJLtz2IGYKf/I7TkLxye84CcUnv+MklJay+U//zOMkX97xEsmPSQL3UI1j8Z8rcl3+vhLb9ANl6aM2zO+vltlmTQ2KH1rIDUQOI39YYvPF5FY/tsaqZ0bZhtc1AROb2cbKIkfr10RMbH8scX79lAbf6xqK5CrImkRzrz8e1ziKsQlKOOYG+D3FdqkjOMixHMU82+R9I7zOtFj8/nlZyHk+zXEA7QX26++q8ZrB5W18z/3fz3Ls/4O3yTrONPAnv+MkFJ/8jpNQfPI7TkJpKZt/2/96I8l3XMe5zNobfaDGcdl7xK9flML1+4Z4DUD7t9eH1a/P+mWHtEYdi5Lq3WTjp6Vuvubbm9j0qXKc318L54tCRakvl5bv+inW2GsirXEEErjQJjUOyzIucQia75+SmozaZ0CvZ63A+mc4zP6IitI6In2Ydah18TUfG+aFg1yWddw1wvdcT5YXWvaI339tbj/JBSnycE+Rz+Ffv/o7JC/CzPX28ye/4yQUn/yOk1B88jtOQmkpm7/3RrZnPnvZFST/9dncFGhXmRO4hypsY/YX2cArltimr1WkhtyoxKaLyZ3htm1NZIe1yJ2Mi19fa+hpvr5J7LzWyEM1Ri5LsLsy3Xx/9dsruWj9TXINTPz2aa1RmOHPp6nXXyE6LgAAqlySD9kRfk9NxsMoT5FKF+twuMT3nMaWtEnCwUuVRSRrr78/e/JqkpdunjkbX/Env+MkFJ/8jpNQfPI7TkJpKZt/93Xnk3ztG75PclxNPo3d7xtk+6smvdnDQfbhprTm3kC0TZyXWPKmmn3D0X59tWk1v11t5NSo+O1lTQCl6L5xYUwCEdRPP1W/v2xv7dL3QI8n46kxjUOQBHxpbqix/JBeftkR1qfS0ay/1v0rs5se2QG+JpWFrMPIIT6H9CL+DHYN8w67snwNNP+kS2z+/3HazSR/9NObSF79WffzO44zTXzyO05C8cnvOAkl1uY3swKAnwHIN7a/OYTwF2bWC+AmAGsB7ABwdQjh0KvtZzKsvHwnyb0ZdtT+8vBKkrUm32CR7bFajb/bamXx61elBp/IkkrQ1DsuXZQXhIzY9EpK/fZqQ2ssvNrkGksvNfNQkxp7TeOyxhDnt49D96/oGoV8fs2x/6xPWnIfam08nhmLt/kzUuNAbX6tA1iR3g2Q2JByhadQOcPnoL3+Fuc4WORFWcd6a8czJJ/7e0+RvPezmDEm82mXAFwUQjgTwFkALjez8wBcD2BrCGEdgK0N2XGco4TYyR+O8MrXVbbxEwBcCWBL4/UtAK6aFQ0dx5kVJvV/npmlzewxAH0A7gohbAOwLISwBwAav5dG7cNxnNZiUn7+EEINwFlm1gPgFjM7fbIHMLNNADYBQAG/jbV/9isbmrb93KrvkPzU6HEk7y+y337/GNtT/YdZrpYkX/wQ12eTVGrkZcVC/faFQ2KTiwmeH4zOv2+qySex/Cmxea0o+fpiwzfl68t4fSy6iF8o8/51BcOkpl+oS9xCgeMkQklqCMq4+v2b1hgkLCClcQgSd5AZ4etX7eDtc4eb11xKC/iY+X4Zj+n3V17M12DsEMcmpNN8zJeHeFGhMxMdi/FUide1PrHiTpKv/IePkLzufQ9H7i+KKa3whBAGANwD4HIA+8xsBQA0fve9yns2hxDWhxDWZzFBRUXHceaF2MlvZksaT3yYWRuASwA8A+A2AK+0E9kI4NaJ9+A4TisymX/7VwDYYmZpHPmy+HYI4XYzux/At83sGgA7Abx7FvV0HGeGiZ38IYRfADh7gtf7Acxi93DHcWaTeUvs6V3T3PGiJgU195e7mrYZz0g5FzkeKtHFOUwCOCSPpLnxpiwQ6gqZNpJUmgpyKhr0o2hQjwT9hBCzfw0Sitk+qDoWYyU2BfFoBVNZwNOgoIwW9OTzrbfx7Zou8f51wU8LfAITFFWVNVW9B7SPiVXkBWksUhzje7I9x4ugByTo57g2ngc7y5ysdlp+N8mnrN1DcswnHomH9zpOQvHJ7zgJxSe/4yQUC2oHziLd1hs22JE1wnRnZ9N4379wUM9JPRyBsWNwIcmHhrhAZ3VUmm4cErnM9ln+IB9fbfrCweignrZ+TZThDXKDEvSiTTmkmEVTUI8EzWixDk3UaSrWIYSYgp5NiT9TJJVje7cpKEiaeCjWKdUzNQhIioGEnBRnKfDxq53Na0JBCoIUe6ObsY4uiX4+jmlcqywJlJbIZ5Tha9K+iDuLdLXxZzw4ytfshPftILk2NETy3eHm7SGE9REq/3/8ye84CcUnv+MkFJ/8jpNQWqqAZz1EF4ysq0E1TdSGn/P9TcdJCwD1mAPGjKtNPl1i9xdXIFTjGGQNoblYiDYKlSYgE+mjsRy1aJ10HSjIIVOyTFOXJQRdZ6qJzV+WRjIQm79alik6g2t0/uR3nITik99xEopPfsdJKPNm86tPHwA+vu4uku8dPIXktQvYftoh75d+DKjUJXZ/gE+31Ct+fynsUFzI4239QcbZACz0s4FY6WabNTcgfvp2KS7SFHsfLTfZtHktriFxBBm2L5v8/hq7r7H/Mm4Sq6/FP0xtdt0+L+PZbKQc2qL3V10g9SImaDoS59cfW8TnqDZ+iUNNUBeVKt3SPLSdr2Gmi6/5ogVcpLYrz7EaF536a5K/e+NZJK/9/cfxWvEnv+MkFJ/8jpNQfPI7TkKZN5v/4Is9zS+uY7E3x/ZQf5ljvzskV3oQHPttWWlaoSZtWvLhJTdb/fZ1uVrqA65n+f2aT17XJhTilw4Zsak1FD8tJ6DJ5jFxEora6EqoRz8b4t4f2+hT8/uVTPR4yEaP6/WeeBspUipvkb4iTfdA8/50nUTyPXJaFILpzXPR1bQEg9Rf4nyW6eBPfsdJKD75HSeh+OR3nIQybzb/ug9va3rtG1vPJ/m9q+4j+aDY/MpYF/twDwbevraQA7Gtn7cvyzJEU0MH9fvvZ3uutCAt42zfVTv4eCY1//Sb2Koxwf/iRzdt4qF+f22akYn2eTdZ7DE1/0yOp/n4TU081ObPiV+/ILLY+Ho9dQ2kvCD+9i72Rj//9J5Qv395oazb5FnOdfPCzYJ2/gwWFNjGP7lzH8m37zyN5BM/cX+kvlPBn/yOk1B88jtOQvHJ7zgJpaXy+ffeuZrkg+/lOn+rCtxJc7DCfv3uAttTg6M8Xs+IzzSrjnwR8+K3lxJ51QKPZ8ckrruNv1szo3L8vNSpl7r9auNaRXzEU/X7y/baKDNonf0mNFBCGxfIuOqnNr7qKza/xgnU89Hj1UJM3ACAapv49UUFjdVXG1/9/EHuIZN8/bYC2/zpFF/j5W1cg+9wVeoU/lg6h84g/uR3nITik99xEopPfsdJKC1l86+8gf36//Pst5H86XN+QPJwjf3GZQnEXtTFuQF9Ve79V+uRAmx9bPCVF4j9VmQDsSKtBDPiZq90SCx/WdYE8jyeqvDHkVKbWvzeVhMbXf3so1wTvsnPLjT59adZ4y/O798UhyC5DWrj6xqJxu5rrz6N0weAUnd0vkF5Acu6j8pCrcPPn0FbF98E7Tm+x1Z1ctWJ49u4ecQ3t59H8rov8pyYSfzJ7zgJxSe/4yQUn/yOk1BibX4zWw3g/wBYjiOe8M0hhC+ZWS+AmwCsxZFyeleHEA692n4mw8FrOLb/0+d8h+SsNE8/Ls+H21Nkg62nwKc3mOe+Z0Wp8VdrY/stPcbfjRVpL5gdZrnSwfvLDbHNXBG/f66qawDi1y9r/3o+H8toUXmpW6818dTPrnXw1SZXNA5At9e6+3o80b+p155sX1e/vZb5b5c4BRkvd8bXN6hIuoja+NU2qfkgfvxUga9hh9Tdb8uyn395gW3+ghT+f/+bfkry9957Cck935jb2P4qgI+HEF4P4DwAHzazUwFcD2BrCGEdgK0N2XGco4TYyR9C2BNCeKTx9xCApwEcB+BKAFsam20BcNVsKek4zswzJZvfzNYCOBvANgDLQgh7gCNfEAC0WfEr79lkZg+b2cMVlCbaxHGceWDSfn4z6wTwXQAfCyEctrj6bA1CCJsBbAaAbuuNdBxv+OB2kt/evoPkR8oc51yUxmgrxJ4arrIfebH4/V8uSiB3p9isYzxe6WL1s8MSW85h2cjy4VCTXIC6xA2YrEEE8WNbXXPHZQ2gKjZ8myik+fjZKYZ5xPWJi9ufxuZrbkFW1wB4vJaLljUOX+P4J6LaGT1e69R1Dr4G7Z38QMul+TNY2sY3QXeGE0QWZnj8d9qfJfnJ93N/i75vRKo7JSb15DezLI5M/H8MIXyv8fI+M1vRGF8BoG/m1HIcZ7aJnfx25BF/I4CnQwh/M27oNgAbG39vBHDrzKvnOM5sMZn/+y4A8J8BPGFmjzVe+xSAzwP4tpldA2AngHfPjoqO48wGsZM/hPBzTBD23eDimVTmyc+cSfKdX3iB5PPbdpCsNv/xUnTvoDhxq1KHfrCT66cNDbGNXOtm+y19mI1KjQPPSbNAjSPPD4rfX2L/taZfrV1seo21l97yVlCftO5f1gzSmszOovYODKZrFNoXQY8XXZ9AZT3f2Nh97aPXLf/ITnDXlrubXxtPZYGcU47lbCf77bsKbPP3FjifYk0735O9YuO/If8SyXcPn0ryrs9yM4scHppI7deER/g5TkLxye84CcUnv+MklJbK58/f/iDJX/vI75L89tN2kLwkzfXPBmps4y/LHSZ5f5Gduos72P4aHpZef+3i9x+UuvES950dEj++uLWb68HJ9jmWUzUd5x2ky6xfvU0OKDa8xs7HEuPXD5hiLz3ZXz2vzQ/lfPX6yBqFrlk01d+b4NGmsRhKrT26jmFnB9v4Jr34Fhf4nmpP8xrByizno/RIYcgtL2wgecm/zpyNr/iT33ESik9+x0koPvkdJ6G0lM2v9HyU5a9991ySr1nIawQDdbbxK5Iff7idDb4dI5wr0LuAE/T7B3iNoLaYc6/TB9jGLi1kfQvS66+sfv+BaL9/qiI2d15tbM5dqGf0/VpvTvzwNfXjIxKNM9DY+1RF+yLIuNQnmGpNPl1D0TgKtfH185iI8iLWydJ8jvkFbJO3ZadWk29plu/J1+X2kvz1/reQvOLPeI1AVp1mFH/yO05C8cnvOAnFJ7/jJJSWtvmrzz5P8neeP5vkTevZB9qT4rjqfcbB98vzbJ/tHGWjUHv99YNt/lRe8uUhdeWlb1tQv3VM37dUVeMExO8vawA1rXGnof9a809sdl0j0Fh+pWlUXOK1Nj1BGZeainq8uubny6NJ/f4aN9G8PZrRdY1CtF+/Q3rtpcSvv6TAsSZp4/0tybDNn5XxHzx/GslrnvtFpD4ziT/5HSeh+OR3nITik99xEkpL2/zK6j/aSfIlWzaRfOe5f0dyMRyI3N/p3btJ/sUg10tbuWSA5N37e0iuLZXe6/s5uLy4iI8X5/dvytfvjPaD1ySWXcLIm/ziUiK+OfZ9iq35mv3+skZR1TWG6DUMXeOo5VnW66U2fUlb2U/waCsvifacL1jCNrz69U/u4Wp1yyV/5N8U9pF8mvj1r3rwAySf+Me/IVlXlWYTf/I7TkLxye84CcUnv+MklKPK5q8NsT0WHmE/fvpctgl70lyj70WxeRdKYX314XblNHeb35/Kak08Ho+ziYOYnzWxedNlif1vj7aptU69xu5XCzFrDHqCcXX6TfsKyPG074Dq0x6dy1DTegiqXpyff6JyA9JrT+vwt2X5Q9F8/UU5jiVRFkmNiabDPyr5IkPR288m/uR3nITik99xEopPfsdJKEeVza+s+uv7SD7/pGtJvveSL5Jcyb9M8hPF1SS/sYfjCB46tIbkE5fvJ/n53UtIDkt4jSDs5Xx7zS/Pc+o3ZEmiyc8d5NOyanSsu9V0kUIOIL0Bm+vc6xoBj6qNrcdTfZpyFzS3oRI93pTPL9dT9aku1SsKQGz45cs5liMjvfbO6OVYkG5ZR1rfwb0l1mZ4f5fd9TGST/4c37PziT/5HSeh+OR3nITik99xEspRbfMrvfdxsPvQRfzd1pXi4PessX3XJTXUtdd6XRzNmRyPV8sSi59j+1J231ynX2Lzq9yGACleUkAtblxq1DfF9osNrTZ9E7pEoPn6kmuQkjgGaZ3YlItQ6ZRxOR+ty6/o9Vb7HgAsw0qrjZ9NsdydKco4n5TWkDgcWMnF98tFbiH8ye84CcUnv+MkFJ/8jpNQLMTEb5vZ1wFcAaAvhHB647VeADcBWAtgB4CrQwiHXm0fr9BtvWGDXTxNlSfP7v9yPsl3fOQGkg/WeMnjgbETSR6ts5/+7v2vizzeM7uXkxzUhu4rkJgqT9GPruNqg4eYcdUnpk5/XH5/7PGmq4+Oa+y+1EysLpFFjVTzCaxaebDptfG8delzJGuvvd/teIbkpWm2+f/9V/6c5JU3zK1f/+5w8/YQwvrJbDuZJ/83AFwur10PYGsIYR2ArQ3ZcZyjiNjJH0L4GQD9urwSwJbG31sAXDXDejmOM8u8Vpt/WQhhDwA0fi+dOZUcx5kLZt3Pb2abAGwCgALaZ/twxPIH2Ed78x+9geQv/ewykk9Yt4fk/7DyUZJ782zfHSzx+RTa2D4cG2Gfb11qxFtdetPJeHpMe9dp3IDWvOPxVEnGxQ+uuQFxjwIJi0CQ3HikVNzUAAAHxklEQVSTNYx6PlrfakHG5XxrbdHXo1ZQvz6LufYJYvuFhXmO1c+LH//Wl84g+X//5kKS3//WH5O8fJsEc7Qwr/XJv8/MVgBA43ffq20YQtgcQlgfQliflcaSjuPMH6918t8GYGPj740Abp0ZdRzHmStiJ7+Z/TOA+wGcYma7zOwaAJ8HcKmZPQvg0obsOM5RRKyffyaZaz//lHnzmST+u69vjdz8+/vOiBz/9e5lJNc1vz6OaX40QR3r02XK+kzz+FM9nvj1j1/Z/yob/pa3L386cvynf7KBVdo2d730Xgsz7ed3HOcYxCe/4yQUn/yOk1COqXz+6ZJ5nuu13fAARzVfd94dJK/p4MDHl0a4qFxXF/uQx0qc292WZz/06BjHBXS2c0L78Ci7StslrkDfX5D9F8t8/GyGHfe1WvSzIJViv3u1yvUL8jn2kY8V5XwL0efbdD5yvhpHUZT95/Pxfv3jOgYjxzff/1aST32Ba/RFd/o7uvAnv+MkFJ/8jpNQfPI7TkJxm38c1T6uy//6v5Bw5DtZPKNzF8l7xrh34Iou7t2OLha1JiCkhp2ypGM4+v1SIy+OpvdPkdj3x5yPjmtcwqIO7qUY9/66xBXk080W+hndu5peG8+pn+XeDtX9B6J1OIrxJ7/jJBSf/I6TUHzyO05CcZs/gvpezlT+8jffJRuw2LmbY8tP+gDXe1vTznEBB8pstC7OsU2/pyhrCIXByPFleV5j2FfqJrk3xzb0UJVrCmY0YV+oSvO9NmkEMFDhRgGL83w+fSVe9Fia5970u8d6SF4u56vvXyzns3OU4yz2buaajADwrRXH8wvy+FvV93DTe45V/MnvOAnFJ7/jJBSf/I6TUDyffxZZtY1t+jd2vTit/dWm+V1d10YAUz7+dOMCZvZZo/o8Nsj2/MEL4vP5jzU8n99xnFh88jtOQvHJ7zgJxf38s8iLnzqF5AfP4Zp/K+9lP/VLl3Fw/vF3sB98x5+zjfudczeTvLfGfvAlafaz99d4/x0prhdQCdG3Q9Y4Vn6oznECPSmuX9An+izPcBzCf9r2JySf8AUOnHjpMn7/qrv5eu25gM9n6SN8Pmkkz+afCv7kd5yE4pPfcRKKT37HSShu888i6a3bSV4Z3QYAqx9gWSMw8vefT/KCDWyDt6cGSM7KHjqMY+WzNr0Yjx5ZM9D9tUvsf8HYpi88wDZ7eJB72a96MPr4Kx6IHnei8Se/4yQUn/yOk1B88jtOQnGb/yhi5Zc51/zK6nU8fjv3Hdh36UqSlzzIawJDJ3G+f34wuip9aQHfLl3Ps99+/7mcj7/sbtZn9ztZn5V/x+cj5RGcWcaf/I6TUHzyO05C8cnvOAllWvn8ZnY5gC8BSAP4+xDC56O2T1o+v+PMNXOSz29maQBfAfB7AE4F8Admdupr3Z/jOHPLdP7tfxOA50IIL4QQygD+BcCVM6OW4zizzXQm/3EAXhon72q85jjOUcB0/PwTFXRrWkAws00ANjXE0t3h5iencczZZjGAVm7O1ur6Aa2v47Gu35rJbjidyb8LwOpx8ioAu3WjEMJmAJsBwMwenuxixHzg+k2fVtfR9fst0/m3/yEA68zsBDPLAXgPgNtmRi3HcWab1/zkDyFUzewjONK4Og3g6yGEp2ZMM8dxZpVpxfaHEH4I4IdTeMvm+E3mFddv+rS6jq5fgzlt2uE4Tuvg4b2Ok1DmZPKb2eVm9isze87Mrp+LY8ZhZl83sz4ze3Lca71mdpeZPdv4vTBqH7Os32oz+4mZPW1mT5nZta2ko5kVzOxBM3u8od9ftpJ+4/RMm9mjZnZ7i+q3w8yeMLPHzOzhudRx1id/C4cBfwPA5fLa9QC2hhDWAdjakOeLKoCPhxBeD+A8AB9uXLdW0bEE4KIQwpkAzgJwuZmd10L6vcK1AJ4eJ7eafgDwthDCWeNcfHOjYwhhVn8AvBnAnePkTwL45Gwfd5K6rQXw5Dj5VwBWNP5eAeBX863jON1uBXBpK+oIoB3AIwA2tJJ+OBJ7shXARQBub8XPGMAOAIvltTnRcS7+7T+awoCXhRD2AEDj99J51gcAYGZrAZwNYBtaSMfGv9SPAegDcFcIoaX0A/BFANeBiwS1kn7AkajYH5nZ9kY0LDBHOs5FGa9JhQE7E2NmnQC+C+BjIYTDZtNrkz2ThBBqAM4ysx4At5jZ6fOt0yuY2RUA+kII283swvnWJ4ILQgi7zWwpgLvM7Jm5OvBcPPknFQbcIuwzsxUA0PjdN5/KmFkWRyb+P4YQvtd4uaV0BIAQwgCAe3BkDaVV9LsAwLvMbAeOZJxeZGbfaiH9AAAhhN2N330AbsGRbNk50XEuJv/RFAZ8G4CNjb834oidPS/YkUf8jQCeDiH8zbihltDRzJY0nvgwszYAlwB4plX0CyF8MoSwKoSwFkfuuR+HEP6wVfQDADPrMLOuV/4GcBmAJzFXOs7RosY7APwawPMA/ut8LrCM0+mfAewBUMGR/06uAbAIRxaInm387p1H/d6CI+bRLwA81vh5R6voCOAMAI829HsSwKcbr7eEfqLrhfjtgl/L6AfgRACPN36eemVuzJWOHuHnOAnFI/wcJ6H45HechOKT33ESik9+x0koPvkdJ6H45HechOKT33ESik9+x0ko/w8pBv3ypVoS2QAAAABJRU5ErkJggg==\n", + "image/png": "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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "VERITAS: nearest_interpolation\n", - "82.9 µs ± 842 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "HESS-I - RebinMapper:\n", + "Initialization time: \n", + "338 ms ± 9.25 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "29.2 µs ± 634 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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2/lRSuGuu+7Chg0b8NJLL6GwsLBTvDfOSTxKKQQCgV47H5deeil27NiB7du3x77Gjx+PW265Bdu3b8dZZ53VK+flWIFAAO+//z7y8/N77fvk4osv7nKr/gcffBB72npvnRcAWL16NQYNGoQrrrgitszx+TjpktUEOnqr7apVq9R7772n5s2bpzIzM9WePXtO9dCMaG5uVu+884565513FAC1dOlS9c4778RuNX7ggQdUbm6u2rBhg9qxY4e66aabTuvbwL75zW+q3NxctXnz5k63g7W1tcXW6W1zsmDBAvXKK6+oqqoq9e6776of/OAHyuVyqU2bNimlet98SI6920Wp3jcv3/3ud9XmzZvV7t271euvv66++MUvquzs7Nj30t42H0p9fBu22+1WP/3pT9WuXbvU448/rjIyMtRjjz0WW6c3zkskElFDhgxR9957b5eYk/ORVMmHUko99NBDaujQoSo1NVV9+tOfjt1W2Ru8/PLLCkCXr1mzZimlPr4VbNGiRcrn8ymv16s+97nPqR07dpzaQTso3lwAUKtXr46t09vmZPbs2bHPx8CBA9Wll14aSzyU6n3zIflk8tHb5uVoPwaPx6MKCgrUzJkzVWVlZSze2+bjqD//+c9q9OjRyuv1qnPPPVetXLmyU7w3zssLL7ygAKidO3d2iTk5H5ZSSp389RMiIiKiE5M0NR9ERETUOzD5ICIiIqOYfBAREZFRTD6IiIjIKCYfREREZBSTDyIiIjKKyQcREREZxeSDiIiIjGLyQUREREYx+SAiIiKjmHwQERGRUf8P0IbR1rD7pNIAAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "VERITAS: bilinear_interpolation\n", - "87 µs ± 892 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "HESS-II - RebinMapper:\n", + "Initialization time: \n", + "752 ms ± 6.74 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "Mapping time: \n", + "38.6 µs ± 355 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGxCAYAAABIjE2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABbC0lEQVR4nO3dd5hV1bk/8O8+dfoMRWYYaYNiLGg0YIxIAgmKsUfutRfU3FwbKkFjJCSXQREUI5J7k6B4FUyUaG6CLSYKNtRgLCgWTLDQlXGA6e3U9fvDnyfZ+104mzO7zfj9PA/Pw16zzjlr9imzzl7vu15DKaVAREREFCAhvwdAREREZMUJChEREQUOJyhEREQUOJygEBERUeBwgkJERESBwwkKERERBQ4nKERERBQ4nKAQERFR4HCCQkRERIHDCQqRDcuWLYNhGHj99de1Pz/55JMxYsQIU9uIESNgGIb238SJE019X3nlFZx++ukYNmwY4vE4KisrcfTRR+Paa6819UulUrjrrrtw5JFHon///igqKsLw4cNx2mmn4eGHH7b1uxiGgWnTpuWON2/eDMMw8POf/9zW7e266KKLTL9zLBbDfvvth+uuuw4tLS1532dJSYmtviNGjMBFF12U9+MYhoHS0lK0tbWJn2/ZsgWhUAiGYaC2tjavxyCiLxbxewBEfdkxxxyj/cNfVlaW+/8TTzyBU089FRMnTsSCBQswePBg7NixA6+//joefPBB3H777bm+F1xwAVasWIHp06djzpw5iMfj2LhxI5588kk89dRTOP300z35vewqLCzEs88+CwBoamrCH/7wB9x+++14++23sXLlSlcf++GHHzad570VjUaRTqfx0EMP4fvf/77pZ0uXLkVpaWneEy0i6h4nKEQuqqiowDe+8Y0v7LNgwQLU1NTgqaeeQiTyz7fk2WefjQULFuSON23ahIceegj/9V//hTlz5uTaJ02ahB/84AfIZrPO/wI9FAqFTL//d7/7XWzcuBGrVq3Cpk2bUFNT49pjH3HEET26fSwWwymnnIJ7773XNEFRSmHZsmU466yzcPfdd/d0mIHR0dGBoqIiv4dBlMMlHiKf7d69GwMHDjRNTj4XCoVM/QBg8ODB2vv5175BNnbsWADAp59+amp/6KGHcPTRR6O4uBglJSU4/vjj8eabb2rvY/369Zg0aRKKi4uxzz77YNq0aejo6DD1sS7xPP/88zAMA7/73e8wa9YsVFdXo6ysDMceeyw2bNigfZxLLrkEa9asMf386aefxpYtW3DxxReL/jt37sQVV1yBgw8+GCUlJRg0aBC+853v4MUXXzT1+3xZbcGCBbj55psxbNgwFBQUYOzYsXjmmWdMfWtra2EYBt58801MmTIFZWVlKC8vx/nnn4+dO3eKMdg5j58vlb3zzjuYPHkySktLMWnSJO05IPJL7/hEIwqITCaDdDot/u2pKLhSqtv+Rx99NF555RVcffXVeOWVV5BKpbT3ddBBB6GiogJz5szBkiVLsHnzZjd+Rddt2rQJkUgEI0eOzLXNmzcP55xzDg4++GD8/ve/x29/+1u0trbim9/8Jt577z3T7VOpFE488URMmjQJjzzyCKZNm4a77roLZ511lq3H/8lPfoItW7bgf//3f7FkyRJ88MEHOOWUU5DJZETfY489FsOHD8e9996ba7vnnnvwrW99C6NGjRL9GxoaAACzZ8/GE088gaVLl2LkyJGYOHEinn/+edH/l7/8JZ588kksWrQI999/P0KhEE444QS8/PLLou/pp5+O/fffH3/4wx9QW1uLRx55BMcff7zp9bI35zGZTOLUU0/Fd77zHTz66KOmq3JEgaCIqFtLly5VAL7w3/Dhw023GT58+B773nTTTbl+u3btUuPHj8/9LBqNqnHjxqn58+er1tZW030+8cQTauDAgbm+AwYMUGeccYZ67LHHbP8uANSVV16ZO960aZMCoG677bb8Ts4eTJ06VRUXF6tUKqVSqZTatWuXWrx4sQqFQuonP/lJrt/WrVtVJBJRV111len2ra2tqqqqSp155pmm+wSgfvGLX5j63nzzzQqAeumll3Jtw4cPV1OnTs0dP/fccwqAOvHEE023/f3vf68AqJdfflmMXSmlZs+eraqqqlQqlVK7d+9W8XhcLVu2TO3cuVMBULNnz97jOUin0yqVSqlJkyap008/Pdf++Tmvrq5WnZ2dufaWlhbVv39/deyxx+baZs+erQCoH/7wh6b7fuCBBxQAdf/99+d9Hu+99949jp3Ib7yCQrQXfvOb3+C1114T/8aPH6/tP378eG3/f41pGDBgAF588UW89tpruOWWW3Daaafh/fffx8yZM3HooYdi165dub4nnngitm7diocffhjXXXcdDjnk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79tGbURERER7wlo8REREFDicoBAREVHgcIJCREREgcMJChEREQUOJyhEREQUOL1ygvLrX/8aNTU1KCgowJgxY/Diiy/6PaQ+Z/78+TjyyCNRWlqKQYMG4Xvf+x42bNhg6qOUQm1tLaqrq1FYWIiJEydi/fr1Po2475o/fz4Mw8D06dNzbTz37vr4449x/vnnY8CAASgqKsLhhx+OtWvX5n7O8++OdDqNn/70p6ipqUFhYSFGjhyJG2+8EdlsNteH5945L7zwAk455RRUV1fDMAw88sgjpp/bOdeJRAJXXXUVBg4ciOLiYpx66qnYvn27MwNUvcyDDz6ootGouvvuu9V7772nrrnmGlVcXKy2bNni99D6lOOPP14tXbpUvfvuu2rdunXqpJNOUsOGDVNtbW25PrfccosqLS1Vf/zjH9U777yjzjrrLDV48GDV0tLi48j7lldffVWNGDFCHXbYYeqaa67JtfPcu6ehoUENHz5cXXTRReqVV15RmzZtUk8//bT68MMPc314/t0xd+5cNWDAAPWnP/1Jbdq0Sf3f//2fKikpUYsWLcr14bl3zp///Gc1a9Ys9cc//lEBUA8//LDp53bO9WWXXab23XdftWrVKvXGG2+ob3/72+qrX/2qSqfTPR5fr5ugfP3rX1eXXXaZqe3AAw9UN9xwg08j+nKor69XANTq1auVUkpls1lVVVWlbrnlllyfrq4uVV5eru68806/htmntLa2qlGjRqlVq1apCRMm5CYoPPfu+vGPf6zGjx+/x5/z/LvnpJNOUpdccompbcqUKer8889XSvHcu8k6QbFzrpuamlQ0GlUPPvhgrs/HH3+sQqGQevLJJ3s8pl61xJNMJrF27VpMnjzZ1D558mSsWbPGp1F9OTQ3NwMA+vfvDwDYtGkT6urqTM9FPB7HhAkT+Fw45Morr8RJJ52EY4891tTOc++uxx57DGPHjsUZZ5yBQYMG4YgjjsDdd9+d+znPv3vGjx+PZ555Bu+//z4A4K233sJLL72EE088EQDPvZfsnOu1a9cilUqZ+lRXV2P06NGOPB++bXWfj127diGTyYiKx5WVlaIyMjlHKYUZM2Zg/PjxGD16NADkzrfuudiyZYvnY+xrHnzwQbzxxht47bXXxM947t21ceNGLF68GDNmzMBPfvITvPrqq7j66qsRj8dx4YUX8vy76Mc//jGam5tx4IEHIhwOI5PJ4Oabb8Y555wDgK99L9k513V1dYjFYujXr5/o48Tf5F41QfmcYRimY6WUaCPnTJs2DW+//TZeeukl8TM+F87btm0brrnmGqxcuRIFBQV77Mdz745sNouxY8di3rx5AIAjjjgC69evx+LFi3HhhRfm+vH8O++hhx7C/fffj+XLl+OQQw7BunXrMH36dFRXV2Pq1Km5fjz33snnXDv1fPSqJZ6BAwciHA6LmVl9fb2Y5ZEzrrrqKjz22GN47rnnMGTIkFx7VVUVAPC5cMHatWtRX1+PMWPGIBKJIBKJYPXq1fjv//5vRCKR3PnluXfH4MGDcfDBB5vaDjroIGzduhUAX/tu+tGPfoQbbrgBZ599Ng499FBccMEF+OEPf4j58+cD4Ln3kp1zXVVVhWQyicbGxj326YleNUGJxWIYM2YMVq1aZWpftWoVxo0b59Oo+ialFKZNm4YVK1bg2WefRU1NjennNTU1qKqqMj0XyWQSq1ev5nPRQ5MmTcI777yDdevW5f6NHTsW5513HtatW4eRI0fy3LvomGOOESn177//fq7SOl/77uno6EAoZP6zFA6Hc2nGPPfesXOux4wZg2g0auqzY8cOvPvuu848Hz0Os/XY52nG99xzj3rvvffU9OnTVXFxsdq8ebPfQ+tTLr/8clVeXq6ef/55tWPHjty/jo6OXJ9bbrlFlZeXqxUrVqh33nlHnXPOOUz3c8m/ZvEoxXPvpldffVVFIhF18803qw8++EA98MADqqioSN1///25Pjz/7pg6darad999c2nGK1asUAMHDlTXX399rg/PvXNaW1vVm2++qd58800FQC1cuFC9+eabuW077Jzryy67TA0ZMkQ9/fTT6o033lDf+c53vrxpxkop9atf/UoNHz5cxWIx9bWvfS2X+krOAaD9t3Tp0lyfbDarZs+eraqqqlQ8Hlff+ta31DvvvOPfoPsw6wSF595djz/+uBo9erSKx+PqwAMPVEuWLDH9nOffHS0tLeqaa65Rw4YNUwUFBWrkyJFq1qxZKpFI5Prw3Dvnueee037OT506VSll71x3dnaqadOmqf79+6vCwkJ18sknq61btzoyPkMppXp+HYaIiIjIOb0qBoWIiIi+HDhBISIiosDhBIWIiIgChxMUIiIiChxOUIiIiChwOEEhIiKiwOEEhYiIiAKHExQiIiIKHE5QiIiIKHA4QSEiIqLA4QSFiIiIAuf/AZ9sy/u4FzxeAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "VERITAS: bicubic_interpolation\n", - "101 µs ± 2.02 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "LSTCam - NearestNeighborMapper:\n", + "Initialization time: \n", + "138 ms ± 473 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "30.3 µs ± 573 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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hw4dAvDrtf2W2fuiN2LECIwfPx4vvPAC7rvvPoSFhZnW++ijj3D69GksWbLE80QRALZu3Wpa32wuj/569OX6spCQELRo0QLBwcEIDAzE73//e4wfP970fL/N+APkrp38D5+gUKMy+wUM/PpXfUFBgeevRVkPP/wwIiIiPOuk6AkhPGnGdb/U9P9I/e1vf6vXOa1q164d+vbt6/m64IIL6t3GPffc48m4cbvdmu9dd911OH78OGprazXn0Z9PxX2QPddvBQYGol+/fp6/yjdv3qzph9kTLDNXXXUVBg8ejOeeew6nTp0y9EsIgcLCQtN+de/e/azt1g3W3n//fU25WbZNfX311Veaf9Rra2vx/vvvo0OHDkhKSgLwaxiobvD4W2+//TbCw8OlJ4L/VlhYGJ5++mkMHz4cDzzwwFnrmX0mhBCYN2+eaf2ysjJ8/PHHmrJFixYhICAAl19+uaZ8yZIlmqeLZWVl+OSTT3DZZZchMDAQ4eHhuOKKK7Blyxb06NHD9H3TD3qoaeITFPK5r7/+2rPC628NHToUzz//PL777jvcdtttnjTQ3NxcvPbaazh+/Dheeumlep0rLS0Nixcv9rRXt1Ab8GtmwPz58yGEwE033YSMjAx06NABjz/+OIQQiI6OxieffILly5eruOwGERgYiOnTp+Omm24C8OuchzojR47Ee++9h6FDh2LixIm4+OKLERwcjIMHD+Kbb77BDTfcgJtuugmZmZlo1aoV7r//fjzzzDMIDg7Ge++9hx9++EG6H7Lnev311/H1119j2LBhSElJwZkzZzypr1dddRWAX5+2pKamYunSpRg0aBCio6PRunXrc650+uKLL6JPnz4oLi5G165dPeX9+/fHH/7wB9x9993YuHEjLr/8ckRERODw4cNYvXo1unfvftZ/qK+55hr0798fjzzyCEpLS9GnTx+sXbsWb7/9NoD6p8D/VuvWrXHllVfiqaeeQkREBObMmYOff/5ZM/h55pln8Omnn+KKK67A008/jejoaLz33nv47LPPMHPmTNM0ehmTJk3CpEmTzlln8ODBCAkJwe23347JkyfjzJkzmDt3Lk6cOGFaPyYmBg888ADy8/PRqVMnfP7555g3bx4eeOABpKSkaOoGBgZi8ODBmDRpEtxuN1588UWUlpZqsnNeeeUVDBgwAJdddhkeeOABtGvXDmVl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O++8UwjB+6yKfoAic19PnjwpgoODxeLFiz11CgsLRUBAgPjiiy8arO/ny69CPFVVVdi0aROGDBmiKR8yZAjWrFnTSL1qekpKSgAA0dHRAIDc3FwUFRVp7rvT6cTAgQN53y0YP348hg0bhquuukpTzvusxscff4y+ffvilltuQWxsLHr37o158+Z5vs/7rMaAAQPw1VdfYffu3QCAH374AatXr8bQoUMB8D77isx93bRpE6qrqzV1EhMT0a1bN7+694221L0Vx44dQ21trWHH47i4OMPOyGSNEAKTJk3CgAED0K1bNwDw3Fuz+56Xl9fgffRnixcvxubNm7FhwwbD93if1di/fz/mzp2LSZMm4YknnsD69evx0EMPwel04q677uJ9VuSxxx5DSUkJMjIyEBgYiNraWjz//PO4/fbbAfDz7Csy97WoqAghISFo1aqVoY4//VvpVwOUOg6HQ3MshDCUkTUTJkzAjz/+iNWrVxu+x/t+fgoKCjBx4kQsW7YMoaGhZ63H+3x+3G43+vbti+nTpwMAevfujR07dmDu3Lm46667PPV4n8/P+++/j3fffReLFi1C165dsXXrVmRnZyMxMRGjR4/21ON99g0r99Xf7r1fhXhat26NwMBAwwiwuLjYMJqk+nvwwQfx8ccf45tvvkFSUpKnPD4+HgB438/Tpk2bUFxcjD59+iAoKAhBQUFYuXIl/vKXvyAoKMhzL3mfz09CQgK6dOmiKevcuTPy8/MB8POsyqOPPorHH38cI0eORPfu3fH73/8eDz/8MGbMmAGA99lXZO5rfHw8qqqqcOLEibPW8Qd+NUAJCQlBnz59sHz5ck358uXLkZmZ2Ui98n9CCEyYMAFLlizB119/jbS0NM3309LSEB8fr7nvVVVVWLlyJe97PQwaNAjbtm3D1q1bPV99+/bFHXfcga1bt6J9+/a8zwr079/fkCa/e/duz07p/DyrUV5ejoAA7T8hgYGBnjRj3mffkLmvffr0QXBwsKbO4cOHsX37dv+69402PdeiujTjN998U+zcuVNkZ2eLiIgIceDAgcbumt964IEHhMvlEitWrBCHDx/2fJWXl3vqvPDCC8LlcoklS5aIbdu2idtvv53pggr8NotHCN5nFdavXy+CgoLE888/L/bs2SPee+89ER4eLt59911PHd7n8zd69GjRtm1bT5rxkiVLROvWrcXkyZM9dXifrSkrKxNbtmwRW7ZsEQDErFmzxJYtWzzLacjc1/vvv18kJSWJL7/8UmzevFlceeWVTDNuCH/9619FamqqCAkJERdeeKEnHZasAWD69dZbb3nquN1u8cwzz4j4+HjhdDrF5ZdfLrZt29Z4nW4i9AMU3mc1PvnkE9GtWzfhdDpFRkaGeOONNzTf530+f6WlpWLixIkiJSVFhIaGivbt24upU6eKyspKTx3eZ2u++eYb09/Jo0ePFkLI3deKigoxYcIEER0dLcLCwsR1110n8vPzG+FqrHMIIUTjPLshIiIiMudXc1CIiIioeeAAhYiIiGyHAxQiIiKyHQ5QiIiIyHY4QCEiIiLb4QCFiIiIbIcDFCIiIrIdDlCIiIjIdjhAISIiItvhAIWIiIhshwMUIiIisp3/D7iKTOTkcYCPAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "VERITAS: image_shifting\n", - "81.2 µs ± 1.09 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "FlashCam - NearestNeighborMapper:\n", + "Initialization time: \n", + "137 ms ± 550 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "30.6 µs ± 803 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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J/eyKd7vRhXiad26Nfx+v6WXuG/fPkuPk/Tdf//9eP311/HOO++gffv20f2ZmZkAwPvt0KZNm7Bv3z706NEDgUAAgUAAa9aswe9+9zsEAoHoPeT9da5t27bo3LmzaV+nTp2wa9cuAPwMu+Ghhx7CI488ghtvvBHnnnsubr31Vvzyl79EcXExAN5jN+ncy8zMTFRXV+PgwYMnLNNUNKoOSkJCAnr06IGVK1ea9q9cuRJ9+vRpoFY1XkII3HfffViyZAlWr16NvLw80+t5eXnIzMw03e/q6mqsWbOG91vDgAED8Omnn2LLli3Rn549e+Lmm2/Gli1b0LFjR97fU9S3b19LavwXX3wRXRWdn+FTV15eDp/P/F+F3++PphnzHrtH51726NEDwWDQVObbb7/FZ5991vTud4MNz3WoLs149uzZ4vPPPxejR48WKSkpYseOHQ3dtEbnnnvuEWlpaeLdd98V3377bfSnvLw8WubJJ58UaWlpYsmSJeLTTz8VN910E9MHT8HxWTxC8P6eqg0bNohAICAmT54svvzyS/Hiiy+K5ORksWDBgmgZ3uNTM3z4cNGuXbtomvGSJUtE69atxdixY6NleI/1HT58WGzevFls3rxZABDTpk0Tmzdvjk6VoXMv7777btG+fXuxatUq8dFHH4lLLrmEacZe8Yc//EHk5OSIhIQEcf7550fTYik2AJQ/c+fOjZaJRCJi/PjxIjMzU4RCIXHRRReJTz/9tOEa3cjJHRTe31P3xhtviC5duohQKCTOPvtsMXPmTNPrvMenpqysTDz44IOiQ4cOIjExUXTs2FEUFhaKqqqqaBneY33vvPOO8vfu8OHDhRB697KiokLcd999Ij09XSQlJYnBgweLXbt2NcDVxJchhBAN8+yGiIiISK1RjUEhIiKi0wM7KEREROQ57KAQERGR57CDQkRERJ7DDgoRERF5DjsoRERE5DnsoBAREZHnsINCREREnsMOChEREXkOOyhERETkOeygEBERkef8Pz5+pW1WztwEAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "VERITAS: axial_addressing\n", - "79.9 µs ± 797 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "NectarCam - NearestNeighborMapper:\n", + "Initialization time: \n", + "140 ms ± 411 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "32.3 µs ± 1.8 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGxCAYAAABIjE2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABSFUlEQVR4nO3de1hVVf4/8PcBzjlcRAQVEDPForS8ZGpOZoGlNqbdfKopKzWrKc3KrEyzflFjeGnGsemiU9OokzE2lln2NdMuWj5aqak5VpaJSCqRCuegInA46/dHX863vfays9muAxt4v57Hp84+a6994QCL/Vmf9XEJIQSIiIiIHCSqoU+AiIiISMYBChERETkOByhERETkOBygEBERkeNwgEJERESOwwEKEREROQ4HKEREROQ4HKAQERGR43CAQkRERI7DAQpZsnDhQrhcLsTGxqKwsND0fk5ODrp16xax469cuRK5ubkR6x8AgsEgXn31VQwaNAht2rSB2+1Gamoqhg8fjhUrViAYDEb0+JHicrngcrkwc+ZM03u1X9fNmzc3wJnp9VufkU6dOsHlcuHuu+82vbd27Vq4XC688cYbdT7m3r174XK5sHDhwjrvC/zytZkwYULYdrm5uXC5XDh06JCt49RVTk4OXC4XOnfuDNVi45988knoc2X32onC4QCF6qSyshKPPfZYvR935cqVePLJJyPW/4kTJ3DFFVdg9OjRSE1Nxbx58/DRRx9h/vz5yMjIwPXXX48VK1ZE7Pj1YebMmThy5EhDn0bEWPmMvPLKK9i1a5e2Y7Zr1w4bN27EsGHDtPXpFImJiSgoKMBHH31keu+f//wnWrZs2QBnRc0JByhUJ7///e+Rn5+P7du3N/SpaHH8+HEAwKRJk/D+++9j4cKFyM/Px/XXX4+LL74YI0aMwEsvvYQdO3YgMzOzgc/WvkGDBuHYsWN4+umnG/pUAAA1NTWorKys12NeeOGFSEhIwKOPPqqtT6/Xi9/97ndo27attj4bUu33AwCcfvrp+N3vfod//vOfhjbl5eVYunQp/vCHP9T36UXUr6+dnIEDFKqTyZMno3Xr1njkkUfCthVC4MUXX8R5552HuLg4JCcn47rrrsOePXtMbVetWoXLLrsMSUlJiI+PR9euXTFjxgwAwJgxY/DCCy8A+L9whcvlwt69ewEAL7zwAi655BKkpqYiISEB3bt3x+zZs1FdXW04Rm0Y6pNPPkH//v0RHx+PsWPHori4GP/4xz9w+eWXY9SoUcprycrKQo8ePQD88rTlwQcfxHnnnYekpCSkpKTgwgsvxNtvv23ar/YR/oIFC3D22WcjLi4Offr0wWeffQYhBJ555hlkZmaiRYsWuPTSS7F79+6w99WOs88+G7fffjteeOEFZYhOtnnzZlx11VVISUlBbGwsevXqhf/85z+GNj///DPGjx+Pc845By1atEBqaiouvfRSfPrpp4Z2tWGQ2bNnY/r06cjMzITX68XHH39s+VjHjx/HQw89hMzMTMTGxiIlJQV9+vTBv//9bwDhPyMAkJKSgilTpmDZsmX47LPPwt6D77//HiNHjkRqaiq8Xi+6du0aOoZ8bXKY4+2330aPHj3g9XrRuXNnPPvss6Ewjcqrr76Krl27Ij4+Hj179sS7776rbFdUVIQRI0agZcuWSEpKwi233IKff/7Z0CYYDGL27Nno0qULvF4vUlNTMWrUKPz444+Gdif7fvi1sWPHYtmyZSgrKwttW7JkCQDgxhtvNJ3f7t27cdtttyErKwvx8fFo3749rrzySuzYscPQrjastnjxYkyaNAnp6emIi4tDdnY2tm7damg7ZswYtGjRAjt37sRll12GhIQEtG3bFhMmTDANKqz+zLFy7eQAgsiCBQsWCABi06ZN4tlnnxUAxIcffhh6Pzs7W5x77rmGfe68807hdrvFgw8+KFatWiXy8/NFly5dRFpamiguLg61+8c//iFcLpfIyckR+fn54oMPPhAvvviiGD9+vBBCiN27d4vrrrtOABAbN24M/Ttx4oQQQogHHnhAzJs3T6xatUp89NFH4q9//ato06aNuO222wznk52dLVJSUkSHDh3Ec889Jz7++GOxbt06kZ+fLwCIefPmWboXZWVlYsyYMeLVV18VH330kVi1apV46KGHRFRUlFi0aJGhLQDRsWNH0b9/f7Fs2TLx1ltvibPOOkukpKSIBx54QFx99dXi3XffFa+99ppIS0sTPXr0EMFg0PoXxgIA4p577hEHDx4U8fHx4tZbbw299+uva62PPvpIeDwecfHFF4vXX39drFq1SowZM0YAEAsWLAi1+/bbb8W4cePEkiVLxNq1a8W7774rbr/9dhEVFSU+/vjjULuCggIBQLRv314MHDhQvPHG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zpw5uP3223HHHXega9eumDt3Ljp06IB58+Y11CkRERGRQzTIJNmqqips2bIFU6ZMMWwfMmQINmzYYGpfWVmJysrK0GufzwcACKAaEJE9VyIiItIjgGoAgBDhf3k3yADl0KFDqKmpQVpammF7WloaiouLTe1nzJiBJ5980rR9PVZG7ByJiIgoMsrLy5GUlPSbbRo0zdjlchleCyFM2wBg6tSpmDRpUuh1WVkZOnbsiH379oW9QDo1fr8fHTp0QFFREVq2bNnQp9Nk8T7XD97n+sH7XD8a430WQqC8vBwZGRlh2zbIAKVNmzaIjo42PS0pKSkxPVUBAK/XC6/Xa9qelJTUaL4ojV3Lli15r+sB73P94H2uH7zP9aOx3WerDxYaZJKsx+NB7969sWbNGsP2NWvWoH///g1xSkREROQgDRbimTRpEm699Vb06dMHF154IV566SXs27cPd999d0OdEhERETlEgw1Q/vCHP+Dw4cN46qmncPDgQXTr1g0rV65Ex44dw+7r9XrxxBNPKMM+pBfvdf3gfa4fvM/1g/e5fjT1++wSVnJ9iIiIiOoRa/EQERGR43CAQkRERI7DAQoRERE5DgcoRERE5DgcoBAREZHjNMoByosvvojMzEzExsaid+/e+PTTTxv6lBq1GTNmoG/fvkhMTERqaiquueYa7Nq1y9BGCIHc3FxkZGQgLi4OOTk52LlzZwOdcdMwY8YMuFwuTJw4MbSN91mP/fv345ZbbkHr1q0RHx+P8847D1u2bAm9z/t86gKBAB577DFkZmYiLi4OnTt3xlNPPYVgMBhqw/tszyeffIIrr7wSGRkZcLlcWL58ueF9K/e1srIS9957L9q0aYOEhARcddVV+PHHH+vxKjQQjcySJUuE2+0WL7/8svj666/F/fffLxISEkRhYWFDn1qjdfnll4sFCxaI//73v2Lbtm1i2LBh4vTTTxdHjx4NtZk5c6ZITEwUb775ptixY4f4wx/+INq1ayf8fn8Dnnnj9cUXX4hOnTqJHj16iPvvvz+0nff51B05ckR07NhRjBkzRnz++eeioKBAfPDBB2L37t2hNrzPp2769OmidevW4t133xUFBQVi6dKlokWLFmLu3LmhNrzP9qxcuVJMmzZNvPnmmwKAeOuttwzvW7mvd999t2jfvr1Ys2aN+PLLL8XAgQNFz549RSAQqOersa/RDVAuuOACcffddxu2denSRUyZMqWBzqjpKSkpEQDEunXrhBBCBINBkZ6eLmbOnBlqc+LECZGUlCTmz5/fUKfZaJWXl4usrCyxZs0akZ2dHRqg8D7r8cgjj4gBAwac9H3eZz2GDRsmxo4da9g2YsQIccsttwgheJ91kQcoVu5rWVmZcLvdYsmSJaE2+/fvF1FRUWLVqlX1du6nqlGFeKqqqrBlyxYMGTLEsH3IkCHYsGFDA51V0+Pz+QAAKSkpAICCggIUFxcb7rvX60V2djbvuw333HMPhg0bhkGDBhm28z7r8c4776BPnz64/vrrkZqail69euHll18Ovc/7rMeAAQPw4Ycf4rvvvgMAbN++HevXr8cVV1wBgPc5Uqzc1y1btqC6utrQJiMjA926dWtU977Blrq349ChQ6ipqTFVPE5LSzNVRiZ7hBCYNGkSBgwYgG7dugFA6N6q7nthYWG9n2NjtmTJEnz55ZfYtGmT6T3eZz327NmDefPmYdKkSXj00UfxxRdf4L777oPX68WoUaN4nzV55JFH4PP50KVLF0RHR6OmpgZPP/00brrpJgD8PEeKlftaXFwMj8eD5ORkU5vG9LuyUQ1QarlcLsNrIYRpG9kzYcIEfPXVV1i/fr3pPd73U1NUVIT7778fq1evRmxs7Enb8T6fmmAwiD59+iAvLw8A0KtXL+zcuRPz5s3DqFGjQu14n0/N66+/jsWLFyM/Px/nnnsutm3bhokTJyIjIwOjR48OteN9jgw797Wx3ftGFeJp06YNoqOjTSPAkpIS02iS6u7ee+/FO++8g48//hinnXZaaHt6ejoA8L6foi1btqCkpAS9e/dGTEwMYmJisG7dOvztb39DTExM6F7yPp+adu3a4ZxzzjFs69q1K/bt2weAn2ddHn74YUyZMgU33ngjunfvjltvvRUPPPAAZsyYAYD3OVKs3Nf09HRUVVWhtLT0pG0ag0Y1QPF4POjduzfWrFlj2L5mzRr079+/gc6q8RNCYMKECVi2bBk++ugjZGZmGt7PzMxEenq64b5XVVVh3bp1vO91cNlll2HHjh3Ytm1b6F+fPn1w8803Y9u2bejcuTPvswYXXXSRKU3+u+++C1VK5+dZj+PHjyMqyvgrJDo6OpRmzPscGVbua+/eveF2uw1tDh48iP/+97+N69432PRcm2rTjF955RXx9ddfi4kTJ4qEhASxd+/ehj61RmvcuHEiKSlJrF27Vhw8eDD07/jx46E2M2fOFElJSWLZsmVix44d4qabbmK6oAa/zuIRgvdZhy+++ELExMSIp59+Wnz//ffitddeE/Hx8WLx4sWhNrzPp2706NGiffv2oTTjZcuWiTZt2ojJkyeH2vA+21NeXi62bt0qtm7dKgCIOXPmiK1bt4aW07ByX++++25x2mmniQ8++EB8+eWX4tJLL2WacX144YUXRMeOHYXH4xHnn39+KB2W7AGg/LdgwYJQm2AwKJ544gmRnp4uvF6vuOSSS8SOHTsa7qSbCHmAwvusx4oVK0S3bt2E1+sVXbp0ES+99JLhfd7nU+f3+8X9998vTj/9dBEbGys6d+4spk2bJiorK0NteJ/t+fjjj5U/k0ePHi2EsHZfKyoqxIQJE0RKSoqIi4sTw4cPF/v27WuAq7HPJYQQDfPshoiIiEitUc1BISIiouaBAxQiIiJyHA5QiIiIyHE4QCEiIiLH4QCFiIiIHIcDFCIiInIcDlCIiIjIcThAISIiIsfhAIWIiIgchwMUIiIichwOUIiIiMhx/j9gR3y5Hym+gwAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "MAGICCam: oversampling\n", - "87.4 µs ± 574 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "DigiCam - NearestNeighborMapper:\n", + "Initialization time: \n", + "79.8 ms ± 152 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "28.2 µs ± 553 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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jh2WvwytZGZmYsqUKZg/fz5uv/128bji4+O19Ts//b6Vdu3aRXVmVSsqKorpGCXSNoqKiiKf/+r/fvfdd1rdt99+C6fTibZt20aN28nLmThxIv70pz9hy5YteOaZZyzrnn76aWRnZ2P16tVR2/3p59XO8/npc/m52l/84hcA/vuePPLII5adcDUngLXNCqKmh5MPqld79uzBHXfcAb/fj0mTJlnWnX322QCA1atXR+V3PP/881rXhOTee+/F5ZdfjltuuQVLly7VfigdOXIE69evR15eXuR7Xq838n2lFJYuXRrTc6utvn371nkbc+fOxfPPPx/pOPmpCy+8EK+99hq6deum/aL6KYfDAbfbDZfLFRkrKyvDX/7yF9vHYXdfP5WYmIjzzz8flZWVuPjii7F161Z07tw58n7YbaO96667sGTJEtx9993icc2bNw/t2rVDdna27ecDADk5OXj44Yexbdu2qEsvNbs4auPZZ5/F1KlTI5/B3bt3Y/369ZGFnCeddBI6dOiAlStX4o477ojUHT16FH/9618jHTCxOuOMMzBx4kQUFxfjkksusaxzOBzweDxRf3+KiorEbhcAePPNN/H9999HJgWhUAirV69Gt27d0LFjx6jaZ555Juoyyfr167F7925cd911AIBhw4YhJSUF27Ztq3VgHDVfnHxQrX3++eeR67T79+/Hu+++i+XLl8PlcuHFF1/ECSecYPnY3r17Y+zYsfj9738Pl8uFX/7yl9i6dSt+//vfw+/3R13/llx22WW49957cf/99+OLL77Atddei27duqG0tBQffPABnnjiCYwZMwZ5eXk477zz4PF4MHbsWEybNg3l5eVYvHixdjq7KcvOzsbvfvc7seV0zpw5KCwsxNChQ3HLLbfgpJNOQnl5OXbt2oXXXnsNf/zjH9GxY0eMHDkSCxcuxLhx43D99dfjwIEDePjhh6MmZT/H7r5++9vfIj4+HsOGDUNmZiaKiopQUFAAv9+PU089FQAiSaFLlixBUlISfD4fsrOzLS+7JScnY8aMGbjtttu0702ZMgV//etfcfbZZ+O2225Dv379EA6HsWfPHqxZswa33347hgwZIm53ypQpWLZsGc4//3zMmTMH6enpWLlyJb744gsA+NnP4vHs378fl1xyCX7729+iuLgYs2bNgs/nw/Tp0yPbfvDBBzF+/Hhc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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "MAGICCam: rebinning\n", - "93.7 µs ± 150 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "VERITAS - NearestNeighborMapper:\n", + "Initialization time: \n", + "12.4 ms ± 143 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "Mapping time: \n", + "22.8 µs ± 67 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJztfXe0JFd95ne7Or48b4I0eTTjUURGEiKJYBswFiLYBgkkrwFjbDDGHPDBYGAP62zjXYPNesFLMmAjgiQQYOKKHAQCJBEURgiNRprRzGjiC/Ne5777R92q31eqW6/7TXqhf985c96d6tuVuqvv94ufsdZCoVD0H3ILfQIKhWJhoA+/QtGn0IdfoehT6MOvUPQp9OFXKPoU+vArFH0KffgVij6FPvwKRZ9CH36Fok+RP50HK5qSLWPwdB5SoegrTOPoIWvt6l7mntaHv4xBPN48/XQeUqHoK3zF3vBAr3OV9isUfQp9+BWKPsVppf2KU48jf3AZAODwY1vxtnP//OfxuD0xEY/3v+6yeFxfGf7d8pe3ePe76y8fH49LR2T7mf98MwAgGBuLt+34x7Pj8cofylds/P0393QNitMDXfkVij6FrvyLCLlLLojH9/63kXi8/T8mAQCdn9wVb2tc/th4vPcphXj8t1d9FACwpXAo3vbi8d+Xg9x9fjx89ZWfT53Dvxae7T231zwvPRcA3jXu5p97LN72iUvfHY8ffNp4PH7LWb8LAFj37Wa8rfilH8bj3KPl3O59yWg83n7tFACgc9ud3nNQHB905Vco+hT68CsUfQpzOtt4jZhxq3F+IL9+XTzefc2WeHzZC38cj/9p3dfj8ct3hdT6nuvFkXbFy74bj3979NZ4PGOLAIDpTiXetquxKh53rPzeT7ZlzrF2GQDwUFXoNmNj5Wg8Hgga8XhFfgYAEKATb9tcFJNjMFePx8Nu/OmJS+Jt//Whp8Tj8666Jx6/b/MX4vGf7f01AMB3r78o3rbpYxLObu15yHvO/Yiv2BtutdZe2stcXfkVij6FPvwKRZ9Caf8pRq5YjMcTL3wMAKB6lcTav/WYD8bjNuSzqFuh0QfbAQCgZiU4U7Pi4Y+oPgDsrK8BADRp7mxHXp9ty3hXdWU87lgTvt6S1xkDeaH6OSPnuXUgpPgDgdD7gZzMLRvx7G8pHgxfN/R6rkVzZbwyJ9c/YMLrz8HE255y20vjcen6FfF4xXW3yzXVa95rWc5Q2q9QKLpCH36Fok+hST6nAJ2nXhyPf/GCUjy+/QX/nJpbs+14fKQjtHaiU47HbeehZ6r/QFM8+NPktW9aZyJ0ZO69M2vicYu8/Y2OfPwNZ1o8NO339q8fnozH5UDo+c7Z8DzyRmj62YMPy/nkAjmP+pkAkmbBtuKBeNwxcv01MkdHnJkwHsjr377kw3JyEjzAoy99bTze+snQFMl9S0wBhUBXfoWiT6EPv0LRp1Bv/wkgv3ljPN73HBl/483v8M5vukSYiY7c84Ptsn8ueet3OYp/pDUUb2uT5zui+gDw85kzAACzLTE3Ik8+kKT9D05JJV67E27P+joQI0chJ6bKptEwclEkrz1HAwYpIejswf3h+428n5ODxl3CEABsKRyU45FJEWE1JQ+N5fI0N72eXfYPr4vH6/5rdzxuPbA7NXep46R6+40x5xhjfkz/powxrzPGjBtjbjLG3Ov+rui2L4VCsXgwr5XfGBMAeAjA4wG8GsARa+3bjDFvArDCWvvnc71/2az8l4Vppv/5iXfFm8om8E6dtrIi7m5VvHPi15sraTyeej2gPIB7Zs+Ix0cbc/dFvH9S9hU59h6J6GsweYT2Rav96ApZlYNc+jtTDGQ13zZ2KPU6Y7wwG4/PGdg351wA2FgMGwisy094X2f2sI6ckcO5QmouO1hfdPWr4rH5zo9Tc5ciTmWc/+kA7rPWPgDgNwFELtcPA/itee5LoVAsIOb78F8N4GNufIa1dh8AuL9rMt+lUCgWHXqm/caYIoC9AC6w1j5sjJmw1o7R60ettSm73xjzCgCvAIAyBh7zZHPFyTnz0wB26L31G5+Ox+cUQidWAI5LC53c2fI78SIcbEujjnvrZ8wxM8TuWkjb99f8MXjGnmPhnGN1SdNlZx1j8uhAPLad3tcBEwjNHh0LKTw7+RhDJXHMbRzy0/YI68vy+qbS4Tnnbi/tj8erg2NzzAQ25+V8s8yze5py/v/9V64EsDQdgqeK9j8LwG3W2iiD42FjzFoAcH8P+N5krX2vtfZSa+2lBZR8UxQKxQJgPg//NRDKDwCfBRBVV7wUwGdO1kkpFIpTj55ovzFmAMBuAFuttZNu20oA1wHYBOBBAFdZa49k72Xxevu58u5sajB75bj0l3tUUTzUHed139mU93HcnTFNabo76mETD26owe871ByOx7urYkG1OmmqeqAqXvmpuhyj1U7/nk9PS5Sh06TXbfqczZQ/49uOtrzb4eh+UBSzZ3S46p2ad5V6o2V5fU1FKHuOohl5yiXYXAm/Vqvy0zKXzIwiVQNuL0pq8XAurOrjKAm/b3Mg9yIg2+iORrj9+onHxdt+9gT5rBdzteB8aH9Puf3W2lkAKx+x7TBC779CoViC0PRehaJP0dfpvQ/ecCEA4A/Pk354Lxv1t4d+oCW/k1E6bYPSapuQcUTveS6PJ1viZX+wSgk4RO/ZNJhohLT+aFXex8k6/BHOVkOnaqtOr3tMAQDAMSF+MctuZ4QGAjlIJ08HHGqnpubysi1fkvFQJfT8G6bslBw0XhbTarwk44iqVyhVeHNFogGjgZgRbAJEacTnFveltoVjiQIUKVFoQz6dHPTByW3x+N07nhqP1z9/cbUT12YeCoWiK/ThVyj6FH3XzIPbZn/5cf8GABimhhN7icUmeuZR44uO+828ryFJjdwnj5tu1Kmpxv3VsDqv2pZtjTb12mvJ9iM1ofj1VjinTc0+ag2Z26zRuTU9SSxV2Waasg/TSlP8/Iyf9rco5T9HpoF152QLZBZUZNwgc2nSnVuxJH39LI0PzEjV4nRTckJWV8K6Aq5OvG9W7n0lJ/vYWpFqwJLbvqOxNt7GPQW3FmVuk2j/nlY4p0TmyctH74/HL3qctBh/yYarACzN9uG68isUfYq+W/lbD+2Nx1ff+XsAgPec95F421THn4W4i9pmzbo5k21ZnTleH6XjAsAM1dVHnXHZsXeYVvhqU1Zzjtc3muHH1KjL6+0GrfDss62791E8P9eg1Z7m5uqyPSrHpw5bCRhadYkEISJKzCI6xGZs0abm1qhDcKsl11EmFtCh+9lwzKdSkJNbU5EqwzrV899jJV16yHUc3lKSFX7GyOfRbsg9YnGRLfnQmVije9WBxPZfsuPF8biyRxjBUoOu/ApFn0IffoWiT9EXtH/6mifE44MXC538v2e/D0CS6u9vS+Ucd8U91JLU2wgP1aUN1kxb9jHZoHRaoq+HXZx+ltKCa035CNpUWVevy/ZWNCaHnyVaz068XC3czvQ+8Tpl6QaeLNUs2s/Zy+Rfi82BTuKbRGsKze04R6EtinOtSdfUIlOmUJYTrZQabi6ZQmRaDBWFsq8qy/4ik4vfN0TiIlxnNsEmnLsmNgUASS1++/br4/E1b38NAGD1bTJz5NrvYSlAV36Fok+hD79C0adYdrQ/d8kFAICJ86Vhxp+89bp4vKkghYeRxh1Tvvvr/oZEk9R/b8qN99fkGEzvjxGtP9YQbjldC8fWsidbqG6jKt58pvVRLN1QfD2Ypdg95SZEY56bl0zZRGTA974CzyUQewdlLMemQ47MghbdC0tpwbmq6xBM0YeO3PpEnnJjhiIbLj+gXGnQVMp5aKXFRwBgpMi0PcSEGUhtA4ChvNhAUU/Ag/R6jqIWnCtwoxNi2fWbUvf2d8FL4vGKO8Vc6Nx6h/fYCwVd+RWKPoU+/ApFn2LZVfWdf2tIAZ+/4tZ4G1ffcert3bX1qfdnyVnfN7M6NZcp5jTR+yOzfmrZdBQ/kaxT42QdostE2yO6nCOvPWWjwpDHPNK9MInX/WPSyIijAx59jPBw/tZ3aEYZudwjhMf0vuagnXsuVQvaQbJJYtNBXi9UKBpQFnOgkE9XGa4ZlIYhIwUxBcpBMzUXEK1B1hQcIM9/QDfpHFcxyFLjRcg5XDfx2Hj8g4sybuJJhFb1KRSKrlh2Dr/P3PFoAMAVT/5JvO2u2oZ4zMU6Uc08K9rumD5TXifHFReVRAU4+6bE4cfIjNfPpuvELa3aOXLiBZR6K5NlWKACnJxvAeO51Nw2sbLb9PbiMT8TbAwTK6ElI943h/alPidxjOKUywmg29AapAmUImwm6XMqu5OryIrarMrrXNhUHpTVOkoXPjQjVUmHIOMNI6I8PJCX90WSZzm6WRcMSVo4O/zuqofskfsEXFjeE48/dqcswtuwuNSCdeVXKPoUPT38xpgxY8wNxpgdxpi7jTFPVK0+hWJpo1fa/04AX7LWXunEOwYAvAXAV0mr700A5tTqOx0YHg1bOt1W3eJ9ndtj/XQqNAdYuZbBDr0HJub+batTmm59qos+AdXX52e7//7mZ0M6HKTD1um5zomXy2i2m6Dh0/KfmOFmdPHiuXy7InPAkjlRmKLD0TcsMgfYTClMkmkl/tWEORClLMcViwA6A+TYK8u4NlNMjaPvBACUC3LwPVOSys3CJpHWYJGu82fTYjqW6OZeNPxgOKD7elt1czxeOTa3oMhCoheV3hEATwXwAQCw1jastRNQrT6FYkmjF9q/FWGy0weNMbcbY95vjBmEavUpFEsaXeP8xphLAXwfwJOstbcYY94JYArAaxZSq+/edz0+Hr/yV74259y7pqV1F8fuI7Anf+dRacTRydCvixptVCdJk48FMLikjhpGBNNzx3mDGsXr/boXMpfScANfJR6dToE8+JnmgENxOh0nB4DGMJ27xzTgqr7GUIbtEM2lj6A5t7o4ACAqrmxXuuektIflAk0hnbTAnYNHV8hNLOTS181S5NvHJNmXhT+iiMAQfQiPGhRvf2J/FD34228+L9zvK3/gnXu8ONlx/j0A9lhrb3H/vwHAJVCtPoViSaPrw2+t3Q9gtzHmHLfp6QDugmr1KRRLGr16+18D4Frn6d8J4GUIfziuM8a8HE6r79Scoh/BCn/Xiair63ST9OvIPc0U/8Gp0GrhfnlM9XnuzKRU9cWptRnpuMG03FZfuiz31OOKuwyVa6mco0vOSsPNV512XqIMzz+3MCM7ybXnptRsDthAzr856FKPyZwoTVHfvgI163C3kL39JcmzAbU7RJssqkiTgxOfWgPULZjMiOAYiZU4OW47IifHkYrJCUnDNkTxV4y5kAnd43snJL27mJf9nTUcVokeI3Py1ukt8XiMyiTProiseGllF7vuNKBXrb4fA/DZEYtHfkehUMwLmuGnUPQplmxuf/knQsPvOEuq82ZbaW/+/hnpv1enxg/NVtr7fmxK+KZlbz8LVTiGmKD37CzmnPlWmuInquy4lTbRek7oMR4HPL8eNO2cc/NVpve83zTVz1f93v7WADUPaVF13bFw32wKtCpkAjXIM+52zaYA03vqp5EwW1puDtcEsLiIpfexuEgsn0iy44kqwmESD6Eai6NHw53k8nLfVgwLfa+SYMp9U2ETj0pe9rVhcCIeH2xIoUO1vSke525P94Q83dCVX6HoUyz6lX/2BdJ596Hnyq/rBVtELIFX+0gEg3+da810NR0AzMyEHqYOSUqBxpwCkZuRlS+SqyJB2MQKHqXjAlkttmQbr+CJGDwf2112YhXNiNcHdete57l+Z15Ql5UtWs1N2+9JzFOWqs1THL/s7hexCO4v0C6mx/l2mg08ci6fReQz454Cbfa/8r0/lq4+bFGVIbMuO0Vt06iXQGcwvLnMBo5MCaXIF+SkR01IOxrMKCktfJhbiZXlJl707LsBAD+44OJ425rPiMdz6BPfx6mGrvwKRZ9CH36Fok+x6Gn/w1dJPPSVj7o5HrMe3r6qVGdNVkPvEMfrq7V0J1gAsA1Pui031GDK3kinrOarrHgr27Poe+TQSpgLRENzCXPAQ/HZFCAqnzAHmmmKn2v44/mmmab4PJfBsXSfc5Mdfgx2KuacSZXMsDbeuR1qWRbpoeTYkUr5EVnmQET7C9MZOoPUbY0/h46blFAehnxoDeqsPOFMg7ynfRgA1ElcZBXR/l8aDNOFn37J3fG2t5eeEY+HPuHd3UmFrvwKRZ9CH36Fok+x6Gn/yFcpcPsoGR5t+DvkDhRD1/hUldJ7qcEDe/CNaw7Bsficr3cekhV3ET1P6NrRfhMefGKDcVorz01Qdv/7jHNn52gux/aTkQGbeA8A5Op+Spoj2h/NNw1/GMFQVw4b0JoR8eVEOjFFTBLmQDg31+IIAL1K8f/E+XvyA7LMkAR9d6ecSBVOzGVzgM6z4nbCsuOUZGCpWjC67KaR+zNYki/GSMkjiAhgohl+fzdTSnP5Jn9PyFMFXfkVij6FPvwKRZ9iUdH+/PZt8Xjvs8L2yaPPlZbJ3H9vRVHcveztn22kE3pMkSrSSCQjmEn/9gUNf4JONznrhPR1hjkQJ+s0PZ58IGGTsAkQOA98ot9EIqmGzIFaOCkh0c1pvAlzIN3z27QyygXJ250wjJwICtP7RK9B1vBzCh7c1y8Z1WAPf7pteiIaQPeCzQVGdG8TiT0Z33i+3233PetQ4k/im1KX71BnRbjzYll2wP0Ap+pic6wbkBLGMY8o4rqrJXHtwfJl8XjDF6VVRuueX/gv4DigK79C0afQh1+h6FMsKtq/461C3z/05H8DADzUkraA99eloUJ3bz8l8zTZOy3DiAKyh5/165JJNbQLRznzfkduIomHKX5sDlg/7U/m7qepOtPXiN6H29nzH+Xoc+trvyZd0hwId24y5qLC7nWKfETzaVunTJ5xMgeiikFLet7tsr+WIkHxnSeeTQH+IPlesTR57KDnt2U0OUmYA+5zDeiNDflqolOiKImzr1q+hDEkvf0B2WI+b//rNt4Uj9e8ThKCnv+4V8Xjrb/jPcxxQVd+haJPsahW/hXfpYDsk8M/E23/Cj+cF69SrS0rjc/hJyqvSNTlxw49yhvlVYkdegVmBI98P5KrT4IRWHbMudPheD2NE6CVL6q+y7EzzrNfgFZidgjaNDMAHrHKR9szujl3YwSsxstMw+aoLVolnzpGfpZW+ILMZUYQ3Vu+x+0SzaVqwOS9Df9yfwFO781ibg1Xas+5BPwdMoneDi69t+DPpZhppvtLAH6H33RHvv9n5qfj8fB3Kqm5JwO68isUfYqeVn5jzC4A0wDaAFrW2kuNMeMAPgFgC4BdAF5orT16ak5ToVCcbMyH9v+atfYQ/f9NOMlafUfPT8eYB3NC74+SvHKVqD532S26/M0WNVQApXEmHH6O93B6b6IrLrd8ovdFMeHiMX9MPNGai9hyvuaZzzF6rr7zVdcRXQ6q5Cn0xOaZ6psq2S9ZIi3R9lqGIGCZPFPk3Iv2bchc6gwI1TVtocOB6xZs80zv5SvI6cZs4rSdaF6HqD43IuHcDKb4UTpw1NH4kWDZcTYH4u8F31b6DnG1X9T1t9P2k+hS4E+XPtZOa1iUvVrrwMT5cg9Xe2ccH06E9qtWn0KxhNHrw28B/D9jzK1OfgvoUavPGPMKY8yPjDE/aqIHmVmFQnFa0Cvtf5K1dq8xZg2Am4wxO3o9gLX2vQDeCwAjZnxOZYjSkfRvUdP646d5j7YaAHR8QnK8iWPJ1vN6t7k8h+PdFM8vHOMwQPp8mNIn6HvinLnSMJxjMqrzEvuuOYqf0YsvgSq5u7toNibmkgcflai1LuUVHJMfeZunfItKaKpxCnH+mJgknaJ8HTtlSsN294vNolaFUmzJ288UPxo3hijiwPR+bknB5OsZUozxdyRDcaWTcZCCCxXl6EvWzpCKLx6ZW+PxeNHTym+t3ev+HgBwI4DHoUetPoVCsTjR9eE3xgwaY4ajMYBnArgDqtWnUCxp9EL7zwBwowlpaB7AR621XzLG/BAnWasvIPmytuNZWVQoyKBZ1kuzfJz9EZtPFBn74j55+dm59bETzTVqXeZyRV6Tc489188e/M7c5oCt+TNfTJnlyOliZyMhPfqcSuLJNi1KQ3Z6f7ZEjUGI6ueokQiPo3ThTlGOkRAXoXFziJuOdOH1GYi+WknaP/eXxSRkuylpLIP25zz762Ssxd3k2o8XXR9+a+1OAI/2bD8M1epTKJYsFiS9d/oaEeJ4/V9/NB6fGdwej5tOa2kgxxECkTjiOD8jnwtXthr/sHaN8/Nc+OdynD9W6aVf+AyfjE9Nl+WuctWMtNnE/MjhRyea5aBrRDmt3Z2DqIuzzdreGYEJ6GKLLqbPDkZ2DubpK1YIx6ZJbICcf7YQeMexw5Pi+XGqMJIrPBcExdsznHVZdf7eOD8rMueIobnNHOdnJ18h8H8O9U760Ssbv/L0DX/0T/F41x+EhW5/9T9+P942cu33vO/rBk3vVSj6FPrwKxR9igWh/fufKtzraZWH4/ERckbtboUUfzKzqk+o5bGmOJhqTUct2c/CVX2kxeet6gs4vi5vS1DEiJFyLD5DD8/ndGKqm6i4o+tnahxTap7baqVff8Q+YjTJtKB4vG17KGkrw9FYpBp9ep+JzAyO/TPV52NHpgWbDQVSOubOwXQd1u3PUFpwwlyg/SV0BKO5nt4A4Vyaw8rJ7vK4qs/Sd4Sr+iJHL1f1sTOv2vKbp6MeL95MJ53yCwCr6Xad5RpO/PFT5Xgj13rf1hW68isUfQp9+BWKPsWC0P6NXyQa9lwZT3s8oOPUV4tNgKONwdRcgNt4CYVKtvEi2hu18aqxt1imsgef0w1ic4BoeMfP7pINOKK3UdMKkIM3QfVbHtrf8tPihDkQUXIyBbz0nufSPrLmJhzRTLM9+0qYMkzxo9NPmCk0l1KBE+TdfShcDciNPxJTKc3aurZfie6+7O1ny4kpvvteJE0BijSU0t5+buPF3v6ERDfhqGvjtal4ON42FqQbfADADH3WQ+4wG754fDkMDF35FYo+hT78CkWfYkFo/+7f8ieUjFEzg4lO2LfsYEsSe9oJ0Q4xB7qJduRYtKPKzSPctiDD20+5KgkNuLgrLEcGMqStiapGmnk+aWwgSWs5LTb2mHcyvPrsGW96vPUeeg9kUPxORtTC+I9nIn1sNgXIPDFM8fPpud5oAAAEZLYF6QwqToXulPwVfjKXe/9lePs95gD32+DvCDd/sS6BrDBAqcm0MxbtWE+iHSs9TSEPt4fi8epAXh/Opa9/z2/J8bZ/OvVyT9CVX6HoU+jDr1D0KRaE9m++jqjZM2U44XGZr6YWxpOt4/P2d1hQIZf20Cfktzl93pPvDZAWHXv7mW5S/obX25/P8PZn6eRFdLnB9N6fuBOfE5sCWYk7ife5/noZtD9BpqlBSWw6sLe/QAlBRIHjd7HJQhWAieQgPnZ7bm+/ZfOLWne3y717+zseb39CJp29/WUye3Jzi3aMleTLwI07DjfD7++G4pF428pAhDoY0yRMOBCE93bz9Sfe4ENXfoWiT7EgK/+uK/3bh2nZnXA/ruzwY4wW5Be11pY5XpXeAq00pNIbO/y4Sy+TBF6Vuyi95jLEN7wOv4wVPtPh56nQ48o625H7ZhueyrAsJ17CEdilqi+hEEznUUjfDGYlhtN+o3POZaw5zFC4/VcXh1+begl4HX5d4vnAIxx+bc9cdvg1Pem9RX9+xGTD7/Bb4RHtYIGaM4kF+Bx+D1wp17/9895Dd4Wu/ApFn0IffoWiT7EgtH/dTURjLpehN72X6A87/KZb5NCjdMpyoZV6nSv5uDorOlzA1XvMhPmnkRtCRMK0XJBX6O7wi0yHnhx+iRRZN5+deBmx+8gc4NfnRe+zHH7UwAKG7qfLK2DRjoTjzkPZM1uJHafDj+GL6Se+Vh56H+6PprhTTqT3UkOYTpHERdz3qd30O+Cy0nsnW05/j0yLrPTeWbK5Bkx4omu/fOKPrq78CkWfoueH3xgTGGNuN8Z8zv1/3BhzkzHmXvd3xak7TYVCcbIxH+7wWgB3Axhx/z9urb6Dl/grkgYp8Drh/mY18xjMC1/mZh71Vki/uJtqUqI73cwj4e3n6j0KpfuaeXBfv4Bb8bE5QOnCcQ+QLG8/ecETd8gjwGGYesNjDmTQ98Txsqr9fHM7vE5QTN9H6xl8jIjWZ3n7fanAyPD2s1w3V196m3nQ6x56DzyiOW90Gok8jy4S3XlKaeZmHk1/ueeQszUD+mJNd0SKm739Zfqsc+6bceAxcg5DH/ceoit6WvmNMRsAPBvA+2mzavUpFEsYvdL+fwHwRiR726pWn0KxhNGV9htjngPggLX2VmPMr873AD6tvsE9ftrfoN+iqIIvS7a43vafej4If5+aLZbozji56DR82mtI0noeR0zNZMyFZ24CGT+5Jqsdt0eII7PVtvFdVAYM2zs9aPsdD3wiIlnXyREDlgGPGo3wLrIEOTy7ztB9SX4v+Ovkk3tMmHJpgY5OJ20KANmtu30alFmtu5t8v9yus56h+aAXm/9JAJ5njLkCQBnAiDHmI3BafdbafarVp1AsPXSl/dbaN1trN1hrtwC4GsDXrLW/C9XqUyiWNE4kU+BtOMlafScDEeXK0kjzoYsM2/znz2d/3aSxGV109uaNU0T1TZY3/wRhfSbEieAUyTaa+X6huuBUJePM6+G31n4DwDfcWLX6FIoljAVJ753Z4P9lDDy/v7WMtrj5nN+R0naOl8Svr795r6TbZjnrrH/scyBl/dh7nU0ZCy6vbIk1zsMOsuL882ISJwFxWq+Zx/qUtYJnthCbh9PQ56zzCa48Ym7yfvvOgfeXdu7lcv7zabb9eRAFk/7+NnzlogACz/XPbDzxz1nTexWKPoU+/ApFn2JBaP/q2yg183dkXPPQnuFAWugeosYesy2/rlnRxVUbTZJwbvn5XUQBudlDgiJmpf16wrFZseRc20PPMmLUJktWO6rq4xZjWam5vjh/Zk6A56Qz5nZN4806hs/5l0XZA/9NNM7RaUEpv7mMe+iJ3WfKp3NVHx86GicZls08AAAd7klEQVRMRL9oRxTnb1NeCTubKwV/nkqV+4Y5DOb8SXA1urcjbtdrfqS0X6FQHCf04Vco+hQLQvv3PsNPWbmH32E35UhryDuXe/jNkgxyzVNFZfLEBeukB+fMgYQmH/fw6ybRTciS6J5XVR9r1bXn0cOPe9/5IgOZlJ0afkSe9gyvvcmg2VkNOGL4chOyzoer+rj6Lp8+p6yqvg7v2kZzZRNbi9zkIxHw6SbR3Ux7+wtF6ltIoZ+ZZpreA8BIkJbozqrqGzbpe7zvN0i041RW9SkUiuUHffgVij7FgtD+LZ+k/1APvwmPB3RVfioeT7aFFh1t+Jt8VBz9ms6U6JZhpxDSMxbtYCGHLInuoJ6m1m1qGc2MjnvKxfviFt2JHn4ZHvzIHMjqy0cwEQ1nTT6ffh8Ak0h4mVuiO0HVORnJ581nU4DNhWjMx+DW33m/ORCZSdzUI9HDL9GAJS3a0SYTIpH7ldHSOzIHMnv4ldPe/lbD/yiNFms0V9531PWj3ExmyFjO38Nv2sqJVlwPv803nPi6rSu/QtGn0IdfoehTLAjtf+CFfs/4GGXPTDiKf6g14p27oigUaV9V5szU06aDoVbLqLJij/P2czIPd53OkujOpxNpgizFHmrpHbUIPynefqbLlBMfe/5ZRpvmWva+c1vxmJ4Hnm1zRAzivnzzmZul2MP9/iia4fP2s2IPze0U03O5v2LC29/FHEhIdLO3vzG3t5+RVOyR7asKaV2+w23Rn+zm7X/ghXKvVLFHoVDMCwuy8m/8NP3m/LoMfQ6/8TyJdmQ4/Fi0Y7AUsoepWfnFtQ2/c6ibw4/jwMlOvW4V4NZO+XQ8H3iEwy9qR9WLw48r3KKVjau7OLbv8Wcm2nyRwy+RH0DnGZ2bQQ8OP0rD9a7yCYcfe0q7OAczGENXhx8hEf8vdnH40WLtdfixJiF/1iVq45Xr3eHHONQM81eSKr0z3rk+h9+GG1W0Q6FQHCf04Vco+hQLQvt3X+5PFR0hDjyBkOJnpvcW/em9VSfRzSmW2RLdHodfDxLdccouHYPpZpaGX+RA7Mnhx2m6UYyZG0awCdBJN/Mw9LueoPdkTvg+hcRcjucX/U1VYlrPlD0jXu9z+FmPxHe4P3KqFdL7M5QKzPet4xHt6BbPB+CV6E6k9ya0Gunc3GdTqIgNkaOdTTfIa0gOvxV5j0R3J0Oimxx+gUu/3n2FHOPsT6d21RN05Vco+hRdH35jTNkY8wNjzE+MMXcaY/7KbVetPoViCaMX2l8H8DRr7TFjTAHAd4wxXwTwfBynVt+Z3xba9LVnbIzH6/NH43HHkdJRki1mb/90U7z5jKKT6G5SQNe2/N5+68QXchS3zZLo9mr4ZWjyJSIDnvg/C04Ypu8UBbCB0OzYTGiQezqrmi7aH0UDTMZcy01JXF5B1twE2INf8lStJa6Jcgx8pgPf4yLN9VB93q/NaPzh8/ZnafLNS6I7Ycp5vP0k0d3poZnHMZdEkKP+i8O5dKUfADxMOR+3uDyWM7/ZpblKD+ilb7+11kYGSMH9s1CtPoViSaNXoc7AGPNjhKo8N1lrb4Fq9SkUSxo9efuttW0AFxljxgDcaIx5VK8H8Gn1DX/s+/HrH/zYpni89w1Xx+N3/NH7AACznsQfAChTzuYxapjQchLcCW9/QqKbKHfEuLivH9P7jN5+8fxEO2e/t9+nKceUtT0o555rkPR1Xa4vTgrKl+h1Ojmu2isUkn8BoE4/ukQhkx78cGyrlJTC9L5CZhbT+igqwfTeZwowiNJ3yt2/gp1SOMeXupua62PDWfqLnsYfgHzWWUleidbr7n1BkK70A4BGRuvugSDdCLJm/RGV337PG+Lx+r+/GQAwgu95584H8/L2W2snEIp2XA6n1QcAqtWnUCw99KLSuxpA01o7YYypAHgGgH+EaPW9DSdJq4/8eTFyGWoYnS5yXAm5rnk0Os1UWuoWFM8QouCVvzkSroi5hqwSQU1W7U6RVgka59wqbxoy15boo6OxqboVhVtieVZ4AECNGEGUH1DxO1ITYMGQAX8X5RjkxOxUMnIFotfpmtvECHzqxa0Kp/oen4xXLyrLJ4qs72/b0+45yFBzaXmei5OBXmj/WgAfNsYECJnCddbazxljvodFqNWnUCh6Q9eH31r7UwAXe7arVp9CsYSxIOm9WWiMp2lPkcrsmCo1Ov5TDzyaaZZaMDGji6jevEVVPfP5dBrDRNkp7pyvhtfHjqsOOeaCOjmNyPnXcfFvQ44yQ+YC1/7bsqd7cZWcS9wnoMwF6+482RRgU2ZAuKdXO4/Mm06ZHH4+zQ5Kx21Xuser2+5+tUv+dmyM5gDf2+h8M3acMNtoc7fvBV+Tm9vp+A+Sz/mpfNPTAtqn3wcAjfGMSssThKb3KhR9Cn34FYo+xaKi/WN30W/Rc8M/Mx2/N3kgL/SU4/zNlqcCjOP8LY7zR/xOXmaKmPPEcwGJDzeG5HwT9L4m4w5R5KarfOMWVAGH4EtMWXM0x9E+ep8lz7mh4Hau6vIDuHtvRe6PYe3AGsea3b7ZFOB0Wqb6nJLrKL4vnwEALOUKtCtRVR+9TvvlirwO3YvI2uPPpl2iueTt98X5WxW6Du5+xkufL87PFhRfXpu/MOGfIO+n97WWHJA9/wMewcesOP/YXSeeyuuDrvwKRZ9CH36Fok+xqGj/kcvSuf/DOZLohkh0TzX9mQ9lV0XF9J8luhOZqVFVX8IUkNeZQjalsSpyjoVzd982V/VlpAhH5gDTe0smCff740Sgdjk8EUNRgqBKHn76De8MOIpP9D5H9D5R4cZeeZ+3n2Ap6cYm+vm5yjmm72W690HadOD70y7nMubKnIjWszBKRrAnaQ7ku8ylr1AilddX1cf9UkpsI4R/uKqPMVTw6LkDmPJktA0bf7+/Y0+R3n6r3+WdclzQlV+h6FPow69Q9CkWFe0/7+8m4vEbL/9DAMDAsx+Otz1j7T3xOCHa0eoi2sE9/KqUM95K09AW0ftEzgX1WYgoIr+PW34zZ03Qyajdnb+/Q1LOm8aRCZBoNDJAXmTqCZiLIgMJGk7efu73V+cTCecb8vazp54bbTDapZDucqViwvPPHnpH8TsZJhK/z0fffaZAOKZjeBzmnQxZ7oyCUbTLNjU38Vk3097+QsGfiJPo4UffrZWF6dTcf9ojwpU7b9wWj7d/QWrm/KqLxwdd+RWKPsWiWvlb994Xj9e48ZHqZTLhNbLyZ6n0xqIdVRbtYAkqavM06FbUFgdxaZwR5zWen9+EopKv5ReAttsJryjsO+NcgcTK7VZVfp2Vgtu59KpraG4ynE25Cd4OwP61hfMOWHTEJ56RdGimY/A2N/cKH76PxrnI4Ufnw77KxHnSdre/dkahIu/P5ik3o5TO6+1UqA8CzY1ufTPD4Tda8jvxDjdD5/WGgoh2PPBxWe3PfPfN8fhkrvYMXfkVij6FPvwKRZ9iUdF+Hyae5u9oOlJg0Y60w4+JfDAg3LvD8f/oL2cQE4XONAfcfNaHSDjjeDvR0CiVl2P/TIFztA/u8hSZDok4eEZ+AKL8gAynG6f32kSTjPQ6wPH8ODX3EYhScpMOOP+aEtHsxNxEq6wMJ56731ndlBNzmeJHFXd8DKLs7QrdC/6oI1Vnmpuv+Ml3sRR+OFHXaCDZQm6y7lfp9Tn82s8Uhzfe7T3cSYWu/ApFn0IffoWiT7Hoaf+ZN4hL9j9rT4jH2zZL/L8YCF8eHQi9q7ONrH5xQs9qxu2bRD065QwdvRlu0OHeNuBPC07IsBGVj4rBOkzvOZvWpD3jABC4T8nT8NXNTecHJMQr/G9LWAbx/Ix4PpsnTNsTDTbi12lMtlFE+5nec5Vdlo6ej75zdmyW1mJ0D9sDHe9cpvVsRuWH0okYAcXxC3kZrxhMa+4NUkrvSMGfLv3zmTMAAB+4X6JZqz99ipr1ZaAXua6NxpivG2PudnJdr3XbVa5LoVjC6IX2twC83lp7HoAnAHi1MeZ8hPJcX7XWbgfwVfd/hUKxRNBLA899ACJlnmljzN0A1iOU6/pVN+3DCPv596TVNx8MfOqWeLz9U7J97xuELp37m/fKC865OlaWaMCBGZH5rpE5UBpM8+j6FKW3UtOGziD11HOu4WCaIgM0t5mRIhyZAyaDpnIUIFEx6EsOavDYpua2iZonohItTmah9tfusoMqtQcnqt8c8iexRDSaTYFWRlJNZJ5wgg5T/SzxlKh1tc1It03MHfJQfO7ryAlYI3ITE71KnAAHC3GsGhHJbEYpCO/XQF5MhY2DR71zh8jG+9pnHgMAOOtvbvbOPR2Yl8PPGLMFYSffnuW6FArF4kTPD78xZgjAJwG8zlo7NY/3qVafQrEI0ZO330lzfxLAtdbaiHw/bIxZa63dN5dcl0+r72Rg9peFF58/vC8e75xdBQCYagj3XDNIlI0o+UOTowCSjT9KI/IDxao/9QnSyXNssD3iceUDyE9zxwwZunTuZIMP6dOQrDgTSyWOCCT6/RWNd5yvhreYTYFW2f8bX5ihfHWX/MPJPFktr9mb3xxIN/Pga+a5sTmQ0TORE3TavtaNNLc1ROZLnmsi0o02zIhQ8hz12uNknByZBqtHj6Vez1M4p5SXD3Db8CEAQEAVBjmau6Ig0YCzy/vj8ecuvgALjV68/QbABwDcba19B70UyXUBJ0muS6FQnD70svI/CcCLAfzMyXQDwFsQavQtnFzXUX8x9taB8Je4Qx1bdxw7Mx7PtmQpWj86CQBoURvXPUfH4jFH/MsrhGl0nBJw8ygtTxQnbo1RqmdD9p13DsKEwMco7YJWds4ViFZBXg35dXb+RZ1quWNt8RitdizuO0jVjlFd+rTf4VcfzejkG23jlmdDqZfdpPAPO/la/uLMBNoDjpVk5GAk6MOwnH9QnFvsYtWo0K4ireaRQ5dX+3PHJK+kYNLnUaEP4aLBB+c8LgDMHOnhwk8xevH2fwfZ0oUq16VQLFFoeq9C0acw1iN/fKowYsbt482pJQu7b7gQAPCCX/qx9/U2/d7dObkWANCiQDFLfzfawmX3TQg/992xVkNIVHsqI7XY7TtXp3Tcme6/vxHFD7KCJXRCBcdkc1kdIGhuaaqT2p6QraZTawxz6jHH/90gyzlI3DLTHHCI2mcByZRcLyjvIijP3e5ifETofaWY0UONcO5o6LsuZdzEPJVfXjK4KzyHDGG/f935a/F46PL7vHNOJr5ib7jVWntpL3N15Vco+hT68CsUfYpFX9U3X9SmQ5f444Z2xtt+MrspHteJh14wGuYHVKnl68+nJVGRqwXXr5BGCzUXMTg0LUkD+aJQxNwKoaytOjUPmQnfxz3iOlQtlquRKEeN4vguvZXj4JwfwH0Co9RidkgXaC5vr49QenInPKfitJ++Mu1PVMaZ9LamaKt4cwUSzTcGO3POBQDrvPwBNdQwHil2ABgalKjMkOvnGGTIZG8ekjTcQdJ+jLz5HK+/cHBPPC4ZueER3S9QGOXcokQGDhyVm9HF6jnt0JVfoehT6MOvUPQplh3tv/xRdwAAykaSLh49IEkXNeKcd1Q3AEhWb507IpSNzYH7j62Mx0PFkCIWRoWyzzQkc2VyVpoyFIiqtp14SLtOt71KlXUVOY8Op+zOuigBiUUkxEW4kQhR/AiJKkOODFDWc5TQ02DKnugZSNsTabbR+/2v8/uiiruk2cAnJGMzQMk6QToUUS4L9R4uC2XnZJ0IZ1TkQkeLUu1Zyfk9/+cMhOYgy2iXaW5A6V/bHcUvU/lmgc7zpRdIVeq34ZebXyjoyq9Q9CmW3cp//yu2AgD+4ryL420ve6uUHWwsHo7Hj6qETpwZ0nO6ryYOP/7lzw3Lr/lMK5y/vyrLJBd7FPN+RjBbC8cBpYK2CrTy1zjvV36XoyIW7iYczJL4BmWxtjwOP2YDnNbBcfdo4YpYRjiZ9suKtiyMEZ1+gg34nXhxqyyuexrkohta+clJF0lhDdEKX6JuuTlaaVeUZGUfc6v8SL5Gc2W/60vixB0NJF96LEi35tpSOBSPy+TcG3A3f1dT8kDe8td/GI/H7+AuvXek9ruQ0JVfoehT6MOvUPQplh3t79x+FwBg+HbZ9qHO8+LxwYvk9+7tV344nBv4hUGmOxJY57RgppERZlv+KsMytXeK4s3cSixR+06Ox1ZAdfWR1iD9VLeJvnbYHKg6rT6m7OzwY38YX4anSxd3EM7Uu3PCFwmtO3LcJdJ+nd5djnMbqL4+R5WRlZKYRlG8vkD2TaUg93UoL3PPLEufmYjic039EPVH20g6eYzxIHQQjuRqtE1MjibZMr/xyT8DAKy+Vd4/9pHvxeMuScoLCl35FYo+hT78CkWfYtnRfh+GPv59Gsv2v73wCgDAO8+njcTIpQVIMrY7G0UHiApzNeDuqkgYsDkQeaWbReHTEzVxo9epMpApcLsY5QdQqjC1ALZ5jse7nIBGd9lxjrdHBWwZxWnJFmOcnlzyEFtuukG0Pl8KD8Its0qUFj1IVJ/NpYJLsx4iMYwziN5z9R13yB1wUZWzSgfjbfw5srk3SHkh6/LpTr2U3Yxrfn51PN72p99LzV0q0JVfoehT6MOvUPQp+oL2M/Lr18Xjj174IQBJSre7zfReKPvWkjQnbju+fE99rcylBnubB8SLzFWED86OAwBqLdlWoMrBakk4OacINxwXDyh5qJn3RAMg5kCbPO42oIQgzmglUyW+VI4+0LejNeLvh2edSWLoeHlKveV2fwWXmFMpUWpuUWg6V9+xCMYZlTBRZpAoPVP9AUqa2lYiDUeXuTSQk/eVqSJvS2FSjk0ZTZH+SJlMqxU5+TxuPPe6eHzNhhcAAFp7HsJSQy/de//dGHPAGHMHbVOdPoViiaMX2v8hAJc/Ypvq9CkUSxy9dO/9lpPpYpwWnb5TgdZDe+Pxs295FQDgZeeJx/alo9T7j+jkvZQI33AZMeeURCykSeVrd9fWx+OCESq/fSg0HaZIzO6hWWkVzjnqFRKamK6H86eqVBXGzvySUODGbHg8NgVYdpzylhL9A6OKQc7hR0bAAOThLw6l9Q65SrJMFD/ST2QxjDLVRKwqzdBYPO5RwwxuonFWWTz4nJfP3vyoEm9bXswwrrjjla9I9smaIN1W+wOT8pn+7x3Sl2/dnjtTc5cKjtfhpzp9CsUSxyl3+BljXgHgFQBQxsILFTA2X/VTAMA3iuKyeOC70l34t8clZ/PColSANVxp3L1NWbUDSrf95Yr0D5juyFJ6dzV0NnJ68NCwOKiOUOH9Q7NSJTZcqiX+AsDhWZk7UxPHZHHArY4Dsko2pokxUE8AbqHl1LqQnyLnIeUa5Mfl2AllrqiNFaXsrhnmSjZB3jn0xqnybl1lwju3QPXxW8phRd3qvF8iskhzt1L13aDbzisctSjAGnLiBeTc+2kjZDPXTTwu3nb742XuuvrSXe0Zx7vyP+z0+TCXTh8QavVZay+11l5aWGTNDBSKfsbxPvyq06dQLHF0Fe0wxnwMoXNvFYCHAfwFgE8DuA7AJjidPmutv0SKcDpEO04m8ps3xuM3fP3z8fjcQprWztBt3NFYNed+D7ZGZG517RwzQzxUC82LA1VxOnYyWt0emA4bjHCqMIOVh5ukPByrDPPXgZaGYIy62xLFXzs2ibkwQnH8rUOH5pgJrC9JN93NxbnnbiuIw28sox1XhLWBeDlL5IDtkHPw500xRV7/1BcBAFoP7J5zv4sR8xHt6MXbf03GS0vnKVYoFCloeq9C0adYdlp9pwWXXQQAeM/H/0+8qeyRrQaAwyT/vas5PuduHyBz4cH6yjlmAvfNrI7HE/WMThsOe0lnsN2makAyAaKvQeso7Yuq7zZtFZ9u4JGo5ng9d0D2YRW1DT67vG+OmSHW50NzYF1G0xU+mzMCiXxUTNrBXLdiIjz3RX8Qj813/NqOSw2q1adQKLpCH36Fok+htP8EwNGAfc+W8Rfe/L+886PkoIPUKnw/ef479FvcoHTh++thAuUhSjHmuU0yLXYeC02H2RZ5tYnet6mDx/4JObbthHP468ANRVirME/Vd9tHQq87J+VwmjI31zivstfN9UtfrwzEHNiYl4hKVHHHK9VYTnzVQzm5nznPenbxP7wqHq/7rHjwl6I3vxuU9isUiq7Qh1+h6FMo7T8FsE8RtaCdzxfv+TevTJsDsx2h5AfaUvtwpCMUv+1oe82KJ/sXtTPi8TFqJBI1D+Eqw/umJYrQ6rC5IHOa7XB8eIr6fBOeuGlXPObahFIQUvg80f6I3gPJ5hkR3R+k5hob85M0l9p407EHc+H/Rsh7XzD+FJWtn3xlPN52Q5ijn/vmbd65yxFK+xUKRVf0XRuv0wHzbVEM2X6LrNZX/ugNAIDpF0h12pcf+554vNFIPfuYldV1fytM2Q2IpZ1D8XGf1mDdisNv27CkyrLy8J4ZqUqMBTHEB5jooLua6utzFFnfVg7j/9wqi1d2dgRucvH6ARLfKFA+MedKjOZ4lQ/ccWWteuztV8Xj4BOSE3HOJ+Ted+ppcRWFQFd+haJPoQ+/QtGnUNp/itFpSJurkWvDdmHj35AOwle86I3x+Jevuisev23D5+LxW/Y8AwDw4PVb421PfKk4sZ614mfxuFAJnWrcRGRXTRx+AwE74IS+z7RD82TvDPF+wpqCmCqrKAY/FoSmSkCx/Y3UNmuQYvolN+fG6Qvjbf/+gWfF40teKBLWH9z07Xj8p/seAwD4ynXSXGPTtQ/E49aen8fjxayNt9igK79C0afQh1+h6FNonH8RIXfx+fH4F9dIJd72j4Spte2f3h1vaz5TQrn7niQRhT++Kmw6soWaYfzp918Yj4v3iDnwnOeLhmGE//rsE+Jxh3T9/vGq//Ce8xs/9WIAwMC5kv77+UveF493Nofj8cuv/yMAwPpvibe/+PkfxOPco+X6732ZmB/b/zOMNHRuFbNA4YfG+RUKRVfow69Q9CmU9i8zTPzeEwEABx8jn+u5b90Rj9sTQs8P/Mll8bjuupdv+vtbvPvd+ffiaS8dlmScdf/zZgBAMC7tz3e8fVs8Hv++mCQr33NzbxehOG6cNtpvjLncGHOPMeYXxhiV7FIolhCO++E3xgQA3gXgWQDOB3CNMeb8ud+lUCgWC46b9htjngjgL621v+H+/2YAsNb+Q9Z7lPYrFKcWp4v2rwfArVD2uG0KhWIJ4ETSe33talM0grX6ANS/Ym9YzsHaVQDmVptYuljO1wYsn+vb3OvEE3n49wDYSP/fAGDvIydZa98L4L0AYIz5Ua+UZCliOV/fcr42YPlfnw8nQvt/CGC7MeYsY0wRwNUINfwUCsUSwHGv/NbaljHmTwB8GUAA4N+ttctDu1ih6AOcUEmvtfYLAL4wj7e890SOtwSwnK9vOV8bsPyvL4XTmuGnUCgWDzS3X6HoU5yWh3+5pQEbYzYaY75ujLnbGHOnMea1bvu4MeYmY8y97u+KbvtazDDGBMaY240xn3P/XzbXZ4wZM8bcYIzZ4T7HJy6n6+sFp/zhX6ZpwC0Ar7fWngfgCQBe7a7pTQC+aq3dDuCr7v9LGa8FcDf9fzld3zsBfMlaey6ARyO8zuV0fd1hrT2l/wA8EcCX6f9vBvDmU33c0/kPwGcA/DqAewCsddvWArhnoc/tBK5pA8IH4GkAPue2LYvrQ9ig/H44nxdtXxbX1+u/00H7l3UasDFmC4CLAdwC4Axr7T4AcH/XLNyZnTD+BcAbkeyJuVyubyuAgwA+6Mya9xtjBrF8rq8nnI6Hv6c04KUIY8wQgE8CeJ21dqrb/KUCY8xzAByw1t660OdyipAHcAmAf7PWXgxgBsud4ntwOh7+ntKAlxqMMQWED/611tpPuc0PG2PWutfXAjiwUOd3gngSgOcZY3YB+DiApxljPoLlc317AOyx1kadS25A+GOwXK6vJ5yOh3/ZpQEbYwyADwC421r7DnrpswBe6sYvRegLWHKw1r7ZWrvBWrsF4ef1NWvt72L5XN9+ALuNMee4TU8HcBeWyfX1itOS5GOMuQKhDRmlAf/dKT/oKYQx5skAvg3gZxCb+C0I7f7rAGwC8CCAq6y1R7w7WSIwxvwqgD+z1j7HGLMSy+T6jDEXAXg/gCKAnQBehnAxXBbX1ws0w0+h6FNohp9C0afQh1+h6FPow69Q9Cn04Vco+hT68CsUfQp9+BWKPoU+/ApFn0IffoWiT/H/Afy49G6+088CAAAAAElFTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA8SklEQVR4nO3deXxU9b3/8fcAYbKQpKxJhrBEiMgieAVF4gIKQVFciriAVlC0ymKltBdF2hK5SJAqF72I1oXFKkVrEZcrSyoQywU0bIpxqVZkTwJeICGEAMn394e/zGVI4JzA4cskvJ6Pxzwe5Mw33/OdM5PwzpnzmY/PGGMEAABgSZ2zvQAAAHBuIXwAAACrCB8AAMAqwgcAALCK8AEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArCJ8oFp+/vOfKyoqSvv27TvhmLvuuksRERHKz8+XJPl8vhPehg4dGvy+jIyMkPsiIiLUsmVLPfDAA8rLy6u0n9atW6t///6SpKFDh550P1Xtb8+ePfL7/fL5fFq7dm2Vj8UYo/nz5+vKK69Us2bNFBkZqeTkZF177bV65ZVXqn8AT2LOnDny+XyKjIzUli1bKt3fq1cvderUydN9ni2TJ0/WwoULK21fsWJF8LlavXp1pfuHDh2qBg0anNI+K15fp6LiuTnR6+RYx74uz7QffvgheLwyMjKqHHPfffcFxwDhgvCBahk2bJgOHTqkefPmVXn//v379c4776h///5KSEgIbh84cKBWr15d6fb73/++0hyLFy/W6tWrtWjRIt15552aNWuWevfurSNHjpxwXb///e9D5n3++ecl/fSf3In29+c//1mHDx+WJL366qtVzjtu3DgNGjRI7du31yuvvKJFixZp0qRJSkhI0Lvvvut8wE5BaWmpfve7352RucPFicLHscaOHevpPu+///4qA01tEBsbqzlz5qi8vDxk+4EDB/TXv/5VcXFxZ2llQNXqne0FoGbp16+fAoGAZs2apREjRlS6/y9/+YtKSko0bNiwkO0JCQm67LLLXO2ja9euatKkiSSpT58+2rNnj2bPnq2VK1fq6quvrvJ72rRpozZt2gS/PnTokCQpNTX1hPudNWuWmjVrplatWukvf/mLpk2bpqioqOD9JSUlmj59uu655x699NJLId87dOjQSr/ovXLddddp3rx5+u1vf6suXbqckX1Ux8GDBxUdHW11n9ddd50WL16s999/XzfeeKMncyYnJys5OdmTuc62srIyHT16NPj1HXfcoVdeeUUfffSR0tPTg9vffPNNlZWV6ZZbbtHrr79+NpbquYrH7vf7z/ZScBo484FqqVu3roYMGaJ169Zp06ZNle6fPXu2kpKS1K9fP8/22a1bN0kKvo3jhU8++URffPGFfvGLX+iBBx7Q/v379be//S1kTHFxsUpLS5WUlFTlHHXqnJkfn7Fjx6px48Z69NFHHccaYzRz5kxddNFFioqKUsOGDTVw4EB9//33IeOysrJ08803Kzk5WZGRkWrbtq0efPBB7dmzJ2RcxVsT69ev18CBA9WwYcNgqHO7rw0bNqh///5q1qyZ/H6/AoGAbrjhBm3fvl3ST2/DFRcXa+7cucG3A3r16hUyx9ChQ9WhQweNGzdOZWVljsfhzTffVI8ePRQTE6MGDRro2muv1YYNG6p8bMcqLS3Vb37zGyUmJio6OlpXXXWV1q1bp9atW4e8RVehqKhIw4cPV5MmTdS4cWMNGDBAO3furHJN77zzjjp37qzIyEidd955eu655yqN2bp1q+6+++7gsWrfvr2eeeaZkGBb8dbK1KlTNWnSJKWkpMjv92v58uXBMe3atVNaWppmzZoVMv+sWbM0YMAAxcfHV3nM+vbtq6SkJEVFRal9+/Z67LHHVFxcHDKu4q2u3Nxc9e7dWzExMWratKlGjRqlgwcPhoz1+XwaNWqU/vSnP+n888+X3+9Xhw4dNH/+/Er7z8vL04MPPqjk5GTVr19fKSkpeuKJJ0JClZvHjpqJ8IFqq3gP+fhfdF9++aU+/fRTDRkyRHXr1g25zxijo0ePVrq5aaq8efNmSdL555/v2WOoeJvlvvvu05133qno6OhKb700adJEbdu21cyZMzVt2jR9/fXXrtZ7umJjY/W73/1OS5Ys0bJly0469sEHH9To0aPVp08fLVy4UDNnzlRubq7S0tJCwtq//vUv9ejRQy+88IKWLl2qP/zhD/rkk090xRVXVPl21oABA9S2bVv99a9/1Ysvvuh6X8XFxUpPT1d+fr6ef/55ZWVlafr06WrZsqWKiookSatXr1ZUVJSuv/764NthM2fODNl/3bp1lZmZqdzcXM2dO/ekx2Dy5MkaNGiQOnTooLfeekt//vOfVVRUpCuvvFJffvnlSb/33nvv1fTp03Xvvffq3Xff1a233qqf//znJ7ym6f7771dERITmzZunqVOnasWKFbr77rsrjdu4caNGjx6tX//613rnnXeUlpamRx55RE8//XRwzO7du5WWlqalS5fqP/7jP/Tee++pT58++u1vf6tRo0ZVmvO5557TsmXL9PTTT2vRokW64IILQu4fNmyYFi5cqL1790qSvvnmG61atarSWcgK3377ra6//nq9+uqrWrx4sUaPHq233nqryjNNR44c0fXXX6/evXtr4cKFwYBxxx13VBr73nvv6bnnntPEiRP19ttvq1WrVho0aJDefvvt4Ji8vDxdeumlWrJkif7whz9o0aJFGjZsmDIzM/XAAw9U+7GjBjLAKejZs6dp0qSJOXz4cHDbb37zGyPJ/POf/wwZK+mEtz//+c/BcRMmTDCSTF5enjly5IjZu3eveeutt0xMTIwZNGhQpTW0atXK3HDDDVWub/ny5UaS+etf/1rpvuLiYhMXF2cuu+yy4LYhQ4YYn89nvvvuu5Cxn376qWnZsmVwvbGxsaZ///7mtddeM+Xl5e4OlkuzZ882kkxOTo4pLS015513nunWrVtwPz179jQdO3YMjl+9erWRZJ555pmQebZt22aioqLM2LFjq9xPeXm5OXLkiNmyZYuRZN59993gfRXPwR/+8IeQ73G7r7Vr1xpJZuHChSd9rDExMWbIkCGVth//vF1xxRUmOTnZlJSUGGN+ep5iYmKC47du3Wrq1atnHn744ZB5ioqKTGJiorn99tsrPbYKubm5RpJ59NFHQ773L3/5i5EUsr6K52bEiBEhY6dOnWokmV27dgW3tWrVyvh8PrNx48aQsenp6SYuLs4UFxcbY4x57LHHjCTzySefhIwbPny48fl85ptvvjHGGLN582YjybRp0ybk5+3Y+/74xz+aoqIi06BBAzNjxgxjjDH//u//blJSUkx5ebkZOXKkOdmv+4rXRHZ2tpFkPvvss+B9Q4YMMZLMs88+G/I9Tz75pJFkVq5cGdwmyURFRZm8vLzgtqNHj5oLLrjAtG3bNrjtwQcfNA0aNDBbtmwJmfPpp582kkxubq7jY0fNxpkPnJJhw4Zpz549eu+99yRJR48e1euvv64rr7xSqamplcbffvvtysnJqXS7/vrrK41NTExURESEGjZsqNtvv11du3Z1/Ou3Ot566y0VFhbqvvvuC2677777ZIzR7NmzQ8Zecskl+u6777R48WI9/vjj6tGjhz766CPdc889uummm056JqS8vDzkLI+btw8q1K9fX5MmTdLatWv11ltvVTnmgw8+kM/n09133x2yn8TERHXp0kUrVqwIji0oKNBDDz2kFi1aqF69eoqIiFCrVq0kSV999VWluW+99dZT2lfbtm3VsGFDPfroo3rxxRcdzzw4eeqpp7R9+3Y9++yzVd6/ZMkSHT16VPfcc0/IuiIjI9WzZ8+QY3C87OxsST+9No81cOBA1atX9eVwN910U8jXnTt3lqRK1UkdO3asdL3O4MGDVVhYqPXr10uSli1bpg4dOujSSy8NGTd06FAZYyqd9brpppsUERFxwsfToEED3XbbbZo1a5aOHj2q1157Tffee+8Jq1y+//57DR48WImJiapbt64iIiLUs2dPSVW/Ju66665Kj0dSpbdAevfuHXKxed26dXXHHXfou+++C7719sEHH+jqq69WIBAIed4q3q6teG7cPnbUPIQPnJKBAwcqPj4++J/1hx9+qPz8/BOe4m3atKm6detW6daoUaNKY//+978rJydHS5Ys0a233qqPP/5YDz/8sGdrf/XVVxUZGanrrrtO+/bt0759+9S5c2e1bt1ac+bMqRQSIiIidO211+rJJ5/UkiVLtG3bNvXq1UsffPCBFi1adML9TJw4UREREcHbsRfEunHnnXfq4osv1vjx46t8ayQ/P1/GGCUkJITsJyIiQmvWrAlez1FeXq6+fftqwYIFGjt2rD766CN9+umnWrNmjaSfLqw93vHXubjdV3x8vLKzs3XRRRfp8ccfV8eOHRUIBDRhwoSTViudSFpamm655RZNmTIl+HbC8euSfgqJx6/rzTffrHRNy7F+/PFHSQr5j1KS6tWrp8aNG1f5Pcdvr7jo8fhjmJiYWOl7K7ZV7PfHH3+s8nqiQCAQMq7Cia49OtawYcO0fv16Pfnkk9q9e3eV161IP1XBXHnllfrkk080adIkrVixQjk5OVqwYEGVj6eqY3L84zl++8nG5ufn6/3336/0nHXs2FGSKj1vbh47ahaqXXBKoqKiNGjQIL388svatWuXZs2apdjYWN12222nPXeXLl2C1S7p6em69tpr9dJLL2nYsGG65JJLTmvuf/7zn1q5cqUkqWXLllWOWbJkSZVnZCo0btxYo0eP1ooVK/TFF1+ccOwvf/nLkM97qO7V+T6fT0899ZTS09MrVdtIP12T4vP59I9//KPKuSu2ffHFF/rss880Z84cDRkyJHj/d999d9J9n8q+JOnCCy/U/PnzZYzR559/rjlz5mjixImKiorSY4895vzAj5OZmalOnTpp8uTJle6reJ1UXFtQHRX/mebn56t58+bB7UePHq30H2p1VfW5NBXbKvbbuHFj7dq1q9K4igtYKx5bBTef03H55ZerXbt2mjhxotLT09WiRYsqxy1btkw7d+7UihUrgmc7JJ3wWpeKY3JsADn+8Ry/vaptFWObNGmizp0768knn6xyfxUBrAKfUVL7ED5wyoYNG6YXX3xRf/zjH/Xhhx9q6NChnpdk+nw+Pf/88+rQoUPwIszTUXFR6csvv6y2bduG3FdSUqKbb75Zs2bN0vXXX68jR46osLCwyr+CK05LH/9L8liBQOCk97vRp08fpaena+LEiZX+I+nfv7+mTJmiHTt2VHrr4FgVv7iPDw1/+tOfXK/D7b6O32+XLl30n//5n5ozZ07w7YaKtVR1xqUqF1xwge677z7913/9l9LS0kLuu/baa1WvXj3961//qvRWkZOrrrpK0k9VHxdffHFw+9tvvx1ScXEqcnNz9dlnn4W89TJv3jzFxsYG99W7d29lZmZq/fr1Ift/7bXX5PP5TlhW7uR3v/ud3n77bY0cOfKEY07lNfHGG2/oV7/6VcjjkVSpUumjjz5Sfn5+8IxSWVmZ3nzzTbVp0yZY6ty/f399+OGHatOmjRo2bOj+waHWIHzglHXr1k2dO3fW9OnTZYw54Vsu0k9/XVac5j9WXFycOnTocNL9pKam6pe//KVmzpyplStX6oorrjil9Va8D96+fXvdf//9VY658cYb9d5772n37t3y+Xxq3bq1brvtNvXp00ctWrTQgQMHtGLFCj377LNq3769BgwYcEprqY6nnnpKXbt2VUFBQfC0tPTTX7m//OUvde+992rt2rW66qqrFBMTo127dmnlypW68MILNXz4cF1wwQVq06aNHnvsMRlj1KhRI73//vvKyspyvQa3+/rggw80c+ZM3XLLLTrvvPNkjNGCBQu0b9++kM+fuPDCC7VixQq9//77SkpKUmxsrNq1a3fC/WdkZOiNN97Q8uXLFRMTE9zeunVrTZw4UePHj9f333+v6667Tg0bNlR+fr4+/fRTxcTE6Iknnqhyzo4dO2rQoEF65plnVLduXV1zzTXKzc3VM888o/j4+NMqpQ4EArrpppuUkZGhpKQkvf7668rKytJTTz0VDOi//vWv9dprr+mGG27QxIkT1apVK/33f/+3Zs6cqeHDh59yddfdd99dZQXOsdLS0tSwYUM99NBDmjBhgiIiIvTGG2/os88+q3J8/fr19cwzz+jAgQO65JJLtGrVKk2aNEn9+vWr9PPYpEkTXXPNNfr973+vmJgYzZw5U19//XVIue3EiROVlZWltLQ0/epXv1K7du106NAh/fDDD/rwww/14osv1prPZMEJnLVLXVErPPvss0aS6dChwwnH6CTVLpdffnlwXEU1wu7duyvNkZ+fbxo0aGCuvvrq4LbqVrssXLjQSDLTp08/4VoXL14crOooLS01Tz/9tOnXr59p2bKl8fv9JjIy0rRv396MHTvW/Pjjjyc9NtV1bLXL8QYPHmwkhVS7VJg1a5bp3r27iYmJMVFRUaZNmzbmnnvuMWvXrg2O+fLLL016erqJjY01DRs2NLfddpvZunWrkWQmTJgQHHey58DNvr7++mszaNAg06ZNGxMVFWXi4+PNpZdeaubMmRMyz8aNG83ll19uoqOjjSTTs2dPY8zJq5Qef/xxIymk2qXCwoULzdVXX23i4uKM3+83rVq1MgMHDjR///vfKz22Yx06dMiMGTPGNGvWzERGRprLLrvMrF692sTHx5tf//rXwXEnem4q1rt8+fLgtorX5dtvv206duxo6tevb1q3bm2mTZtWad1btmwxgwcPNo0bNzYRERGmXbt25o9//KMpKysLjjm2ouV4J7vvWFVVu6xatcr06NHDREdHm6ZNm5r777/frF+/3kgys2fPDo6rqDD6/PPPTa9evUxUVJRp1KiRGT58uDlw4EDInJLMyJEjzcyZM02bNm1MRESEueCCC8wbb7xRaU27d+82v/rVr0xKSoqJiIgwjRo1Ml27djXjx48Pzuv28aHm8Rlj4YMLAKCGWLVqlS6//HK98cYbwYqOc9nQoUP19ttv68CBA45jfT6fRo4cqRkzZlhYGWoy3nYBcM7KysrS6tWr1bVrV0VFRemzzz7TlClTlJqaauUtNeBcRfgAcM6Ki4vT0qVLNX36dBUVFalJkybq16+fMjMz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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "MAGICCam: nearest_interpolation\n", - "92.1 µs ± 6.02 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "MAGICCam - NearestNeighborMapper:\n", + "Initialization time: \n", + "43.7 ms ± 90.1 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "25.7 µs ± 67.2 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABNR0lEQVR4nO3de1xU1d4/8M8WmeEiDAJyU0RU1LxmWihm2DEx057KMsuOaVbHjnqKrKOZlWAFZh0fO2mWHjTL1J6OZtYxFY9JFzLRNE3LLBEpRRSBwdsgsH5/+GNynL227nHYMMPn/XrxKtbea++1Nreve9Z8tiKEECAiIiIySJP6HgARERE1Liw+iIiIyFAsPoiIiMhQLD6IiIjIUCw+iIiIyFAsPoiIiMhQLD6IiIjIUCw+iIiIyFAsPoiIiMhQLD4IAPDOO+9AURQoioItW7Y4bRdCoH379lAUBQMGDFA9xokTJ2A2m6EoCrZv3y49l81mw/z585GcnIywsDD4+voiLCwMAwYMwNtvv42KigqH/RVFwaRJk5yOc+zYMTzzzDPo1q0bmjVrBj8/PyQkJOCJJ57AgQMHnPb/8ssvce+996Jly5YwmUywWCxISkrCggULcPr0ae0L1EANGDAAiqLg1ltvddp26NAhKIqC1157rR5G5l779u1DWloaDh065LRt7NixUBQFXbp0QXV1tdN22ffPlWjTpg3Gjh3rUt8BAwaga9eul91vy5YtUBQF//73v106j15paWlQFAVNmjTBwYMHnbafPn0awcHBUBTF5bkTXQ6LD3IQFBSErKwsp/acnBz8+uuvCAoKkvZ97733UFlZCQCqxwCA48ePIykpCZMnT0bHjh2xcOFCbN68GVlZWejevTumTJmCCRMmXHac27ZtQ7du3ZCVlYV77rkHq1evxvr16/H000/ju+++ww033OCw/4wZM3DTTTfh999/x4svvojs7GysXLkSAwcORFpaGp577rnLnrMh27BhAzZv3lzfw6gz+/btQ3p6umrxcfE+77zzjlvP+9FHH+H555936zEbimbNmmHJkiVO7R9++CHOnz8PX1/fehgVNRZN63sA1LCMHDkS77//PubPn4/g4GB7e1ZWFvr27Qur1Srtu3jxYkRERCAuLg4rVqzAnDlz4O/v77DPn//8Z+zZswebNm3CTTfd5LDtzjvvxIwZM/DZZ59pjtFqteKOO+6An58fcnNz0apVK/u2AQMGYPz48Q7/ivzwww8xc+ZMPPzww1i0aBEURbFvGzJkCKZMmYJvvvlG+8I0YB06dEBVVRWmTJmCvLw8h/nVl7Nnzzp97etSYGAgrrvuOsyYMQOjRo1y27l79uzpluM0BGfOnEFAQID985EjR2Lp0qVIT09HkyZ//Ds0KysLd911F9auXVsfw6wTl86d6h/vfJCD+++/HwCwYsUKe1t5eTlWrVqFcePGSft9++23+OGHHzB69Gg8+uij9j4Xy8vLw8aNG/GXv/zFqfCoFRYWhj//+c+aY1y0aBGKioowe/Zsh8LjYvfcc4/9/2fOnInmzZvjn//8p+of5qCgIKSkpNg/nz9/Pm666SZEREQgMDAQ3bp1w+zZs3H+/HmHfrW31b/55hskJSXB398fbdq0sf9r8j//+Q+uu+46BAQEoFu3bli/fr3mvFzl6+uLl19+GTt27MAHH3xw2f2Lioowfvx4tGrVCiaTCfHx8UhPT0dVVZXDfunp6UhMTERoaCiCg4Nx3XXXISsrC5c+i7JNmzYYNmwYVq9ejZ49e8LPzw/p6em6zrVgwQL06NEDzZo1Q1BQEDp16oRnn30WwIWXBEeMGAEAuPnmm+0vD156l+OVV17B77//jtdff/2y18BqteLpp59GfHw8TCYTWrZsidTUVKeX39Redtm7dy9SUlIQEBCAFi1aYOLEifjPf/4jfckyLy8P/fv3R0BAANq2bYtZs2ahpqbGab9z585h8uTJiIqKgr+/P5KTk7Fz506n/dauXYu+ffsiICAAQUFBGDRokFPxXPvSynfffYd77rkHzZs3R7t27Rz2GTduHAoLC5GdnW1v+/nnn/HVV1+p/qyfO3cOTz31FK699lpYLBaEhoaib9+++Pjjj532rX2p6+2330aHDh1gNpvRuXNnrFy50mG/2pd7s7Oz8dBDDyE0NBSBgYG4/fbbVV8S2rRpEwYOHIjg4GAEBASgX79++O9//6t77tQACCIhxJIlSwQAkZeXJ0aPHi1uuOEG+7YFCxaIwMBAYbVaRZcuXURycrJT/0cffVQAEHv37hVWq1UEBASIAQMGOOzz8ssvCwBiw4YNusYGQEycONH+eUpKivDx8RGnTp26bN8jR44IAGLkyJFXfL4nn3xSLFiwQKxfv15s3rxZ/O///q8IDw8XDz30kMN+ycnJIiwsTHTs2FFkZWWJDRs2iGHDhgkAIj09XXTr1k2sWLFCrFu3TvTp00eYzWbx+++/X/nEr0BycrLo0qWLqKmpEb169RLt2rUTlZWVQggh8vPzBQDx6quv2vc/evSoiI2NFXFxceLtt98WmzZtEi+++KIwm81i7NixDsceO3asyMrKEtnZ2SI7O1u8+OKLwt/fX6SnpzvsFxcXJ6Kjo0Xbtm3F4sWLxeeffy62bdt2xedasWKFACD+9re/iY0bN4pNmzaJt956Szz++ONCCCGKi4tFRkaGACDmz58vvvnmG/HNN9+I4uJiIYQQY8aMEYGBgUIIIe666y4REhIiSkpK7Me/9Pvn9OnT4tprrxXh4eFizpw5YtOmTeL1118XFotF/OlPfxI1NTUOcxszZoz98yNHjoiwsDDRunVr8c4774h169aJ0aNHizZt2ggA4vPPP3f42oSFhYmEhATx1ltviezsbDFhwgQBQCxdutS+3+effy4AiNjYWHHHHXeITz75RCxbtky0b99eBAcHi19//dW+7/vvvy8AiJSUFLFmzRrxwQcfiF69egmTySS+/PJL+34zZswQAERcXJyYOnWqyM7OFmvWrHHYdvz4cdG/f39x77332vtNnTpVtGnTRtTU1IjAwECHuZeVlYmxY8eK9957T2zevFmsX79ePP3006JJkyYO86m95rGxsaJz585ixYoVYu3ateLWW28VAMSHH35o36/2905sbKwYN26c+Oyzz8TChQtFRESEiI2NFaWlpfZ933vvPaEoirjzzjvF6tWrxSeffCKGDRsmfHx8xKZNm65o7tRwsPggIYRj8VH7y/CHH34QQghx/fXX2/9YqBUfp0+fFsHBwaJPnz72tjFjxghFUcQvv/xib3vssccEAPHTTz859K+pqRHnz5+3f1RVVTlsv/SPR6dOnURUVNQVzWvr1q0CgHjmmWeuaP9LVVdXi/Pnz4t3331X+Pj4iJMnT9q3JScnCwBi+/bt9raSkhLh4+Mj/P39HQqNXbt2CQDin//8p0vjkKktPoQQYtOmTQKAeOONN4QQ6sXH+PHjRbNmzURBQYHDcV577TV78aim9jrMnDlThIWFOf2B9vHxEfv373foc6XnmjRpkggJCdGc54cffuj0x73WxcXHTz/9JHx8fMRTTz1l337p909mZqZo0qSJyMvLczjOv//9bwFArFu3zmFuF/8B/vvf/y4URXG6ToMHD1YtPgCIb7/91mHfzp07i8GDB9s/r/15u+666xyu66FDh4Svr6945JFHhBAXvgYxMTGiW7duorq62r5fRUWFiIiIEElJSfa22j/AL7zwgtP1urj4WLJkiTCbzaKkpERUVVWJ6OhokZaWJoQQTsXHpaqqqsT58+fFww8/LHr27OmwDYDw9/cXRUVFDvt36tRJtG/f3t5W+3vnrrvucuj/9ddfCwDipZdeEkJc+B0TGhoqbr/9dof9qqurRY8ePRz+saQ1d2o4+LILOUlOTka7du2wePFi7NmzB3l5eZovufzf//0frFarwz7jxo2DEEJ1QdulPv74Y/j6+to/LBaLW+bhqp07d+J//ud/EBYWBh8fH/j6+uLBBx9EdXU1fv75Z4d9o6Oj0atXL/vnoaGhiIiIwLXXXouYmBh7+zXXXAMAKCgo0Dx3dXU1qqqq7B9qt+dlBg4ciJSUFMycOdPpHUO1Pv30U9x8882IiYlxOM+QIUMAXFhYXGvz5s245ZZbYLFY7NfhhRdeQElJCYqLix2O2717d3To0MGlc91www0oKyvD/fffj48//hgnTpy44jlfqmPHjnj44Ycxb948HD58WHoNunbtimuvvdZhXIMHD5a+dFIrJycHXbt2RefOnR3aa1+uvFRUVJTT4ufu3burfh+MGjXK4WXBuLg4JCUl4fPPPwcA7N+/H0eOHMHo0aMd1mg0a9YMd999N7Zu3YozZ844HPPuu++WzgUARowYAZPJhPfffx/r1q1DUVGR5jtcPvzwQ/Tr1w/NmjVD06ZN4evri6ysLPz4449O+w4cOBCRkZH2z318fDBy5Ej88ssv+O233xz2feCBBxw+T0pKQlxcnH3uubm5OHnyJMaMGeP083HrrbciLy/P6SWzy82d6heLD3KiKAoeeughLFu2DG+99RY6dOiA/v37S/fPysqCn58fbr31VpSVlaGsrAzdu3dHmzZt8M4779jf/ti6dWsAzn+ABwwYgLy8POTl5WHYsGGXHV/r1q1x/PjxK3p7bO058/PzL7svABw+fBj9+/e3rx348ssvkZeXh/nz5wO4sJDyYqGhoU7HMJlMTu0mkwnAhdfNtbRr186hEJs5c+YVjbvWK6+8ghMnTkjfXnvs2DF88sknDufw9fVFly5dAMD+h3/btm32dTCLFi3C119/jby8PEyfPh2A83WIjo52+VyjR4/G4sWLUVBQgLvvvhsRERFITEx0WIugR1paGnx8fKTvUjl27Bh2797tNK6goCAIITSLn5KSEoc/qLXU2oALa5guZTabna4fcKFQUWsrKSmxnxtQv9YxMTGoqalBaWmpQ7vavhcLDAzEyJEjsXjxYmRlZeGWW25BXFyc6r6rV6+2v1V92bJl+Oabb+z/MFH7vpbN5+K5XG7f2v2OHTsG4MJarku/bq+88gqEEDh58qSuuVP94rtdSNXYsWPxwgsv4K233sLLL78s3a92gRrwxx/6S23YsAG33XYbBg0ahGeffRZr1651WOAZEhKC3r17A1D/ZX2pwYMHY+PGjfjkk09w3333ae4bHR2Nbt26YePGjVe04n3NmjU4ffo0Vq9e7fBLeNeuXZcdlzt88sknsNls9s8vvntyJa699lrcf//9mDNnDm677Tan7eHh4ejevbv0a1p7vpUrV8LX1xeffvop/Pz87NvXrFmj2k9tIe+VngsAHnroITz00EM4ffo0vvjiC8yYMQPDhg3Dzz//LP1jKBMdHY3U1FTMmjULTz31lOq4/P39sXjxYtX+4eHh0mOHhYXZ/xBerKioSNcY1agdo6ioyP4zUfvfo0ePOu135MgRNGnSBM2bN3dov5J3Po0bNw7/+te/sHv3brz//vvS/ZYtW4b4+Hh88MEHDse9+Pv1SuZz8Vwut2/79u0B/PE1eeONN9CnTx/V811aADaEd32RHIsPUtWyZUv8/e9/x08//YQxY8ZI96vN81i0aJH9F0Wts2fP4o477sDixYtx2223oXfv3khJScGiRYswcuRIzbspWh5++GG8+uqrmDJlCvr374+WLVs67bN69WoMHz4cAPD888/j3nvvxeOPP+70VlsAOHXqFHJzc5GSkmLfZjab7duFEFi0aJFLY9WrW7duV32Ml156Cf/+97/t7zi52LBhw7Bu3Tq0a9fO6Q/VxRRFQdOmTeHj42NvO3v2LN57770rHseVnutigYGBGDJkCCorK3HnnXdi7969iIuLs3891O4YqJk6dSoWLlyIZ555RnVcGRkZCAsLQ3x8/BXPB7jwkuRrr72Gffv2Obz0cum7OFyxYsUKTJ482f49WFBQgNzcXDz44IMALryk1LJlSyxfvhxPP/20fb/T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piiOS9CFEE5ttaZNm4by8nL7R2Gh+mPbiYiIyDvoWvNR629/+xvWrl2LL774Aq1a/fF2yqioKAAX7oBER0fb24uLi53uhtQym80wm82uDIOIiIg8kK47H0IITJo0CatXr8bmzZsRHx/vsD0+Ph5RUVHIzs62t1VWViInJwdJSUnuGTERERF5NF13PiZOnIjly5fj448/RlBQkH0dh8Vigb+/PxRFQWpqKjIyMpCQkICEhARkZGQgICAAo0aNqpMJEBERkWfRlXAqW7exZMkSjB07FsCFuyPp6el4++23UVpaisTERMyfP9++KPVymHDqXnrTT3dV6k8Y/aKik+4+RqSfelryqWE8MBXUm5JM9V5/WYqpZh9JwqneFFPAtSTThLATuvskhuTr2l9viikAdDad093nvlZ9dfdprPQknOq683EldYqiKEhLS0NaWpqeQxMREVEjwQfLERERkaFYfBAREZGhXHqrLXmOMbH9VNtdeRJuY1bZXL7NlfUg3kJrPYK5TF8f2f4AUGlRbzc11HU1LrBJ5qjZx4Wn15IzruswHu98EBERkaFYfBAREZGhWHwQERGRoVh8EBERkaG44JQcXGs6Kd0mCyC7Kegn1favKzpIj9W7+WHV9u2lraV92oSpj00WPmYOPys9lisBZHpJFxB6U2CWBr3hWK6EackWomrxuMAyF9aUuhImFhR2Wv30kgvWIfy47nPoDRIDjAsTI2PxzgcREREZisUHERERGYrFBxERERmKxQcREREZigtOGylPTD5totR9muN5yUI93xL5j4os/VSWfGrTSEs1G5CW6sr5bZIHCmuNV3Ye6TlcGZfOczQElZJUUlOp+sJOWyhTTNXwCbWejXc+iIiIyFAsPoiIiMhQLD6IiIjIUCw+iIiIyFBccEoOtKrR6yTpp99Jkk/7Bf0sPZYs/VSWfAoA35XFqra3DS9RbT94Ikx6LFn6qa3EfcmnskWamn00Fl0aQe/5XRmvEX08cZGmbCGqO8lSTLU05CRT8ly880FERESGYvFBREREhmLxQURERIbimg9yMFoSPgYA70kCyP633TWq7U/++qNbxlQX9D7YVBY+BsgDyKpC1fs0PSn/sZP1ceeTWLUC06Qha5Ixn5eMV7NP2HnJuHw1xqWvj0vjkvXRuPaya+nK94usjyvfL/X94N5qyQiSAn6R9qmR/Fv4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EAsWLEBCQgI2bNiAxx57DI8//jjeffddAN7/tb/YmjVrUFZWhrFjxwJoXHOvVSfPdrkaiqI4fC6EcGprLBrDtZg0aRJ2796Nr776ymmbt86/Y8eO2LVrF8rKyrBq1SqMGTMGOTk59u3eOm8AKCwsxBNPPIGNGzfCz89Pup+3XoMhQ4bY/79bt27o27cv2rVrh6VLl6JPnz4AvHfuNTU16N27NzIyMgAAPXv2xN69e7FgwQI8+OCD9v28df4Xy8rKwpAhQxATE+PQ3hjmXqvB3PkIDw+Hj4+PU5VXXFzsVA16u9rV795+Lf72t79h7dq1+Pzzz9GqVSt7u7fP32QyoX379ujduzcyMzPRo0cPvP76614/bwDYsWMHiouL0atXLzRt2hRNmzZFTk4O/vnPf6Jp06b2eXrzNbhYYGAgunXrhgMHDnj91z86OhqdO3d2aLvmmmtw+PBhAN7/c1+roKAAmzZtwiOPPGJvayxzv1iDKT5MJhN69eqF7Oxsh/bs7GwkJSXV06jqR3x8PKKiohyuRWVlJXJycrziWgghMGnSJKxevRqbN29GfHy8w3Zvn/+lhBCw2WyNYt4DBw7Enj17sGvXLvtH79698cADD2DXrl1o27at11+Di9lsNvz444+Ijo72+q9/v379nN5S//PPP9ufdu7t86+1ZMkSREREYOjQofa2xjJ3B/W00FVV7Vtts7KyxL59+0RqaqoIDAwUhw4dqu+huV1FRYXYuXOn2LlzpwAg5syZI3bu3Gl/W/GsWbOExWIRq1evFnv27BH333+/17zt6q9//auwWCxiy5YtDm89O3PmjH0fb53/tGnTxBdffCHy8/PF7t27xbPPPiuaNGkiNm7cKITw3nlrufjdLkJ49zV46qmnxJYtW8TBgwfF1q1bxbBhw0RQUJD9d5w3z33btm2iadOm4uWXXxYHDhwQ77//vggICBDLli2z7+PN8xdCiOrqatG6dWsxdepUp23ePvdLNajiQwgh5s+fL+Li4oTJZBLXXXed/e2X3ubzzz8XAJw+xowZI4S48LazGTNmiKioKGE2m8VNN90k9uzZU7+DdhO1eQMQS5Ysse/jrfMfN26c/fu7RYsWYuDAgfbCQwjvnbeWS4sPb74GtdkNvr6+IiYmRgwfPlzs3bvXvt2b5y6EEJ988ono2rWrMJvNolOnTmLhwoUO2719/hs2bBAAxP79+522efvcL6UIIUS93HIhIiKiRqnBrPkgIiKixoHFBxERERmKxQcREREZisUHERERGYrFBxERERmKxQcREREZisUHERERGYrFBxERERmKxQcREREZisUHERERGYrFBxERERnq/wEW5fFPXRinxAAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "MAGICCam: bilinear_interpolation\n", - "96.5 µs ± 302 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "FACT - NearestNeighborMapper:\n", + "Initialization time: \n", + "79.2 ms ± 193 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "28.4 µs ± 488 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGoElEQVR4nO3deZwU1b3//3dPz0zPwswgIDOACgOiKGhEiETUgBtGMdeIGndR1JggQcQ9GAWiLOrlx40oBgXEIGI0RInRROKCMRhFXIPXHYGII8oyMzB79/n+4Y++NnUKq6jumoXX8/GYh3L6dNWpru6ZT5/61OdEjDFGAAAAIclq7gEAAIA9C8EHAAAIFcEHAAAIFcEHAAAIFcEHAAAIFcEHAAAIFcEHAAAIFcEHAAAIFcEHAAAIFcEHQvXggw8qEolYf6699tqUvr/97W8ViUTUr1+/XW7z008/1ZgxY3TAAQcoPz9fBQUF6tu3r26++WZ9/vnnevHFF133ufNPugwdOlSRSEQ/+tGPHI999tlnikQiuuuuu9K2v+by3nvvaeLEifrss88cj1188cWKRCLq27ev4vG44/FIJKIxY8bs1n579Oihiy++eLeeO3To0O98T0lKvm8ef/zx3dqPXxMnTlQkElFWVpY+/fRTx+Pbt29XcXGxIpHIbh870FJkN/cAsGeaP3+++vTpk9LWtWvXlH/PmzdPkrR69Wq9+uqrGjRokGM7Tz31lM455xx16tRJY8aMUf/+/RWJRPTuu+9q3rx5+stf/qLly5frlVdeSXne6aefrl69emU8APjb3/6m559/Xscdd1xG99Nc3nvvPU2aNElDhw5Vjx49XPs8+OCDuvTSS9O23z/96U8qLi5O2/Zaknbt2mn+/Pn6zW9+k9L+2GOPqbGxUTk5Oc00MiB9CD7QLPr166eBAwe6Pv7666/r7bff1vDhw/WXv/xFc+fOdQQfa9as0TnnnKMDDjhAL7zwgkpKSpKPHXfccRo7dmzyj9QPfvCDlOfGYjG1b9/e0Z5OBxxwgJqamnT99ddr5cqVaZ1Z2V21tbXKz88PbX+FhYU6/PDDdeutt+q8885L27779++flu20BDU1NSooKEj+++yzz9aCBQs0adIkZWX93+T03Llzdfrpp2vp0qXNMcyM2PnYsefgsgtapLlz50qSpk2bpsGDB2vx4sWqqalJ6TNjxgxt375d9957b0rgsUMkEtGIESNCGa9NTk6Obr/9dq1atUqPPvrod/avqKjQFVdcoX322Ue5ubkqLy/XpEmT1NTUlNJv0qRJGjRokDp06KDi4mIdfvjhmjt3rnZeI7JHjx469dRTtWTJEvXv3195eXmaNGmSr33Nnj1b3/ve99SuXTsVFRWpT58++tWvfiXpm0toZ511liTp2GOPTV66evDBB1O2MX36dH3++ef6n//5n+98DaqqqnTttdeqvLxcubm56tatm8aNG6ft27c7jm3nSw+rV6/WsGHDVFBQoL333ltXXnml/vKXvygSiejFF1907GvlypU65phjVFBQoJ49e2ratGlKJBKOfnV1dRo/frzKysqUn5+vIUOG6M0333T0W7p0qY488kgVFBSoqKhIJ554omPGbcellTfeeENnnnmm9tprL/Xq1Sulz6hRo7R+/XotW7Ys2fbhhx/q5Zdf1qhRo6zju+aaa3TYYYeppKREHTp00JFHHqknn3zS0XfHpa7f/e53OuCAAxSLxXTwwQdr8eLFKf12XB5dtmyZLrnkEnXo0EGFhYX68Y9/bL0k9Pe//13HH3+8iouLVVBQoKOOOkrPPfec72PHnoPgA80iHo+rqakp5WeH2tpaPfLII/r+97+vfv36adSoUaqurtZjjz2Wso1nn31WpaWlGZ29COrss8/WgAEDdPPNN6uxsdG1X0VFhY444gj97W9/0y233KJnnnlGl156qaZOnarLL788pe9nn32mK664Qn/4wx+0ZMkSjRgxQr/85S8d0/SS9MYbb+i6667T2LFj9de//lVnnHGG530tXrxYo0eP1pAhQ/SnP/1JTzzxhK6++upkIDB8+HBNmTJFknTPPffolVde0SuvvKLhw4enjOHII4/U6aefrunTp2vz5s2ur0FNTY2GDBmiBQsWaOzYsXrmmWd0ww036MEHH9R//dd/OYKrb/viiy80ZMgQffDBB5o9e7YeeughVVdXu+aUVFRU6Pzzz9cFF1ygpUuX6uSTT9ZNN92khQsXOvr+6le/0qeffqoHHnhADzzwgDZs2KChQ4em/BFetGiRTjvtNBUXF+uRRx7R3LlztWXLFg0dOlQvv/yyY5sjRozQ/vvvr8cee0z33XdfymO9e/fWMccck7zsKH1zCbJHjx46/vjjHduqr6/X5s2bde211+qJJ57QI488oqOPPlojRozQQw895Oi/dOlS/fa3v9XkyZP1+OOPq3v37jr33HOtuS2XXnqpsrKytGjRIs2cOVOvvfaahg4dqq1btyb7LFy4UMOGDVNxcbEWLFigP/zhD+rQoYNOOukkRwDyXceOPYgBQjR//nwjyfrT2NhojDHmoYceMpLMfffdZ4wxprq62rRr184cc8wxKdvKy8szP/jBD3ZrHN27dzfDhw8PdjC7MGTIENO3b19jjDF///vfjSRz9913G2OMWbNmjZFk7rzzzmT/K664wrRr186sXbs2ZTt33XWXkWRWr15t3U88HjeNjY1m8uTJpmPHjiaRSCQf6969u4lGo+aDDz5IeY7XfY0ZM8a0b99+l8f52GOPGUnmhRdecDw2cuRIU1hYaIwx5v333zfRaNRcc801ycclmSuvvDL576lTp5qsrCyzcuXKlO08/vjjRpJ5+umnU45t5MiRyX9fd911JhKJOF6nk046yTG+IUOGGEnm1VdfTel78MEHm5NOOin57xdeeMFIMocffnjK6/rZZ5+ZnJwcc9lllxljvjkHXbt2NYcccoiJx+PJftXV1aZz585m8ODBybZbb73VSDK33HKL4/Xa8dhXX31l5s+fb2KxmNm0aZNpamoyXbp0MRMnTjTGGFNYWJhy7DtramoyjY2N5tJLLzX9+/dPeUySyc/PNxUVFSn9+/TpY/bff/9k247P6emnn57y/H/+859GkrntttuMMcZs377ddOjQwfz4xz9O6RePx833vvc9c8QRR3g6dux5mPlAs3jooYe0cuXKlJ/s7G9SkObOnav8/Hydc845kr5JwDvrrLP0j3/8Qx999FGzjHfnmRrb9Lyb448/XsOGDdPkyZNVXV1t7fPUU0/p2GOPVdeuXVP2c/LJJ0uSli9fnuz7/PPP64QTTlBJSYmi0ahycnJ0yy23aNOmTdq4cWPKdg899FAdcMABu7WvI444Qlu3btW5556rJ598Ul9//bXnY97ZgQceqEsvvVSzZs3SunXrXF+Dfv366bDDDksZ10knneR66WSH5cuXq1+/fjr44INT2s8991xr/7KyMh1xxBEpbYceeqjWrl3r6Hveeeel5Ot0795dgwcP1gsvvCBJ+uCDD7RhwwZdeOGFKTka7dq10xlnnKF//etfjkuGZ5xxhuuxSNJZZ52l3NxcPfzww3r66adVUVGxyztcHnvsMR111FFq166dsrOzlZOTo7lz5+p///d/HX2PP/54lZaWJv8djUZ19tln6+OPP9Z//vOflL7nn39+yr8HDx6s7t27J499xYoV2rx5s0aOHOn4fPzoRz/SypUrHZfMvuvYsWcg+ECzOOiggzRw4MCUH0n6+OOP9dJLL2n48OEyxmjr1q3aunWrzjzzTElKmYreb7/9tGbNmlDG26tXL+Xk5CR/Jk+e7Ov506dP19dff+16d82XX36pP//5zyn7yMnJUd++fSUp+Yf/tdde07BhwyRJ999/v/75z39q5cqVmjBhgqRvLll9W5cuXXZ7XxdeeKHmzZuntWvX6owzzlDnzp01aNCglFwEPyZOnKhoNKpf//rXrq/BO++84xhXUVGRjDG7DH42bdqU8gd1B1ubJHXs2NHRFovFHK+f9E2gYmvbtGlTct+S/bXu2rWrEomEtmzZktJu6/tthYWFOvvsszVv3jzNnTtXJ5xwgrp3727tu2TJEv30pz9Vt27dtHDhQr3yyitauXKlRo0apbq6Os/H8+1j+a6+O/p9+eWXkqQzzzzTcd6mT58uY4zjUtt3HTv2DNztghZl3rx5Msbo8ccft16DXrBggW677TZFo1GddNJJuvvuu/Wvf/0r43kff/7zn1VfX5/89863BX+Xww47TOeee65mzJihU045xfF4p06ddOihh+r222+3Pn/H/hYvXqycnBw99dRTysvLSz7+xBNPWJ9nu8PG674k6ZJLLtEll1yi7du366WXXtKtt96qU089VR9++KHrH0M3Xbp00bhx4zRt2jRdc8011nHl5+enBJg7P+6mY8eOyT+E31ZRUeFrjDa2bVRUVCQDmB3//eKLLxz9NmzYoKysLO21114p7V7ufBo1apQeeOABvfPOO3r44Ydd+y1cuFDl5eV69NFHU7b77ferl+P59rF8V9/9999f0v+dk7vvvtv1M7hzANgS7vpC8yP4QIsRj8e1YMEC9erVSw888IDj8aeeekr//d//rWeeeUannnqqrr76as2bN0+jR4923GorScYYPfHEEzr99NMDj+2QQw4JvI3bbrtNjz/+ePKOk2879dRT9fTTT6tXr16OP1TfFolElJ2drWg0mmyrra3V73//e8/j8LqvbyssLNTJJ5+shoYG/eQnP9Hq1avVvXt3xWKx5Bi8uOGGGzRnzhzdeOON1nFNmTJFHTt2VHl5uefjkaQhQ4borrvu0nvvvZdy6WXnuzh2xyOPPKLx48cn/2iuXbtWK1as0EUXXSTpm0tK3bp106JFi3Tttdcm+23fvl1//OMfk3fA+HXkkUdq1KhRqqys3OV7OBKJKDc3N+WPekVFhfVuF0l67rnn9OWXXyaDgng8rkcffVS9evXSPvvsk9L34YcfTrlMsmLFCq1du1aXXXaZJOmoo45S+/bt9d577+12wTjsmQg+0GI888wz2rBhg6ZPn66hQ4c6Hu/Xr59mzZqluXPn6tRTT1V5ebkWL16ss88+W4cddliyyJj0TWGrHbMo6Qg+0qG8vFy/+MUvrLecTp48WcuWLdPgwYM1duxYHXjggaqrq9Nnn32mp59+Wvfdd5/22WcfDR8+XDNmzNB5552nn/3sZ9q0aZPuuuuuZBDghdd9XX755crPz9dRRx2lLl26qKKiQlOnTlVJSYm+//3vS1KyUuicOXNUVFSkvLw8lZeXWy9rSFJxcbEmTJigq6++2vHYuHHj9Mc//lE//OEPdfXVV+vQQw9VIpHQunXr9Oyzz+qaa66xFprb8dx58+bp5JNP1uTJk1VaWqpFixbp/fffl6SUXAy/Nm7cqNNPP12XX365KisrdeuttyovL0833XRTctt33HGHzj//fJ166qm64oorVF9frzvvvFNbt27VtGnTdnvfO24535Udt1OPHj1aZ555ptavX6/f/OY36tKlizVHqlOnTjruuOP061//WoWFhbr33nv1/vvvWwO1119/XZdddpnOOussrV+/XhMmTFC3bt00evRoSd/ktdx9990aOXKkNm/erDPPPFOdO3fWV199pbfffltfffWVZs+evdvHjzasObNdsefZkUW/8x0Nxhjzk5/8xOTm5pqNGze6Pv+cc84x2dnZKdn6n3zyiRk9erTZf//9TSwWM/n5+ebggw8248ePN2vWrLFuJ8y7Xb7tq6++MsXFxY67XXY8NnbsWFNeXm5ycnJMhw4dzIABA8yECRPMtm3bkv3mzZtnDjzwQBOLxUzPnj3N1KlTzdy5c42klOPd1TF62deCBQvMsccea0pLS01ubq7p2rWr+elPf2reeeedlG3NnDnTlJeXm2g0aiSZ+fPnG2NS73b5tvr6elNeXu6428UYY7Zt22Zuvvlmc+CBB5rc3FxT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fAAAgFARfAAAgFBlLPi49957VV5erry8PA0YMED/+Mc/MrUrAADQimQk+Hj00Uc1btw4TZgwQW+++aaOOeYYnXzyyVq3bl0mdgcAAFqRjAQfM2bM0KWXXqrLLrtMBx10kGbOnKl9991Xs2fPzsTuAABAK5L2u10aGhq0atUq3XjjjSntw4YN04oVKxz96+vrVV9fn/x3ZWWlJKlJjQpxQUsAABBAkxolScZ89x/vtAcfX3/9teLxuEpLS1PaS0tLVVFR4eg/depUTZo0ydH+sp5O99AAAECGVVdXq6SkZJd9MlbnIxKJpPzbGONok6SbbrpJ48ePT/5769at6t69u9atW/edg0fzq6qq0r777qv169eruLi4uYeD78D5al04X63Lnn6+jDGqrq5W165dv7Nv2oOPTp06KRqNOmY5Nm7c6JgNkaRYLKZYLOZoLykp2SNPXmtVXFzM+WpFOF+tC+erddmTz5fXSYO0J5zm5uZqwIABWrZsWUr7smXLNHjw4HTvDgAAtDIZuewyfvx4XXjhhRo4cKCOPPJIzZkzR+vWrdPPf/7zTOwOAAC0IhkJPs4++2xt2rRJkydP1hdffKF+/frp6aefVvfu3b/zubFYTLfeeqv1UgxaHs5X68L5al04X60L58u7iPFyTwwAAECasLYLAAAIFcEHAAAIFcEHAAAIFcEHAAAIFcEHAAAIVYsLPu69916Vl5crLy9PAwYM0D/+8Y/mHtIeb+rUqfr+97+voqIide7cWT/5yU/0wQcfpPQxxmjixInq2rWr8vPzNXToUK1evbqZRoxvmzp1qiKRiMaNG5ds43y1LJ9//rkuuOACdezYUQUFBTrssMO0atWq5OOcr5ajqalJN998s8rLy5Wfn6+ePXtq8uTJSiQSyT6cLw9MC7J48WKTk5Nj7r//fvPee++Zq666yhQWFpq1a9c299D2aCeddJKZP3+++fe//23eeustM3z4cLPffvuZbdu2JftMmzbNFBUVmT/+8Y/m3XffNWeffbbp0qWLqaqqasaR47XXXjM9evQwhx56qLnqqquS7ZyvlmPz5s2me/fu5uKLLzavvvqqWbNmjfn73/9uPv7442QfzlfLcdttt5mOHTuap556yqxZs8Y89thjpl27dmbmzJnJPpyv79aigo8jjjjC/PznP09p69Onj7nxxhubaUSw2bhxo5Fkli9fbowxJpFImLKyMjNt2rRkn7q6OlNSUmLuu+++5hrmHq+6utr07t3bLFu2zAwZMiQZfHC+WpYbbrjBHH300a6Pc75aluHDh5tRo0altI0YMcJccMEFxhjOl1ct5rJLQ0ODVq1apWHDhqW0Dxs2TCtWrGimUcGmsrJSktShQwdJ0po1a1RRUZFy7mKxmIYMGcK5a0ZXXnmlhg8frhNOOCGlnfPVsixdulQDBw7UWWedpc6dO6t///66//77k49zvlqWo48+Ws8995w+/PBDSdLbb7+tl19+WaeccookzpdXGSmvvju+/vprxeNxx8q3paWljhVy0XyMMRo/fryOPvpo9evXT5KS58d27tauXRv6GCEtXrxYb7zxhlauXOl4jPPVsnz66aeaPXu2xo8fr1/96ld67bXXNHbsWMViMV100UWcrxbmhhtuUGVlpfr06aNoNKp4PK7bb79d5557riQ+X161mOBjh0gkkvJvY4yjDc1nzJgxeuedd/Tyyy87HuPctQzr16/XVVddpWeffVZ5eXmu/ThfLUMikdDAgQM1ZcoUSVL//v21evVqzZ49WxdddFGyH+erZXj00Ue1cOFCLVq0SH379tVbb72lcePGqWvXrho5cmSyH+dr11rMZZdOnTopGo06Zjk2btzoiCDRPH75y19q6dKleuGFF7TPPvsk28vKyiSJc9dCrFq1Shs3btSAAQOUnZ2t7OxsLV++XL/97W+VnZ2dPCecr5ahS5cuOvjgg1PaDjroIK1bt04Sn6+W5rrrrtONN96oc845R4cccoguvPBCXX311Zo6daokzpdXLSb4yM3N1YABA7Rs2bKU9mXLlmnw4MHNNCpI30TsY8aM0ZIlS/T888+rvLw85fHy8nKVlZWlnLuGhgYtX76cc9cMjj/+eL377rt66623kj8DBw7U+eefr7feeks9e/bkfLUgRx11lOPW9Q8//DC5Cjifr5alpqZGWVmpfzqj0WjyVlvOl0fNmOzqsONW27lz55r33nvPjBs3zhQWFprPPvusuYe2R/vFL35hSkpKzIsvvmi++OKL5E9NTU2yz7Rp00xJSYlZsmSJeffdd825557LrWUtyLfvdjGG89WSvPbaayY7O9vcfvvt5qOPPjIPP/ywKSgoMAsXLkz24Xy1HCNHjjTdunVL3mq7ZMkS06lTJ3P99dcn+3C+vluLCj6MMeaee+4x3bt3N7m5uebwww9P3s6J5iPJ+jN//vxkn0QiYW699VZTVlZmYrGY+eEPf2jefffd5hs0UuwcfHC+WpY///nPpl+/fiYWi5k+ffqYOXPmpDzO+Wo5qqqqzFVXXWX2228/k5eXZ3r27GkmTJhg6uvrk304X98tYowxzTnzAgAA9iwtJucDAADsGQg+AABAqAg+AABAqAg+AABAqAg+AABAqAg+AABAqAg+AABAqAg+AABAqAg+AABAqAg+AABAqAg+AABAqP4fsZ1MKPgt7TAAAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "MAGICCam: bicubic_interpolation\n", - "122 µs ± 329 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "HESS-I - NearestNeighborMapper:\n", + "Initialization time: \n", + "34.4 ms ± 82 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "25.1 µs ± 32.2 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABDkUlEQVR4nO3de3hU1dn//88QkiGBEM45CISIQVAQKFgkHhJFUESkYq2IVRBbT1il6BdF2hJ8aEB8pNgiVKhSqFJsKwiICigSbBEbUCqi5SDhoBIjCEkETCBZvz/8ZR6Gmb0hm5mdmeT9uq59XWStvWavvWYyudlz73s8xhgjAAAAlzSo7QkAAID6heADAAC4iuADAAC4iuADAAC4iuADAAC4iuADAAC4iuADAAC4iuADAAC4iuADAAC4iuADIfXnP/9ZHo9HGzduDNp//fXXq0OHDn5tHTp0kMfjCbrl5OT47fv+++/rxhtvVPv27eX1epWcnKy+ffvq4Ycf9tvv+PHjeu6553TxxRerRYsWSkhIUHp6uoYMGaIlS5ac0bl4PB498MADZ3zuZyI3N1cej0dt2rRRWVlZQH+HDh10/fXXh/SYteHo0aPKzc3V2rVrA/qqXyONGjXSnj17AvpzcnLUtWtXR8cdOXJkwOvrTFU/NwcOHDjtvuF4bVhZu3at7/fhz3/+c9B9rrrqKnk8HsfnDriN4AMR4dJLL9V7770XsM2aNcu3z4oVK5SVlaXS0lJNmzZNq1at0jPPPKNLL71UL7/8st/j3X777frFL36hK6+8Ui+++KKWL1+uX/3qV2rYsKFWrlzp9ukF+PrrrzVt2rTankbYHD16VJMmTQoafFQrLy/Xr371q5Ae99e//vUZB5fRJjExUc8//3xAe2FhodauXaumTZvWwqwAZxrW9gQASWrWrJkuueQS232mTZumjIwMrVy5Ug0b/t9Ld9iwYX5/yAsLC/Xyyy/rN7/5jSZNmuRr79evn37+85+rqqoq9CdQQ9dee61+97vfafTo0UpJSant6ejo0aNKSEhw9ZjXXnutFi5cqEceeUTdu3cPyWN27NgxJI8TCY4fPy6Px+P7+ZZbbtGf/vQn7dixQ5mZmb72F154Qeecc466deumTz75pDamGnLV537y7znqFq58IGocPHhQrVq1CvqG1KBBA7/9JCk1NTXo45y8b22ZPHmyTpw4odzc3NPuW1FRocmTJ6tz587yer1q3bq17rzzTn399dd++7388ssaMGCAUlNTFR8fry5duuixxx7TkSNH/PYbOXKkmjRpoi1btmjAgAFKTExUv379anSsNWvWKCcnRy1btlR8fLzat2+vm266SUePHtXu3bvVunVrSdKkSZN8HxmMHDnS7zHGjRunli1b6tFHHz3tGhhjNGvWLPXo0UPx8fFq3ry5fvzjH2vXrl0B53bqRw+HDx/WXXfdpRYtWqhJkyYaNGiQdu3aJY/HE3T9v/rqK916661KSkpScnKyRo0apZKSkqDzeu6559SpUyd5vV5dcMEFWrRoUcA+H3/8sYYMGaLmzZurUaNG6tGjh+bPn++3T/VHK3/5y1/08MMP65xzzpHX69XOnTt9+/Tv31/t2rXTCy+84GurqqrS/PnzNWLEiKCv62effVZXXHGF2rRpo8aNG6tbt26aNm2ajh8/7rdf9Udd7777ri655BLFx8frnHPO0a9//WtVVlb69tu9e7c8Ho+mTZum3/72t2rfvr0aNWqk3r176+233w44/o4dOzR8+HC1adNGXq9XXbp00bPPPlvjc0fdU/vvwqiTKisrdeLEiYDN6kuUjTGn3b9v3756//339eCDD+r9998PeAOt1qVLFzVr1kyTJk3SnDlztHv37nCc4llJT0/X/fffr+eff17bt2+33K+qqkpDhgzR1KlTNXz4cK1YsUJTp07V6tWrlZOTo2PHjvn23bFjh6677jo9//zzevPNNzVmzBj97W9/0+DBgwMet6KiQjfccIOuuuoqLV26VJMmTTrjY+3evVuDBg1SXFycXnjhBb355puaOnWqGjdurIqKCqWmpurNN9+UJN11112+j9B+/etf+80hMTFRv/rVr7Ry5UqtWbPGdr3uuecejRkzRldffbVeffVVzZo1S1u3blVWVpa++uor2/UbPHiwFi5cqEcffVRLlixRnz59dO2111qOuemmm9SpUye98soreuyxx7Rw4UL98pe/DNhv2bJl+v3vf68nnnhC//jHP5Senq5bb71V//jHP3z7bNu2TVlZWdq6dat+//vfa/Hixbrgggs0cuTIoB+7jR8/Xnv37tUf//hHLV++XG3atPH1NWjQQCNHjtSCBQt8AcGqVav0+eef68477wx6Lp999pmGDx+uv/zlL3rttdd011136amnntI999wTsG9RUZGGDRum2267TUuXLtWPf/xjTZ48WQ899FDAvjNnztSbb76pGTNm6MUXX1SDBg00cOBAvffee759PvnkE1188cX6+OOP9fTTT+u1117ToEGD9OCDD/pdkTyTc0cdZIAQmjdvnpFku6Wnp/uNSU9Pt9z3f/7nf3z7HThwwFx22WW+vtjYWJOVlWWmTJliysrK/B5zxYoVplWrVr59W7ZsaW6++WazbNmyMz4XSWb06NFntR6nmjhxopFkvv76a3PgwAGTlJRkbrrpJl9/enq6GTRokO/nv/71r0aSeeWVV/wep6CgwEgys2bNCnqcqqoqc/z4cZOfn28kmf/85z++vhEjRhhJ5oUXXvAbc6bH+sc//mEkmc2bN1ue59dff20kmYkTJwb0Vb9GCgoKTHl5uTn33HNN7969TVVVlTHGmOzsbHPhhRf69n/vvfeMJPP000/7Pc6+fftMfHy8GTdunN+5nfz6WrFihZFkZs+e7Td2ypQpAfOrfm6mTZvmt+/9999vGjVq5JufMd+/NuLj401RUZGv7cSJE6Zz587mvPPO87UNGzbMeL1es3fvXr/HHDhwoElISDCHDx82xhjzzjvvGEnmiiuuCFiv6r6///3vZteuXcbj8ZjXXnvNGGPMzTffbHJycowxxgwaNCjgd+tklZWV5vjx42bBggUmJibGfPPNN76+7OxsI8ksXbrUb8zPf/5z06BBA7Nnzx5jjDGFhYVGkklLSzPHjh3z7VdaWmpatGhhrr76al/bNddcY9q2bWtKSkr8HvOBBx4wjRo18h3f7txRd3HlA2GxYMECFRQUBGyXXXZZ0P0vu+yyoPvfddddvn1atmypd999VwUFBZo6daqGDBmi7du3a/z48erWrZvfXQrXXXed9u7dqyVLluiRRx7RhRdeqFdffVU33HCD310Kp16hqWk+SFVVld/4ky9Rn071Rw6vvPKK3n///aD7vPbaa2rWrJkGDx7sd5wePXooJSXFL6Fz165dGj58uFJSUhQTE6PY2FhlZ2dLkj799NOAx77pppscHatHjx6Ki4vT3Xffrfnz5wd89FETcXFxmjx5sjZu3Ki//e1vlmvg8Xj005/+1G9eKSkp6t69u21Sa35+viTpJz/5iV/7rbfeajnmhhtu8Pv5oosu0nfffafi4mK/9n79+ik5Odn3c0xMjG655Rbt3LlTn3/+uaTvP57q16+f2rVr5zd25MiROnr0qN+VAinwOTlVRkaGcnJy9MILL+jgwYNaunSpRo0aZbn/hx9+qBtuuEEtW7b0vSbuuOMOVVZWBlxxS0xMDDj34cOHq6qqSuvWrfNrHzp0qBo1auQ3dvDgwVq3bp0qKyv13Xff6e2339aNN96ohIQEv+ftuuuu03fffacNGzbU6NxRtxB8ICy6dOmi3r17B2xJSUlB909KSgq6f7C8jd69e+vRRx/V3//+d3355Zf65S9/qd27dwdcxo6Pj9ePfvQjPfXUU8rPz9fOnTt1wQUX6Nlnn9XWrVslfZ+gGBsb69ueeOKJGp3nqFGj/MZX506cqTFjxigtLU3jxo0L2v/VV1/p8OHDiouL8ztObGysioqKfAHXt99+q8svv1zvv/++Jk+erLVr16qgoECLFy+WJL+PZyQpISEh4O6IMz1Wx44d9dZbb6lNmzYaPXq0OnbsqI4dO+qZZ56p0blXGzZsmH7wgx9owoQJQT9K++qrr2SMUXJycsC8NmzYYHtr7MGDB9WwYUO1aNHCr/3koOFULVu29PvZ6/VKClzDYInC1W3VeUcHDx4M+hpOS0vz26+aVZ7Sye666y4tX75c06dPV3x8vH784x8H3W/v3r26/PLL9cUXX+iZZ57xBe7VORennk+wNTn1fE5tP7WtoqJC3377rQ4ePKgTJ07oD3/4Q8Bzdt1110lSwPN2JueOuoNUYkS12NhYTZw4Ub/73e/08ccf2+7bvn173X333RozZoy2bt2qCy+8UMuXL1d5eblvn+o/CmcqNzfX70pKYmJijcbHx8crNzdXd999t1asWBHQ36pVK7Vs2dKXQ3Gq6uOtWbNGX375pdauXeu72iF9n2wZzMl3UdT0WJJ0+eWX6/LLL1dlZaU2btyoP/zhDxozZoySk5M1bNgwy/O1msuTTz6p/v37a86cOUHn5fF49O677/oCgZMFa6vWsmVLnThxQt98841fAFJUVFSjOQYT7DGq26oDmJYtW2r//v0B+3355ZeSvj+3kwV7Xk41dOhQjR49WlOnTtXPf/5zxcfHB93v1Vdf1ZEjR7R48WKlp6f72jdv3hx0/2C5M6eez6ntp7bFxcWpSZMmio2NVUxMjG6//XaNHj066PEyMjL8fj6Tc0fdQfCBqLF///6g/zuq/kihOnAoKyuTx+NRkyZNTrtvt27dzmpOHTp0OOvCTqNGjdLvfvc7PfbYYwEf+1x//fVatGiRKisr1adPH8vHqH7jPvUP8XPPPXfG8zjTY50sJiZGffr0UefOnfXSSy/pgw8+0LBhwyyvFli5+uqr1b9/fz3xxBMBH1Fcf/31mjp1qr744ouAj09OJzs7W9OmTdPLL7+s++67z9ce7K6Umnr77bf11Vdf+a4YVFZW6uWXX1bHjh3Vtm1bSd9/NLNkyRJ9+eWXfoHtggULlJCQcNrby4OJj4/Xb37zG61bt87vnE4V7DVhjNHcuXOD7l9WVqZly5b5ffSycOFCNWjQQFdccYXfvosXL9ZTTz3l++ilrKxMy5cv1+WXX66YmBglJCToyiuv1IcffqiLLrpIcXFxNT5P1G0EH4gIhw8fDvgMWPr+jbNnz56SpGuuuUZt27bV4MGD1blzZ1VVVWnz5s16+umn1aRJE19W/rZt23TNNddo2LBhys7OVmpqqg4dOqQVK1Zozpw5ysnJUVZWlqvnZycmJkZ5eXm68cYbJX2fY1Bt2LBheumll3TdddfpoYce0g9/+EPFxsbq888/1zvvvKMhQ4boxhtvVFZWlpo3b657771XEydOVGxsrF566SX95z//OeN5nOmx/vjHP2rNmjUaNGiQ2rdvr++++853++fVV18t6furJOnp6Vq6dKn69eunFi1aqFWrVraB2pNPPqlevXqpuLhYF154oa/90ksv1d13360777xTGzdu1BVXXKHGjRtr//79+uc//6lu3bpZ/hG+9tprdemll+rhhx9WaWmpevXqpffee08LFiyQdHa3Xbdq1UpXXXWVfv3rX6tx48aaNWuW/vvf//oFNhMnTtRrr72mK6+8Ur/5zW/UokULvfTSS1qxYoWmTZtm+THk6YwdO1Zjx4613ad///6Ki4vTrbfeqnHjxum7777T7NmzdejQoaD7t2zZUvfdd5/27t2rTp066fXXX9fcuXN13333qX379n77xsTEqH///ho7dqyqqqr05JNPqrS01O8ulmeeeUaXXXaZLr/8ct13333q0KGDysrKtHPnTi1fvvy0dzihjqvtjFfULSffyRBMsIx8u7tdzjnnHN9+L7/8shk+fLjJzMw0TZo0MbGxsaZ9+/bm9ttvN5988olvv0OHDpnJkyebq666ypxzzjkmLi7O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LVq0SEeOHFHfvn3r/XqMHj1agwYN0tVXX+3XXl/XZceOHUpLS1NGRoaGDRumXbt2Saq/67Fs2TL17t1bN998s9q0aaOePXtq7ty5vv76ui7VKioq9OKLL2rUqFHyeDxhX4+ICT4OHDigysrKgG++TU5ODviG3Pqoeg3q6/oYYzR27Fhddtll6tq1q6T6uyZbtmxRkyZN5PV6de+992rJkiW64IIL6u16SNKiRYv0wQcfaMqUKQF99XFd+vTpowULFmjlypWaO3euioqKlJWVpYMHD9bL9ZCkXbt2afbs2crMzNTKlSt177336sEHH9SCBQsk1c/XycleffVVHT58WCNHjpQU/vUIy3e7nA2Px+P3szEmoK0+q6/r88ADD+ijjz7SP//5z4C++rYm559/vjZv3qzDhw/rlVde0YgRI5Sfn+/rr2/rsW/fPj300ENatWqVGjVqZLlffVqXgQMH+v7drVs39e3bVx07dtT8+fN1ySWXSKpf6yFJVVVV6t27t/Ly8iRJPXv21NatWzV79mzdcccdvv3q27pUe/755zVw4EClpaX5tYdrPSLmykerVq0UExMTEFEVFxcHRF71UXWmen1cn1/84hdatmyZ3nnnHbVt29bXXl/XJC4uTuedd5569+6tKVOmqHv37nrmmWfq7Xps2rRJxcXF6tWrlxo2bKiGDRsqPz9fv//979WwYUPfude3dTlZ48aN1a1bN+3YsaPevk5SU1N1wQUX+LV16dJFe/fulVR/308kac+ePXrrrbf0s5/9zNcW7vWImOAjLi5OvXr10urVq/3aV69eraysrFqaVeTIyMhQSkqK3/pUVFQoPz+/zq6PMUYPPPCAFi9erDVr1igjI8Ovvz6uSTDGGJWXl9fb9ejXr5+2bNmizZs3+7bevXvrtttu0+bNm3XuuefWy3U5WXl5uT799FOlpqbW29fJpZdeGnCr/vbt233ftl5f10WS5s2bpzZt2mjQoEG+trCvx1mnrIZQ9a22zz//vPnkk0/MmDFjTOPGjc3u3btre2quKCsrMx9++KH58MMPjSQzffp08+GHH/puNZ46dapJSkoyixcvNlu2bDG33nprnb4N7L777jNJSUlm7dq1freDHT161LdPfVuT8ePHm3Xr1pnCwkLz0Ucfmccff9w0aNDArFq1yhhT/9bDysl3uxhT/9bl4YcfNmvXrjW7du0yGzZsMNdff71JTEz0vZfWt/Uw5vvbsBs2bGh++9vfmh07dpiXXnrJJCQkmBdffNG3T31cl8rKStO+fXvz6KOPBvSFcz0iKvgwxphnn33WpKenm7i4OPODH/zAd1tlffDOO+8YSQHbiBEjjDHf3wo2ceJEk5KSYrxer7niiivMli1banfSYRRsLSSZefPm+fapb2syatQo3+9H69atTb9+/XyBhzH1bz2snBp81Ld1qa7HEBsba9LS0szQoUPN1q1bff31bT2qLV++3HTt2tV4vV7TuXNnM2fOHL/++rguK1euNJLMtm3bAvrCuR4eY4w5++snAAAAZyZicj4AAED9QPABAABcRfABAABcRfABAABcRfABAABcRfABAABcRfABAABcRfABAABcRfABAABcRfABAABcRfABAABc9f8BBplKruxsS7gAAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "MAGICCam: image_shifting\n", - "81.4 µs ± 186 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "HESS-II - NearestNeighborMapper:\n", + "Initialization time: \n", + "135 ms ± 390 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "30.3 µs ± 359 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGxCAYAAABIjE2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFV0lEQVR4nO3deXiU1f3//9dkJQlJEJAsrEFRFLQiIIJooghWQFG0Lrjg0laLCxEVpFgNFhNAP0j7dSuWChURte47VAEXlE1wwRY3dogRhYQlBJKc3x/8mDpz34E7k5nMSXg+rivX5Zx5555z3wnw9pzzPsdnjDECAACwSEy0OwAAABCMBAUAAFiHBAUAAFiHBAUAAFiHBAUAAFiHBAUAAFiHBAUAAFiHBAUAAFiHBAUAAFiHBAX1ZsaMGfL5fFq2bJnr+4MHD1aHDh0C2jp06CCfz+f6lZeXFxC7ePFiXXjhhWrXrp0SExOVkZGh3r176/bbbw+I27dvn/72t7+pZ8+eat68uZKTk9W+fXsNGTJEL730kqd78fl8uvnmm/2v165dK5/PpwcffNDT93t1zTXXyOfzqUuXLqqqqjpkPxqqzZs3q6CgQCtXrnS8V1BQIJ/Pp1atWmnHjh2O9zt06KDBgweH9Ll5eXmO3yOvrrnmGjVt2vSQcZH63ajJgT9nPp9PCxYscLxvjNHRRx/t+mcIsAkJCqx32mmn6eOPP3Z8Pfroo/6YN954Q3369FFZWZkmT56suXPn6i9/+YtOO+00PfvsswHXu+qqq3TLLbfozDPP1KxZs/Taa6/p7rvvVlxcnN555536vj1PvvrqK82YMSPa3YiYzZs3a/z48a4JygE//vijJk+eHNbPffTRRwN+jxqT1NRUTZ8+3dG+cOFCfffdd0pNTY1CrwDv4qLdAeBQmjVrplNPPfWgMZMnT1ZOTo7eeecdxcX979f6sssuC/hHbc2aNXr22Wd1zz33aPz48f72fv366Xe/+52qq6vDfwN1lJKSopNPPln33nuvhg0bpqSkpGh3Sbt371ZycnK9fuavf/1rPfTQQ7rpppuUmZkZlmsef/zxYbmODcrLy9WkSRP/60svvVRPP/20HnnkEaWlpfnbp0+frt69e6usrCwa3YyIA/fu8/mi3RWEESMoaBR++ukntWzZMiA5OSAmJiYgTpKysrJcr/PLWJtMmjRJmzZt0l/+8pdDxpaVlemOO+5QTk6OEhIS1Lp1a+Xn52vXrl0BcY888ojOOOMMtWrVSikpKTrhhBM0efJk7du3LyAuLy9PXbt21fvvv68+ffooOTlZ1113Xa0+6/nnn1evXr2Unp6u5ORkdezY0X+NBQsWqGfPnpKka6+91j89UVBQEHCNCRMmqLKy0tHuZu/evZowYYI6d+6sxMREHXnkkbr22mv1448/Ou4teJpj48aNuvjii5WamqpmzZrpiiuu0NKlS+Xz+VxHsb799lsNHDhQTZs2Vdu2bXX77beroqLCEVddXa37779f7dq1U5MmTdSjRw+9++67jrgPP/xQ/fr1U2pqqpKTk9WnTx+98cYbATEHpnHmzp2r6667TkceeaSSk5MDPvfyyy+XJD3zzDP+ttLSUr3wwgv+Zx9s/Pjx6tWrl5o3b660tDSdfPLJmj59uoLPlD0wrfbSSy/pxBNPVJMmTdSxY0f99a9/DYhbsGCBfD6fZs2apVGjRikzM1NJSUnKzc3VihUrHJ+/bNkynX/++WrevLmaNGmibt266bnnnqv1vaNxsPNvYzRqVVVVqqysdHzVdLC2MeaQ8b1799bixYt16623avHixY5/ZA847rjj1KxZM40fP17Tpk3T2rVrI3GLYde7d29deOGFmjRpkn7++eca43bv3q3c3FzNnDlTt956q9566y2NGTNGM2bM0Pnnnx/wzL777jsNGzZMTz31lF5//XVdf/31euCBB3TDDTc4rrtlyxZdeeWVGjZsmN58802NGDHC82d9/PHHuvTSS9WxY0fNmTNHb7zxhu655x5VVlZKkk4++WQ9+eSTkqS7777bP4X329/+NqAP7du314gRIzR9+nR9/fXXNT6D6upqDRkyRBMnTtSwYcP0xhtvaOLEiZo3b57y8vJUXl5e4/fu2rVLZ555pubPn69JkybpueeeU0ZGhi699FLX+H379un8889Xv3799Morr+i6667TQw89pEmTJjliH374Yb399tuaOnWqZs2apZiYGJ177rn6+OOP/TELFy7UWWedpdLSUk2fPl3PPPOMUlNTdd555zmmKiXpuuuuU3x8vJ566in961//Unx8vP+9tLQ0XXzxxfrHP/7hb3vmmWcUExNT4/2sXbtWN9xwg5577jm9+OKLGjp0qG655Rb9+c9/dsSuXLlS+fn5uu222/TSSy+pT58+GjlypOtamz/+8Y/6/vvv9fe//11///vftXnzZuXl5en777/3x8yfP1+nnXaatm/frscff1yvvPKKTjrpJF166aWuieHB7h2NhAHqyZNPPmkkHfSrffv2Ad/Tvn37GmP//Oc/++O2bt1q+vbt638vPj7e9OnTxxQVFZkdO3YEXPONN94wLVu29Me2aNHC/OY3vzGvvvqq53uRZG666Sb/6zVr1hhJ5oEHHgjt4dRg+PDhJiUlxRhjzH//+18TGxtrbr/99hr7UVRUZGJiYszSpUsDrvOvf/3LSDJvvvmm6+dUVVWZffv2mX/+858mNjbW/Pzzz/73cnNzjSTz7rvvBnyP18968MEHjSSzffv2Gu9z6dKlRpJ58sknHe/de++9RpL58ccfzdatW016erq56KKL/O+3b9/eDBo0yP/6mWeeMZLMCy+84PoZjz76aMC95ebm+l8/8sgjRpJ56623Ar73hhtucPRv+PDhRpJ57rnnAmIHDhxojj32WP/rA78b2dnZpry83N9eVlZmmjdvbs4++2x/26mnnmpatWoV8DtbWVlpunbtatq0aWOqq6uNMf/7s3T11Vc7nteB95YuXWrmz59vJJkvv/zSGGNMz549zTXXXGOMMaZLly4B9x7swO/EfffdZ1q0aOH/bGP2P3Ofz2dWrlwZ8D39+/c3aWlpZteuXcYY4//8k08+OeD7165da+Lj481vf/tbf1vnzp1Nt27dzL59+wKuOXjwYJOVlWWqqqoOee9oXBhBQb375z//qaVLlzq++vbt6xrft29f1/jrr7/eH9OiRQt98MEHWrp0qSZOnKghQ4bo66+/1tixY3XCCSdo69at/tiBAwdq/fr1eumll3THHXeoS5cuevnll3X++ecHVMQEj/SEY31KXa557LHH6vrrr9fDDz+s9evXu8a8/vrr6tq1q0466aSAzznnnHMcVR0rVqzQ+eefrxYtWig2Nlbx8fG6+uqrVVVV5RihOOKII3TWWWeF9FkHpm8uueQSPffcc9q0aZPnew7WokULjRkzRi+88IIWL15c4zNo1qyZzjvvvIB+nXTSScrMzHStbDlg4cKFSk1N1a9//euA9gPTJcF8Pp/OO++8gLYTTzxR69atc8QOHTo0YI3IgZGR999/X1VVVdq1a5cWL16siy++OKA6KDY2VldddZU2btyo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tFBycrJOOukkLV++3P8+zz8yKisrdffddysnJ0dJSUnq2LGj7rvvPlVXV/tjePbh8/777+u8885Tdna2fD6fXn755YD3vTzriooK3XLLLWrZsqVSUlJ0/vnna+PGjeHpoGlg5syZY+Lj480TTzxhvvrqKzNy5EiTkpJi1q1bF+2uNSrnnHOOefLJJ82XX35pVq5caQYNGmTatWtndu7c6Y+ZOHGiSU1NNS+88IL54osvzKWXXmqysrJMWVlZFHveuCxZssR06NDBnHjiiWbkyJH+dp595Pz888+mffv25pprrjGLFy82a9asMf/+97/Nt99+64/h+UfGhAkTTIsWLczrr79u1qxZY55//nnTtGlTM3XqVH8Mzz583nzzTTNu3DjzwgsvGEnmpZdeCnjfy7O+8cYbTevWrc28efPMp59+as4880zzq1/9ylRWVta5fw0uQTnllFPMjTfeGNDWuXNnc9ddd0WpR4eHkpISI8ksXLjQGGNMdXW1yczMNBMnTvTH7Nmzx6Snp5vHH388Wt1sVHbs2GE6depk5s2bZ3Jzc/0JCs8+ssaMGWP69u1b4/s8/8gZNGiQue666wLahg4daq688kpjDM8+koITFC/Pevv27SY+Pt7MmTPHH7Np0yYTExNj3n777Tr3qUFN8ezdu1fLly/XgAEDAtoHDBigRYsWRalXh4fS0lJJUvPmzSVJa9asUXFxccDPIjExUbm5ufwswuSmm27SoEGDdPbZZwe08+wj69VXX1WPHj30m9/8Rq1atVK3bt30xBNP+N/n+UdO37599e677+rrr7+WJH322Wf68MMPNXDgQEk8+/rk5VkvX75c+/btC4jJzs5W165dw/LziNpW96HYunWrqqqqHCceZ2RkOE5GRvgYYzRq1Cj17dtXXbt2lST/83b7Waxbt67e+9jYzJkzR59++qmWLl3qeI9nH1nff/+9HnvsMY0aNUp//OMftWTJEt16661KTEzU1VdfzfOPoDFjxqi0tFSdO3dWbGysqqqqdP/99+vyyy+XxO9+ffLyrIuLi5WQkKAjjjjCEROOf5MbVIJygM/nC3htjHG0IXxuvvlmff755/rwww8d7/GzCL8NGzZo5MiRmjt3rpo0aVJjHM8+Mqqrq9WjRw8VFhZKkrp166ZVq1bpscce09VXX+2P4/mH37PPPqtZs2Zp9uzZ6tKli1auXKn8/HxlZ2dr+PDh/jieff0J5VmH6+fRoKZ4WrZsqdjYWEdmVlJS4sjyEB633HKLXn31Vc2fP19t2rTxt2dmZkoSP4sIWL58uUpKStS9e3fFxcUpLi5OCxcu1F//+lfFxcX5ny/PPjKysrJ0/PHHB7Qdd9xxWr9+vSR+9yPpzjvv1F133aXLLrtMJ5xwgq666irddtttKioqksSzr09ennVmZqb27t2rbdu21RhTFw0qQUlISFD37t01b968gPZ58+apT58+UepV42SM0c0336wXX3xR7733nnJycgLez8nJUWZmZsDPYu/evVq4cCE/izrq16+fvvjiC61cudL/1aNHD11xxRVauXKlOnbsyLOPoNNOO81RUv/111/7T1rndz9ydu/erZiYwH+WYmNj/WXGPPv64+VZd+/eXfHx8QExW7Zs0Zdffhmen0edl9nWswNlxtOnTzdfffWVyc/PNykpKWbt2rXR7lqj8oc//MGkp6ebBQsWmC1btvi/du/e7Y+ZOHGiSU9PNy+++KL54osvzOWXX065X4T8sorHGJ59JC1ZssTExcWZ+++/33zzzTfm6aefNsnJyWbWrFn+GJ5/ZAwfPty0bt3aX2b84osvmpYtW5rRo0f7Y3j24bNjxw6zYsUKs2LFCiPJTJkyxaxYscK/bYeXZ33jjTeaNm3amH//+9/m008/NWedddbhW2ZsjDGPPPKIad++vUlISDAnn3yyv/QV4SPJ9evJJ5/0x1RXV5t7773XZGZmmsTERHPGGWeYL774InqdbsSCExSefWS99tprpmvXriYxMdF07tzZTJs2LeB9nn9klJWVmZEjR5p27dqZJk2amI4dO5px48aZiooKfwzPPnzmz5/v+vf88OHDjTHennV5ebm5+eabTfPmzU1SUpIZPHiwWb9+fVj65zPGmLqPwwAAAIRPg1qDAgAADg8kKAAAwDokKAAAwDokKAAAwDokKAAAwDokKAAAwDokKAAAwDokKAAAwDokKAAAwDokKAAAwDokKAAAwDr/H7Mrdu+FX+sxAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "MAGICCam: axial_addressing\n", - "81.4 µs ± 271 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "LSTCam - OversamplingMapper:\n", + "Initialization time: \n", + "136 ms ± 964 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "31.5 µs ± 1.06 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAEuxJREFUeJzt3V+MXdV1x/HvmvHYAxgKNuA6YAIBJ4VEYFrXWCWqKCSRg6oCilDKA7IEEkiNpaQKDwhFCqnbKg8m9KEVkhFurCqFWiEEK4KmjhWU0vAnDrWJjZ36D8bYuHYxf50ED55ZfZhj4vjujc+Zc/a5f/bvI43uzJ5zz91nZtbse9ded29zd0QkP0Pd7oCIdIeCXyRTCn6RTCn4RTKl4BfJlIJfJFMKfpFMKfhFMqXgF8nUtDYfbLrN8FFOa/MhO3zs8sO1z2EN9KOKnS/ObPkRpV+9y5uvu/s5ZY5tNfhHOY2r7Lo2H7LDI08+U/scw4nCfyhy3i+cf1WSx5PB8yP/7itlj9XTfpFMKfhFMqXgF8mUgl8kU60m/FL52q5NpY99aWw0SR+GbSLJeQH+9uUNte7/tYsWNtQTGSQa+UUypeAXyZSCXyRTCn6RTCn4RTLVV9n+azf/Ktj+019fUvocw6RZrXgoYba/bp+v3/J2sD3U5x9cdlatx5L+oZFfJFMKfpFMKfhFMqXgF8mUgl8kUz2b7Q9l9p9/86LS9x+ydHsQDiWbMej+TMTZPw23Lz5zV7BdswP966Qjv5mNmtnzZrbJzLaY2TeK9nvNbJ+ZbSw+rk/fXRFpSpmR/whwrbsfNrMR4Gkze7L43v3uviJd90QklZMGv0/u4X1s1cuR4kP7eov0uVIJPzMbNrONwEFgnbs/V3xrmZm9aGarzEwv/kT6SKmEn7uPAwvM7EzgMTP7FPAAsJzJZwHLgfuA2068r5ndAdwBMMqpHeeOLcTx9K8+XuoCAHYcOrv0sVVYwqRhm49nCdca//OXOhOBi0/ZGTxWi4r0lkpTfe7+FvAUsMTdD7j7uLtPAA8CiyL3WenuC9194QgzandYRJpRJtt/TjHiY2anAJ8BtpnZ3OMOuwnYnKaLIpJCmaf9c4HVZjbM5D+LNe7+AzP7FzNbwOTT/t3Anem6KSJNK5PtfxG4MtB+a5IeiUgrVN4rkqmeLe+tYsI709mHD3XOLEDCzHfKmYFkfS5/6NZIe5WS5L/f/bOOtnsu/OPynZBGaeQXyZSCXyRTCn6RTCn4RTLVasLvY5cf5pEnn/mdtk1jp5W+fyixV9XwoUSXnLCENtW5q/w432JmsH2rzSl9jmE61xUIJQEBPjGt89gvnH9V6ceSk9PIL5IpBb9IphT8IplS8ItkSsEvkqnWy3snurwCWKgadfqbkbR3D5TVVtXAhEjQEUaC7W9wekdbrBS4klM7Fwl5dO9zgQM1CzBVGvlFMqXgF8mUgl8kUwp+kUz17Pv5x737/5dmvJXmvKmSckDCJGX4xKFE4BuxUuC6fQgkAUGJwKnqfoSJSFfU2atvlpmtM7Ptxa027RDpI2VG/mN79V0BLACWmNli4G5gvbvPB9YXX4tInzhp8Puk0F59NwCri/bVwI1JeigiSdTZq2+Ou+8HKG7PTddNEWlanb36Sjl+r77zzxueUidP3r9QYxMnDjfPeLtzoYmUG+IlnR04UeSxPHp9ne1HbHrwyNAsQHRV4Aq/wOFTdwTbv7/v+Y62G88L7iqXpSnv1QccOLZlV3F7MHKfD/bqmz1bkwsivWLKe/UBa4GlxWFLgcdTdVJEmldnr75ngDVmdjuwB7g5YT9FpGF19uo7BFyXolMikp5ehItkquu1/VVq+JtYujuVGW8eDX9jKE2fk/0ooueNzdSE7hB7H0DnLEDsfQAvVVgSPL5f4M6OltAMAOQ5C6CRXyRTCn6RTCn4RTKl4BfJVKsJPwfGg7W4bXaiMxkVzRc1YOTtsfIHJyoRTpsnDSUCK5QCB5KAAIcCqwK/VKFXcZ1JQMizFFgjv0imFPwimVLwi2RKwS+SKQW/SKa6Xt4bM5FyQ7sum/bOkWB7fMGMmlr/F1++FDh2zWOBWYDQDACkmwUY9FJgjfwimVLwi2RKwS+SKQW/SKZ6NuFXhYfqVxuoaY2V/aYqBx46/Jv6J0mUNIz+oVR4PLdAIrDCqsBjkVWBD1n5RGD8vf+dhgmvCrx234aOtr84b2Hp8/YKjfwimSqzeu88M/uxmW0t9ur7ctF+r5ntM7ONxcf16bsrIk0p87T/KPBVd3/BzE4Hfm5m64rv3e/uK9J1T0RSKbN6737g2LZc75rZVuC81B0TkbQqveY3swuZXMb7uaJpmZm9aGarYlt0m9kdZrbBzDYcOhTY5kpEuqJ0tt/MZgKPAl9x93fM7AFgOZNrdCwH7gNuO/F+7r4SWAlwhs3yW+dd/Tvfv2vnltKd7eXVe2Nby1kT/+9+XWEWIFG2fyhy3vAf0GiwNfzrq78qcKgUGGILglTJ9sd+ebtKn6OXld2ld4TJwP+Ou38PwN0PuPu4u08ADwKDUfAskoky2X4DHgK2uvu3jmufe9xhNwGbm++eiKRS5mn/1cCtwC/MbGPRdg9wi5ktYPIJ727gziQ9FJEkymT7nyb8YuuJ5rsjIm0ZiPLeSkL5ni4vKPyBCisb+2/eS9OHyPZisTRi6HXjtEaSjvVWBYZwIvD/OCN4bN01AVbsfjbYfteFi2ueOR2V94pkSsEvkikFv0imFPwimVLwi2SqZ7P94z7A/5ea2K8wcg4fq7A3YAMskNmP/ebq/7FVKQUmWOocKwUOzQI0sSpwL88CDHCEiciHUfCLZErBL5IpBb9IphT8IpnqerZ/xcWfDLYv3nS09DlCS3c3srx27BxtvxdgosKKIBOdnfOj75e/v0XGAwvvLxg8NNIefB9A1ZMEj21gQRAb6Wh7vdKS4P23SpVGfpFMKfhFMqXgF8mUgl8kU11P+A2KaIKxiVLeRHx8PNAaamtGKNU2FFk8pNIfZnTxkMDYVuHYWCnw64FVgbdUXL/ki9s69wH8tz/4/WonqUkjv0im6uzVN8vM1pnZ9uI2uGmHiPSmMiP/sb36LgUWA18ys8uAu4H17j4fWF98LSJ94qTB7+773f2F4vN3gWN79d0ArC4OWw3cmKqTItK8Onv1zSk28Ty2mee5kft8sFff+5SvEhORtOrs1Vfqfifu1Vf28Z69orNr056qvyR0MCvfKwn5QGlurwjPDAAV1g6xWOlwQDNLgneW7MbHu+BcRPDI8JLg4VLg8jtRAhyudHRdU96rDzhwbMuu4vZgmi6KSApT3qsPWAssLT5fCjzefPdEJJU6e/V9E1hjZrcDe4Cb03RRRFKos1cfwHXNdkdE2tJX5b0Lz9pT+tiXmR1sf49TAq1VfwxVJknCJaIhw5FS4PLvSqfSe/89lGD0lt+X3si+foPhi9v+N9iequxX5b0imVLwi2RKwS+SKQW/SKYU/CKZ6qtsf6jkF2DRxldLn2NXYBbgiIdmAKDSjyeyt2B4UdfyMwAQ3qEuliO3CouHDAUy+xPvh1dNHhop/7OwoXbHFK8wYxBY6Dku1bHAcCPLS9ejkV8kUwp+kUwp+EUypeAXyZSCXyRTfZXtj/nT07fVun9oBgDgSPB9AFDtx1bh/6uHFp8guNhI/d3pwqJLXUyvNkNRWwM1/1Uy+6mOHWogq79i97MdbXdduLj2eTXyi2RKwS+SKQW/SKYU/CKZGoiE34qLP9nR9tc7t5a+/0Qkg7ObWcH2YCLQwz/KcL4n9j+3/q8jWAocWaCjUvXq6Iwp9adJVcp4+9FQZBnpJpKG4ccTkSyVWb13lZkdNLPNx7Xda2b7zGxj8XF92m6KSNPKjPzfBpYE2u939wXFxxPNdktEUiuzV99PgDda6IuItKjOa/5lZvZi8bIguj239uoT6U1TTS8/ACxnsvB0OXAfcFvowKnu1VfX/RdfGmyvMgsQE5oFSFsKXG8WoJElwU8ZDbdXWDxEesuURn53P+Du4+4+ATwILGq2WyKS2pSC/9gGnYWbgM2xY0WkN530+aSZPQxcA5xtZnuBrwPXmNkCJp/27wbuTNhHEUmgzF59twSaH0rQFxFp0UCU91bxh9MDs5an/0/w2PEKr4pe9vCaAGPBlYFj78YPs9DKwJFy4iqqrArsMyMJzURb+1VZhbjSi9dE79u3iiW4sVLestbu2xBsP/UjVfogIllS8ItkSsEvkikFv0imFPwimcou23/rvKs72la/+l/hg2uuCgzwcmBl4LFoKXCVWYD6pcChjHrsrBMzI+W9IalKfqvOLCTca6/0aXtgT74YjfwimVLwi2RKwS+SKQW/SKayS/iFLA0kASGeCByfGS4HDgmtDPxKZFXgWCLQPJAIjOaRQv/Py68sHNkwjPfPqLBdV6IcV6WS3z40bOGM5nCiH6hGfpFMKfhFMqXgF8mUgl8kUwp+kUwp2/8hqs4C1FVtFqDdUuCxMxr4U0mUre/hCtpkhhqoR57qdl2zzGydmW0vbqPr9otIb5rqdl13A+vdfT6wvvhaRPrIVLfrugFYXXy+Grix4X6JSGJTTfjNcff9AMXtuc11SUTakDzhZ2Z3AHcAjHJq6ocTkZKmGvwHzGyuu+8vdu85GDuwW3v1pRSaBagyAxCq9/8wr3jnLEB4SXCoNAsQWBLcIkuCv3dm+SeJ8Rr8mhnqtv96Ei4GMhSp42/TVJ/2rwWWFp8vBR5vpjsi0pYyU30PA88AnzCzvWZ2O/BN4LNmth34bPG1iPSRqW7XBXBdw30RkRapvFckUyrvbUisFHjVq08neby2S4HHfq/CKWLZr1QJux5OBA71cO2xRn6RTCn4RTKl4BfJlIJfJFMKfpFMKduf2G3zPt3RFpsBmKjwvzhWIvxqoC26N2BgSfBYcvpIlRUbki3dnea8vU5Ld4tIoxT8IplS8ItkSsEvkikl/LoglASEdKXAoSQgVCsFHps1Xr8jycp7669kG9J2gnGI8u/xH7b647ZGfpFMKfhFMqXgF8mUgl8kUwp+kUwp299DYrMAIct2bA+2VykR3hPIko/5aPDYkbPfK33eRFvy4Ymy+pMnT3jugLqLfHz+I1dGvrOz9DlqBb+Z7QbeBcaBo+6+sM75RKQ9TYz8f+burzdwHhFpkV7zi2SqbvA78B9m9vNiWy4R6RN1n/Zf7e6vmdm5wDoz21bs6vsB7dWXxj9eMj/YvmzHL2udd09kVeDzZ79Z67yQLmE3UXcbsNh5W04Ctq3WyO/urxW3B4HHgEWBY1a6+0J3XzjCjDoPJyINmnLwm9lpZnb6sc+BzwGbm+qYiKRV52n/HOAxMzt2nn91939vpFciktyUg9/ddwFXNNgXEWmRpvpEMqXy3gETngUILxJx5X/v6zwykuH+o9l7S/dhPFVWP2H2fcLTjIPjDcxELPtoeB/IujTyi2RKwS+SKQW/SKYU/CKZUvCLZErZ/oxturJzFmAae4LH/sn2HUn6MJ5w/EmXwU9z3n/++AVJzhujkV8kUwp+kUwp+EUypeAXyZQSflLKA/MvKX1sbM/B8USr+pbf4a6aJkpzY/7qgjQlu1Vo5BfJlIJfJFMKfpFMKfhFMqXgF8mUsv3SuCp7Dsb88LVNDfSkvImacwbxvfN6V62R38yWmNkvzWyHmd3dVKdEJL06S3cPA/8EfB64DLjFzC5rqmMikladkX8RsMPdd7n7GPAIcEMz3RKR1OoE/3nAq8d9vbdoE5E+UCfhF6p97CjgPH6vPuDIj/y7g7yrz9nAoG5X3uq1Dc9t65E+UPP6djbWkZo+WvbAOsG/F5h33NfnA6+deJC7rwRWApjZBndfWOMxe9ogX98gXxsM/vWF1Hna/zNgvpldZGbTgb8E1jbTLRFJrc52XUfNbBnwQ2AYWOXuWxrrmYgkVavIx92fAJ6ocJeVdR6vDwzy9Q3ytcHgX18Hc0/0JmsR6Wmq7RfJVCvBP2hlwGa2yswOmtnm49pmmdk6M9te3J7VzT7WYWbzzOzHZrbVzLaY2ZeL9oG4RjMbNbPnzWxTcX3fKNoH4vrKSh78A1oG/G1gyQltdwPr3X0+sL74ul8dBb7q7pcCi4EvFb+zQbnGI8C17n4FsABYYmaLGZzrK6WNkX/gyoDd/SfAGyc03wCsLj5fDdzYaqca5O773f2F4vN3ga1MVm8OxDX6pMPFlyPFhzMg11dWG8GfSxnwHHffD5PBA5zb5f40wswuBK4EnmOArtHMhs1sI3AQWOfuA3V9ZbQR/KXKgKX3mNlM4FHgK+7+Trf70yR3H3f3BUxWpi4ys091u09tayP4S5UBD4ADZjYXoLg92OX+1GJmI0wG/nfc/XtF80BdI4C7vwU8xWQOZ+Cu78O0Efy5lAGvBZYWny8FHu9iX2oxMwMeAra6+7eO+9ZAXKOZnWNmZxafnwJ8BtjGgFxfWa0U+ZjZ9cA/8Nsy4L9L/qAJmdnDwDVMvhPsAPB14PvAGuACYA9ws7ufmBTsC2b2aeA/gV/w2z0x7mHydX/fX6OZXc5kQm+YyQFwjbv/jZnNZgCuryxV+IlkShV+IplS8ItkSsEvkikFv0imFPwimVLwi2RKwS+SKQW/SKb+HwrsCyeYLcssAAAAAElFTkSuQmCC\n", + "image/png": "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7w033KDXXntN27dvlyStW7dOCxYs0A033BC2fW3nsW/fvurdu7dee+01fxFy+eWXh7R944039Nhjj+mBBx7Q3//+d+Xm5urKK6/U3//+d3+bkpISnX766frXv/6le++9V//85z91ww03aMKECbrppptC+nzsscf0/vvv6+GHH9Y///lPdejQ4eATjMNXQ1/CAX7O5i2e6upqM2TIEBMTE2MkGZ/PZ44//nhz++23m8LCwoPe72Bv8TRq1MicccYZEY23urra7N+/3xQVFRlJ5vXXX/ffdt999xlJ5pFHHgm4zymnnGIkmVdeecW/b//+/eboo482AwYMiGgc4SxcuNBIMqNHj/7Fdt26dTNJSUn+7QEDBpgWLVoEvFX29ttvG0nmzTffNMb89BZNRkaG6d+/f0BfVVVV5uSTTzann366f9+Bebj33nsD2v7www9GkpkyZYr1OR2Y73nz5hlJZuXKlf7bBg0aZCQFvB13YF4lmWXLlvn3b9u2zcTGxpqRI0f69x147P32t78NOOa///1vI8k8+OCDAccKfosnNzfXDBo0yL/9wQcfGEmmb9++Ae1efPFFI8l88sknxhhjfvzxR5OYmGguv/zygHaffPKJkWR69uzp33fgLZ5JkyaZ8vJy07hxYzN16lRjjDF33nmnycvLM9XV1ebmm2/+xbd4bObxz3/+c8B9xo0bZySZ+fPn+/dJMklJSaakpMS/r7Ky0nTo0MEce+yx/n1DhgwxjRs3NkVFRQF9Pvzww0aSWbNmTcD5tW3b1lRUVBx0/DgycAUFUcfn82n69OnasGGDnnjiCQ0ePFj79+/Xo48+qo4dO2revHl1evytW7dq6NChatmypeLi4hQfH6/c3FxJ0ueffx7S/qKLLgrYPv744+Xz+XThhRf698XFxenYY49VUVHRLx67urpalZWV/p+f/xUeKWNMQOJj8ODB2rRpk959913/vhkzZigrK8s/5gULFujHH3/UoEGDAsZTXV2tCy64QIsXLw556+C//uu/ArYzMjLUtm1bTZo0SZMnT9by5ctVXV0dMr4NGzboqquuUlZWlmJjYxUfH6+ePXtKCp1vn8+nvn37+rcPzGt2drY6d+4ccOzmzZuHne+rr746YLt79+7Kzc2N+G2Giy++OGD7pJNOkiT/sRcuXKh9+/bpsssuC2h3xhlnhCSFfq5x48a69NJL9cwzz6iyslL/93//p8GDBx80vVObeZRC5+Gqq66SpJB56N27tzIzM/3bsbGxuvzyy/XVV19p06ZNkqS33npLZ599tnJycgIeLwceT8HP2Ysvvljx8fEHPXccGShQELVyc3P1+9//Xk8//bS+/PJLzZkzR3v37tWdd95Zq35atWqlwsJCq7bV1dXq06ePXnnlFY0aNUrvvfeeFi1apIULF0qS9uzZE3KfjIyMgO2EhAQlJyerUaNGIfv37t37i8e//vrrFR8f7//p3bv3L56XpBrPraioSC1btvRvX3jhhcrOztaMGTMkSdu3b9cbb7yha6+9VrGxsZKk7777TpL0u9/9LmA88fHx+tOf/iRjjH788ceA42RnZwds+3w+vffeezr//PM1ceJEnXrqqTr66KN16623qry8XNJPqZRf/epX+vTTT/Xggw/qww8/1OLFi/1vhQXP98HmNfh3cGB/uPnOysoKu2/btm1hZq9mTZs2DdhOTEyU9J+xH+j35//JHxBu38/dcMMNWrZsmcaNG6fvv//+oDHn2s5jXFxcyLgPzEvwPBxsvn7e9rvvvtObb74Z8ljp2LGjJIV8fiv4sYIjEzFjHDYuu+wyTZgwQZ999lmt7nf++efr8ccf18KFC2v8HMpnn32mlStXaubMmRo0aJB/f7gPldaF/Px8DR8+3L+dmpp60LbZ2dnq2LGj5s6dq927d4f9HMonn3yi7777Tpdeeql/X2xsrK655ho99thj2rFjh2bNmqV9+/Zp8ODB/jYHPofy+OOPH3TOgv9zDfeXfW5urp5++mlJ0vr16/Xiiy8qPz9fFRUVmj59ut5//319++23+vDDD/1/7UuK+PMgNkpKSsLuO/bYY+vkeAcKgQNFX/Bxf+kqyllnnaX27dvrgQce0HnnnRdQaP5cbeexsrJS27ZtCyhSDsxLcOFysPn6edtmzZrppJNO0rhx48IeLycnJ2Cb73CBxBUURKEtW7aE3b9z504VFxeHvNjV5Pbbb1dKSor/e1KCGWP06quvSvrPC+eBv4IP+Mtf/lKrY0aqdevW6tq1q/+nffv2v9h+7Nix2r59u/7whz+E3LZr1y7deuutSk5O1u233x5w2+DBg7V371698MILmjlzps4888yADyqeddZZOuqoo7R27dqA8fz8JyEhoVbndtxxx+mee+7RiSeeqGXLlklqmPkO/p6cBQsWqKioKGyaxoVu3bopMTFRc+bMCdi/cOHCGt/yk6R77rlH/fv31x133HHQNpHMY/A8zJo1S5JC5uG9994LKK6qqqo0Z84ctW3bVi1atJD009ucn332mdq2bRv2sVLb5yyODFxBgSe9//77/m94/bm+fftq3Lhx+ve//63LL79cp5xyipKSklRYWKipU6dq27ZtmjRpUq2OlZeXp9mzZ/v7O/BFbZK0du1aPfPMMzLG6Le//a06dOigtm3bavTo0TLGKCMjQ2+++aY/BeM1V155pZYtW6aHH35Y33zzja6//nplZmZq3bp1evTRR/X1119r1qxZatOmTcD9OnTooDPPPFMTJkxQcXGxnnzyyYDbGzdurMcff1yDBg3Sjz/+qN/97ndq3ry5vv/+e61cuVLff/+9pk2b9otjW7VqlYYPH65LL71U7dq1U0JCgt5//32tWrVKo0ePlvTT5z+aNGmioUOH6r777lN8fLyef/55rVy50u1E/cySJUt044036tJLL1VxcbHGjh2rY445RsOGDauT4x2Ink+YMEFNmjTRb3/7W23atEn333+/srOza4zNDxw4UAMHDvzFNrWdx4SEBD3yyCPauXOnTjvtNC1YsEAPPvigLrzwQvXo0SOgbbNmzXTOOefoj3/8o1JSUvTEE0/oiy++CIgaP/DAAyooKFD37t116623qn379tq7d6+++eYbvf3225o+fbq/mAEOoECBJ911111h9xcWFuqaa66RJM2ePVuTJk1SaWmpMjIy1KVLF7399tsBHz61ddFFF2n16tV65JFHNH36dBUXFysmJkZ5eXm64IILdMstt0iS4uPj9eabb+q2227TkCFDFBcXp3PPPVfvvvuu/zMfXjNp0iSdc845mjp1qoYOHaqysjI1b95c55xzjl566SWdcMIJYe83ePBg/fd//7eSkpLCxksHDhyoVq1aaeLEiRoyZIjKy8vVvHlznXLKKVZf+Z6VlaW2bdvqiSeeUHFxsXw+n9q0aaNHHnnEP99NmzbVP/7xD91xxx0aOHCgUlJSdMkll2jOnDk69dRTD2leDubpp5/W3/72N11xxRXat2+fzj77bP35z38O+zkWV8aNG6eUlBRNnz5dM2bMUIcOHTRt2jSNHTtWRx111CH3X9t5jI+P11tvvaVbb71VDz74oJKSknTTTTeFLf4vvvhi/5IQGzduVNu2bfX8888HPGays7O1ZMkS/c///I8mTZqkTZs2KTU11f/8atKkySGfIw4/PmOMaehBAEBDmzlzpgYPHqzFixera9euDT0cFRYWqkOHDrrvvvt0991319txr7vuOv3973/Xzp07a2zr8/l08803a+rUqfUwMhxpuIICAA1s5cqVeuGFF9S9e3elpaVp3bp1mjhxotLS0g76xWvA4Y4CBQAaWEpKipYsWaKnn35aO3bsUHp6unr16qVx48bVGDUGDle8xQMAADyHmDEAAPAcChQAAOA5FCgAAMBzovJDstXV1fr222+VmprKVyIDABAljDEqLy9XTk5OjV9CGJUFyrfffnvQNScAAIC3FRcX1/jtwVFZoBxYIK2H+ipOLMkN1IfJaxc66WfkCb+8ICOAw1el9mu+3v7FhU4PiMoC5cDbOnGKV5yPAgWoD41T3XxkjecscAT7/19sYvPxDD4kCwAAPIcCBQAAeA4FCgAA8BwKFAAA4DlR+SFZ4HAzeP1GJ/3MOK6Vk36e2PjvGttUR7iK19SiwL7jfW6WAxvSqoeTfgB4A1dQAACA51CgAAAAz6FAAQAAnkOBAgAAPIcCBQAAeA4FCgAA8BxixkADuHZdccB2lal5XYpI+o3Uwj2hceUzkgKj0DFhhmwTPbaJFVep9vMRLhodLzcR5puIMAP1jisoAADAcyhQAACA51CgAAAAz6FAAQAAnkOBAgAAPIcUD3AITlga2VNoyc68gO2ujQtdDEfVdfg3x4I9rQO2G/n2O+n3tEabQvbFBqVvbFI9NomdavthBfjLxvmBx3ITutL1LUkHAQfDFRQAAOA5FCgAAMBzKFAAAIDnUKAAAADPoUABAACeQ4ECAAA8h5gxUAuRxoprEhw7lqT9JrbG+wXHccPpmuomwhzvqwrYrnL0983CvaELE8ZaBIJjfDW3OS3x28D7hGljEz22iRVXRbAu4VNB8WVJSvC5yTAPanmWk36AhsIVFAAA4Dm1LlA++ugj9e/fXzk5OfL5fHrttdcCbjfGKD8/Xzk5OUpKSlKvXr20Zs2agDb79u3TLbfcombNmiklJUUXX3yxNm0K/bImAABwZKp1gbJr1y6dfPLJmjp1atjbJ06cqMmTJ2vq1KlavHixsrKydN5556m8vNzfZsSIEXr11Vc1e/ZszZ8/Xzt37tRFF12kqqqqsH0CAIAjS63fUL/wwgt14YUXhr3NGKMpU6Zo7NixGjBggCTp2WefVWZmpmbNmqUhQ4aotLRUTz/9tP72t7/p3HPPlSQ999xzatmypd59912df/75h3A6AADgcOD0MyiFhYUqKSlRnz59/PsSExPVs2dPLViwQJK0dOlS7d+/P6BNTk6OOnXq5G8TbN++fSorKwv4AQAAhy+nBUpJSYkkKTMzM2B/Zmam/7aSkhIlJCSoSZMmB20TbMKECUpPT/f/tGzZ0uWwAQCAx9RJZtIXFJMzxoTsC/ZLbcaMGaORI0f6t8vKyihScEj2F+RGdL+VPwZun5yx2cFo7CLF4dis8vtpeZuA7WpT831ifDVnZnukfVljGxs2keJwqk3Nf199urdFwLZNNNlmPKcmhv9jqrZsIsVVFlHycJ4pDo0wx1s8XmxcQ4QZ9cDpFZSsrCxJCrkSsnXrVv9VlaysLFVUVGj79u0HbRMsMTFRaWlpAT8AAODw5bRAycvLU1ZWlgoKCvz7KioqNG/ePHXv3l2S1KVLF8XHxwe02bJliz777DN/GwAAcGSr9Vs8O3fu1FdffeXfLiws1IoVK5SRkaFWrVppxIgRGj9+vNq1a6d27dpp/PjxSk5O1lVXXSVJSk9P1w033KA77rhDTZs2VUZGhv7whz/oxBNP9Kd6AADAka3WBcqSJUt09tln+7cPfDZk0KBBmjlzpkaNGqU9e/Zo2LBh2r59u7p166a5c+cqNTXVf59HH31UcXFxuuyyy7Rnzx717t1bM2fOVGxsZO/DAwCAw4vPGBPZJ7AaUFlZmdLT09VLlyjOF9/Qw0EUivRDssEa+kOykThcPiQbiSPpQ7Lh8CFZNLRKs18f6nWVlpbW+HlSChQcEWwKkmqLF+8Yi/8sKi3SJTZOyvi25kYWbAoSV+ItCgAbPdLWO+nHpiBxxaawibUo/E5N/M7FcKyKEVezE+9ogcOrWvA5xMNdbQoUFgsEAACeQ4ECAAA8hwIFAAB4DgUKAADwHAoUAADgORQoAADAc4gZI6p8/XxnJ/20av5jzY0s2ESKjUXM12cRP62qdvP3xMlN3Xx3i6tIsY24mCon/XRPjb7vbrGJJktSjMWYuiT+cKjDkWQXK65y9F9LvM/N4/6KFmc66QeHhpgxAACIahQoAADAcyhQAACA51CgAAAAz6FAAQAAnkOBAgAAPIeYMTzNKlbs6BFsEwe2cUzmdif9uIoV23B17qcdvdFJP65ixTZsY7w16d7YzQrMrsZjwyaaHGsRJz81wU1sP9bRqsg2WDm5YRAzBgAAUY0CBQAAeA4FCgAA8BwKFAAA4DkUKAAAwHMoUAAAgOfENfQAcGTY8HBkK4n6tgRum+y9YRrVvl9TbXGnCNOem0uaBHbjKMKbnbnDST+uxhPO4u9bBWzHxrhZ9ff0o4uc9FOXEd4FO48L2LaJ8No4y9EKzFJkY6qyWLF78b5mIfts4sk2Tkt0E9snVhx9uIICAAA8hwIFAAB4DgUKAADwHAoUAADgORQoAADAc1gsEHXCKrXj6pHnqJ/q7H1O+nGWELIJ2zhK5GQ5Sgi5Su3U57FOb+ZmgUNXqR2rYzlKI53lbIHDevy9O5rnh9t2dNIPaofFAgEAQFSjQAEAAJ5DgQIAADyHAgUAAHgOBQoAAPAcChQAAOA5xIzxi0pGuFlga3cLi4eZzSPRoo2z9eAcRXgrHcWXrcbjLL5s0cbCMTk/OunHJlJcbTE/NvFcZ4vcNXUUX7Z8QDs7f2eLHDqKMNdnfNvRA39i205O+jkcETMGAABRjQIFAAB4DgUKAADwHAoUAADgORQoAADAcyhQAACA5xAzRgCbWLGb8K2cRVl3HeOmI5+rVYhtjuWon/05FW46qs9XAUcn3+qYbU76sYkVG4sIr8/ivFytQuwqwmwT4a2y+DvWph9X596j8Ton/biKFNsgdvwfxIwBAEBUo0ABAACeQ4ECAAA8hwIFAAB4DgUKAADwHAoUAADgOXENPQDUjT2/7RbR/dKLqgK2S3NjQ9oEh/OsYsd1uApx401BI3AWXw6zM4KMtdXiuBGuQhz/bULtj2Wh4hhH8WWrX2pkyytv3Nw0sJcYN7/41jk/hOyziRAHs4nV2qxAHM6nP+SG7IuzWPHZxukZRQHbka4m7Or8g/uZv7N9SBtXK1CfleJmBWZixW5wBQUAAHgOBQoAAPAcChQAAOA5FCgAAMBzKFAAAIDnsFjgYcA6seOxhe5KW4cmhCLhLCVjc6y6TAhFoC4TQhH1Y6Gi5T4n/dikdlwt8ucqIZSXHZoQikRdJoSC1VU6KFI2iZ0qY7HAoUU/rhYU/PikRCf9HA5YLBAAAEQ1ChQAAOA5zguUyspK3XPPPcrLy1NSUpLatGmjBx54QNXV/7mcZoxRfn6+cnJylJSUpF69emnNmjWuhwIAAKKU8wLlT3/6k6ZPn66pU6fq888/18SJEzVp0iQ9/vjj/jYTJ07U5MmTNXXqVC1evFhZWVk677zzVF5e7no4AAAgCjn/qvtPPvlEl1xyifr16ydJat26tV544QUtWbJE0k9XT6ZMmaKxY8dqwIABkqRnn31WmZmZmjVrloYMGRLS5759+7Rv338+WFdWVuZ62AAAwEOcX0Hp0aOH3nvvPa1f/9OaBitXrtT8+fPVt29fSVJhYaFKSkrUp08f/30SExPVs2dPLViwIGyfEyZMUHp6uv+nZcuWrocNAAA8xPkVlLvuukulpaXq0KGDYmNjVVVVpXHjxunKK6+UJJWUlEiSMjMzA+6XmZmpoqLwMbQxY8Zo5MiR/u2ysrLDtkiJ7Xhcre/TeP32kH07j2sS2rDOFrqLLIqXXlgZeCxn8eUwD2uPLfKXsjmCY1lwtcChq0hxOAnFgZFLi0SolcqWe0P2RbLIn6v4cjgbvj06YDsm1t1Et8n6PrDvCJ9QdRVhXritdcg+VxHmbhnfBGxHunigTay4OoIn1FmrQhff/PdJCWFa4uecFyhz5szRc889p1mzZqljx45asWKFRowYoZycHA0aNMjfzucL/CUbY0L2HZCYmKjERHLkAAAcKZwXKHfeeadGjx6tK664QpJ04oknqqioSBMmTNCgQYOUlZUl6acrKdnZ2f77bd26NeSqCgAAODI5/wzK7t27FRMT2G1sbKw/ZpyXl6esrCwVFBT4b6+oqNC8efPUvXt318MBAABRyPkVlP79+2vcuHFq1aqVOnbsqOXLl2vy5Mm6/vrrJf301s6IESM0fvx4tWvXTu3atdP48eOVnJysq666yvVwAABAFHJeoDz++OP64x//qGHDhmnr1q3KycnRkCFDdO+99/rbjBo1Snv27NGwYcO0fft2devWTXPnzlVqaqrr4QAAgCjEYoEeE0mKJ5ywKZ4I1GWKJ+RYdZniiUB9LsRXpymeSNTjq0JdpngiUZcpnmB1meKJVDQuRBic4olUXaV4wjlSUzy1WSzQ+RUU2LMqRmyev2Fe4MNFj31Vbl4Md7bPCOo4siesr9piPBEUAOnfVIY2cVQAhBQ/Eb5W1VXxExxftj6WhZ0t3PRjU5DYFKvB/0fGFTeK6Fg2qlvuCdiOJL4sST6L8URa73+9JTDC7GoF5mPDFD6RRJjrsvD5ZFtewHacowd9uMInkhWOWc04MiwWCAAAPIcCBQAAeA4FCgAA8BwKFAAA4DkUKAAAwHOIGXuMq5ixVWLH5ldvk9CpcvOJ+V0dmjrpx+oD/DYJohibc3fz9CnLc/M4dpXYseLolaM8100/dZUOCstRQsY4ikZLcnhyFodyFA9u5yoaXY/xYFcJob09S5z0E21qEzPmCgoAAPAcChQAAOA5FCgAAMBzKFAAAIDnUKAAAADPoUABAACew2KBHlO1Zn3Adlzzow/SMgIZRwVuR7jIn6tYcbCUL7aF7qx2c6zdHYLm0SZCHI6jWHGwtML9IfusFlO0UJbnaNXUOvpCgtSiMIdy9KdTcIQ54pStTaw4gs59G5NCu3G1wnGLPaH7gqPIFmO2iRRHurrz+i3NA7ZjHMW3j8vcGrIvOIpsEzu2iRRHusBhwofZAdsVvbZE1M/hjCsoAADAcyhQAACA51CgAAAAz6FAAQAAnkOBAgAAPIcCBQAAeA4xY4+xihVHugD1tu2B245irCHx5Ug5ihSHk/xF0KqpNlFpiyjy7uPcxMBdRYrDSSusCDqWxZ0skpOljuLLriLF4QRHmCM/VuCE7MwN8/uyWU04iNV4In1oFIeLMNe+m3CHjzlmd8C2L8y520SPbWLFkbzcrStpHrLPVYS5fVCEOSbMudtEj4kV14wrKAAAwHMoUAAAgOdQoAAAAM+hQAEAAJ5DgQIAADyHAgUAAHgOMeM6UnV2l5obhSkPq4K2E1eFWeo1UhZRVmMiiPpu+zGiY9nwNW3ipJ+IVmC2OIfkL0JXTVV18G8xDIuVpPe0z6y5HwtWseJgFr++9A0VIft8FplQY3HuO46tvwizTTo4ODXauCj0HFzFpUMizBGuwOzq3MP2vSm51scKJ/iZEhsUX5ZCnyo2sWO7+HJkE/tFSeDz0hdpfPmlwK8oyL10VWT9HMa4ggIAADyHAgUAAHgOBQoAAPAcChQAAOA5FCgAAMBzfMZEuvJcwykrK1N6erp66RLF+eIbejiSLFM7jtgkJWzEryp00o9VYsfVw8zRgoK+phlO+rFK7LjiKBm1t0O2k35cPQ5tGIuFG21sb+ftdFBYDv+MLA+3yGEQq3HX5SKHwRydf9wxu2psY5PssUrtODr33MsOv2RPpdmvD/W6SktLlZaW9ottuYICAAA8hwIFAAB4DgUKAADwHAoUAADgORQoAADAcyhQAACA57BYoCOxHywN2HYVO/Y5ipaGs//EvNCddRVhDrdAnM2xbGLFEYzZ/LAtdJ+jCHNMM0cR5kgWOLTQ6PNvQ3c6+r3vOz7HST+uYsXBmnwZusChuwhz4FceRLgWnd2fjRH+ulK/CRyUiY2sn2A7W4UZUPD524y5Ds+9clNK0LHcPObjckIXOIzE4RgpPlRcQQEAAJ5DgQIAADyHAgUAAHgOBQoAAPAcChQAAOA5FCgAAMBzWM24Hm27qbuTfpqs3+ukn7qMMIdw9DCLW/m1k2NZRYqdrcDsph9n8WVHcer6tLdTCyf91FV8Ofyx3PSzo52717j6XIXY1fnvChdhDjmYRUdWqxC7eXwYRxHmY29b6KQfL2E1YwAAENUoUAAAgOdQoAAAAM+hQAEAAJ5DgQIAADyHFE8dcZXYseFz+Btssm6Pm44sHlY+V2ESRw/hmJVfOunHapE/4+bkjaOEUOzRTZ30U68JoTg3a53u6XSMk35cpVasjhXrJm2y41g3c2gVfnH1OuUsHWTzPK35xGwSO65eo9uOiP5UDykeAAAQ1ShQAACA59RJgbJ582YNHDhQTZs2VXJysk455RQtXbrUf7sxRvn5+crJyVFSUpJ69eqlNWvW1MVQAABAFHJeoGzfvl1nnXWW4uPj9c9//lNr167VI488oqOOOsrfZuLEiZo8ebKmTp2qxYsXKysrS+edd57Ky8tdDwcAAEQhN5+Q+pk//elPatmypWbMmOHf17p1a/+/jTGaMmWKxo4dqwEDBkiSnn32WWVmZmrWrFkaMmSI6yEBAIAo4/wKyhtvvKGuXbvq0ksvVfPmzdW5c2c99dRT/tsLCwtVUlKiPn36+PclJiaqZ8+eWrBgQdg+9+3bp7KysoAfAABw+HJ+BWXDhg2aNm2aRo4cqbvvvluLFi3SrbfeqsTERF177bUqKSmRJGVmZgbcLzMzU0VFRWH7nDBhgu6//37XQ61TTZ8KLbZcRY9dxoqDbW+fFHgsixir8dUcxcv4fHfEYwo8mKOFw8KoPqldwLbPUXzZt2J9mJ21/9vAVFVZNLKIToY5dtX322p/LAtxzZs56UexsaH7HP1+klZvCtwRY/G7sVh0cHfH7AhHFMg2UmzzuhCcmj3qq8rQNq4WOWwb9N9LuNOwWuTPok0ED4WUotCOIzv30BPb3dJN3P5wiBUfCudXUKqrq3Xqqadq/Pjx6ty5s4YMGaKbbrpJ06ZNC2jnC/pPzRgTsu+AMWPGqLS01P9TXFzsetgAAMBDnBco2dnZOuGEEwL2HX/88dq4caMkKSsrS5L8V1IO2Lp1a8hVlQMSExOVlpYW8AMAAA5fzguUs846S+vWrQvYt379euXm5kqS8vLylJWVpYKCAv/tFRUVmjdvnrp3r79vXwUAAN7l/DMot99+u7p3767x48frsssu06JFi/Tkk0/qySeflPTTWzsjRozQ+PHj1a5dO7Vr107jx49XcnKyrrrqKtfDAQAAUch5gXLaaafp1Vdf1ZgxY/TAAw8oLy9PU6ZM0dVXX+1vM2rUKO3Zs0fDhg3T9u3b1a1bN82dO1epqamuhwMAAKKQ8wJFki666CJddNFFB73d5/MpPz9f+fn5dXF4AAAQ5VjNuAEVPeDmMzepG510I8kuVuzuWDW3sVkltYmjCLNVrNjV08XVor8rvnDSTV1GmCPqx0JcjpsYr1Ws2JVYi2NZzOGuTuEDBbVlE6uNJL4c/lhuVmAubRMmch5yMIsmjs7dhqvodvbD4b8rLJqwmjEAAIhqFCgAAMBzKFAAAIDnUKAAAADPoUABAACeQ4ECAAA8h5hxPXIVK7bhKh6XWuRoRV9XsVobjs69yRe7LI5lcTCbdK6rp6GjfqqXf+6kH1eRYhu+cCseRyA2O8tJP1aRYpccnf/OTs2d9GMTK3b1OlXt5tRVmldzR1ax6zpagTmc7EeiK3pMzBgAAEQ1ChQAAOA5FCgAAMBzKFAAAIDnUKAAAADPIcXTgFylelx9Er6+pRUeuQmhoz7fWWMbZ4sXemyBw+qVa530Y5PaMRaLX/ps0iaOEjIx2W4W+XOV2LHiaDHF8k5HO+mnfhf5c7TAYZ7NIpo1N4m2xE44pHgAAEBUo0ABAACeQ4ECAAA8hwIFAAB4DgUKAADwHAoUAADgOcSMPebLZ7o66SexOMFJP/XJJi5sLFJ/6RuO5PhymZuOqiziuR576ahes95JP/UZX3YZF3YWYXYUK7biaEHFso5NnfQjn8XvzNHj3lWEOeXvC530U1+IGQMAgKhGgQIAADyHAgUAAHgOBQoAAPAcChQAAOA5FCgAAMBziBk3IFeRYms2GV0LiZvczHm9xnhtjlWPEWabWLGzVaodPcXT17qJMDtbpdmCiXP0N9iar9z0YxMrtogw2/DFx7npJ6u5k35cRYptGFcrMJ+Q4aQfm5deV8/35Je9HTsmZgwAAKIaBQoAAPAcChQAAOA5FCgAAMBzKFAAAIDnkOLxGGfJHkeJHatDOXoEJRU7+l3WYzrI1Sfv3aWDbBb5c3MoVwscpn9e6qQfE2vxmHf12HCVDlr7tZt+ZLvIoZsJ8MU7SvJlHe2kH5vUjk16zNgsFmjzOLNQ1qFJjW1snqteT+0EI8UDAACiGgUKAADwHAoUAADgORQoAADAcyhQAACA51CgAAAAzyFm7HGlb7dz1tfWLUc56adeHzGuIswbo2+BQ3cRZkeDtlngsD4XgLSQ+pWbBQ5ls/icxxY4jFlb6KQfuwUOHf3iHS1wqEw38WWrSLHN790mvmzTxkLV6i+c9FNXiBkDAICoRoECAAA8hwIFAAB4DgUKAADwHAoUAADgORQoAADAcxxluuCKy1hxsObZOwK2XcWFXcWXXUWKw9nTan/Atq+65kifzYLQyUVunkJ1Gc8tzQv6O8RVfLkwdNAm6FDOzivCMZe3DYwxGkeveGlf7gzdGRwTtVk91yZSHOEcVnfIi+x4FmI//yZwR7gYtk302CZWXB3BL3/L1pBdPkcRZpPZNKjjCOPBNveLIMIce2KHkCZejx4fDFdQAACA51CgAAAAz6FAAQAAnkOBAgAAPIcCBQAAeA4FCgAA8Bxixh6T3vfLgG2XseO6WoU4OL4sSdWqOUIXY5Ed3frtURGMKJRNrDjkPhbztadVZehOm2NZdO4qwmy1CnEEj42y1mH+vqmrCHO4KbU4llWsOJJzP7ZxaDc2K99aSPsqKMIc7s9IiwSvTaTYF+GLQnWH3MBjxTqKL39RFLozJmheLWLHVpHiSOLLknxbfgjcEWex2rMF0zwjzMFq/5iK1khxOFxBAQAAnlPnBcqECRPk8/k0YsQI/z5jjPLz85WTk6OkpCT16tVLa9asqeuhAACAKFGnBcrixYv15JNP6qSTTgrYP3HiRE2ePFlTp07V4sWLlZWVpfPOO0/l5eV1ORwAABAl6qxA2blzp66++mo99dRTatKkiX+/MUZTpkzR2LFjNWDAAHXq1EnPPvusdu/erVmzZtXVcAAAQBSpswLl5ptvVr9+/XTuuecG7C8sLFRJSYn69Onj35eYmKiePXtqwYIFYfvat2+fysrKAn4AAMDhq05SPLNnz9ayZcu0ePHikNtKSkokSZmZmQH7MzMzVVQU5hPc+ulzLPfff7/7gUaB4FSPJOUtSq7xfjEWq7Qt3doyojEFs0nsRHq/ZjmlAdvGYgU/n0UkZdumo2psYyWCdJAkq5UId7eqCrpPZIcKllLkJnVgNZ4Ix1waLiHkQFpxmOdF8K/CJh1kk9iJMCFT1jal9seylP7lLif9WKV2Ijj/qvatQrtxtMBh/NqNTvqxSu1EcO6+77aF7Kvc+n2t+zmcOH8VKC4u1m233abnnntOjRo1Omg7X1B8yhgTsu+AMWPGqLS01P9TXFzsdMwAAMBbnF9BWbp0qbZu3aouXbr491VVVemjjz7S1KlTtW7dOkk/XUnJzs72t9m6dWvIVZUDEhMTlZiY6HqoAADAo5xfQendu7dWr16tFStW+H+6du2qq6++WitWrFCbNm2UlZWlgoIC/30qKio0b948de/e3fVwAABAFHJ+BSU1NVWdOnUK2JeSkqKmTZv6948YMULjx49Xu3bt1K5dO40fP17Jycm66qqrXA8HAABEoQb5qvtRo0Zpz549GjZsmLZv365u3bpp7ty5Sk1NbYjhAAAAj6mXAuXDDz8M2Pb5fMrPz1d+fn59HB4AAEQZFgv0OJtIcTjVpuaPF3U+enPo/Rwt8rf0+xY1trFhEyuO5D4Zx5SG7Ku2uF+MRYT5x+KjamxjxWJBuEjsCo4vS96LMFuIZIHD8hahzwvjaMipG938wuwizJH1XXpscIQ5sn6CpX+520k/Yc/d0Sqn+48P/FoFVwscJnzuJlV6pEeKw2GxQAAA4DkUKAAAwHMoUAAAgOdQoAAAAM+hQAEAAJ5DgQIAADzHZ4yjDFc9KisrU3p6unrpEsX54ht6OPUu0uhxsEhXIW5Iy7a6iS/bRIpdcfUMKy1Od9NRpCswRyCSKHA4KRvd/C1lFat1NGZ38WV3L9EW3z7g7liuIsxf7XHSj4mpx9c7i2OZgyyO+3OxHyx1MRpPqTT79aFeV2lpqdLS0n6xLVdQAACA51CgAAAAz6FAAQAAnkOBAgAAPIcCBQAAeA4FCgAA8BxixoeBgetCVyWO1Melxznpp6oeY7yuLHcVYa7HGG8kqz2HU178y3E/W1axYo+94iRvdhRhjsIIr6sIc72eu82xLJ4W6V/tPeSxSLKKFLsS8+GyejtWXSFmDAAAohoFCgAA8BwKFAAA4DkUKAAAwHMoUAAAgOfENfQAUHtXfrElYLvK4Ufou6d95ayvn/u4tJ2TfqrrMC5w8tHf1km/y787xkk/VdV1d+4pLcoDtl1l+/YUp7rpqA7tPqY6YNvVQ8xVOijcn5GuFmHc2TI0gWJz/jbhsQZNCFkcurRtozDHsjgxiyZHOUoIHQ6pnUPBFRQAAOA5FCgAAMBzKFAAAIDnUKAAAADPoUABAACeQ4ECAAA8h8UCDwPBseO6Vm2Ts6tHH+9ws8BhdRQucLisxM0ChzavAq4WJnTVz77NKU76sYmxuor1mlg3HSVvdrNaYDQu8tfYWXy5/p7vGU8vqLdjeR2LBQIAgKhGgQIAADyHAgUAAHgOBQoAAPAcChQAAOA5FCgAAMBziBkfpqYW/dtJPx/vaeukHxsuV2V2Yf4ORysw12Ms21VUesUWNysw20SKvfYCVPGtq/hyPZ+Zm+Sxkg7XCLOFxsVu+iFWfHDEjAEAQFSjQAEAAJ5DgQIAADyHAgUAAHgOBQoAAPCcuIYeAA6dbWKnKoI0SfekDbW+j62Pdx9bZ30Hq4qgFj/zqK/rYCQ/+fcON+duk9qpjiDicFJW6AKUrhJCq0qynfRjI5KFCeOzd4fsi42pdjEc7dniJiEU9uHsKDS0J6cq6FgWHVtMc6PNbv67qct00M6Wgdut8knjNCSuoAAAAM+hQAEAAJ5DgQIAADyHAgUAAHgOBQoAAPAcChQAAOA5LBZ4mLKJHkcSO67Lflz5eLebRf5suIreuvLx9uOc9GMVX3b0e3c1h2tKspz0YxMpjiS+HPZYsW7iy5K0a0tjNx3V4yKHVpFhX83jabTZzf8DxIrrHosFAgCAqEaBAgAAPIcCBQAAeA4FCgAA8BwKFAAA4DkUKAAAwHOIGaPW/lzkJopnE0/2XIy3HiPMkazAXJc++rEeI8we+72v29rcST8xjlZFthHnKMJctiXVST91uQpxsOP+e1H9HQy1QswYAABENecFyoQJE3TaaacpNTVVzZs3129+8xutW7cuoI0xRvn5+crJyVFSUpJ69eqlNWvWuB4KAACIUs4LlHnz5unmm2/WwoULVVBQoMrKSvXp00e7du3yt5k4caImT56sqVOnavHixcrKytJ5552n8vJy18MBAABRKM51h++8807A9owZM9S8eXMtXbpUv/71r2WM0ZQpUzR27FgNGDBAkvTss88qMzNTs2bN0pAhQ1wPCQAARJk6/wxKaWmpJCkjI0OSVFhYqJKSEvXp08ffJjExUT179tSCBeE/fLlv3z6VlZUF/AAAgMNXnRYoxhiNHDlSPXr0UKdOnSRJJSUlkqTMzMyAtpmZmf7bgk2YMEHp6en+n5YtW9blsAEAQANz/hbPzw0fPlyrVq3S/PnzQ27z+QJjhMaYkH0HjBkzRiNHjvRvl5WVUaQ0oNtyuwds/+vblU76XbN/d8i+GIuVTIPZRFQjXYG5e/JXEd2vJgt2HxuyL1aBMVFXsePqCPOePZoEnrurVaz//WPouQf/3l3FjiPtp93R3wdsJ8RWuRiOPncUX5ak2KBViF2tuJyatTNkn01c+iAv5wG2b/nlmKktYsWHpzorUG655Ra98cYb+uijj9SiRQv//qysn5ZELykpUXZ2tn//1q1bQ66qHJCYmKjExMS6GioAAPAY52/xGGM0fPhwvfLKK3r//feVl5cXcHteXp6ysrJUUFDg31dRUaF58+ape/fuwd0BAIAjkPMrKDfffLNmzZql119/Xampqf7PlaSnpyspKUk+n08jRozQ+PHj1a5dO7Vr107jx49XcnKyrrrqKtfDAQAAUch5gTJt2jRJUq9evQL2z5gxQ9ddd50kadSoUdqzZ4+GDRum7du3q1u3bpo7d65SU918pTIAAIhuzgsUm6V9fD6f8vPzlZ+f7/rwAADgMFCnKR4cnlyldoJ1jE8O2VetmtMCMRYfpVpdsSdgO1aRrZFpk1yJJG3TLXlDJMOxEpwQivGFzqlNssduccfan/uZTULP3VVCaOGPbQK2w6XCbJI9NqmdSBJC7YPSQZKUEOMmIbT2+/Chg9qKdIFDm2Voj8oK/E6r5hd/EdGxcHhisUAAAOA5FCgAAMBzKFAAAIDnUKAAAADPoUABAACeQ4ECAAA8x2dsvrjEY8rKypSenq5eukRxvviGHs4Rz1Xs2CZS7EqVqflYsb6a6/dVFRUuhmMVTbaJsdosruhq4b2Pdx9ncayGiy/XpSU7cp30YxMpdvX7kqSE2Eon/Xz2fZaTfogVH3kqzX59qNdVWlqqtLRfXizSW896AAAAUaAAAAAPokABAACeQ4ECAAA8hwIFAAB4DgUKAADwHGLG8LR/frvcST82sWJXqi1WSo6xiNau2u9mzDYxVZuor80K0K5WIZ63q4OTfqxizo4izI1i9jvpZ/GO1k76iXO0KrKNH7pvr7djIboRMwYAAFGNAgUAAHgOBQoAAPAcChQAAOA5FCgAAMBz4hp6AMAvuTCnc530+9bmpU76sUnsRHq/TvGBiRibxRRjLP7mWBVmfUObhE4wm8SOTUIm1hd6Xj1TAheR22/cvFTN3xW6wGG449ck3ldzQibSRNOpRxUFbDfyuVngT5IWlbZ20g+pHdQHrqAAAADPoUABAACeQ4ECAAA8hwIFAAB4DgUKAADwHAoUAADgOcSMcUS66Jguddb3G5uXOOnHJlYcyX06JUQyGjsrK2IDtiOJ8EruYsXBeqSsD9nnaoHDJbvbBGxHEt2W6jbC3CU9MML8r46/vFgb0JC4ggIAADyHAgUAAHgOBQoAAPAcChQAAOA5FCgAAMBzKFAAAIDnEDMGHLv4mK510u9rmxc56afKRBZ/tdEp3tXKu4H9LK9o5KRXV5HicLombwjYjlfNcWEbS/a0CdkXLsJsc27EihFNuIICAAA8hwIFAAB4DgUKAADwHAoUAADgORQoAADAcyhQAACA5xAzBqLEb445vc76fnnTp076qY5wBd+anJywp076laRlFclO+rGJFVdb/E0YE7QiddekDSFtHmjT2X5gQJTiCgoAAPAcChQAAOA5FCgAAMBzKFAAAIDnUKAAAADPIcUDQP/Volud9PvSpoVO+qmqo3SQJJ2csCtg+4oWZzrp994Ny0P2BSd0bJDYwZGKKygAAMBzKFAAAIDnUKAAAADPoUABAACeQ4ECAAA8hwIFAAB4DjFjAHXm0hZn1Fnfszd94qQfV7HiYMSDgUPDFRQAAOA5DVqgPPHEE8rLy1OjRo3UpUsXffzxxw05HAAA4BENVqDMmTNHI0aM0NixY7V8+XL96le/0oUXXqiNGzc21JAAAIBHNFiBMnnyZN1www268cYbdfzxx2vKlClq2bKlpk2b1lBDAgAAHtEgH5KtqKjQ0qVLNXr06ID9ffr00YIFC0La79u3T/v27fNvl5aWSpIqtV91uEQHAA8rL6/9ujbhVJr9TvoBULNK/fR8M6bm/7wbpED54YcfVFVVpczMzID9mZmZKikpCWk/YcIE3X///SH75+vtOhsjAG/L6+Cqp9dddQTAUnl5udLT03+xTYPGjH0+X8C2MSZknySNGTNGI0eO9G/v2LFDubm52rhxY40niENTVlamli1bqri4WGlpaQ09nMMW81w/mOf6wTzXj2icZ2OMysvLlZOTU2PbBilQmjVrptjY2JCrJVu3bg25qiJJiYmJSkxMDNmfnp4eNb+UaJeWlsZc1wPmuX4wz/WDea4f0TbPthcWGuRDsgkJCerSpYsKCgoC9hcUFKh79+4NMSQAAOAhDfYWz8iRI3XNNdeoa9euOvPMM/Xkk09q48aNGjp0aEMNCQAAeESDFSiXX365tm3bpgceeEBbtmxRp06d9Pbbbys3N7fG+yYmJuq+++4L+7YP3GKu6wfzXD+Y5/rBPNePw32efcYm6wMAAFCPWIsHAAB4DgUKAADwHAoUAADgORQoAADAcyhQAACA50RlgfLEE08oLy9PjRo1UpcuXfTxxx839JCi2oQJE3TaaacpNTVVzZs3129+8xutW7cuoI0xRvn5+crJyVFSUpJ69eqlNWvWNNCIDw8TJkyQz+fTiBEj/PuYZzc2b96sgQMHqmnTpkpOTtYpp5yipUuX+m9nng9dZWWl7rnnHuXl5SkpKUlt2rTRAw88oOrq/yziyDxH5qOPPlL//v2Vk5Mjn8+n1157LeB2m3ndt2+fbrnlFjVr1kwpKSm6+OKLtWnTpno8CwdMlJk9e7aJj483Tz31lFm7dq257bbbTEpKiikqKmrooUWt888/38yYMcN89tlnZsWKFaZfv36mVatWZufOnf42Dz30kElNTTUvv/yyWb16tbn88stNdna2KSsra8CRR69FixaZ1q1bm5NOOsncdttt/v3M86H78ccfTW5urrnuuuvMp59+agoLC827775rvvrqK38b5vnQPfjgg6Zp06bmrbfeMoWFheall14yjRs3NlOmTPG3YZ4j8/bbb5uxY8eal19+2Ugyr776asDtNvM6dOhQc8wxx5iCggKzbNkyc/bZZ5uTTz7ZVFZW1vPZRC7qCpTTTz/dDB06NGBfhw4dzOjRoxtoRIefrVu3Gklm3rx5xhhjqqurTVZWlnnooYf8bfbu3WvS09PN9OnTG2qYUau8vNy0a9fOFBQUmJ49e/oLFObZjbvuusv06NHjoLczz27069fPXH/99QH7BgwYYAYOHGiMYZ5dCS5QbOZ1x44dJj4+3syePdvfZvPmzSYmJsa888479Tb2QxVVb/FUVFRo6dKl6tOnT8D+Pn36aMGCBQ00qsNPaWmpJCkjI0OSVFhYqJKSkoB5T0xMVM+ePZn3CNx8883q16+fzj333ID9zLMbb7zxhrp27apLL71UzZs3V+fOnfXUU0/5b2ee3ejRo4fee+89rV+/XpK0cuVKzZ8/X3379pXEPNcVm3ldunSp9u/fH9AmJydHnTp1iqq5b7Cvuo/EDz/8oKqqqpAVjzMzM0NWRkZkjDEaOXKkevTooU6dOkmSf27DzXtRUVG9jzGazZ49W8uWLdPixYtDbmOe3diwYYOmTZumkSNH6u6779aiRYt06623KjExUddeey3z7Mhdd92l0tJSdejQQbGxsaqqqtK4ceN05ZVXSuLxXFds5rWkpEQJCQlq0qRJSJto+r8yqgqUA3w+X8C2MSZkHyIzfPhwrVq1SvPnzw+5jXk/NMXFxbrttts0d+5cNWrU6KDtmOdDU11dra5du2r8+PGSpM6dO2vNmjWaNm2arr32Wn875vnQzJkzR88995xmzZqljh07asWKFRoxYoRycnI0aNAgfzvmuW5EMq/RNvdR9RZPs2bNFBsbG1IBbt26NaSaRO3dcssteuONN/TBBx+oRYsW/v1ZWVmSxLwfoqVLl2rr1q3q0qWL4uLiFBcXp3nz5umxxx5TXFycfy6Z50OTnZ2tE044IWDf8ccfr40bN0ri8ezKnXfeqdGjR+uKK67QiSeeqGuuuUa33367JkyYIIl5ris285qVlaWKigpt3779oG2iQVQVKAkJCerSpYsKCgoC9hcUFKh79+4NNKroZ4zR8OHD9corr+j9999XXl5ewO15eXnKysoKmPeKigrNmzePea+F3r17a/Xq1VqxYoX/p2vXrrr66qu1YsUKtWnThnl24KyzzgqJya9fv96/UjqPZzd2796tmJjA/0JiY2P9MWPmuW7YzGuXLl0UHx8f0GbLli367LPPomvuG+zjuRE6EDN++umnzdq1a82IESNMSkqK+eabbxp6aFHr97//vUlPTzcffvih2bJli/9n9+7d/jYPPfSQSU9PN6+88opZvXq1ufLKK4kLOvDzFI8xzLMLixYtMnFxcWbcuHHmyy+/NM8//7xJTk42zz33nL8N83zoBg0aZI455hh/zPiVV14xzZo1M6NGjfK3YZ4jU15ebpYvX26WL19uJJnJkyeb5cuX+79Ow2Zehw4dalq0aGHeffdds2zZMnPOOecQM64P//u//2tyc3NNQkKCOfXUU/1xWERGUtifGTNm+NtUV1eb++67z2RlZZnExETz61//2qxevbrhBn2YCC5QmGc33nzzTdOpUyeTmJhoOnToYJ588smA25nnQ1dWVmZuu+0206pVK9OoUSPTpk0bM3bsWLNv3z5/G+Y5Mh988EHY1+RBgwYZY+zmdc+ePWb48OEmIyPDJCUlmYsuushs3LixAc4mcj5jjGmYazcAAADhRdVnUAAAwJGBAgUAAHgOBQoAAPAcChQAAOA5FCgAAMBzKFAAAIDnUKAAAADPoUABAACeQ4ECAAA8hwIFAAB4DgUKAADwnP8HwRTZPU//6bQAAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FACT: oversampling\n", - "89.8 µs ± 38.8 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "FlashCam - OversamplingMapper:\n", + "Initialization time: \n", + "133 ms ± 1.05 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "31.3 µs ± 469 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGxCAYAAABIjE2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFn0lEQVR4nO3deXhU5d3/8c9kJQkhGCwJYUexoKggUSqgoCxWEK2IoqCi2D4qbhR3qRqsgtA+iErVB0XEBVFbCtSqBRVRRMuiuOD+iGwaUQQStpBk7t8f/pinc+bAuWdykpyB9+u6cl3MmXvOfZ8zk/DNyXzmGzLGGAEAAARISn0vAAAAwIkCBQAABA4FCgAACBwKFAAAEDgUKAAAIHAoUAAAQOBQoAAAgMChQAEAAIFDgQIAAAKHAgV16oknnlAoFHL9uuGGGyLj2rRpo0suuaRW1vDGG28oFArpr3/9q/Vj/vGPf2jQoEEqKChQRkaG8vPz1adPHz3zzDOqrKyslXXWhR07dujee+9Vly5d1LBhQ+Xk5Khz584aP368duzYUd/LS0qhUEglJSWR23tfb2+88UatzltSUqJQKKSUlBR9/fXXMffv2LFDjRo1UigUqrXvLcBPafW9ABycZsyYoQ4dOkRtKyoqqqfV7JsxRiNHjtQTTzyhAQMGaPLkyWrZsqW2bdumRYsWadSoUfrxxx913XXX1fdS4/b999+rb9+++t///V9de+21mjRpkiTp9ddf1913361nn31Wr776qgoKCup5pcntuOOO0zvvvKMjjzyyTuZr2LChZsyYoT/+8Y9R21944QVVVlYqPT29TtYB1BQFCupFp06dVFxcXN/L8PSnP/1JTzzxhMaNG6c77rgj6r5Bgwbppptu0ldffVVPq6uZiy++WJ999pkWLVqknj17Rrb369dPAwcO1CmnnKIRI0bolVdeqdN17dq1S1lZWXU6Z21q1KiRfvWrX9XZfEOHDtXMmTM1btw4paT830Xy6dOn6+yzz9b8+fPrbC21befOncrOzq7vZaCW8CceJIXdu3fr+uuvV+fOnZWXl6f8/HydeOKJmjdvXszYF154Qd26dVNeXp6ys7PVrl07jRw5MmZcZWWlxo4dq6KiIjVq1Eh9+/bV559/HnX/xIkT1aFDB91+++2u6yosLIz6z33cuHHq1q2b8vPz1ahRIx133HGaPn26nD0527RpozPOOEMvvviiunTpoqysLHXs2FEvvviipJ//FNaxY0fl5OTohBNO0IoVKxI6b/uyYsUKLViwQJdddlnU+vfq2bOnRo4cqX/9619auXKlJKlLly466aSTYsZWV1erefPmGjx4cGTbnj17dPfdd6tDhw7KzMzUL37xC1166aX64Ycfoh679zzMmTNHXbp0UYMGDTRu3DhJ3s9jPK+JUCikq6++WjNmzNAvf/lLZWVlqbi4WO+++66MMfrTn/6ktm3bqmHDhjr11FNjis7evXurU6dOeuutt/SrX/1KWVlZat68uW6//XZVV1fv91y7/YnnkksuUcOGDfXVV19pwIABatiwoVq2bKnrr79eFRUVUY/fsGGDhgwZotzcXDVu3FjDhw/X8uXLFQqF9MQTT8TMN3LkSK1fv14LFy6MbPviiy+0ZMkS1++DRM7j//zP/+iII45QZmamjjzySM2ePTtq3N4/5S5cuFCXXnqp8vPzlZOTo0GDBrn++enVV19Vnz591KhRI2VnZ6tHjx567bXXosbs/RPWe++9pyFDhuiQQw7RYYcd5nrOcWCgQEG9qK6uVlVVVdTX/lRUVOinn37SDTfcoLlz5+rZZ59Vz549NXjwYD355JORce+8846GDh2qdu3aafbs2frnP/+pO+64w3X/t912m9auXavHHntM06ZN05dffqlBgwZF/sNZsWKFfvrpJ5111lkKhUJWx/XNN9/o8ssv1/PPP685c+Zo8ODBuuaaa2Iut0vSBx98oFtvvVU333yz5syZo7y8PA0ePFh33nmnHnvsMY0fP17PPPOMtm3bpjPOOEO7du2yWoONvf95/eY3v9nnmL337R176aWXasmSJfryyy+jxi1YsEDffvutLr30UklSOBzWWWedpXvvvVfDhg3TP//5T917771auHChevfuHXMc7733nm688UZde+21euWVV3TOOedYPY+2r4m9XnzxRT322GO699579eyzz6q8vFwDBw7U9ddfr7fffltTp07VtGnT9Mknn+icc86JKSpLS0t1/vnna/jw4Zo3b56GDBmiu+++O+E/71VWVurMM89Unz59NG/ePI0cOVL33XefJk6cGBmzY8cOnXLKKVq0aJEmTpyo559/XgUFBRo6dOg+99u+fXuddNJJevzxxyPbHn/8cbVp00Z9+vSJGR/veZw/f74eeOAB3XXXXfrrX/+q1q1b64ILLnB9T9dll12mlJQUzZo1S1OmTNGyZcvUu3dvbd26NTLm6aefVv/+/dWoUSPNnDlTzz//vPLz83XaaafFFCmSNHjwYB1++OF64YUX9Mgjj+zzPOAAYIA6NGPGDCPJ9auysjIyrnXr1mbEiBH73E9VVZWprKw0l112menSpUtk+5///GcjyWzdunWfj120aJGRZAYMGBC1/fnnnzeSzDvvvGOMMWb27NlGknnkkUcSOtbq6mpTWVlp7rrrLtOkSRMTDoejji8rK8ts2LAhsm3VqlVGkmnWrJnZsWNHZPvcuXONJDN//vyE1uHmiiuuMJLMZ599ts8xn376qZFkrrzySmOMMT/++KPJyMgwt912W9S48847zxQUFESev2effdZIMn/729+ixi1fvtxIMg899FBkW+vWrU1qaqr5/PPPo8baPI9O+3pNGGOMJFNYWGi2b98e2bb3vHbu3DnquZkyZYqRZD788MPItl69ehlJZt68eVH7/d3vfmdSUlLM2rVro+a68847I7f3vt4WLVoU2TZixAgjyTz//PNR+xswYID55S9/Gbn9l7/8xUgyL7/8ctS4yy+/3EgyM2bMiGy78847jSTzww8/mBkzZpjMzEyzefNmU1VVZZo1a2ZKSkqMMcbk5OQk9L2199iysrJMaWlp1PgOHTqYww8/PLJt7/f52WefHfX4t99+20gyd999tzHGmB07dpj8/HwzaNCgqHHV1dXm2GOPNSeccELM8d1xxx37XDsOLFxBQb148skntXz58qivtLT9vyXqhRdeUI8ePdSwYUOlpaUpPT1d06dP16effhoZc/zxx0uSzjvvPD3//PPauHHjPvd35plnRt0+5phjJElr165N9LD0+uuvq2/fvsrLy1NqaqrS09N1xx13aPPmzdq0aVPU2M6dO6t58+aR2x07dpT0858T/vPv6nu3e63LeUXKOK4AxGvv4/dePWrSpIkGDRqkmTNnKhwOS5K2bNmiefPm6eKLL448fy+++KIaN26sQYMGRa2nc+fOKiwsjEmzHHPMMTriiCOittk+jzavib1OOeUU5eTkRG7vPa+nn3561BWyfZ3v3NzcmNfMsGHDFA6H9eabb7qub39CoZAGDRoUte2YY46Jmnfx4sXKzc3Vr3/966hxF1xwwX73fe655yojI0PPPPOMXnrpJZWWlu43uRPPeezTp0/UG6dTU1M1dOhQffXVV9qwYUPU2OHDh0fd7t69u1q3bq1FixZJkpYuXaqffvpJI0aMiHqthMNh/frXv9by5ctj0mTnnHPOfo8dBw4KFNSLjh07qri4OOprf+bMmaPzzjtPzZs319NPP6133nlHy5cv18iRI7V79+7IuJNPPllz585VVVWVLr74YrVo0UKdOnXSs88+G7PPJk2aRN3OzMyUpMifIFq1aiVJWrNmjdUxLVu2TP3795ckPfroo3r77be1fPlyjR07Nmq/e+Xn50fdzsjI2O/2/zxON+np6VFfM2fO3OdYm2P75ptvJEktW7aMbBs5cqQ2btwY+bPPs88+q4qKiqj//L7//ntt3bpVGRkZMWsqLS3Vjz/+GDVPs2bNYua2eR5tXxN71fR8u6WZCgsLJUmbN2+Ouc9Ldna2GjRoELUtMzMzat7Nmze7zuuVrMrJydHQoUP1+OOPa/r06erbt69at27tOjbe87j3mN22Oc/DvsbuHff9999LkoYMGRLzWpk4caKMMfrpp5+iHu/2esGBiRQPksLTTz+ttm3b6rnnnov6bdf5hkJJOuuss3TWWWepoqJC7777riZMmKBhw4apTZs2OvHEE63nLC4uVn5+vubNm6cJEyZ4vg9l9uzZSk9P14svvhj1H8/cuXOt56yJ5cuXR91u27btPsf269dPt912m+bOnRvz2/lee9fdr1+/yLbTTjtNRUVFmjFjhk477TTNmDFD3bp1i4rQHnrooWrSpMk+0z+5ublRt/d1Xr2ex3heE37Y+5/pfyotLZUUW+z6pUmTJlq2bNk+592fkSNH6rHHHtOHH36oZ555Zp/j4j2PbnPv6zzsa+zhhx8u6efXiiQ9+OCD+0w6OYsx2/eDIflxBQVJIRQKKSMjI+qHU2lpqWvSYK/MzEz16tUr8qbD999/P64509PTdfPNN+uzzz5zfZOrJG3atElvv/12ZI1paWlKTU2N3L9r1y499dRTcc2bKOcVqf39p1lcXKz+/ftr+vTpkfX/pyVLlujxxx/Xr3/9a3Xt2jWyPTU1VRdddJHmzp2rt956SytWrIhJhpxxxhnavHmzqqurY9ZUXFysX/7yl3Ed176ex0ReEzVRXl4eE9GdNWuWUlJSdPLJJ9fKnL169VJ5eblefvnlqO3O1IybE088USNHjtTZZ5+ts88+e5/j4j2Pr732WlSxVl1dreeee06HHXaYWrRoETXWWRgtXbpUa9euVe/evSVJPXr0UOPGjfXJJ5+4vlaKi4sjV7Rw8OEKCpLC3ijqqFGjNGTIEK1fv15//OMf1axZs6hUyR133KENGzaoT58+atGihbZu3ar7779f6enp6tWrV9zz3njjjfr000915513atmyZRo2bFjkg9refPNNTZs2TePGjVOPHj00cOBATZ48WcOGDdN//dd/afPmzfrzn/8c+dNR0Dz55JPq27ev+vfvr2uvvTaS8Hj99dd1//33q0OHDvuMsU6cOFHDhg1TVlZWTKLk/PPP1zPPPKMBAwbouuuu0wknnKD09HRt2LBBixYt0llnnbXf/zAlu+fR9jXhlyZNmujKK6/UunXrdMQRR+ill17So48+qiuvvDLyJzO/jRgxQvfdd58uvPBC3X333Tr88MP18ssv61//+pckRX3OiZvp06d7zhHveTz00EN16qmn6vbbb1dOTo4eeughffbZZ65F04oVK/Tb3/5W5557rtavX6+xY8eqefPmGjVqlKSfP1TuwQcf1IgRI/TTTz9pyJAhatq0qX744Qd98MEH+uGHH/Twww/bnCocgChQkBQuvfRSbdq0SY888ogef/xxtWvXTrfccos2bNgQ+dwMSerWrZtWrFihm2++WT/88IMaN26s4uJivf766zrqqKPinjcUCmnGjBk6++yzNW3aNI0ePVpbtmxRbm6uOnfurIkTJ0bitaeeeqoef/xxTZw4UYMGDVLz5s31u9/9Tk2bNtVll13m27nwS0FBgd5991098MADev755/XAAw9Ikg4//HDddtttGj16dNSbSvc64ogj1L17dy1dulTDhw9XXl5e1P2pqamaP3++7r//fj311FOaMGGC0tLS1KJFC/Xq1UtHH32059psnkfb14RfCgsL9Ze//EU33HCDPvroI+Xn5+u2226rlbn2ysnJ0euvv67Ro0frpptuUigUUv/+/fXQQw9pwIABaty4cY3niPc8nnnmmTrqqKP0hz/8QevWrdNhhx2mZ555xjX6PH36dD311FM6//zzVVFRoVNOOUX3339/1Pt+LrzwQrVq1UqTJk3S5ZdfrvLycjVt2lSdO3fmI/kPciFT07f6A8ABrnfv3vrxxx/18ccf1/dSJEnjx4+PFAjO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J2b9+vW67rrrtGDBAjVo0GCf4zi/iQuHwyouLtb48eMlSV26dNHq1av18MMP6+KLL46M4xwn7rnnntPTTz+tWbNm6aijjtKqVas0evRoFRUVacSIEZFxnGP/JHIuD8TznVR/4jn00EOVmpoaUyVu2rQppuKEvWuuuUbz58/XokWL1KJFi8j2wsJCSeJ8J2jlypXatGmTunbtqrS0NKWlpWnx4sV64IEHlJaWFjmHnN/ENWvWTEceeWTUto4dO2rdunWSeA374cYbb9Qtt9yi888/X0cffbQuuugi/f73v9eECRMkcY79ZHMuCwsLtWfPHm3ZsmWfYw4USVWgZGRkqGvXrlq4cGHU9oULF6p79+71tKrkZYzR1VdfrTlz5uj1119X27Zto+5v27atCgsLo873nj17tHjxYs63hT59+uijjz7SqlWrIl/FxcUaPny4Vq1apXbt2nF+a6hHjx4x0fgvvvgi0hWd13DN7dy5Uykp0f9VpKamRmLGnGP/2JzLrl27Kj09PWrMd999p48//vjAO9/19vbcBO2NGU+fPt188sknZvTo0SYnJ8d888039b20pHPllVeavLw888Ybb5jvvvsu8rVz587ImHvvvdfk5eWZOXPmmI8++shccMEFxAdr4D9TPMZwfmtq2bJlJi0tzdxzzz3myy+/NM8884zJzs42Tz/9dGQM57hmRowYYZo3bx6JGc+ZM8cceuih5qabboqM4RzbKy8vN++//755//33jSQzefJk8/7770c+KsPmXF5xxRWmRYsW5tVXXzXvvfeeOfXUU4kZB8Vf/vIX07p1a5ORkWGOO+64SCwW8ZHk+jVjxozImHA4bO68805TWFhoMjMzzcknn2w++uij+lt0knMWKJzfmvvHP/5hOnXqZDIzM02HDh3MtGnTou7nHNdMWVmZue6660yrVq1MgwYNTLt27czYsWNNRUVFZAzn2N6iRYtcf+6OGDHCGGN3Lnft2mWuvvpqk5+fb7KysswZZ5xh1q1bVw9HU7tCxhhTP9duAAAA3CXVe1AAAMDBgQIFAAAEDgUKAAAIHAoUAAAQOBQoAAAgcChQAABA4FCgAACAwKFAAQAAgUOBAgAAAocCBQAABA4FCgAACJz/B7r5t95FZI88AAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FACT: rebinning\n", - "99.4 µs ± 100 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "NectarCam - OversamplingMapper:\n", + "Initialization time: \n", + "134 ms ± 350 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "29.7 µs ± 19.3 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGxCAYAAABIjE2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJ0ElEQVR4nO3deXhV1b3/8c/JcE5CCCmDJAQRwv3RKiKIoFS0BpVBBa3SOuCEYlsVsSIqQvH+RO6VyVtKWypcrSAtRrhWpEpRwQn1AQsiOKB1qAwBDSglA1PG9fvDH+e6B8zJZh2yA+/X8+R5PPvsvc7a65zINzv7k2/EGGMEAAAQIimNPQEAAAA3ChQAABA6FCgAACB0KFAAAEDoUKAAAIDQoUABAAChQ4ECAABChwIFAACEDgUKAAAIHQoUJMXjjz+uSCSijIwMbdmyxfN8v3791K1bt6S9/rJlyzRx4sSkjS9JdXV1+vOf/6z+/furTZs2Sk9PV9u2bTVkyBA999xzqqurS+rrJ9OuXbs0fvx4de3aVc2aNVOLFi30wx/+UH/4wx9UXV3d2NNrcjZv3qxIJKLHH388vu3g98jmzZuT+to33HCDIpGIsrOztWfPHs/zW7ZsUUpKiiKRSNK/Z4CGoEBBUlVWVuq+++474q+7bNkyPfDAA0kb/8CBA7rooos0fPhwtW3bVrNnz9Yrr7yiOXPmKD8/X5dffrmee+65pL1+Mv3jH/9Qz5499d///d+65ppr9Le//U0LFy7UaaedpjvuuEMDBgzQvn37GnuaTd7gwYO1evVqtWvXLumvlZ6erpqaGi1atMjz3Lx585SdnZ30OQANldbYE8DR7YILLlBRUZHuvvtu9ejRo7Gnc9j27dunZs2aacyYMXrxxRc1f/58XX/99Y59hg4dqnvuuUf79+9vpFkGV1tbq5/85CcqLy/XmjVr9P3vfz/+3EUXXaTCwkJdddVVGjNmjObMmXPE5mWM0YEDB5SZmXnEXjPZjjvuOB133HFH5LWi0aguvvhizZ07VzfddFN8uzFGjz/+uK688ko9+uijR2QuR8LB71M0bVxBQVKNHTtWrVu31r333lvvvsYYPfzwwzr11FOVmZmpli1b6qc//ak+//xzz74vvPCCzj//fOXk5KhZs2Y66aSTNGXKFEnfXNL+wx/+IEmKRCLxr4OX0v/whz/onHPOUdu2bZWVlaVTTjlF06dP9/zq4uCvoV5//XX17dtXzZo104gRI1RSUqI//vGPGjRokKc4OahLly7q3r27pG+uttx111069dRTlZOTo1atWunMM8/UX//6V89xkUhEo0aN0rx58/SDH/xAmZmZ6t27t9566y0ZY/TQQw+poKBAzZs313nnnafPPvus3nVtiGeeeUYffvihxo0b5yhODrryyis1cOBAPfbYYyopKVF1dbXatm2r6667zrNvaWmpMjMzNWbMmPi28vJy3X333SooKFA0GlX79u01evRo7d2713cd5syZo5NOOkmxWEzz58+XJM2ePVs9evRQ8+bNlZ2drRNPPFG/+tWv4sd+9dVXGjlypLp27armzZurbdu2Ou+88/TGG284XuPgr10eeughTZs2TZ06dVJmZqb69eunTz75RNXV1Ro3bpzy8/OVk5Ojyy67TDt37nSM0alTJw0ZMkTPPPOMunfvroyMDHXu3Fm/+93v6l1rv1/xHPzMrV27Vj/60Y/UrFkzde7cWVOnTvX8ynDjxo0aOHCgmjVrpuOOO0633Xab/va3vykSiei1117zvN6IESO0atUqffzxx/FtL730krZs2aIbb7zRs39D13H69Ol68MEHdcIJJygjI0O9e/fWyy+/7Nh34sSJikQiWr9+vYYOHaoWLVooJydH1157rb766ivPHBYtWqQzzzxTWVlZat68uQYNGqT169c79rnhhhvUvHlzvf/++xo4cKCys7N1/vnnH3Ld0YQYIAnmzZtnJJm1a9ea3/72t0aSefnll+PPFxYWmpNPPtlxzM9//nOTnp5u7rrrLvPCCy+YoqIic+KJJ5rc3FxTUlIS3++Pf/yjiUQipl+/fqaoqMi89NJL5uGHHzYjR440xhjz2WefmZ/+9KdGklm9enX868CBA8YYY+68804ze/Zs88ILL5hXXnnF/OY3vzFt2rQxN954o2M+hYWFplWrVqZDhw7m97//vXn11VfNypUrTVFRkZFkZs+endBalJaWmhtuuMH8+c9/Nq+88op54YUXzN13321SUlLM/PnzHftKMh07djR9+/Y1ixcvNs8884z5/ve/b1q1amXuvPNO8+Mf/9gsXbrUPPHEEyY3N9d0797d1NXVJf7G1OMXv/iFkWQ++uijQ+7z8MMPG0nmySefNMZ8s56ZmZmmrKzMd7/33nvPGGPM3r17zamnnmratGljZsyYYV566SXz29/+1uTk5JjzzjvPcR6STPv27U337t1NUVGReeWVV8wHH3xgnnzySSPJ3H777Wb58uXmpZdeMnPmzDG//OUv48f+4x//MLfeeqtZuHChee2118zSpUvNTTfdZFJSUsyrr74a32/Tpk3x9b744ovN0qVLzYIFC0xubq75/ve/b6677jozYsQI8/zzz5s5c+aY5s2bm4svvthxjh07djTt27c3J5xwgpk7d65ZtmyZueaaa4wk89BDD3lea968efFtB79HNm3aFN9WWFhoWrdubbp06WLmzJljVqxYYUaOHGkkOT4rX3zxhWndurU54YQTzOOPP26WLVtmrrvuOtOpUycjyXGew4cPN1lZWaaurs507NjRjB07Nv7clVdeac455xzz1VdfGUnm/vvvD7yOHTp0MGeffbZ5+umnzVNPPWVOP/10k56eblatWhXf9/7774+v+T333GNefPFFM2PGDJOVlWV69uxpqqqq4vs++OCDJhKJmBEjRpilS5eaxYsXmzPPPNNkZWWZjRs3Os4vPT3ddOrUyUyZMsW8/PLL5sUXXzRo+ihQkBTfLlAqKytN586dTe/eveP/CLkLlNWrVxtJ5te//rVjnOLiYpOZmRn/n2pFRYVp0aKFOfvss7/zH+bbbrvNJFJ/19bWmurqavOnP/3JpKammn/961/x5woLCz2FlTHGTJ061UgyL7zwQv0L4aOmpsZUV1ebm266yfTs2dPxnCSTl5dn9uzZE9+2ZMkSI8mceuqpjnOeOXOmowCw4YILLjCS4sWcn+eff95IMtOmTTPGGPPee+8ZSeaRRx5x7HfGGWeYXr16xR9PmTLFpKSkmLVr1zr2+8tf/mIkmWXLlsW3STI5OTmO98MYY0aNGmW+973vNeicDq73+eefby677LL49oP/sPbo0cPU1tbGtx9c10suucQxzujRo40kRyHWsWNHE4lEzIYNGxz7DhgwwLRo0cLs3bvX8VqJFCiSzN///nfHeF27djWDBg2KP77nnntMJBJx/ENtjDGDBg06ZIFizDcFQl5enqmurja7du0ysVjMPP74474FSkPXMT8/3+zfvz++vby83LRq1cr0798/vu1ggXLnnXc6xn7iiSeMJLNgwQJjjDFbt241aWlp5vbbb3fsV1FRYfLy8swVV1zhOD9JZu7cuYecO5omfsWDpItGo/rP//xPvf322/qf//kf332WLl2qSCSia6+9VjU1NfGvvLw89ejRI37JetWqVSovL9fIkSMViUQCzWf9+vW65JJL1Lp1a6Wmpio9PV3XX3+9amtr9cknnzj2bdmypc4777xAr/NtTz31lM466yw1b95caWlpSk9P12OPPaaPPvrIs++5556rrKys+OOTTjpJknThhRc6zvngdr+U1Ld9ez1rampkjDmsczl4/MG5nHLKKerVq5fmzZsX3+ejjz7SmjVrNGLEiPi2pUuXqlu3bjr11FMd8xk0aJDvryXOO+88tWzZ0rHtjDPOUGlpqYYNG6a//vWv+vrrr33nOGfOHJ122mnKyMiIr/fLL7/su94XXXSRUlL+93+FB9d18ODBjv0Obt+6datj+8knn+y5v+rqq69WeXm53nnnHd/5fZe8vDydccYZjm3du3d3vM8rV65Ut27d1LVrV8d+w4YN+86xb7zxRu3YsUPPP/+8nnjiCUWjUV1++eWH3L8h6zh06FBlZGTEH2dnZ+viiy/W66+/rtraWse+11xzjePxFVdcobS0NL366quSpBdffFE1NTW6/vrrHZ+VjIwMFRYW+v4K6yc/+cl3njuaHgoUHBFXXXWVTjvtNE2YMME3prpjxw4ZY5Sbm6v09HTH11tvvRX/h+jg76mPP/74QPPYunWrfvSjH2n79u367W9/qzfeeENr166N37PivrHVL2FxwgknSJI2bdqU0GsuXrxYV1xxhdq3b68FCxZo9erVWrt2rUaMGKEDBw549m/VqpXjcTQa/c7tfmMctHnzZs96rly58pD7J3JuB++Z6NChQ3zbiBEjtHr1av3jH/+Q9E0yJBaLOf7B3LFjh9577z3PfLKzs2WM8RQbfmt/3XXXae7cudqyZYt+8pOfqG3bturTp49WrFgR32fGjBm69dZb1adPHz399NN66623tHbtWl1wwQW+Ny4f7nrn5eV5xjy4bdeuXZ7n6tO6dWvPtlgs5pj7rl27lJub69nPb9u3dezYUeeff77mzp2ruXPn6qqrrjrkzaQNXcdDrUNVVZUn3uzeNy0tTa1bt46v144dOyRJp59+uufzsmjRIs9n5WAUHkcXUjw4IiKRiKZNm6YBAwbokUce8Tzfpk0bRSIRvfHGG4rFYp7nD247mHrYtm1boHksWbJEe/fu1eLFi9WxY8f49g0bNhxy3m7nnnuu0tPTtWTJEt1yyy31vuaCBQtUUFCgRYsWOcarrKxs+Ak0UH5+vtauXevY9oMf/OCQ+x98f5YsWaJx48b57rNkyRKlpaWpX79+8W3Dhg3TmDFj9Pjjj+vBBx/Un//8Z1166aWOKyBt2rRRZmam5s6d6ztumzZtHI8PdYXsxhtv1I033qi9e/fq9ddf1/33368hQ4bok08+UceOHbVgwQL169dPs2fPdhxXUVFxyPM+HCUlJYfc5lds2NC6dev4P+L1zcVtxIgRuvbaa1VXV+dZo29r6Doeah2i0aiaN2/u2d6+ffv445qaGu3atSu+Xgc/C3/5y18c36eHEvRqKsKNAgVHTP/+/TVgwABNmjTJ8dO3JA0ZMkRTp07V9u3bdcUVVxxyjL59+yonJ0dz5szRVVdddcj/MR0saPbv3++Iph7c/9tFkDGmQRHLvLw8/exnP9Ps2bP1pz/9yTfJ889//lN79+5V9+7dFYlEFI1GHXMtKSnxTfHYFo1G1bt374T3v+yyy9S1a1dNnTpVQ4cO9SR5Fi1apOXLl+uWW25x/BTcsmVLXXrppfrTn/6kM888UyUlJY5f70jfvMeTJ09W69atVVBQcHgnJikrK0sXXnihqqqqdOmll2rjxo3q2LGjIpGIp8h97733tHr1as/nzoaNGzfq3Xffdfyap6ioSNnZ2TrttNOsv54kFRYW6r/+67/04YcfOn7Ns3DhwnqPveyyy3TZZZcpJydHP/zhDw+5X0PXcfHixXrooYfiv+apqKjQc889px/96EdKTU117PvEE0+oV69e8cf/8z//o5qamnjRO2jQIKWlpemf//wnv7o5hlGg4IiaNm2aevXqpZ07d+rkk0+Obz/rrLP0i1/8QjfeeKPefvttnXPOOcrKytKXX36pN998U6eccopuvfVWNW/eXL/+9a/1s5/9TP3799fPf/5z5ebm6rPPPtO7776rWbNmSfrmvoiDr3fhhRcqNTVV3bt314ABAxSNRjVs2DCNHTtWBw4c0OzZs7V79+4GnceMGTP0+eef64YbbtCLL76oyy67TLm5ufr666+1YsUKzZs3TwsXLlT37t01ZMgQLV68WCNHjtRPf/pTFRcX6z/+4z/Url07ffrpp/YW14LU1FQ9/fTTGjBggM4880zdddddOvPMM1VZWannnntOjzzyiAoLC/XrX//ac+yIESO0aNEijRo1Sscff7z69+/veH706NF6+umndc455+jOO+9U9+7dVVdXp61bt2r58uW666671KdPn++c389//nNlZmbqrLPOUrt27VRSUqIpU6YoJydHp59+uqRvCqH/+I//0P3336/CwkJ9/PHHmjRpkgoKClRTU2Nvsf6//Px8XXLJJZo4caLatWunBQsWaMWKFZo2bVrS/hbH6NGjNXfuXF144YWaNGmScnNzVVRUFP8V27fvqXHLyMjQX/7yl3pfo6HrmJqaqgEDBmjMmDGqq6vTtGnTVF5e7vsHExcvXqy0tDQNGDBAGzdu1L//+7+rR48e8R9OOnXqpEmTJmnChAn6/PPPdcEFF6hly5basWOH1qxZo6ysrKT+IUaERKPeoouj1rdTPG5XX321keSJGRtjzNy5c02fPn1MVlaWyczMNP/2b/9mrr/+evP222879lu2bJkpLCw0WVlZplmzZqZr167xVIkxxlRWVpqf/exn5rjjjjORSMSRlnjuuedMjx49TEZGhmnfvr2555574smUb6cf/KLQ31ZTU2Pmz59vzjvvPNOqVSuTlpZmjjvuOHPhhReaoqIiRzJk6tSpplOnTiYWi5mTTjrJPProo/FEw7dJMrfddptj28GUxLdjq8YY8+qrrxpJ5qmnnjrkHIP6+uuvzbhx48yJJ55oMjIyTPPmzc0ZZ5xhZs2a5YiCflttba3p0KGDkWQmTJjgu8+ePXvMfffdZ37wgx+YaDRqcnJyzCmnnGLuvPNOR5Tcbx2MMWb+/Pnm3HPPNbm5uSYajZr8/HxzxRVXOJJMlZWV5u677zbt27c3GRkZ5rTTTjNLliwxw4cPNx07dozv19B19ftMd+zY0QwePNj85S9/MSeffLKJRqOmU6dOZsaMGY5jG5Li8fvMuedujDEffPCB6d+/v8nIyDCtWrUyN910k5k/f76RZN59913HsQdTPIfil+Jp6DpOmzbNPPDAA+b444830WjU9OzZ0xP3PfiZX7dunbn44otN8+bNTXZ2thk2bJjZsWOHZ15Lliwx5557rmnRooWJxWKmY8eO5qc//al56aWXGnR+aJoixhzmLf0AcIzq1KmTunXrpqVLlzb2VCRJv/jFL/Tkk09q165d8Zt6k23z5s0qKCjQQw89pLvvvvs79504caIe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KQEAgBBptF/xjBkzRtddd5169+6tM888U4888oi2bt2qW265pbGmBAAAQqLRCpQrr7xSu3bt0qRJk/Tll1+qW7duWrZsmTp27FjvsbFYTPfff7/vr31gF2t9ZLDORwbrfGSwzkfG0b7OEZNI1gcAAOAIohcPAAAIHQoUAAAQOhQoAAAgdChQAABA6FCgAACA0GmSBcrDDz+sgoICZWRkqFevXnrjjTcae0pN2pQpU3T66acrOztbbdu21aWXXqqPP/7YsY8xRhMnTlR+fr4yMzPVr18/bdy4sZFmfHSYMmWKIpGIRo8eHd/GOtuxfft2XXvttWrdurWaNWumU089VevWrYs/zzofvpqaGt13330qKChQZmamOnfurEmTJqmuri6+D+sczOuvv66LL75Y+fn5ikQiWrJkieP5RNa1srJSt99+u9q0aaOsrCxdcskl2rZt2xE8CwtME7Nw4UKTnp5uHn30UfPhhx+aO+64w2RlZZktW7Y09tSarEGDBpl58+aZDz74wGzYsMEMHjzYnHDCCWbPnj3xfaZOnWqys7PN008/bd5//31z5ZVXmnbt2pny8vJGnHnTtWbNGtOpUyfTvXt3c8cdd8S3s86H71//+pfp2LGjueGGG8zf//53s2nTJvPSSy+Zzz77LL4P63z4/vM//9O0bt3aLF261GzatMk89dRTpnnz5mbmzJnxfVjnYJYtW2YmTJhgnn76aSPJPPPMM47nE1nXW265xbRv396sWLHCvPPOO+bcc881PXr0MDU1NUf4bIJrcgXKGWecYW655RbHthNPPNGMGzeukWZ09Nm5c6eRZFauXGmMMaaurs7k5eWZqVOnxvc5cOCAycnJMXPmzGmsaTZZFRUVpkuXLmbFihWmsLAwXqCwznbce++95uyzzz7k86yzHYMHDzYjRoxwbBs6dKi59tprjTGssy3uAiWRdS0tLTXp6elm4cKF8X22b99uUlJSzAsvvHDE5n64mtSveKqqqrRu3ToNHDjQsX3gwIFatWpVI83q6FNWViZJatWqlSRp06ZNKikpcax7LBZTYWEh6x7AbbfdpsGDB6t///6O7ayzHc8++6x69+6tyy+/XG3btlXPnj316KOPxp9nne04++yz9fLLL+uTTz6RJL377rt68803ddFFF0linZMlkXVdt26dqqurHfvk5+erW7duTWrtG+1P3Qfx9ddfq7a21tPxODc319MZGcEYYzRmzBidffbZ6tatmyTF19Zv3bds2XLE59iULVy4UO+8847Wrl3reY51tuPzzz/X7NmzNWbMGP3qV7/SmjVr9Mtf/lKxWEzXX38962zJvffeq7KyMp144olKTU1VbW2tHnzwQQ0bNkwSn+dkSWRdS0pKFI1G1bJlS88+TenfyiZVoBwUiUQcj40xnm0IZtSoUXrvvff05ptvep5j3Q9PcXGx7rjjDi1fvlwZGRmH3I91Pjx1dXXq3bu3Jk+eLEnq2bOnNm7cqNmzZ+v666+P78c6H55FixZpwYIFKioq0sknn6wNGzZo9OjRys/P1/Dhw+P7sc7JEWRdm9raN6lf8bRp00apqameCnDnzp2eahINd/vtt+vZZ5/Vq6++quOPPz6+PS8vT5JY98O0bt067dy5U7169VJaWprS0tK0cuVK/e53v1NaWlp8LVnnw9OuXTt17drVse2kk07S1q1bJfF5tuWee+7RuHHjdNVVV+mUU07RddddpzvvvFNTpkyRxDonSyLrmpeXp6qqKu3evfuQ+zQFTapAiUaj6tWrl1asWOHYvmLFCvXt27eRZtX0GWM0atQoLV68WK+88ooKCgoczxcUFCgvL8+x7lVVVVq5ciXr3gDnn3++3n//fW3YsCH+1bt3b11zzTXasGGDOnfuzDpbcNZZZ3li8p988km8UzqfZzv27dunlBTnPyGpqanxmDHrnByJrGuvXr2Unp7u2OfLL7/UBx980LTWvtFuzw3oYMz4scceMx9++KEZPXq0ycrKMps3b27sqTVZt956q8nJyTGvvfaa+fLLL+Nf+/bti+8zdepUk5OTYxYvXmzef/99M2zYMOKCFnw7xWMM62zDmjVrTFpamnnwwQfNp59+ap544gnTrFkzs2DBgvg+rPPhGz58uGnfvn08Zrx48WLTpk0bM3bs2Pg+rHMwFRUVZv369Wb9+vVGkpkxY4ZZv359/M9pJLKut9xyizn++OPNSy+9ZN555x1z3nnnETM+Ev7whz+Yjh07mmg0ak477bR4HBbBSPL9mjdvXnyfuro6c//995u8vDwTi8XMOeecY95///3Gm/RRwl2gsM52PPfcc6Zbt24mFouZE0880TzyyCOO51nnw1deXm7uuOMOc8IJJ5iMjAzTuXNnM2HCBFNZWRnfh3UO5tVXX/X9f/Lw4cONMYmt6/79+82oUaNMq1atTGZmphkyZIjZunVrI5xNcBFjjGmcazcAAAD+mtQ9KAAA4NhAgQIAAEKHAgUAAIQOBQoAAAgdChQAABA6FCgAACB0KFAAAEDoUKAAAIDQoUABAAChQ4ECAABChwIFAACEzv8DYSATEKk/QuQAAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FACT: nearest_interpolation\n", - "92.2 µs ± 1.11 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "DigiCam - OversamplingMapper:\n", + "Initialization time: \n", + "75.6 ms ± 307 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "28.8 µs ± 1.11 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA+xklEQVR4nO3deXRU9f3/8ddkmyyEKChZLKulSgEFwfI1KKFVsIpai1YLUlm0YnFDWlmKLZEqQawcalGoVqlVEVvFtVZJq6IUVERBpS22FYEiaSpLEsg6yef3R36ZOt7PwGdgcrPwfJyTc8xn3nPvzdxJfHNn3q8JGGOMAAAAfJLQ0gcAAACOLjQfAADAVzQfAADAVzQfAADAVzQfAADAVzQfAADAVzQfAADAVzQfAADAVzQfAADAVzQfaHa/+c1vFAgEwl+pqanKycnR17/+dRUVFam0tNRzn8LCQgUCgcPa32uvvaZAIKDXXnvNc9sbb7yhyy67TCeccIJSUlKUlZWl/Px8LVmyRAcOHDis/bUGdXV1WrJkic444wxlZWUpLS1Nffr00cyZM7V79+6WPrw2qUePHpowYUL4+08++USBQEC/+c1vmnW/n/99sT2HjTH68pe/rEAgoOHDhzfrsQDNheYDvlm2bJnWrVun4uJi3XvvvRowYIDuvPNO9enTR3/6058iaq+++mqtW7fusPZz2mmnad26dTrttNMi1ufMmaNhw4Zp586d+tnPfqbi4mKtWLFCZ599tgoLC3Xrrbce9s/WkiorKzVixAjdcMMNGjhwoB5//HG9+OKL+t73vqf7779fAwcO1JYtW1r6MNu83NxcrVu3TqNGjfJlf5mZmXrwwQc966tXr9a//vUvZWZm+nIcQLMwQDNbtmyZkWTWr1/vuW3btm2ma9euJjMz05SUlDTbMfzud78zksxVV11lGhoaPLeXl5ebl19+udn235yuueYaI8msWLHCc9uWLVtMVlaW6du3rwmFQr4e14EDB3zdX7x1797djB8/3vf9Nv2+XH311SYtLc2UlZVF3D5u3DhzxhlnmL59+5qCggLfj685VFZWWn8v0X5x5QMtqlu3brr77rtVUVGhX/3qV+F128suNTU1+uEPf6icnBylp6dr2LBh2rBhg+fyuO1ll7lz5+rYY4/VPffcY305JzMzUyNHjgx/f++992rYsGHq0qWLMjIy1L9/fy1YsEB1dXUR9xs+fLj69eundevWKT8/X2lpaerRo4eWLVsmSfrDH/6g0047Tenp6erfv79eeumlI3m4PEpKSvTQQw/p3HPP1eWXX+65/Stf+YpmzJihzZs365lnnpEkXXzxxerevbsaGho89UOGDIm4YmSM0X333acBAwYoLS1Nxx57rC699FJ9/PHHEfdrehxef/115efnKz09XZMmTZIkvfLKKxo+fLg6d+6stLQ0devWTZdccokqKyvD97/ttts0ZMgQderUSR07dtRpp52mBx98UOYLn3vZo0cPXXDBBXrhhRc0cODA8MtLL7zwgqTGlyz69OmjjIwMfe1rX9M777wTcf8JEyaoQ4cO2rx5s84++2xlZGTo+OOP1/XXXx9xPDa2l12anqebN2/WmDFjlJWVpezsbE2aNEllZWUR99+3b5+uuuoqderUSR06dNCoUaP08ccfKxAIqLCw0LO/MWPGSJIef/zx8FpZWZmeeuqp8GP7RbE+jk8//bROOeUUpaamqlevXrrnnnsi6pp+lx599FFNmzZNOTk5SktLU0FBgd577z3P/t955x1ddNFF6tSpk1JTUzVw4ED97ne/i6hpellp1apVmjRpko4//nilp6erpqbG+jOhfaL5QIs7//zzlZiYqNdff/2gdRMnTtSiRYs0ceJEPfvss7rkkkv07W9/W/v27Tvo/Xbt2qUPP/xQI0eOVHp6utMx/etf/9LYsWP1yCOP6IUXXtBVV12lu+66S5MnT/bUlpSUaOLEibr66qv17LPPqn///po0aZLmzp2rWbNmafr06XrqqafUoUMHXXzxxfr000+djsHFq6++qlAopIsvvjhqTdNtxcXFkqRJkyZp+/bteuWVVyLq/v73v+vtt9/WxIkTw2uTJ0/W1KlTdc455+iZZ57Rfffdp82bNys/P1//+c9/Iu6/a9cujRs3TmPHjtWLL76oKVOm6JNPPtGoUaOUkpKihx56SC+99JLmz5+vjIwM1dbWhu/7ySefaPLkyfrd736nlStXavTo0brhhhv0s5/9zPPzbNq0SbNmzdKMGTO0cuVKZWVlafTo0ZozZ45+/etfa968eXrsscdUVlamCy64QFVVVRH3r6ur0/nnn6+zzz5bzzzzjK6//nr96le/sjZvri655BJ95Stf0VNPPaWZM2dq+fLluvnmm8O3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SdKmTZu0Zs0anX/++ZI4N35rlnj1w/HZZ5+pvr7e88m32dnZnk/IhX+MMZo2bZrOPPNM9evXT5LC58N2rrZt2+b7MR5tVqxYoXfffVfr16/33Ma5aVkff/yxlixZomnTpunHP/6x3n77bd14440KBoO68sorOT8taMaMGSorK9PJJ5+sxMRE1dfX64477tCYMWMk8bvjt1bTfDQJBAIR3xtjPGvwz/XXX6/3339fa9as8dzGufLfjh07dNNNN2nVqlVKTU2NWse5aRkNDQ0aPHiw5s2bJ0kaOHCgNm/erCVLlujKK68M13F+/PfEE0/o0Ucf1fLly9W3b19t3LhRU6dOVV5ensaPHx+u49z4o9W87HLccccpMTHRc5WjtLTU04nCHzfccIOee+45vfrqq/rSl74UXs/JyZEkzlUL2LBhg0pLSzVo0CAlJSUpKSlJq1ev1j333KOkpKTw48+5aRm5ubn66le/GrHWp08fbd++XRK/Oy3plltu0cyZM/Xd735X/fv31/e+9z3dfPPNKioqksS58VuraT5SUlI0aNAgFRcXR6wXFxcrPz+/hY7q6GSM0fXXX6+VK1fqlVdeUc+ePSNu79mzp3JyciLOVW1trVavXs25amZnn322PvjgA23cuDH8NXjwYF1xxRXauHGjevXqxblpQUOHDvWMpX/00UfhT/Tmd6flVFZWKiEh8n95iYmJ4VFbzo3PWvDNrh5No7YPPvig+etf/2qmTp1qMjIyzCeffNLSh3ZU+cEPfmCysrLMa6+9Znbt2hX+qqysDNfMnz/fZGVlmZUrV5oPPvjAjBkzhpG0FvL5aRdjODct6e233zZJSUnmjjvuMP/4xz/MY489ZtLT082jjz4aruH8tIzx48ebE044ITxqu3LlSnPccceZ6dOnh2s4N/5pVc2HMcbce++9pnv37iYlJcWcdtpp4fFO+EeS9WvZsmXhmoaGBjNnzhyTk5NjgsGgGTZsmPnggw9a7qCPYl9sPjg3Lev55583/fr1M8Fg0Jx88snm/vvvj7id89MyysvLzU033WS6detmUlNTTa9evczs2bNNTU1NuIZz45+AMca05JUXAABwdGk17/kAAABHB5oPAADgK5oPAADgK5oPAADgK5oPAADgK5oPAADgK5oPAADgK5oPAADgK5oPAADgK5oPAADgK5oPAADgq/8HqwKT/1tH0P8AAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FACT: bilinear_interpolation\n", - "108 µs ± 5.56 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "VERITAS - OversamplingMapper:\n", + "Initialization time: \n", + "10.9 ms ± 47.8 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "Mapping time: \n", + "23 µs ± 95.9 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3ZklEQVR4nO3deXiU1f3//9dAwiSBJMqWSVijBFQ2FRQBbYIaKAqiFFGxioJbgdaIflCkLcHLgqUtxRbF4gKopbixWH+KpBWw/CgaNkFEqh/ZJQQQkpBAIMn5/uEnU8cJzAROTib4fFzXXBe57zPv++RMZnjNPcvbY4wxAgAAcKRebU8AAAD8sBA+AACAU4QPAADgFOEDAAA4RfgAAABOET4AAIBThA8AAOAU4QMAADhF+AAAAE4RPlDjbrrpJsXGxurw4cMnHXP77bcrOjpa+/btkyR5PJ6TXu666y7/9bKzswP2RUdHq3Xr1rr33nuVl5cXdJy2bdtqwIABkqS77rrrlMep6ngHDhyQ1+uVx+PRmjVrqvxdjDGaP3++rrrqKjVv3lwxMTFq2bKl+vXrpxdeeKH6CxiG1atX6+abb1ZycrIaNGggn8+nIUOG6N///neNHO9sV/l39V0ZGRnKyMio8WNX9Xf3XU888YR/zPbt22t8PkBNiKrtCeDsN3LkSC1atEjz5s3TqFGjgvYXFBRo4cKFGjBggJKSkvzbhwwZoocffjhofLNmzYK2LVmyRImJiTpy5IiWLl2qP/zhD1q1apU2bNig6OjoKuf1q1/9Sg888ID/53Xr1mn06NGaPHmy+vTpU+XxXnnlFR0/flyS9OKLL6p79+5BdcePH6/f/va3uvfee/U///M/io+P144dO/TBBx9o8eLFuueee6qcz+n685//rKysLF1++eWaOnWq2rRpo507d+qZZ57RlVdeqaefflpjxoyxeswfomeffdbZseLj4/XGG2/oz3/+s+Lj4/3bjTGaM2eOEhISVFhY6Gw+gHUGqGFlZWUmJSXFdOvWrcr9M2fONJLM3//+d/82SWb06NEha0+cONFIMvv37w/YfvfddxtJ5oMPPgjY3qZNG3P99ddXWWvZsmVGknnjjTdOerxOnTqZ5s2bm8suu8wkJiaakpKSgP0lJSXG6/WaO++8s8rrl5eXh/ydqmPlypWmXr16ZsCAAebEiRMB+06cOGEGDBhg6tWrZ1auXGn1uKGUlJSYiooKp8e0qfLvqjZIMj/96U9NbGysmTVrVsC+f/zjH0aSuffee40ks23btlqZo00VFRVB9yOc/XjZBTWufv36Gj58uNauXatNmzYF7Z89e7aSk5PVv39/a8esPCNR+TKODR999JE+/fRT3XHHHbr33ntVUFCgt956K2BMcXGxSktLlZycXGWNevXs3uWmTJkij8ejmTNnKioq8ERmVFSUnn32WXk8Hj311FOSpEWLFsnj8eif//xnUK2ZM2fK4/Fo48aN/m1r1qzRDTfcoMaNGysmJkaXXHKJXn/99YDrzZkzRx6PR0uXLtWIESPUrFkzxcXFqbS0VPv379d9992nVq1ayev1qlmzZurdu7f+8Y9/+K+fk5OjQYMGqWXLloqJiVG7du10//3368CBAwHHqXwpZOPGjbr55puVmJioxo0ba+zYsSorK9PWrVv14x//WPHx8Wrbtq2mTp0acP3ly5fL4/Ho1Vdf1dixY+Xz+RQbG6v09HStX78+5Fp//2WX7du3y+Px6Pe//72mTZum1NRUNWrUSD179tTq1auDrv/888+rffv28nq9uuiiizRv3jzdddddatu2bdDYxMRE3XTTTXrppZcCtr/00kvq3bu32rdvH3Sd6q7j+vXrNXjwYCUkJCgxMVE//elPtX///oCxlS9TLly4UF26dFFMTIzOO+88/elPfwo6fmFhoR555BGlpqaqQYMGatGihbKyslRcXBwwzuPxaMyYMXruued04YUXyuv1au7cuUH1cHYjfMCJESNGyOPxBD2YfvbZZ/r44481fPhw1a9fP2CfMUZlZWVBFxNGI+Zt27ZJUpUP0qfrxRdflPTt73LrrbcqLi7Ov61S06ZN1a5dOz377LOaNm2aPv/887DmezrKy8u1bNkyde/eXS1btqxyTKtWrdStWzd98MEHKi8v14ABA9S8eXPNnj07aOycOXN06aWXqkuXLpKkZcuWqXfv3jp8+LCee+45LV68WBdffLFuueUWzZkzJ+j6I0aMUHR0tF555RW9+eabio6O1h133KFFixbp17/+tZYuXaoXXnhB1157rQ4ePOi/3v/+7/+qZ8+emjlzppYuXapf//rX+uijj3TllVfqxIkTQccZOnSounbtqrfeekv33nuv/vjHP+qhhx7SjTfeqOuvv14LFy7U1VdfrUcffVQLFiwIuv7jjz+ur776Si+88IJeeOEFff3118rIyNBXX30V7tIHeOaZZ5STk6Pp06frr3/9q4qLi3XdddepoKDAP2bWrFm677771KVLFy1YsEC//OUvNWnSJC1fvvykdUeOHKnVq1dry5YtkqTDhw9rwYIFGjlyZJXjq7uON910k9q1a6c333xT2dnZWrRokfr16xc0dsOGDcrKytJDDz2khQsXqlevXnrwwQf1+9//3j+mpKRE6enpmjt3rn7xi1/ovffe06OPPqo5c+bohhtuCLoPLFq0SDNnztSvf/1rvf/++7rqqqtCrjPOMrV74gU/JOnp6aZp06bm+PHj/m0PP/ywkWT+85//BIyVdNLLK6+84h9XeXo8Ly/PnDhxwhw6dMi8/vrrpmHDhua2224LmsPpvuxSXFxsEhISzBVXXOHfNnz4cOPxeMyXX34ZMPbjjz82rVu39s83Pj7eDBgwwLz88stWX4rIy8szksytt956ynG33HKLkWT27dtnjDFm7NixJjY21hw+fNg/5rPPPjOSzJ///Gf/tgsuuMBccsklQS/nDBgwwCQnJ/tfQpo9e7aRVOVLTY0aNTJZWVlh/04VFRXmxIkTZseOHUaSWbx4sX9f5W39hz/8IeA6F198sZFkFixY4N924sQJ06xZMzN48GD/tsrb99JLLw24HbZv326io6PNPffcE3Ss70pPTzfp6en+n7dt22Ykmc6dO5uysjL/9o8//thIMn/729+MMd++1Obz+UyPHj0C6u3YscNER0ebNm3aBGzX/73kWFFRYVJTU80jjzxijDHmmWeeMY0aNTJFRUXmd7/73SlfdglnHR966KGA6/z1r381ksyrr77q39amTRvj8XjMhg0bAsZmZmaahIQEU1xcbIwxZsqUKaZevXomNzc3YNybb75pJJl333034PdLTEw033zzTZVzxw8DZz7gzMiRI3XgwAG9/fbbkqSysjK9+uqruuqqq5SWlhY0fujQocrNzQ26XHfddUFjfT6foqOjde6552ro0KHq1q2b1VO5r7/+ugoLCzVixAj/thEjRsgYE3QW4bLLLtOXX36pJUuW6PHHH1fPnj31z3/+U3feeWeVzwK/q6KiIuAsT3l5+RnPvfJ4lZ/eGDFihI4eParXXnvNP2b27Nnyer0aNmyYJOnLL7/U559/rttvv12SAuZ03XXXae/evdq6dWvAcX7yk58EHfvyyy/XnDlz9OSTT2r16tVVPgPPz8/XAw88oFatWikqKkrR0dFq06aNJPmf9X9X5aeVKl144YXyeDwBL9tFRUWpXbt22rFjR9D1hw0bFvBJljZt2qhXr15atmxZ0NhwXH/99QFn7SrPHFUee+vWrcrLy9PQoUMDrte6dWv17t37pHUrP/HyyiuvqKysTC+++KKGDh2qRo0aVTm+uutYedtWGjp0qKKiooLWoWPHjuratWvAtmHDhqmwsFDr1q2TJL3zzjvq1KmTLr744oC/lX79+snj8QSd4bn66qt17rnnnvR3x9mP8AFnhgwZosTERP9/1u+++6727dt30tPIzZo1U/fu3YMujRs3Dhr7j3/8Q7m5uXr//ff1k5/8RB9++KF+/vOfW5v7iy++qJiYGP34xz/W4cOHdfjwYXXp0kVt27bVnDlzgkJCdHS0+vXrp9/85jd6//33tWvXLmVkZOidd97Re++9d9LjPPHEE4qOjvZfzj///JOObdq0qeLi4vwvMZ3M9u3bFRcX51+3jh076rLLLvPfDuXl5Xr11Vc1aNAg/5jK98o88sgjAfOJjo72f2Lp++8lqOp9Lq+99pqGDx+uF154QT179lTjxo115513+j8GXVFRob59+2rBggUaN26c/vnPf+rjjz/2v2fi6NGjQTW/f/s3aNBAcXFxiomJCdp+7NixoOv7fL4qt333paDqaNKkScDPXq9X0n/nXln3u5/kqlTVtu+6++67tX//fk2ePFnr1q076X3ldNbx++sQFRWlJk2aBK3Dydbru7/bvn37tHHjxqC/lfj4eBljwvpbwQ8LH7WFM7Gxsbrtttv0/PPPa+/evXrppZcUHx+vm2+++Yxrd+3aVU2bNpUkZWZmql+/fpo1a5ZGjhypyy677Ixq/+c//9HKlSslfftstSrvv/9+lWdkKjVp0kRZWVlavny5Pv3005OOve+++wKe2Vf+R1aV+vXrq0+fPlqyZIl2795d5fs+du/erbVr16p///4Bz87vvvtujRo1Slu2bNFXX32lvXv36u677/bvr1zL8ePHa/DgwVUev0OHDgE/f/97MSrrTJ8+XdOnT9fOnTv19ttv67HHHlN+fr6WLFmiTz/9VJ988onmzJmj4cOH+6/35ZdfnvT3PlNVff9LXl5eUIiwpbJuVW9+rmou39WqVStde+21mjRpkjp06KBevXpVOe501jEvL08tWrTw/1xWVqaDBw8GrcPJ1kv67+/WtGlTxcbGBr2nq1Ll31Olqv5W8MPCmQ84NXLkSJWXl+t3v/ud3n33Xf8bN23yeDx65plnVL9+ff3yl78843qVbyp9/vnntWzZsoDLu+++q+joaP+D7okTJ076DLry1HdKSspJj5WSkhJwlqdz586nnNv48eNljNGoUaOCzr6Ul5frZz/7mYwxGj9+fMC+2267TTExMZozZ47mzJmjFi1aqG/fvv79HTp0UFpamj755JMqzz5179494PsnwtG6dWuNGTNGmZmZ/tP1lf8JfT9k/eUvf6lW7er429/+FvDS144dO7Rq1aoa+wKxDh06yOfzBX1KaOfOnVq1alXI6z/88MMaOHCgfvWrX510zOms41//+teAn19//XWVlZUFrcPmzZv1ySefBGybN2+e4uPjdemll0r69qWw//3f/1WTJk2q/Fup6hM9+GHjzAec6t69u7p06aLp06fLGHPS08jSt88Uq/rIYkJCgi666KJTHictLU333Xefnn32Wa1cuVJXXnnlac23rKxML7/8si688MKTfjnYwIED9fbbb2v//v3yeDxq27atbr75Zl177bVq1aqVjhw5ouXLl+vpp5/WhRdeeNIzCaejd+/emj59urKysnTllVdqzJgxat26tf9Lxj766CNNnz496BnzOeeco5tuuklz5szR4cOH9cgjjwR9DPgvf/mL+vfvr379+umuu+5SixYt9M0332jLli1at26d3njjjVPOraCgQH369NGwYcN0wQUXKD4+Xrm5uVqyZIl/DS644AKdf/75euyxx2SMUePGjfX3v/9dOTk51tbo+/Lz83XTTTf5Py49ceJExcTEBAU0W+rVq6dJkybp/vvv15AhQzRixAgdPnxYkyZNUnJycsiPX/ft2zcgGFbldNZxwYIFioqKUmZmpjZv3qxf/epX6tq1a9B7U1JSUnTDDTcoOztbycnJevXVV5WTk6Pf/va3/icOWVlZeuutt/SjH/1IDz30kLp06aKKigrt3LlTS5cu1cMPP6wePXqEuWL4Qaitd7rih+vpp582ksxFF1100jE6xaddevfu7R93si8ZM8aYffv2mUaNGpk+ffr4t1X30y6LFi0yksz06dNPOtclS5b4P4VR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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FACT: bicubic_interpolation\n", - "142 µs ± 5.25 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "MAGICCam - OversamplingMapper:\n", + "Initialization time: \n", + "41 ms ± 122 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "25.7 µs ± 37.7 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJztfWuMZMd13nfu7e55z+z7yccupSUpiRYtk6ZIyYplUVRk+SHbiAMZUSAERvTHiSXDgSM5PwwHCCAjhmH/CIwQlh0idhTLtGQLQmJLlq0kRmJJ1JsvaUVxl7vLfc7MzmNnevpV+VFVt86998zt2zM9M93b5wMG3VNVXVX9uPecOo/vkDEGCoVi9BDt9QYUCsXeQC9+hWJEoRe/QjGi0ItfoRhR6MWvUIwo9OJXKEYUpS5+IvoQET1LRM8R0Ydd2wEi+jwRnXWP+3d2qwqFop/oevET0QMA/iWARwA8COAniegMgI8A+IIx5gyAL7j/FQrFkKCM5H8dgH8wxqwZY1oA/heAnwXwXgBPuTFPAfiZndmiQqHYCVRKjHkWwH8gooMA1gG8B8AzAI4aYy4DgDHmMhEdkV5MRB8E8EEAiBE/NInZvmxcoVDksYLFG8aYw2XGdr34jTEvENFvAfg8gFUA3wTQKrsZY8yTAJ4EgFk6YN5Mj5d9qUKh6BF/Y54+X3ZsKYOfMebjxpgfMsb8IwALAM4CuEpExwHAPV7bymYVCsXeoIzaDyI6Yoy5RkR3Afg5AI8BOA3gAwA+5h7/csd2qSgEVarJc9Nq5vqjyUkAQGdtLf/aOM7N0dmo5+cYG0/Nb9rtTdeR1uq2R8Xuo9TFD+DP3Zm/CeCXjDGLRPQxAJ8kol8E8AqAn9+pTSoUiv6j1MVvjHmb0DYPQA/wCsWQoqzkVwwQ4pkZAEB7ZcX+f2Bf6Ky4r7RWC20bGwCA6PjR0FbfSD9W4qQrGheMxX5cy6n742Ohr1pNrQMA0RE3x/o6AMA0g6rfXli0YwqOCYqdh4b3KhQjCpX8A454ehoA0F5dTdpo/5ztO3USAHDtzQeSvtnzDQBApxbu64tn7Ne8/2zw0MZ1K8HnX+8kOIU197/YyO1j8f5a6v+DzwUp367atZbuCUa9/WcbqXXWjgVNYe4b1+2T1VtJm5f80cREaHNag2JnoJJfoRhR6MWvUIwoVO0fAMQHbEKk97mjw0hVJ6x/vcKMddd+1D6vrXYAAAtv7CR9N95Mbq7QZtrW2Lb8OqbbN5yKXsn765fuj3NtoPS4pTNV1uf2a8Kay/fan1a0bo8LFWbPq67aY0prMhgWZ7/ifor1cJwgb7yMnIxisQX8GKTYGlTyKxQjCpX8u4zK3XcCADoHZpK21pSVju1x+3W0J8I9ef51tm361aANzD9oJezYcWswOzoVDGPjFSvlq3GQkustJqUd1hp2zbGKNQIaE7SCZseuHyGsGUf2OTkpv9YIc1acltFsBY3BP9+o23H1evipXTho+8auh/dZqZ+w8x4Kc8y9ZN9XvG73SI1gsKysO6PkStAAWlc1wrwXqORXKEYUKvn7BCl+3kt5MxOCWerHrcS/dSxIzmuPubPyhJXWFAcJR7GV5PFbQ7z9QXdOPzG9DAA4OXkz6dtXtdLyViu41q5t2DXH4xBo03GSfq1tNYBGO0jc6eqGGxNkw3LTzleL7Nq16aBZ1Nv2Z7TUGE/aYnLawIydd2ktuPBWa3bcei18Bq8csWtVV4IGsnzafm6R23bMUg4OfdtK/rH58NlWvJvQfQeta9eTPp+bIOUtjCpU8isUIwq9+BWKEYWq/VtAxOLmOw2rfkaHrPsqGjue9NXvti68taNBvb36DqvSzx1eTNpOT1o1dbpq55qtBdXUq+cRBeNbLbJznJ6Yt2PAjXVWzZ6IQ5TesfEl22eCat9y4ypOjW/ElVwfx3SlkVqLr+n3Nsf27Y8CbXd0mB4PLrzxqtXjl8bCUaDVsGs25pg86rg16i7tuBnWrB92BsvF8F0c+apV7Wvz9vOsVJmh031Pnethjz7NeFRTjFXyKxQjCpX8W0B06GB4PmmlV/O4jbfnMeyX3mWl6v5jQcqfmbKuqROTy0nb6ckbAIC52BrrVtrBcLbatvPNVYI7r23S92zukqs6SR6x6steMldZEM6Ge02nU83NETljnaQBeLQ6YQ9eO+kwd2F2b1xzITdsepLlB4zbxvWNdA4BAMB5RVsbzJW4ZvfN3aIX55w2sGAfj34lfI7VeesW5dqAqVstwGcZjhrK8vb/iuPsf5aIPkFE48rbr1AMN8rw9p8E8MsAHjbGPAAgBvA+KG+/QjHUKKv2VwBMEFETwCSAVwF8FMDbXf9TAL4I4N/2eX8DhcqpuwEAi285EdrWrYp88Qn7/747g8/9/mlLtnHnVGi7a3wBAHCoupK0eUOc96tPxsw45pzcbeRVagleMU5F53mfe6eTG+jnbXIVn6UWeCSGPkG1LwKRMJnQR+4sMF4LxrdW234ebXfEqNRCbEFcdUeTcXYUGHNGRtd24Ymg9o/fsM+PfjkYGdtjLtLwuVfCmiw24HZHV8lvjLkE4LdhefouA1gyxnwOGd5+ACJvv0KhGEx0lfzuLP9eWLbemwD+jIjeX3YBXrRjHJNdRg8Okui82amkbe0Oa3m69sNhXPVO61Y6c8Aaje6eZi68CWvIe+3Y1aStbqzBibvdEoOZuxfHXPQ6qQ1m5IszGXZdtQL3Wm50q6Dt1nLZdxS0gojy4/2WJA0g7H/zfXAp7+c1fHrfRvw17jEZw9+TfaiOsxIS7nlj3EUtMq2gPW7f04XZ8BucdF/L4aUgtyouixJr1sDaun5j0/c07Chj8HsngJeNMdeNMU0AnwLwFpTk7TfGPGmMedgY83AVY9IQhUKxByhz5n8FwKNENAlbrutx2HJdt3Cb8PbHc3PJc3LBOhun7OPqieB6uvGPrWvo7mNBkt81bc/z3l137/iVpG8qsmf3BpPyVSdxubuu6iS5l4hcK/BSOyvtgSDx+R08icdnkjzp48FAZnM3XnDPdVKtvK/f8JqBP/vb9W1b/p0XozZpA3raY+GTabk8gk41rw00psP3f/QZK6AS12DEXJrL1k5zu9CLlSnX9SUiehrA12DLdH0dtvzWNJS3X6EYWpTl7f8NAL+Rad6A8vYrFEMLjfADQDPTyXOv7n//5+xHc8eZoMY/NmONefdMBiPQveOXAQAHK3laKa/a1yQ7GNPVYxd5J6niHeTV93aigmPT1/WKmBnkylRh5cbArbr/uIrf62miyIXoiUmiiEU+TtujQKsSfvJN97xTCV/GpR+1Br/JK/bxyP9la/raA7eJ2q+x/QrFiGLkJD/PyCNHwNF4TSDHXL7L9h8+ZaX7Ww6/nPS9YfISAOBUNUh+b3TzUj7l7kp8VKFJ1AIK4KV8m9+nnabQLukaDG1BQ4idRhEJhkEv1dPGPWHezHiuASRzFEhoCSmNItEQ3CMbZ/x/3F3o1vcuRE5NZjqe2DS8wExbHafNqhUZR6IatVzw06Hg6q21Dtk+RjJqXJUiqXDpoEMlv0IxotCLX6EYUYye2s/ScT0n/oXHQwx45QFLfPH40fMAgHfPfSvpGycXZ59SfTN+9VSfbYuZat0W7rdeBY8Lvo5sGi9/XafkPbzIR1/Wf192jmy0H1fne1WQE7Wfq/EF443LBWAZzIna7x/dzPahxr6fOTtzo2W/i6sPhd/GzEV7JNy3EHI1jDtGtm+GtmGBSn6FYkRxW0t+T9MEAPExG7/dPhkk/9JrrTGn/drguvnh49ao96ZpK/m9tAeYYY0byRIRlI/EyxoDLdxriTvUXDaaN8IxkRUlRr3Q1kHatceNdm3B7ef33U+yqu24+sT54KP5ys1FSX4A0wYyhYO4lE+eG8G9KOy/PeE0gLnQt7bhKMlew7I6r1pN0X/q7aVA0pJSPQYQKvkVihGFXvwKxYjitlb7OToHbfLGuZ8K0XyeT+PR08GX/8icfe4j9uIUt53XK9nEiaHPrVPyfsrV+HZi8LMqJo+2awqWLcmvHubNH006Bb75fmCrfv6UEVB4L9koPv6/EcZn21LGPZOPC0AmLoD3Gxcd2JoOnXU338bBkJ166+QxAMDcP7hDFVf7Bxwq+RWKEcVtKfkjV7aJTt2ZtK3e4yhg7wsx+A/feQ4A8MOzQfLfN2Zj9Y9VXPomkyaJMYp4tJ17zGgAbifpPgAdZ5CTXH5FSLkLBUm+VUiS2RsQI07YUdIQ18ua3aW9i8rzQruksiJpBUXGPXGOmtNmmIbWmraf+9WHw2UzbksnYOaw1SwrvIz4dds5qHUBVPIrFCOK21PyH7SZebdesy9pu/hT9o780PHLSds79z9n28Yv5OZIiDIEKquiIJW421k7EUHFgT/Z+TpCXL7XQNp9OL6nYvwLbASi3aPM/OwF0ueXJPj1lSukWMonmoRgB0i+9irbtyuQaqLwXfgcgBsP2d/a4S8zG9G6qwswoAFAKvkVihFFGd7++4joG+xvmYg+rEU7FIrhRhkar+8A+EEAIKIYwCUAn0Yo2vExIvqI+3/XefsrRw4nzz3n+vrrbbHMC0+Ee9vxE9b48vjBF5K219REzlEAwWVWni8/Pz6CT70tR7bhXXwxiwxrlnhtOvqv+xEC6A8BSBa9Rv2ljHt9iBLsB0g6CmTQGQufoy8sGtft/hceDEfNA974x9T+eNq6mturefKX3Uavav/jAF4yxpyHpfN+yrU/BeBn+rkxhUKxs+jV4Pc+AJ9wz1NFO4hILNqx47z9jJap9c6HAQDnfsq2nbw3SPZ3HPsuAOBwJQRheGkdC7d5L8Hjgky1fiEY9XbGBBNJZB7kMw63ZmErK+WLgnxElxwDFXRv1T4ougt71Tq4wuJ+fhsHfAub6yGbR3KwfSaMv7y5trnbKP1rI6IagJ8G8Ge9LKC8/QrFYKIXUfPjAL5mjPGk9aWKdigUisFEL2r/LyCo/ADwGexh0Y7I8++dOZ60Ld9tiRXuuM/68n/kyPeTPs+ye38tFNyoCcy4HkUGv6L02qK5AIikH/1kf4vE+SndB6SOANtfU4gSND5CbvMoPsngJ8UDJOW9eKi+/ydV3qv7ISBFGFzmzCAdCSrsyBOnP+/GPpZG7BabPczySdouepIxAHcajRIb6T9KSX5XrecJ2FJdHh8D8AQRnXV9H+v/9hQKxU6hbNGONQAHM23z2OWiHfGBEErgufbP/USwIxx5o5XqP3rkewCAd88GCq5jFVtQs9PnalNFGXZlEScuwc01EUkiBhqv/rrtvBGwI0Q3SppFGZAw104hIfpIaVxCVt9Wkaom6j6rKfutNFL0zPZ7ufJIKAs+c9H+XufmF5K2aN2VaN/legAa4adQjCiGNrZ/+SFHpXRHPWl729GXAASJf2flVtKXyFTBf1RWGyjKRvOQzve9uvBS5bIzHP1AcNO1hdLbW43zl3IYCsf32QUqfba9FurMfbVCSW+w90lugJGCjYo0uSL3ZS30NebyWlL9ln0+eypQgeGFYJvaTajkVyhGFHrxKxQjiqFQ+32Jrc49dyRt9f3WSPL6kyFF99Fpa+gL0WthjiLVPhI0vLJHgWx6bT+YbMV1BEKQ8D8j3TC+vFe+jR8/ighBvEofFay5HQTXXZ7GiyRVvQApai/k3X9hoPRqT3nG3XP5ecvNtTlaU2GuDecKbE8GZunqEVsGzFx81T7uUukvlfwKxYhioCW/z4CiuVkAwM3XhKKJ5mdtlt4906Fo5v0uS+9AlOepD3c57jIrikn3w/Pj45JzhLU5cUf/s+k4/H64lPcZfDyTz2sLXuJ2ulB2FZF4FBJ4lvStJZK2gNqLl/SWePs3nRPsaxQMvqnAnygTULQNTc647L8OU0HbE/Y7uPZQyHM5VreSPlqy1HFmbS3p28kAIJX8CsWIQi9+hWJEMdBqv8faG08CAC7/eChx9Z5j5wAA793/taTtRGzvZU2nZje7BG9Lqbweckz/5vHqHt246GVefasKxgIDcBJtJ2zV+/6bJnyNXrUX1f5OLIzrTa0ty8OfnbcfsQh9h99ixHz/GZZf0y0BoIgV2B9NGA+gj/2nTvh+5h+0zNKH60dtw3cDm/ROQiW/QjGiGDzJzzjx6bi9E27ss1LqjhMhI+/H5iwdFy+k6dE2nqQjH4NdPrY77wbqVWKFzMBiRJlxPGuwV8Z3L/HrneBKkqS8p/uS3IBl0O9Cnb1CKtsdDIP2/+5fV/47Dj8Zk/6XT8gLgGafpVIPN/9cmjM8EtAZXSetSzveN5f0dRw13U5AJb9CMaLQi1+hGFEMnNpfORwyh9sHrF//yrusoe/H5oIKdG/V+vSPxkGpjtzbqZI3hPEUWR+6VVJ3N7kniTLeFox6IS23bKHOfIpuEXisQJRZgxsn2yYfadjyJcJSkYCUe+1Wkfjy2VSJn7/AYNaNvTdL+tHNmFoOwn5K8xi6NZmBEO10IpA0Veok4Hz/7Sh8h61Jx/z7gI1rOXwtxADsJNtvWTKPfUT0NBG9SEQvENFjytuvUAw3ykr+3wPwV8aYf+KIPCcB/Dp2gLe/xQwcV/6ZZT0dm7GRT6cn5pO+0xUncSkYtnKGPmY87Ph4dXZnTiT5NhgeyvD7xyn6LL92/r7rtQfOqBsnKb35yMBkvJBeK2kgxSy7QrmukrkRZeZPrVXgMu2PdHcg4bnZpN83ZUR3OoIwCRPMNRXx/Qu1R4Eai/qsuXyMMdtZPxNqUVTOnc9P2CeUqdgzC+AfAfg4ABhjGsaYm1DefoViqFFG8t8D4DqAPyKiBwF8FcCH0Gfefp+5Fzn3HgBMXbF3x40XbRDEoTes5F/H718+m88TVhouEfPnxmATYGfmbfI8SeSePIPOS3xJU/DSOk1o4d8Tn8MHMZXLE9i2BGX7kOi7JAnutYCyRB9liFL6ghLSfrO+RAuQhgtuQHFNySbgvsapy9b6U1sIBDW0z1YA6qyE336/sv7KnPkrAH4IwO8bY94E4Basil8KytuvUAwmylz8FwFcNMZ8yf3/NOzNQHn7FYohRplCnVeI6AIR3eeKdj4O4Hn39wHsIG//tUesvvTYo88DAE7VgjGwSlZXilI6Vfpexkk6vKoM5v7rkE9n7U3VT/P0uUfX1OiSsuvVfa6yB3VfMtLl26LEMJhn+y1KoZWi8qR8hSjhHtz8vXQEt6HUVoRuxr2y6cAJ/BSZSD/e161EWG6ublvIcv4VHQk2mde4OgCL99rP28SB53/mpTKb3RrKWvv/NYA/cZb+7wP4F7BX2ieJ6BcBvALg53dmiwqFYidQlrf/GwAeFrr6xtsfzVij3toDoQJP5aRl331w5iIA4HDMAx0kSZFu67DbqzcMRqk2yrUhcZV5Mgo2v5teivGXDHgNn02HfDZdg2XidTKGvrKBQmFfm/P9A8F1uB1jWicTPMQ1Bd/W6nCjZFobKOsGJNEvJo0TxvfDWLjd2KGumoJ/ZPkB/nc1bh835kLfzHFrR6eNjTC+T/z+Gt6rUIwo9OJXKEYUexrbHztVHwBwyEYH1/cFFfnMEWvge934JQDAyTjwmUUY7zo/PwZ0ejQexYKK76Pc2oLKK/3v1Xlu3KubmpuXxxak02q52p/kDgi+6HZBOi6PN2gJRsjAu5f+X3pPHH4truL75y0ez1Cg7mePBN2wUyp+mcKeYpRgWUj5CpKf312FHfvTQHOaHQkmbARrNB34K+H8/Nvl91PJr1CMKPZU8rdZ1NLiWx4AANx4W6CveGTaxvK/wbn4jsTs7ufnMHljlyTlOyg2im0G6VVcYnnXnm9rMCnvn3tpz9s49VbWENdJSX6vPfD+tGEwpYmIhtB0bQFpzV4hsf0Wuf8kF9t24vilst3ZLEAjfBaitBfm8BBdg9JWe9YK2NPYGWRdDFxrLEy2dL9lrp6tMP7pLwfG6u1AJb9CMaLYU8lfORHcevvOWvdF/WCI/z/xyCIAYJy8Sy4f386Rlfh8jM/466Qy4HqzAzTc+nUutZOgHdvWSJ3vq7k2P64t2AaClM8HAHF4aernSo0X7AZFiJKin1uvJ7DVIB8OibdfoNgvOZd/whtLrL3XcHvsBEURk5ftuT6+tpy0GWcr45rzVqCSX6EYUejFr1CMKPZU7W+9GopsLr7nNACg/vCtbc/r1f22kNJbNmW3Lbj1mk6lTqnxSJfCanTh0A/7yRv1OskRQjgmCIU3i8pwSS7HsihDwSWh72QembZu6cHZ3nRs/w6p9sm8lHqwEBh9e8TK3fYMUFkLjL6mTwQfKvkVihHFwBj89r9oixPW9zN33gO9zZeV+L0a9MQ5OVejD9pB3qgnGfIko5vvTxfvTBv8+Ou8VOc8/FkJKFbi6fG+3q34aLf8ATtm80AhiRQjErIji1x+IrFG0Tg2niLvctz0ZfJcwh6NZInMagBiX3A/llUQZi44g9/VpTBcDX4KhWI70ItfoRhRDIzBD/dY7r6GYPArukNx1b5doNO1Ue4oULhWUtM+b6yT0nHFmHvB8JTl5Esb/LwazwyPTs0POQHFxj1Jle5niS2peGfIHejfOhJSlbYyqrd0TOgWO9DrsaB4c37SrU+xfJc1+B1mpB7bVfc9Sl38RHQOwAqsAbZljHmYiA4A+FMApwCcA/BPjTGLfdmVQqHYcfQi+X/MGMODij+CbfL2c4Ofj+ivPRMMfvEbtnbLLHLrSZl+caoYp2/z4wO8i+96ezZpGydrkPEGv5VOyDb0Bq2ZmJEvFBCBxJTn4Q/7YtpGidNaWWm/0amkHgFgIrbfBjfy1Vs28Nxn7qWkfcHX5Mdxo6TfR0UwIjbbYVyRFJYiAkPn5q/rhqxmkNoCSa0FiwnEHfKim/8/+0o+cy8eAIOf8vYrFEOMspLfAPgc2dvtfzbGPIk+8PanzvyvOQZAPvNLCHH+/eEw9/BaQN35+K63gyQ/1zwEALjYPJC0rbZs/5oLyJ6rBCnvJf9cZS1pO+CoyMajkL3oOfl3Kqgm5AIEqXrLSfK1lt03z8W/1s7bGTwa7c25Abg24HP8G237E6u3wk/Nn79b7WLZ0+6ktYwoEghL+bk+k/dPXIy715Ym8HQg9hkwx2F+oETgWTKfvwh7fuYH8FZjzKvuAv88Eb1YdgF3o3gSAGbpwIBkUCgUilJqvzHmVfd4DcCnATwC5e1XKIYaXSU/EU0BiIwxK+75uwD8ewCfwTZ5+yWDn4TrTv2biQKD6QRZtZUb8BLDXYF+wY2A/rWS+2/BRdRdaIaS4d+t2/1+eeHupG1x3R5lvDo8VQsGmhNTNg3z9FSwk65VrRp3D6tBEAp02kcpmo5z9Hv1XXKntYXYfo+l5kTyfLVpP7/FDdt2cy30bTTtz4KryLFTm8dqtlx6jZVGr7rnk9Xw3ust+/ltOHX/Vj3kqTbrtq3TEtKIeZHSmp03rnRSewCAasX2cXeeV/OTo0AcxodSW/nvmr/PbHe3YwL58lyeL6Xd27FiK+iXwa+M2n8UwKfdB1sB8N+MMX9FRF+B8vYrFEOLMhV7vg/gQaF9Htvk7ZcMfs21EMP+zZU7AACnx+yJommCtGzDSpl7Kq2kbZx6I6RY6ljpUWU363FKZ8w9u35H0ve3V+4FAFy6sj+8YNV+hFHTTrI4GaTNlRnrErx5NBgNHzpwwT5hhA3edXeznS9kGgpkhvfmNQXJ5bferrr3lNcevPENAC6v2r3NL1nXautW+Nyp7ublUs9VlVkfd8Ukp4OU3zfljJxhisSYt3LLvvfGcnjD0brTXJo8Qse/TRa0VXP5EpP2Ox6byru9RHowV4edmBj341JSPvcEMEWS24/jH62T/F7ik2TwE6x824l96pfBT8N7FYoRhV78CsWIYm9Teo8cTp6bG9a/X7twKGn72qxVuW86o9RrZ4LaPx1b49+9E1eStrdNvAwAOBQ5rnNmDFwzVnW8yvzU19q29nmNgvFqvm3V4GfX7wSQNu55dX/sXCg1Pu625EsKbOwL99P1E/b5+TjEBVSc0YpH1PnYgFUXU8DTfb3xiscFePg5VlrhWLHUmEi9DgCWnXHvxq0QPbmwbJ+3F23f2EL4XCquKhrXVlvuRNJ0paQarG/Rqb48BmBt3ar5zVX7GK+E91tddhF+IfwhUftbE+E7a027SE13nGtQOFcYN44bAUP8vo8LYMZDIUbAH03aHW7wc8cD18aPAcYZnnmb/+kkpyzp2ED54w1PFe71CDAIEX4KhWKIsbdZfdeCJK8448zk1SD5601rlHrR3eme3Xdn0jd92GoKP3EqSJvDFetaOxlb4oMTlXC3P9u0out6O1QJ+tb6XQCA8+tBMt9s2HGvLFutYP56GD923krJuZfCXXt8wbmcHO/X+CIzzDXsvXW1HSTuixv2I7+6P8w7UbVSfbxiH09MBqZWL8FnK/Wwj9hqMQsNO+9yM0j+SyuW7unWBqsV0HAsv9yo5wyVYwuRex9JF2KhDqSX0lHTjt9oh7maG/Y936yzn5M36t2yj2OLQbxVncBiBZgS6ce8uYkRzVC6NgIANJwUJibRI2eUrDh3JDfMRfHmLj5uBOy49+elPJfkXuJTi0t+So0TOU+YZE+WYvXjvRaQaFqcP2QHw+JU8isUIwq9+BWKEcXAcPhh0hqqDn89WIHWj7g00kl7j1o7XGF9Vr39i9YbwxT3WT3yZ2e/llvrZseq8/9jMYQsfO2aNSgurwa1uXXLqsvRsl1rYj6oZ7MvWx1s4jpLytmweh65RKCI1dUiZwAjls66vm7XWlwIavn8pDs6VO1rL03vS/pOH7Ily2ang9rvseqSc743H45KK4vOMlcPa0Zr9vOr1pnq7fKnxpy6X6mzfXvVlamcUcu/J6/eMsOcU/Hbt4IsiTYotU41nGTgbLWIWBVUEwlqs/f9V1wiEC8E6mIETIUlE1XtiztOLa9Nhu8pKeElFBZpNVgacdM+F1V8IYrP90ufmYgi416eenBHoZJfoRhR7G2hzqshFyhyRr0KKzs8c9E9GbMSbupE4C5fPm3b5ieDMe2L+84AAKZjKyV/YPxC0ve5mz8AAHjmajAa3jxv55t8Ndz5px1Jam3ZkXo0gyiqLbnotpvBKkUbztfjbqN9sm+7AAAZgUlEQVTRBosydPkHk1fD7X7caRLNacbQ6zSbDRc4uH4s9J2jA276IA6mXQz9yzdt38rNEBlYuWo1ijHGqVRx0jdmxjQvgeINZyQTJD9nIYu88c21cUnuDXjtGssF8ELXh9mztWPnJ+RS3iRuuTBH5D5ab4DkUrjj1mKkxmhP+FwNi0YXF1rLfVemyd7ohksj9hKdu+4EY16iDRSQG6eoPzwHicwSUvziPkMlv0IxothTyW/aIbimffMmACBaZ2dbz7XutIHaUnDJzcJK8PoBRrYxa/lE/rTxEADg/8ycSfq+e90GFNUvTidtc99z2YIXwz7GFhyFlZfo7KYcr7i98dt2lI6Dp3bINai5OeJ6CArquFLLHZZQ0Jq0Emh9xbnHWAz+unMTvtgIbTXnylpfsu+9cj2Iv0mXLjG+EPZYveXsEjyG3X22kdNsOhXK9XF4W0at7TUigSaMKz0Zt1XMYpRM+iNLgVihhNjZDbzXjcc5ddxzLvmjlh3YclN0mF1iQyAOMV66b3BbhXMhehtHN8lbFKHT6+FdcPWFPlbnQWP7FQrFdqAXv0IxothTtV9Cp5FP2/Sllri6XXvVWuYOTDA3jYv9Xli0rq/rU+GYUJu34/ZdTJqw73t2repKWDNat/okbTi9shnUeMRurTjcM03C4iDwtbm2ylI4yvhST52JoK/GDUdWseEtbSwSz7kLG7cC2UbduQRrS3YfE4xTefKqnYMb8KKMO5Lv1xvOJDJeyYjl2yrr3E3n1omJjUvrrtJRoivcFN7NKGnDfI/eQOg31OLReU6d51q65yOhBt93Zp9CtJ2o6e80hweF39yux/YTUUxEXyeiz7r/DxDR54norHvc320OhUIxOOhF8n8IwAsAPGn9tnn7e0V7MRQrjJyxcHwmGPwOknV5tc65yjdT4d42dtOKDx6EU1uwPqRomQWzN53E93daLrE6eVFIgTI212cS8v+wjyS0ez1Yr6Kmzw+wEn98kRmgnBGrfZ1RdTljYXXNBxaFNb1xL66Hvfq8A8Mkc8INIojTRMLlu+Q6lIm7K68N9CwRC/bDXW1+Wi75/fJeMYu4a9C/925SO+NxFIoupbWknWftcgvtkcGPiO4A8BMA/oA1K2+/QjHEKKv2/y6AX0M6zCHF2w9gU95+InqGiJ5pYkMaolAo9gBl2Ht/EsA1Y8xXiejtvS7QM2+/4bqdT690EWEsfbOzZEPMopdC2+RKiHEHAFPJc/pRixX5WHbqU4V9DP41fh8ddn/0T7n67596tZ8ZAz3Rg6G8oS0FN1+85lJ7mQGvsu72FnEVNv3yiDFrVNbz8QliPXmT1W/zQ8pCUo1DLfvNX5fmuxO2UbAnEsb4WAKB9hDJU36Kcx8t37/JtpWszJU9LnQdV/Lznj2fF5i7yd77VgA/TUTvATAOYJaI/hiOt99V61HefoViyFCGvfejAD4KAE7y/xtjzPuJ6D9im7z9XeGlb0YDsE3OVXUrZAHSeRvLTxPWLUZjIXPObFh3HpeCvD8M9KlVkoT2vifWltQKcH1tphUkWgS3EBXM7xBvBO0kicAbYy5NZ7yKnIswJV0ll6Nb05S1vpXYY5G0z+1J+L8nSNKyQHJ61yCv5GYEA5539XU4k/J2nd9CzH5Zyi6JzGPlLhsdevDl0DYIEX4fA/AEEZ0F8IT7X6FQDAl6us8ZY74I4Ivu+bZ5+8svnNYAbJOzAwhU/Wbduu5MnWXfVd1brfR4axdsEOABLIlLq8S5miHFKV9CInspD3A3Wm/iVFqz5/BzwYUnB71Quq/b+AJImXDSvqW1cuO5ucaf7yVXn4Sy5/oSKFnhHDOv7NyZX8N7FYoRhV78CsWIYuBi+3sGV8shnAGSYS6+PdXYq86bP36EI0AmvIyDb7HodmsE/RZpEg3bVELvLOui8kOk2P5eI9nYvrIqeMqdVnAUSOUAFLkLS6jgEl9G+nMUXrRVlV6cyxlapRNhyXW8wW/fWqB2M+cvbDa8J6jkVyhGFMMh+ancPSoEA/V4+5Y0gEKtoIiziUeRCK7BEm60Xg15W0FR/H5h9hqEPmm/GUmbkvwJmYcg5YVxpaVxRlOQpHxq/lgY1ysSLSb/SYoGyB6/Wm/wi6/eDPOqwU+hUGwHevErFCOKwVP7mYpfqL6XPArk0M3Il6jqBWu3BbXfj0/FALhjSDefvp9OslcWRdkVqZBdfNc7kYrK5zQZFbzD04n9V9fNCFjA9Ve4pqTOFx0rCn5KktGztAGvIO5AHCdADX4KhaLvGBzJT77wIhW39QJT1scmoFPSDeilepLdlyKj33x8KlytjC9OcKNJr5ekkmdB7oMhMXl7XOL6QpOsMXl3kkSP0492b9Ji+ddmx6cNj67Nawx8/oLIREl7KI2soa/Lz6zQbSl0qsFPoVD0HXrxKxQjioFR+xPVnhv8BLbcBIm6zS0yRf73Xn35JefI9knpu0LEXl/g1fiU2ur+6ZJym0u8kcD27VX6rRoKZT8/G1Bk3JPU/szrUvMKsQVitOBWeQYlbDFZKQUfJMoIrNeO2XzjeFUNfgqFok8YGMnvS3elUnRjy2ZLnv2WG6w8QQU3sCW87QUagLh4b2QbogawC1F5m4Eb8kwBSy2Pm98yu24/0WXtnPtPfE/C87Iu0C1CTMctme4rSXxfgNQXM+VFTWe/4+jqLgairM6YZazubOTLtveCrpKfiMaJ6MtE9E0ieo6IftO1K2+/QjHEKCP5NwC8wxizSkRVAH9PRP8TwM9ht3j7YyH6xWfpMU58k9gBJLL1rR5We3X59c6EmdBsJS4fyW7AX9D9vUix96kzcMZ92u+gn1zuQNmPpeDM3y0zMKchSC68grM2f4mY85Cdi/3jqbrEn0uXgKvInfFdZXlUV8OgaM12crq67Ur8ZO5uA4zFqvu36v4MlLdfoRhqlC3aERPRN2AZej9vjPkSlLdfoRhqlDL4GWPaAH6QiPYB+DQRPVB2gV55+1MMvQkjrrPkcfXfq/ucQ7/AzSUaDXs16vXqGuwIR4EkQq7HCD+GUgUjiyICWVvP6r7AMBtUZcGlKRm4ijygvC3ruitS8YHC1NwyacpdIb13XyPAHaNSJcsK3ajhqXft1axtD+M3GV/jlev2caP/grMnV58x5iYsgee74Xj7AUB5+xWK4UOZij2HATSNMTeJaALAOwH8FoDPYCd4+5mbzvhy3WM2syl1I/VagFAEs9AV1w+iD6m/n64+ISUhlTKQFNncOp1s1iAn0niBt2Xe5zaCWsQ15UULJiyx6E7FVvHvJzNvqi6Ey+pMbcOVAE8VV3UWtbElO3L6xfmkr9NkA/uMMmr/cQBPEVEM+1P8pDHms0T0/wB8koh+EcArAH5+x3apUCj6jjIVe74F4E1C++7x9isUir5jYCL8JCTGv4ZVfWh8LD+oI0TzSSp4VNK8kVXzezXybQdFpB5G0pudkanHAiAcPRvCiogsirj8SqrzImNw2dPNFk9B0ppFHIfiHGKqs/t+WJuP3uNqf8W58Pd/26XtLoT03c5a8O/3Gxrbr1CMKAZa8ifGP3c79vH/ALvBStF/EorKabF5C8cXwWsWW9EUMkZDEiL8JCIOUTpJUYL9MEZm5kjlCQhuN19GvGyWXs9Sux9Svmg/XV6bm0OaStAGfNl2b+QDgLElF6267qL5XPn5nYZKfoViRDHYkt8hkfjNVmj0UpIPLNICsnRbAEzHzcekGBURgyacA2UDhbzmkg9cSge49HhO99OWVHpKoaSmIJFjSjz5Iae+gF+gS5BP7sgv2QPETWYm2KytxGu7FTLNltXmn4Hv467B2pJ99G49AJh73p7xzZXdDZVRya9QjCj04lcoRhRDofZ7cIMfPNVRrZo0UVZdldx7kkGuzV1lGdchj9jyPri9uGUWRauVtTHycd6NKkTsSe6/rJqd6hOPAluLBJRQ6I4s+Fx6PiYIc/QMNpd350XstFpZt48Hvh2Yd2nengXazq1nJAP0DkAlv0IxohgqyZ+i50qsTAUUXFIAUGq+EiKTGRETqjEehRNn1tqGWy0xBkp7LHJVdhFXfclo80tGeYkeMgSZ+y9DqdVt7Z73KLz1UnNIBkVpjuygkkgla7rnFRanM7bs3HprgaWzM79o19wlie+hkl+hGFHoxa9QjCiGS+1nSFRwpiolmqBX1QtVZdZUcDxIGRGlOIKtcvl3BF2ThKOMGEy/ubqfRAcyXbYf6n7wZwsRh0KEX1/Qx7SKLR99Sgf32wcpVbe2HCYZW3S/11ev9riR/kMlv0Ixohhaye/RYVF/lGXOTREr9KGkdxKdFzQF8kzBsSS1hwfpmPcexWSJt7wlt1tRX69z7JCrz7+v2LnwYkasW1uxnQe/GWL1oxvOrcfYeE1r5wg7ilCGt/9OIvo7InrB8fZ/yLUrb79CMcQoIw5bAH7VGPM6AI8C+CUiej0sT/8XjDFnAHzB/a9QKIYEZZh8LgPwFN0rRPQCgJOwvP1vd8OegiX23JmiHYUbFHz/Xv3nEWfdfP7b3oega26hgMdmSBF2ZA2ZJQ2ExPqyyTK9GsLE1Niy8PZN3tRrok7R4ttJC87sTdoXMXd8EsXnSDq4cW/yhh0YLYT8XeOIOvZK1efo6SBMRKdgKb2Ut1+hGHKUNvgR0TSAPwfwYWPMci6OfhP0ytu/HWQjpIi75gT3nzcCSlpBzzz/HnwuvyaXzIJWIpfy9uP9XPmuwBkvjN9jP07PkXI9knP0RWMR0naz83VL6fVx+z5F10t7AJh63nLut86dD+MnJ3vb8A6ibMWeKuyF/yfGmE+5ZuXtVyiGGGV4+wnAxwG8YIz5Hda1M7z9fYAUI52QdAh2ANENmPD89yhCS44vJN3sWivAT1JiTLdxZeHtBkWits9r9kqiWep13XIBCnm5LHgJ7YRz3531pxjnvrl2I/fanSTk7BVl1P63AvjnAL7t6vUBwK/DXvTK269QDCnKWPv/Hpvfx5W3X6EYUgx9hF8ReNFPONcKVQL5R1IIkhnpkiOAZPDzxRg5z1+W108YL7YNGoRUV96WU6GF1NVC9bwLX5/EmZfTwLsZ67Lzb2Ef2SZOxOHdeZ6QAwjq/uxzTt2/uZT0DZKKL0Fj+xWKEcVtLflTRT9dDD7xtqYzYjEqsJw7T2L25dLbjxcKhyIqyC7sFQXsut0CboJkDr0+4CfRjuLiPWZZareDfhB3FM4rBRElg/KNqWm9J9bZjFOVdTwF13NB9HfG3He8aCV+68YCm2uHA8u2CZX8CsWIQi9+hWJEcXur/RxOBUulAEsReElnCeMef57EBXQx+ElIyjrl9xF4/cqRehSOL4B4dOiWM1CEEjHy0vqSzz2Zw+T70pNs3id2FRke3c+E8++NL9ovqroY1H5asOm6Zo1ZAYcEKvkVihHF6Eh+D27wa7kIP54DkNUCurnmsi5BSSuQDIRF4HYiKfiwoHhndsym4wS6r/BaPyY/PDeG9XVdswwk6S5JcrEkdrqpW8KfaAR081YcKYcn5ACA8XmnDlwKFFzGlY9vr7LKm0MClfwKxYhi9CS/gFRutUlrA6my4EWFQBPJH+XbUottbl8ojOnn2sAWC3QWUmnxgKgCbYe26r0qGdAjud2kTMUyR/6yfAFRoNBP4va9xN/3fAjaiRZslZ3OrXC+H4S8/K1CJb9CMaLQi1+hGFGo2o9MDoDTRZN6ALwEFVytAEn9jwTjnkcXlTrrnksZzorKdYVBfDahf/OuPUFJWq7kiCEY/vzpqiOJr4J5OQVXxWnsPEU3rtuB445fP1q8FaZwFFydDUbRO8RQya9QjChU8gNp95+TDJ26FQfErEE0MeGesHumzwgsS9YpjfPT+So+Ud6PltYG/JMCKb/HyGkzrK+bCy47TqLSSvokV1/WUAggdl66mBn3ooYdyN15s9+x0p2WrcQ3S6GUttm4vTgoy/D2/yERXSOiZ1mbcvYrFEOOMmr/fwHw7kybcvYrFEOOMkw+/9tRdnMMBmf/TsAdAbz6n1Kt151/16v/ACj2jCBOdeT8gVLUnwR3FCCnp/JMUGq71Fuu+ybHg6I52fMtxgX0DNGXn881KIrA46CsYVCKCxDW9KQbPB03dip+pR5eULtpv6vJs4xrb8VG6pkNez5oLwU//+2GrRr8SnH2KxSKwcWOG/yI6IMAPggA4xgczvKuyGoAHI1gNTLOMBjNzWw+F3cNSvRgHt4YyKW293e1OamIl6bpIQBgiqR8AV0Vd0F6Zacs2YZI45XNBWANhUbAHtckJt0pMerZzpj11ZbtFzl1NpBtmKqL4mQEHLezpM9iq5K/NGe/MeZJY8zDxpiHqxjb4nIKhaLf2OrF7zn7gQHj7FcoFOVQpmjHJ2CNe4eI6CKA38CIcvb7JB+v6gMAOXW54/zBVA0fKc1M2ycxdzi7+y0/CmQMg8RLfpm80dAbBKnjjYE848XHBbCN+6NLKjGGUuNSUY4Sn992owNTR47NjYDUZscD99n6owyPzos37LgUu657XlvxKv5i6Fy1rBxmNUTsoWVfMIzpuP1AGWv/L2zSpZz9CsUQQyP8tgIhIjD8z1KA3XOqMG1geso+kbQBj07eQCgK3sR4GKRl1HJSlRv+JI6sHIPZ1mi6OIqKWkr0XHGTsQmL3CIZLYanSDgNobIWPsepl1x03qp1yZoVJtEdfVt7JUTsFaZojwA0tl+hGFGo5O8TgsRnqoDXEJg2YNw5M6UNTLqgoaRakBAoxGoLUI70I8zl6bP4mMStV8mzYSRpBfy9CGf+XIYdh5Axl5QN94E37GzuJb6Prbf7deOa+QUSyc/sARPnrUuOOHGme+5tMikpzys1+T0KBV1HCSr5FYoRhV78CsWIQtX+HUTiGpR4APlRwDHASjz/kcsjMKzoozcaUscFTRlu8HP6uaC6m3aeX7BTc/thRwLvajT8lFBNy4mIqeCdStolx+Gj7oi5Er3aX1kLn8HYRavGt2dC3kTsOPO8Sw5tdjhxUZbc7crV/CyGmWtvp6CSX6EYUajk32VI2kCKHCQ73hFIcLeUryLkA1Zo31zoSwqG5msFpLj0vZewZn8CEXd7xV6Sh32ZpC39CAAd3yZQlHkNIWoGqV27ZKW8qYU1zZXrdtyl8Lkk1ZX8vEx7uF2otPYSKvkVihGFXvwKxYhC1f5BQEEdd+PoaU2bpREv2eKQXsXnMQOehIIbDWnKplITM44Zt2Y0O2sbKkzt95Fx7Chg9s+k2miepb6613YOziZN0YKbwxnrzNxUmGvepdA2ghHOx9dzf7wa6XYWKvkVihGFSv5Bh6AVJEZDJxnNPGe0cLkAzPjW8YbBVEFS587zWW7dSpHPL6ZfxyMUq05aX58P02fLnbE+b6wTo+5U2u8aVPIrFCMKlfzDiIw2kI5Rd1oBH+Bdg0VSNcUJINggfL/vY1RmyRCmWXSycfOCO1Ol/N5CJb9CMaLY1sVPRO8mou8Q0feISLn7FYohwpbVfiKKAfwnAE8AuAjgK0T0GWPM8/3anKJPKHAllh5TYo7CFNkye1DsKrYj+R8B8D1jzPeNMQ0A/x22mIdCoRgCbMfgdxLABfb/RQBvzg7ivP0ANv7GPP1sdswQ4RCAG11HDTaG/T3o/otxd9mB27n4u1RXdw3GPAngSQAgomeMMQ9vY809xbDvHxj+96D77x+2o/ZfBHAn+/8OAK9ubzsKhWK3sJ2L/ysAzhDRaSKqAXgfbDEPhUIxBNiy2m+MaRHRvwLw17BE0H9ojHmuy8ue3Op6A4Jh3z8w/O9B998nkMkxwSoUilGARvgpFCMKvfgVihHFrlz8wxgGTER3EtHfEdELRPQcEX3ItR8gos8T0Vn3uH+v91oEIoqJ6OtE9Fn3/9Dsn4j2EdHTRPSi+x4eG7L9/4r77TxLRJ8govFB2v+OX/wsDPjHAbwewC8Q0et3et0+oAXgV40xrwPwKIBfcvv+CIAvGGPOAPiC+3+Q8SEAL7D/h2n/vwfgr4wx9wN4EPZ9DMX+iegkgF8G8LAx5gFYo/j7MEj7N8bs6B+AxwD8Nfv/owA+utPr7sD7+EvYPIbvADju2o4D+M5e761gz3fA/sDeAeCzrm0o9g9gFsDLcEZp1j4s+/cRsAdgvWqfBfCuQdr/bqj9UhjwyV1Yt28golMA3gTgSwCOGmMuA4B7PLJ3O+uK3wXwa0iX4huW/d8D4DqAP3LHlj8goikMyf6NMZcA/DaAVwBcBrBkjPkcBmj/u3HxlwoDHlQQ0TSAPwfwYWPM8l7vpyyI6CcBXDPGfHWv97JFVAD8EIDfN8a8CcAtDKiKL8Gd5d8L4DSAEwCmiOj9e7urNHbj4h/aMGAiqsJe+H9ijPmUa75KRMdd/3EA1/Zqf13wVgA/TUTnYDMu30FEf4zh2f9FABeNMV9y/z8NezMYlv2/E8DLxpjrxpgmgE8BeAsGaP+7cfEPZRgwERGAjwN4wRjzO6zrMwA+4J5/ANYWMHAwxnzUGHOHMeYU7Gf+t8aY92N49n8FwAUius81PQ7geQzJ/mHV/UeJaNL9lh6HNVgOzv53yfjxHgDfBfASgH+318aYknv+EdjjybcAfMP9vQfAQVgj2ln3eGCv91rivbwdweA3NPsH8IMAnnHfwV8A2D9k+/9NAC8CeBbAfwUwNkj71/BehWJEoRF+CsWIQi9+hWJEoRe/QjGi0ItfoRhR6MWvUIwo9OJXKEYUevErFCOK/w9wrcciHe5PeAAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABC1ElEQVR4nO3de3hU1d3+/3sgyZBAMkCAHOQoBkQOiqCRoCatEouAtdQjoiBasYBKqUWRpw/RaqLY8kOLYkVElCK1gohWgfgI8YBoQFBMFQ9EoEiMBEjCKYFkff/wlyljZqJrSHYmw/t1XXNdZO219l5rzyEf9szccRljjAAAABzSrLEnAAAATi4UHwAAwFEUHwAAwFEUHwAAwFEUHwAAwFEUHwAAwFEUHwAAwFEUHwAAwFEUHwAAwFEUHwjKM888I5fLJZfLpbVr19babozRaaedJpfLpYyMDL/72LNnj9xut1wulzZs2BDwWBUVFXrssceUnp6u+Ph4RUZGKj4+XhkZGfrb3/6m8vJyn/4ul0uTJk2qtZ9vv/1Wd999t/r27atWrVqpRYsWSklJ0R133KEvvviiVv+3335bV111lU455RRFRUXJ4/EoLS1Nc+fO1cGDB+s+QSHs6NGjmjt3rgYNGiSPx6Po6Gj16tVLd999t0pKShp7ek1S165dNXbsWO/PX3/9tVwul5555pkGPW59PA+BxkDxgRMSGxur+fPn12rPy8vTV199pdjY2IBjn3vuOVVWVkqS331I0nfffae0tDRNmTJFPXv21JNPPqk333xT8+fPV79+/TR16lRNmDDhR+f5wQcfqG/fvpo/f76uuOIKLVu2TCtXrtSdd96pDz/8UOeee65P/xkzZujCCy/Url279Kc//Um5ublasmSJLrroImVlZel//ud/fvSYoejQoUMaMmSIbrvtNvXv31/PP/+8XnvtNV1//fV68skn1b9/f23durWxp9nkJSUl6b333tOwYcMcOd6JPA+BRmGAICxYsMBIMjfffLOJjo42paWlPttHjx5tBg0aZHr37m3S09P97qNPnz6mQ4cO5pxzzjEej8ccOnSoVp/MzEwTGRlp8vLy/O5jz5495rnnnvNpk2QmTpzo/bm0tNQkJiaaTp06mZ07d/rdzz//+U/vv1944QUjydx0002murq6Vt+ysjKzatUqv/sJdbfccouRZJYsWVJr29atW43H4zG9e/c2x44dc3ReBw8edPR49a1Lly5mzJgxjh+3Pp6HTc2hQ4f8Pi/RtHDlAyfk2muvlSQ9//zz3rbS0lItXbpU48aNCzju/fff1yeffKLrr79ev/nNb7xjjpefn6/Vq1frlltu0YUXXuh3P/Hx8Ro9enSdc5w3b56Kioo0c+ZMdezY0W+fK664wvvv++67T23atNGjjz4ql8tVq29sbKwyMzO9Pz/22GO68MIL1aFDB7Vs2VJ9+/bVzJkzdfToUZ9xGRkZ6tOnj9577z2lpaUpOjpaXbt21YIFCyRJ//rXv3T22WcrJiZGffv21cqVK+tcl62ioiI9/fTTuuSSS3T11VfX2t6jRw/dddddKigo0PLlyyVJl19+ubp06aLq6upa/VNTU3X22Wd7fzbG6PHHH9dZZ52l6OhotWnTRldccYW2bdvmM67mPLz11ltKS0tTTEyM97Hy5ptvKiMjQ/Hx8YqOjlbnzp3161//WocOHfKOv/fee5Wamqq2bdsqLi5OZ599tubPny/zg7+R2bVrVw0fPlyvvvqq+vfv73176dVXX5X0/VsWvXr1UsuWLXXuuefWeutv7NixatWqlQoKCnTRRRepZcuWat++vSZNmuQzH3/8ve2SlZUll8ulgoICXXvttfJ4PEpISNC4ceNUWlrqM37//v266aab1LZtW7Vq1UrDhg3Ttm3b5HK5lJWVVet4wTwPbc/jSy+9pH79+qlFixY69dRT9eijj/r0W7t2rVwulxYtWqQpU6YoMTFR0dHRSk9P16ZNm2odf8OGDbrsssvUtm1btWjRQv3799cLL7zg06fmbaXVq1dr3Lhxat++vWJiYlRRUeF3TWg6KD5wQuLi4nTFFVfo6aef9rY9//zzatasmd9fcDVqLhGPGzdO11xzjWJiYmpdNs7NzZUkXXbZZSc0x9WrV6t58+YaMWLEj/bdvXu3PvnkE2VmZiomJuYn7f+rr77SqFGj9Nxzz+nVV1/VTTfdpIcffljjx4+v1beoqEg33nijbr75Zr388svq27evxo0bp/vuu0/Tpk3T1KlTtXTpUrVq1UqXX365vvnmG+v1BrJmzRodO3ZMl19+ecA+Ndtqzv24ceO0Y8cOvfnmmz79PvvsM33wwQe68cYbvW3jx4/X5MmTdfHFF2v58uV6/PHHVVBQoLS0NH377bc+43fv3q3Ro0dr1KhReu211zRhwgR9/fXXGjZsmKKiovT0009r5cqVevDBB9WyZUvv23PS97/Yx48frxdeeEHLli3TyJEjddttt+lPf/pTrfV89NFHmjZtmu666y4tW7ZMHo9HI0eO1IwZM/TUU08pOztbf//731VaWqrhw4fr8OHDPuOPHj2qSy+9VBdddJGWL1+uSZMm6W9/+1udj+0f8+tf/1o9evTQ0qVLdffdd2vx4sX63e9+591eXV2tESNGaPHixbrrrrv00ksvKTU1Vb/4xS8C7jOY56HNedy8ebMmT56s3/3ud3rppZeUlpamO+64Q3/+859r9b3nnnu0bds2PfXUU3rqqaf0zTffKCMjw6cIXbNmjQYPHqz9+/friSee0Msvv6yzzjpLV199td/PyYwbN06RkZF67rnn9OKLLyoyMjLguUAT0chXXtBE1Vzuzc/PN2vWrDGSzCeffGKMMeacc84xY8eONcYYv5d7Dx48aOLi4sx5553nbRszZoxxuVzmyy+/9LbdeuutRpL57LPPfMZXV1ebo0ePem8/fItAP3jb5fTTTzeJiYk/aV3r1683kszdd9/9k/r/UFVVlTl69Kh59tlnTfPmzc3evXu929LT040ks2HDBm9bSUmJad68uYmOjja7du3ytm/evNlIMo8++mhQ8/DnwQcfNJLMypUrA/Y5fPiwkWSGDh1qjDHm6NGjJiEhwYwaNcqn39SpU01UVJTZs2ePMcaY9957z0gyf/nLX3z67dy500RHR5upU6d622rOw//93//59H3xxReNJLN58+afvKaa833fffeZ+Ph4n8vxXbp0MdHR0eY///mPt63mvCYlJfm81bN8+XIjyaxYscLbNmbMGCPJPPLIIz7HfOCBB4wk88477/gc6/i3XQoLC40ks2DBAm/bjBkzjCQzc+ZMn/1NmDDBtGjRwjv3f/3rX0aSmTt3rk+/nJwcI8nMmDHD23Yiz0Ob8+hyuWrdL0OGDDFxcXHe81hz/LPPPttn/Ndff20iIyPNzTff7G07/fTTTf/+/c3Ro0d99jl8+HCTlJRkqqqqfNZ3ww03BJw7miaufOCEpaenq3v37nr66ae1ZcsW5efn1/mWywsvvKCysjKfPuPGjZMxxvsWRF1efvllRUZGem8ej6de1hGsTZs26bLLLlN8fLyaN2+uyMhI3XDDDaqqqtLnn3/u0zcpKUkDBgzw/ty2bVt16NBBZ511lpKTk73tvXr1kiRt3769zmNXVVXp2LFj3pu/t0eCUfN2U0REhEaPHq1ly5Z53xqoqqrSc889p1/+8peKj4+XJL366qtyuVwaPXq0z3wSExN15pln1vomRps2bfTzn//cp+2ss85SVFSUbrnlFi1cuLDW2zU13nzzTV188cXyeDze8/2///u/KikpUXFxca19nnLKKd6fa85rRkaGz5Wtus73dddd5/PzqFGjJH3/v/dg/PBKXr9+/XTkyBHv3PPy8iRJV111lU+/mrdWArF9Htqcx969e+vMM8/0aRs1apTKysr04Ycf1mo//u3KLl26KC0tzXu+vvzyS3322Wfe83r84+XSSy/V7t27a33o+de//nWda0fTQ/GBE+ZyuXTjjTdq0aJFeuKJJ9SjRw9dcMEFAfvPnz9fLVq00C9+8Qvt379f+/fvV79+/dS1a1c988wzqqqqkiR17txZUu1fCBkZGcrPz1d+fr6GDx/+o/Pr3Lmzvvvuu5/09diaYxYWFv5oX0nasWOHLrjgAu3atUuPPPKI3n77beXn5+uxxx6TpFqX8du2bVtrH1FRUbXao6KiJElHjhyp8/jdu3f3KcTuu+++gH1/ytpqtnXq1MnbNm7cOB05ckRLliyRJK1atUq7d+/2ecvl22+/lTFGCQkJPvOJjIzU+vXrtWfPHp/jJCUl+V3LG2+8oQ4dOmjixInq3r27unfvrkceecTb54MPPvB+3mbevHl69913lZ+fr+nTp0v68fNdc15/6vmOiIjwFlg1EhMTJSnoryX/cH9ut1vSf+deUlKiiIiIWnNMSEioc782z0Pb81izZn9tPzwPgfrW9Kt5C+7OO++s9Vip+ebaT3m8oGmLaOwJIDyMHTtW//u//6snnnhCDzzwQMB+n3/+ud555x1J//1l+EOrVq3SpZdeqiFDhuiee+7RihUrfD7g2bp1aw0cOFBS7Rdyfy655BKtXr1ar7zyiq655po6+yYlJalv375avXq1Dh069KOf+1i+fLkOHjyoZcuWqUuXLt72zZs3/+i86sMrr7zi8+G746+e/NDPfvYzRUREaPny5br11lv99qn5oOmQIUO8bWeccYbOPfdcLViwQOPHj9eCBQuUnJzsc5+0a9dOLpdLb7/9tveX6fF+2Obvg7ySdMEFF+iCCy5QVVWVNmzYoL/+9a+aPHmyEhISdM0112jJkiWKjIzUq6++qhYtWtSad307duyYSkpKfB5nRUVFkn7aYy8Y8fHxOnbsmPbu3etTgNQcty4/9Xloex79HTvQeQjUt6Zfu3btJEnTpk3TyJEj/R6vZ8+ePj8Heryg6eLKB+rFKaecoj/84Q8aMWKExowZE7BfzYdK582bpzVr1vjcXnvtNUVGRno/NDdw4EBlZmZq3rx5evvtt4Oe20033aTExERNnTpVu3bt8ttn2bJl3n//8Y9/1L59+3T77bfX+uS/JB04cECrV6+W9N8XxeN/uRpjNG/evKDna6Nv374aOHCg91ZX8ZGYmKhx48Zp1apV+sc//lFr++eff66HHnpIvXv3rvWh1BtvvFHvv/++3nnnHb3yyisaM2aMmjdv7t0+fPhwGWO0a9cun/nU3Pr27Wu1rubNmys1NdV7Banm0r7L5VJERITPsQ8fPqznnnvOav82/v73v/v8vHjxYklqsNCu9PR0Sap1H9VcearLT30e2p7HgoICffTRRz5tixcvVmxsrM83nqTvP+h6/PNm+/btWrdunfd89ezZUykpKfroo4/8PlYGDhxILslJgCsfqDcPPvhgnduPHTumZ599Vr169dLNN9/st8+IESO0YsUKfffdd2rfvr0WLVqkSy65RBdffLHGjh2rSy65RB06dFBZWZk+/vhjvfHGG4qLi6vzuB6PRy+//LKGDx+u/v37a9KkSRo0aJCioqL0xRdfaNGiRfroo4+8/wu78sor9cc//lF/+tOf9Nlnn+mmm25S9+7ddejQIb3//vvebztkZmZqyJAhioqK0rXXXqupU6fqyJEjmjt3rvbt2xfcSWxgs2bN0tatWzV69Gi99dZbGjFihNxut9avX68///nPio2N1dKlS31+KUnff95gypQpuvbaa1VRUeGT5ilJgwcP1i233KIbb7xRGzZs0IUXXqiWLVtq9+7deuedd9S3b1/99re/rXNuTzzxhN58800NGzZMnTt31pEjR7yF6MUXXyxJGjZsmGbNmqVRo0bplltuUUlJif785z/7vdpSH6KiovSXv/xFBw4c0DnnnKN169bp/vvv19ChQ3X++ec3yDF/8YtfaPDgwfr973+vsrIyDRgwQO+9956effZZSVKzZnX/n/HHnoeS/XlMTk7WZZddpqysLCUlJWnRokXKzc3VQw89VOvqYHFxsX71q195v0I/Y8YMtWjRQtOmTfP2+dvf/qahQ4fqkksu0dixY3XKKado7969+vTTT/Xhhx/qn//854+uAU1cY37aFU3X8Z+yr8vxn7Kv+UbB7NmzA/ZfuXJlrW9NHDlyxPz1r381559/vmndurWJiIgwbdu2NRdccIF56KGHTElJic8+9INvu9QoKioyd911l+ndu7eJiYkxbrfbnHbaaWb8+PFmy5Yttfrn5eWZK664wiQlJZnIyEgTFxdnBg0aZB5++GFTVlbm7ffKK6+YM88807Ro0cKccsop5g9/+IN5/fXXjSSzZs0ab7/09HTTu3fvWsfp0qWLGTZsWK32QOs4UZWVleaxxx4zqampplWrVsbtdpuePXuaqVOner+94s+oUaOMJDN48OCAfZ5++mmTmppqWrZsaaKjo0337t3NDTfc4PMNn0Dn4b333jO/+tWvTJcuXYzb7Tbx8fEmPT3d5xsoNcfo2bOncbvd5tRTTzU5OTlm/vz5RpIpLCz09rM5rzXfTnn44Ye9bWPGjDEtW7Y0H3/8scnIyDDR0dGmbdu25re//a05cOCAz3ibb7t89913PmNrnkvHz33v3r3mxhtvNK1btzYxMTFmyJAh3m9iHf/tm2CehzVsz+OLL75oevfubaKiokzXrl3NrFmzfPZX822X5557ztx+++2mffv2xu12mwsuuMDn/q/x0Ucfmauuusp06NDBREZGmsTERPPzn//cPPHEE9brQ9PjMsbPdWUAOMmNHTtWL774og4cONDYU5H0/dsc1113nd59912lpaU5dtyuXbuqT58+3nC2QNauXauf/exn+uc//+kT2gf4w9suABBinn/+ee3atUt9+/ZVs2bNtH79ej388MO68MILHS08gIZC8QEAISY2NlZLlizR/fffr4MHDyopKUljx47V/fff39hTA+oFb7sAAABH8VVbAADgKIoPAADgKIoPAADgqJD7wGl1dbW++eYbxcbGEqkLAEATYYxReXm5kpOTfzQML+SKj2+++cbnj1oBAICmY+fOnerYsWOdfUKu+KjJ9D9flypCkY08GyA0LP38Y+sxVaa6AWbSOKoVml/Ku6Zn/8aeAhAyjumo3tFrP+lv84Rc8VHzVkuEIhXhovgAJCku1v7jWVWh+fs6KKFafPAaBRzn/3+a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Ks2bN09FRUVKS0tTSUlJ2K9927Ztmjt3rlJSUrRq1Srdeuutuv322/Xss89KCv/7/njLly/X/v37NXbsWEkn19prNMjfdjkRLpfL52djTK22k8XJcC4mTZqkjz/+WO+8806tbeG6/p49e2rz5s3av3+/li5dqjFjxigvL8+7PVzXLUk7d+7UHXfcodWrV6tFixYB+4XrORg6dKj333379tWgQYPUvXt3LVy4UOedd56k8F17dXW1Bg4cqOzsbElS//79VVBQoLlz5+qGG27w9gvX9R9v/vz5Gjp0qJKTk33aT4a11wiZKx/t2rVT8+bNa1V5xcXFtarBcFfz6fdwPxe33XabVqxYoTVr1qhjx47e9nBff1RUlE477TQNHDhQOTk5OvPMM/XII4+E/bolaePGjSouLtaAAQMUERGhiIgI5eXl6dFHH1VERIR3neF8Do7XsmVL9e3bV1988UXY3/9JSUk644wzfNp69eqlHTt2SAr/532N7du364033tDNN9/sbTtZ1n68kCk+oqKiNGDAAOXm5vq05+bmKi0trZFm1Ti6deumxMREn3NRWVmpvLy8sDgXxhhNmjRJy5Yt05tvvqlu3br5bA/39f+QMUYVFRUnxbovuugibdmyRZs3b/beBg4cqOuuu06bN2/WqaeeGvbn4HgVFRX69NNPlZSUFPb3/+DBg2t9pf7zzz/3/rXzcF9/jQULFqhDhw4aNmyYt+1kWbuPRvqgq181X7WdP3+++fe//20mT55sWrZsab7++uvGnlq9Ky8vN5s2bTKbNm0yksysWbPMpk2bvF8rfvDBB43H4zHLli0zW7ZsMddee23YfO3qt7/9rfF4PGbt2rU+Xz07dOiQt0+4rn/atGnmrbfeMoWFhebjjz8299xzj2nWrJlZvXq1MSZ8112X47/tYkx4n4Pf//73Zu3atWbbtm1m/fr1Zvjw4SY2Ntb7GhfOa//ggw9MRESEeeCBB8wXX3xh/v73v5uYmBizaNEib59wXr8xxlRVVZnOnTubu+66q9a2cF/7D4VU8WGMMY899pjp0qWLiYqKMmeffbb365fhZs2aNUZSrduYMWOMMd9/7WzGjBkmMTHRuN1uc+GFF5otW7Y07qTrib91SzILFizw9gnX9Y8bN877+G7fvr256KKLvIWHMeG77rr8sPgI53NQk90QGRlpkpOTzciRI01BQYF3eziv3RhjXnnlFdOnTx/jdrvN6aefbp588kmf7eG+/lWrVhlJZuvWrbW2hfvaf8hljDGNcskFAACclELmMx8AAODkQPEBAAAcRfEBAAAcRfEBAAAcRfEBAAAcRfEBAAAcRfEBAAAcRfEBAAAcRfEBAAAcRfEBAAAcRfEBAAAc9f8Ai5LR6VPILIMAAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FACT: image_shifting\n", - "84 µs ± 1.86 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "FACT - OversamplingMapper:\n", + "Initialization time: \n", + "75.2 ms ± 330 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "34.1 µs ± 863 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA+90lEQVR4nO3de5hT1d3+/zuTOWWGmSAgM4zKsVgRtCAoCiq0KlbRqmirIi1IPRVREVuU2hb0UUCr/Gy1glqhWIpYz4dWhVZBKSgjiqXYoi0IPMJI5ZAZmHOyvn/wkJ9x7+DeJFmZkffruua6mJWVtVb23gmf7GTfEzDGGAEAAFiSk+0FAACAgwvFBwAAsIriAwAAWEXxAQAArKL4AAAAVlF8AAAAqyg+AACAVRQfAADAKooPAABgFcUHWrTf/e53CgQCrj8//vGPE/r++te/ViAQUJ8+ffY75vr16zV+/HgdeeSRCoVCKioqUu/evfWzn/1Mn3zyiZYsWZJ0zi/+pFNTU5NmzZqlk046SeFwWKFQSL169dItt9yi7du3p3Wug0XXrl01ZsyY+O8ff/yxAoGAfve732V03s8ft0uWLHHcbozR1772NQUCAQ0dOjSjawFaotxsLwDwYu7cuTrqqKMS2ioqKhJ+nzNnjiRp7dq1evvttzVw4EDHOC+99JIuueQSdejQQePHj1e/fv0UCAS0Zs0azZkzR3/605+0dOlSrVixIuF+F1xwgXr06KF77rknzY9sr9raWp199tlatmyZrrrqKv385z9XKBTSihUrdM8992jBggVavHixvv71r2dk/oNFp06dtGLFCvXo0cPKfCUlJXr00UcdBcbSpUv1n//8RyUlJVbWAbQ4BmjB5s6daySZysrK/farrKw0kszw4cONJHPllVc6+qxfv94UFxebfv36mV27djluj8Vi5umnn3Ydv0uXLmb48OEH9iA8uOqqq4wks3DhQsdt69atM+Fw2PTu3ds0NzdnbA1u9uzZY3W+dOvSpYsZPXq09Xn3HbdXXHGFCYVCJhKJJNw+atQoc9JJJ5nevXubIUOGWF9fJtTW1ppYLJbtZaCV4GMXfCU8+uijkqQZM2Zo0KBBWrhwoWpraxP6zJw5U3v27NGDDz6ocDjsGCMQCGjEiBFW1vt5VVVVmjNnjs4880xdfPHFjtuPPPJI3XzzzVq7dq2ee+45SdL555+vLl26KBaLOfoPHDhQxx13XPx3Y4wefPBB9e3bV6FQSIcccoguuugirV+/PuF+Q4cOVZ8+ffTGG29o0KBBKioq0tixYyVJr732moYOHar27dsrFAqpc+fOuvDCCxO28W233aaBAweqXbt2Ki0t1XHHHadHH31U5gt/u7Jr164655xz9NJLL6lfv37xj5deeuklSXs/sujVq5eKi4t1wgkn6J133km4/5gxY9SmTRutXbtWp512moqLi3XooYdq/Pjxjn3+RW4fu0ydOlWBQEBr167VpZdeqnA4rLKyMo0dO1aRSCTh/rt27dIPf/hDtWvXTm3atNHw4cO1fv16BQIBTZ061THfpZdeKkl6/PHH422RSERPP/10fNt+kd/t+Oyzz+rYY49VYWGhunfvrl//+tcJ/fZ9jDh//nxNnDhR5eXlCoVCGjJkiN577z3H/O+8846+853vqF27diosLFS/fv30xz/+MaHPvo+VFi1apLFjx+rQQw9VUVGRGhoaXB8T8EUUH2gVotGompubE372qaur0+OPP67jjz9effr00dixY1VTU6Mnn3wyYYxFixaprKxMJ554ou3l79frr7+u5uZmnX/++Un77Ltt8eLFkqSxY8dq06ZNeu211xL6/etf/9LKlSt1+eWXx9uuvvpqTZgwQaeffrqee+45Pfjgg1q7dq0GDRqkTz/9NOH+W7du1ahRozRy5Ej9+c9/1rhx4/Txxx9r+PDhys/P15w5c/TKK69oxowZKi4uVmNjY/y+H3/8sa6++mr98Y9/1DPPPKMRI0bouuuu0//8z/84Hs/777+vyZMn6+abb9YzzzyjcDisESNGaMqUKfrtb3+radOm6Q9/+IMikYjOOecc1dXVJdy/qalJZ599tk477TQ999xzGj9+vB566CHX4s2rCy+8UEceeaSefvpp3XLLLVqwYIFuvPHG+O2xWEznnnuuFixYoJtvvlnPPvusBg4cqG9/+9tJxywtLdVFF10U/0hQ2luI5OTkJF2rn+24evVqTZgwQTfeeKOeffZZDRo0SDfccIPrx4M//elPtX79ev32t7/Vb3/7W23ZskVDhw5NKEJff/11DR48WLt27dLs2bP1/PPPq2/fvrr44otdvyczduxY5eXl6fe//72eeuop5eXlJd0WQIIsn3kB9mvf6Wu3n6amJmOMMY899piRZGbPnm2MMaampsa0adPGnHLKKQljFRYWmhNPPPGA1pHJj11mzJhhJJlXXnklaZ+6ujojyZx11lnGGGOamppMWVmZGTlyZEK/SZMmmfz8fPPZZ58ZY4xZsWKFkWTuvffehH6bN282oVDITJo0Kd42ZMgQI8n89a9/Tej71FNPGUlm9erVnh9TNBo1TU1N5vbbbzft27dPOB3fpUsXEwqFzP/+7//G21avXm0kmU6dOiV81PPcc88ZSeaFF16It40ePdpIMr/61a8S5rzzzjuNJLNs2bKEuT7/scuGDRuMJDN37tx425QpU4wkc/fddyeMN27cOFNYWBhf+5/+9CcjycyaNSuh3/Tp040kM2XKlHjb5z8ufP31140k849//MMYY8zxxx9vxowZY4wxX/qxy5dtx0Ag4NgvZ5xxhiktLY1vx33zH3fccQn3//jjj01eXp654oor4m1HHXWU6devX/y5tc8555xjOnXqZKLRaMLj+8EPfpB07cD+cOYDrcJjjz2mysrKhJ/c3L3fl3700UcVCoV0ySWXSJLatGmj7373u3rzzTf10UcfZWW9XzxT4/bxyIHYd4VNbm6uRo0apWeeeSb+0UA0GtXvf/97nXfeeWrfvr2kvV+wDQQCGjVqVMJ6ysvL9Y1vfMNxJcYhhxyib33rWwltffv2VX5+vq666irNmzfP8XHNPq+99ppOP/10hcNhBYNB5eXl6Re/+IW2b9+ubdu2OcY87LDD4r/36tVL0t6PfoqKihztGzdudMx32WWXJfw+cuRISXvfvR+I73znOwm/H3vssaqvr4+vfenSpZKk733vewn99n20ksyQIUPUo0cPzZkzR2vWrFFlZWXSj1wkf9uxd+/e+sY3vpHQNnLkSFVXV+vdd991tH/+Cq0uXbpo0KBB8e3173//W//617/i2/Xzx8vZZ5+trVu3at26dQljXnjhhft97EAyFB9oFXr16qUBAwYk/Eh7XzDfeOMNDR8+XMYY7dq1S7t27dJFF10kSQmnuzt37qwNGzZYWW+PHj2Ul5cX/7n99tuT9u3cubMk7Xdt+2474ogj4m1jx45VfX29Fi5cKEl69dVXtXXr1oSPXD799FMZY1RWVpawnry8PL311lv67LPPEubp1KmT62P5y1/+oo4dO+raa69Vjx491KNHD/3qV7+K91m5cqWGDRsmSXrkkUf0t7/9TZWVlbr11lslyfGxSbt27RJ+z8/P3297fX19Qntubm68wNqnvLxckg74suQvjldQUCDp/1/79u3blZub61hjWVnZfscNBAK6/PLLNX/+fM2ePVtHHnmkTjnlFNe+frfjvsfs1vbF7ZCs775++z6C+/GPf+w4VsaNGydJno4XwAsutUWrNmfOHBlj9NRTT+mpp55y3D5v3jzdcccdCgaDOvPMM3X//ffrrbfeyvj3Pl588cWEL9998bLgz/vmN7+p3NxcPffcc7rmmmtc++z7oukZZ5wRbzv66KN1wgknaO7cubr66qs1d+5cVVRUxP/zkqQOHTooEAjozTffjP9n+nlfbEuWXXLKKafolFNOUTQa1TvvvKP7779fEyZMUFlZmS655BItXLhQeXl5eumll1RYWOhYd7o1Nzdr+/btCQVDVVWVJGcRkS7t27dXc3OzduzYkVCA7Jt3f8aMGaNf/OIXmj17tu68886k/fxuR7e5k22HZH339evQoYMkafLkyUm/eP3FS73TnXWDgwdnPtBqRaNRzZs3Tz169NDrr7/u+Lnpppu0detWvfzyy5KkG2+8UcXFxRo3bpzjKgZp71Uhzz77bFrWdswxxyScpdlf8VFeXq6xY8fq1Vdf1RNPPOG4/cMPP9Rdd92l3r17O76Uevnll+vtt9/WsmXL9OKLL2r06NEKBoPx28855xwZY/TJJ584zhwNGDBAxxxzjK/HFQwGNXDgQP3mN7+RpPip/UAgoNzc3IS56+rq9Pvf/97X+H784Q9/SPh9wYIFkpSx0K4hQ4ZIkmMf7TvztD+HHXaYfvKTn+jcc8/V6NGjk/bzux3Xrl2r999/P6FtwYIFKikpSbjiSdr7RVfzuStmNm7cqOXLl8e319e//nX17NlT77//vuuxMmDAAHJJkDac+UCr9fLLL2vLli266667XP/D6dOnjx544AE9+uijOuecc9StWzctXLhQF198sfr27RsPGZOkDz74IH4W5YILLrD8SPZeBrxu3TqNGjVKb7zxhs4991wVFBTorbfe0j333KOSkhI9/fTTCf8pSXu/bzBx4kRdeumlamhoSEjzlKTBgwfrqquu0uWXX6533nlHp556qoqLi7V161YtW7ZMxxxzjH70ox/td22zZ8/Wa6+9puHDh6tz586qr6+Pf5x1+umnS5KGDx+umTNnauTIkbrqqqu0fft23XPPPa5nW9IhPz9f9957r3bv3q3jjz9ey5cv1x133KGzzjpLJ598ckbm/Pa3v63BgwfrpptuUnV1tfr3768VK1bosccekyTl5Oz/vdyMGTO+dA6/27GiokLf+c53NHXqVHXq1Enz58/X4sWLdddddyV8d0aStm3bpgsuuEBXXnmlIpGIpkyZosLCQk2ePDne56GHHtJZZ52lM888U2PGjNFhhx2mHTt26J///KfeffddxxVkwIGi+ECr9eijjyo/Pz/hOw6f16FDB11wwQV66qmn9Omnn6qsrEznnHOO1qxZo3vvvVezZ8/W5s2blZOTo27duunb3/62rrvuOsuPYq/i4mItXrxYjzzyiB577DE99thjampqUteuXXXFFVdo0qRJrh8nhMNhXXDBBVqwYIEGDx6sI4880tHnoYce0oknnqiHHnpIDz74oGKxmCoqKjR48GCdcMIJX7q2vn37atGiRZoyZYqqqqrUpk0b9enTRy+88EL8I55vfetbmjNnju666y6de+65Ouyww3TllVeqY8eO+uEPf5j6BvqCfR9NXH/99brjjjsUCoV05ZVX6pe//GXa59onJydHL774om666SbNmDFDjY2NGjx4sObPn68TTzxRbdu2TXkOv9uxb9++uvzyyzVlyhR99NFHqqio0MyZMxMuEd5n2rRpqqys1OWXX67q6mqdcMIJWrhwYULa6ze/+U2tXLlSd955pyZMmKCdO3eqffv2Ovroox1ftAVSETDmC8k1ANCCjRkzRk899ZR2796d7aVI2vsxx2WXXaa//e1vGjRokLV5u3btqj59+sTD2ZJZsmSJvvnNb+rJJ5+MfxEbyDbOfACAR48//rg++eQTHXPMMcrJydFbb72lX/7ylzr11FOtFh5Aa0fxAQAelZSUaOHChbrjjju0Z88ederUSWPGjNEdd9yR7aUBrQofuwAAAKu41BYAAFhF8QEAAKyi+AAAAFa1uC+cxmIxbdmyRSUlJUT3AgDQShhjVFNTo4qKii8N3WtxxceWLVsS/ngWAABoPTZv3qzDDz98v31aXPGx728HnKyzlau8LK8GaL12jBnouW9TcQYXkmaxfO99TQZOnlbMfDv9gwJfAc1q0jL92dPfAGpxxce+j1pylafcAMUHcKCC+YVf3un/xDLzJ1gyIpDl4oPXJSCJ/wvu8PKV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WpNm7X2+GPPl/3mnvfj47LPPFI1GVVZWltBeVlamqqoqR//p06frtttuc7Qv05/TvTTgK2vJsdleAQDsVVNTo3B4/5epZyznIxAIJPxujHG0SdLkyZM1ceLE+O+7du1Sly5dtGnTpi9dPLKvurpaRxxxhDZv3qzS0tJsLwdfgv3VurC/WpeDfX8ZY1RTU6OKioov7Zv24qNDhw4KBoOOsxzbtm1znA2RpIKCAhUUFDjaw+HwQbnzWqvS0lL2VyvC/mpd2F+ty8G8v7yeNEj7F07z8/PVv39/LV68OKF98eLFGjRoULqnAwAArUxGPnaZOHGivv/972vAgAE66aST9PDDD2vTpk265pprMjEdAABoRTJSfFx88cXavn27br/9dm3dulV9+vTRn//8Z3Xp0uVL71tQUKApU6a4fhSDlof91bqwv1oX9lfrwv7yLmC8XBMDAACQJvxtFwAAYBXFBwAAsIriAwAAWEXxAQAArKL4AAAAVrW44uPBBx9Ut27dVFhYqP79++vNN9/M9pIOetOnT9fxxx+vkpISdezYUeeff77WrVuX0McYo6lTp6qiokKhUEhDhw7V2rVrs7RifN706dMVCAQ0YcKEeBv7q2X55JNPNGrUKLVv315FRUXq27evVq1aFb+d/dVyNDc362c/+5m6deumUCik7t276/bbb1csFov3YX95YFqQhQsXmry8PPPII4+YDz74wNxwww2muLjYbNy4MdtLO6ideeaZZu7cueYf//iHWb16tRk+fLjp3Lmz2b17d7zPjBkzTElJiXn66afNmjVrzMUXX2w6depkqqurs7hyrFy50nTt2tUce+yx5oYbboi3s79ajh07dpguXbqYMWPGmLffftts2LDB/OUvfzH//ve/433YXy3HHXfcYdq3b29eeukls2HDBvPkk0+aNm3amPvuuy/eh/315VpU8XHCCSeYa665JqHtqKOOMrfcckuWVgQ327ZtM5LM0qVLjTHGxGIxU15ebmbMmBHvU19fb8LhsJk9e3a2lnnQq6mpMT179jSLFy82Q4YMiRcf7K+W5eabbzYnn3xy0tvZXy3L8OHDzdixYxPaRowYYUaNGmWMYX951WI+dmlsbNSqVas0bNiwhPZhw4Zp+fLlWVoV3EQiEUlSu3btJEkbNmxQVVVVwr4rKCjQkCFD2HdZdO2112r48OE6/fTTE9rZXy3LCy+8oAEDBui73/2uOnbsqH79+umRRx6J387+allOPvlk/fWvf9WHH34oSXr//fe1bNkynX322ZLYX15lJF79QHz22WeKRqOOv3xbVlbm+Au5yB5jjCZOnKiTTz5Zffr0kaT4/nHbdxs3brS+RkgLFy7Uu+++q8rKSsdt7K+WZf369Zo1a5YmTpyon/70p1q5cqWuv/56FRQU6Ac/+AH7q4W5+eabFYlEdNRRRykYDCoajerOO+/UpZdeKonnl1ctpvjYJxAIJPxujHG0IXvGjx+vv//971q2bJnjNvZdy7B582bdcMMNWrRokQoLC5P2Y3+1DLFYTAMGDNC0adMkSf369dPatWs1a9Ys/eAHP4j3Y3+1DE888YTmz5+vBQsWqHfv3lq9erUmTJigiooKjR49Ot6P/bV/LeZjlw4dOigYDDrOcmzbts1RQSI7rrvuOr3wwgt6/fXXdfjhh8fby8vLJYl910KsWrVK27ZtU//+/ZWbm6vc3FwtXbpUv/71r5WbmxvfJ+yvlqFTp046+uijE9p69eqlTZs2SeL51dL85Cc/0S233KJLLrlExxxzjL7//e/rxhtv1PTp0yWxv7xqMcVHfn6++vfvr8WLFye0L168WIMGDcrSqiDtrdjHjx+vZ555Rq+99pq6deuWcHu3bt1UXl6esO8aGxu1dOlS9l0WnHbaaVqzZo1Wr14d/xkwYIAuu+wyrV69Wt27d2d/tSCDBw92XLr+4Ycfxv8KOM+vlqW2tlY5OYn/dQaDwfiltuwvj7L4ZVeHfZfaPvroo+aDDz4wEyZMMMXFxebjjz/O9tIOaj/60Y9MOBw2S5YsMVu3bo3/1NbWxvvMmDHDhMNh88wzz5g1a9aYSy+9lEvLWpDPX+1iDPurJVm5cqXJzc01d955p/noo4/MH/7wB1NUVGTmz58f78P+ajlGjx5tDjvssPilts8884zp0KGDmTRpUrwP++vLtajiwxhjfvOb35guXbqY/Px8c9xxx8Uv50T2SHL9mTt3brxPLBYzU6ZMMeXl5aagoMCceuqpZs2aNdlbNBJ8sfhgf7UsL774ounTp48pKCgwRx11lHn44YcTbmd/tRzV1dXmhhtuMJ07dzaFhYWme/fu5tZbbzUNDQ3xPuyvLxcwxphsnnkBAAAHlxbznQ8AAHBwoPgAAABWUXwAAACrKD4AAIBVFB8AAMAqig8AAGAVxQcAALCK4gMAAFhF8QEAAKyi+AAAAFZRfAAAAKv+H3dQaA+kgCCYAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "FACT: axial_addressing\n", - "88.5 µs ± 5.34 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "HESS-I - OversamplingMapper:\n", + "Initialization time: \n", + "33.2 ms ± 328 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "25.5 µs ± 102 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGxCAYAAADCo9TSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA9GUlEQVR4nO3de1zUZf7//+ckOAICnpLDeiLFNM1qtTXRXdlMSs0sd93KbDVrN1fbcm0/ltF3xVahD5VZ62ZZrtmnzA7moawUM2k3s9CyXNrUBBFLIk+AJxC4fn/0c9YJBpxxuGDgcb/d5nZz3tf7PddrLsbhyXtmXuMwxhgBAABYcl59FwAAAJoWwgcAALCK8AEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArCJ8AAAAqwgfAADAKsIH6t3zzz8vh8OhLVu2VDt+7bXXqkuXLm7bunTpIofDUe0lMTHRbd+PP/5YN9xwgzp16iSn06moqCgNGDBA9957r9t+p06d0jPPPKPLL79cbdq0UWhoqDp37qxRo0ZpxYoVZ3VfHA6H7rrrrrO+79549913NWLECJ1//vlyOp3q2LGjxo8fry+//LJO5mvsJkyYUO3jasKECXU67549e1yP1ZSUlGr3mThxomsfoDEKqu8CAF8NHDhQjz76aJXtERERrn+vWbNG1113nRITE5Wenq6YmBjt379fW7Zs0bJly/TYY4+59r311lv1xhtvaOrUqZo1a5acTqdycnL07rvvau3atbrhhhus3K/qTJ8+XY888oiuueYaPfXUU4qKitLOnTs1d+5c/fSnP9XSpUs1evToequvsVixYoXb46cuhYeH6/nnn9df/vIXnXfef/8OPHr0qF577TVFRESouLjYSi2AdQaoZ4sXLzaSTFZWVrXjI0aMMJ07d3bb1rlzZzNixIhab/sXv/iF6dq1qzl16lSVsYqKCte/c3JyjCTzl7/8pdrbOXPfmkgyU6ZMOat9z9bSpUuNJPOHP/yhytjRo0dN3759TWhoqNm9e7df563NsWPHrM7nb+PHj6/yuLIhNzfXSDJ33HGHkWTWrVvnNv7cc8+ZkJAQM27cONNYnqLLy8vNyZMn67sMNCC87IJG7eDBg2rXrp2Cgqqe5Dvzr82DBw9KkmJiYqq9nTP3tW3OnDlq3bp1tWd5wsLC9Le//U3Hjx/X448/LkmaN2+eHA6Hvv766yr733fffWrevLkOHDjg2rZ+/XoNGTJEERERCg0N1cCBA/Xee++5HZeSkiKHw6FPP/1Uv/71r9W6dWt17dpVkpSTk6ObbrpJsbGxrpe1hgwZom3btrmOf+WVV5SUlKSYmBiFhISoZ8+euv/++3Xs2DG3eSZMmKCWLVvqq6++0tVXX62wsDDFxMTo4YcfliRt3rxZgwYNUlhYmLp3764lS5a4HX/6JbyMjAzddtttatOmjcLCwjRy5Ejl5OTUutY/ftll48aNcjgcevnll5WcnKzY2FhFREToqquu0o4dO9yONcYoNTVVnTt3VosWLdSvXz9lZGQoMTGxykuBknThhRcqISFB//jHP9y2/+Mf/9Do0aMVGRlZ5Rhv1zE7O1tDhgxRWFiYzj//fN111106fvy4276nXyp85pln1L17dzmdTl100UVatmxZlfkLCgp05513qkOHDmrevLni4uI0a9YslZeXu/Y5/bJSenq6Zs+erbi4ODmdTr3//vse1x1ND+EDDUZFRYXKy8urXIyHL142xtS6/4ABA/Txxx/r7rvv1scff6xTp05Ve1s9e/ZUq1atNGvWLC1cuFB79uypi7votf379ys7O1tJSUkKDQ2tdp8BAwaoffv2ysjIkCSNGzdOzZs31/PPP++2X0VFhV588UWNHDlS7dq1kyS9+OKLSkpKUkREhJYsWaJXX31Vbdq00dVXX10lgEjS6NGj1a1bN7322mt6+umnJUnDhw/X1q1blZ6eroyMDC1YsECXXXaZjhw54jpu165dGj58uBYtWqR3331XU6dO1auvvqqRI0dWmePUqVMaPXq0RowYoVWrVmnYsGGaMWOGHnjgAY0fP14TJ07UihUrdOGFF2rChAnaunVrldu4/fbbdd5552np0qWaN2+ePvnkEyUmJrrV5I0HHnhAeXl5eu6557Rw4ULt2rVLI0eOVEVFhWuf5ORkJScn65prrtGqVas0adIk3XHHHdq5c6fH27399tu1cuVKHT58WJK0Y8cObdq0Sbfffnu1+3u7jsOHD9eQIUO0cuVKV8C48cYbq+y7evVqPfnkk3rooYf0+uuvq3Pnzrr55pv1+uuvu/YpKCjQz372M61du1Z/+ctf9M477+j2229XWlqafve731W5zSeffFIbNmzQo48+qnfeeUc9evTwvMBoeur3xAvw35ddarpU97KLp33/+te/uvY7cOCAGTRokGssODjYJCQkmLS0NFNSUuJ2m2vWrDHt2rVz7du2bVszZswYs3r16rO+L/Lzyy6bN282ksz9999f4379+/c3ISEhruujR482HTp0cHu56O233zaSzJtvvmmM+eFlkzZt2piRI0e63VZFRYW55JJLzM9+9jPXtpkzZ1b7stSBAweMJDNv3ryzvk+VlZXm1KlTJjMz00gyn3/+uWts/PjxRpJZvny5a9upU6fM+eefbySZTz/91LX94MGDplmzZmbatGmubacfSzfccIPbnB9++KGRZGbPnu02V3WPq/Hjx7uuv//++0aSGT58uNt+r776qpFkPvroI2OMMYcOHTJOp9PceOONbvt99NFHRpIZPHiwa9vpl10eeeQRU1JSYlq2bGnmz59vjDHmf/7nf0xcXJyprKw0U6ZMqfFll7NZxyeeeMLtmDlz5hhJ5l//+pdrmyQTEhJiCgoKXNvKy8tNjx49TLdu3Vzb7rzzTtOyZUuTl5fndpuPPvqokWSys7Pd7l/Xrl1NWVmZx/rRtHHmAw3GCy+8oKysrCqXQYMGVbv/oEGDqt3/zL8a27Ztq3/+85/KysrSww8/rFGjRmnnzp2aMWOGLr74YreXH4YPH669e/dqxYoV+vOf/6xevXpp5cqVuu6669w+wfLjMzSVlZVe3c/Kykq348/869lXxhi3T0bcdttt2rdvn9avX+/atnjxYkVHR2vYsGGSpE2bNunQoUMaP358lftzzTXXKCsrq8rp/F/96ldu19u0aaOuXbvqkUce0dy5c/XZZ59Vux45OTkaO3asoqOj1axZMwUHB2vw4MGSpP/85z9u+zocDg0fPtx1PSgoSN26dVNMTIwuu+wyt7nbt2+vvLy8KvPdcsstbtcTEhLUuXNnn0/9X3fddW7X+/TpI0muuTdv3qzS0lL95je/cdvviiuuqPKJmjO1bNlSY8aM0T/+8Q+Vl5frhRde0G233ebxUy7erKNUdR3Gjh0rSVXWYciQIYqKinJdb9asmW688UZ9/fXX2rdvnyTprbfe0i9/+UvFxsa6PV5OP54yMzPdbvO6665TcHCwx/uOpo1Pu6DB6Nmzp/r161dle2RkpPLz86vdXt3+1enXr59r31OnTum+++7T448/rvT0dKWnp7v2CwkJ0fXXX6/rr79ekrR3714NGzZMf//73/WHP/xBvXr1UteuXd1+4c2cOdPjRyarM3HiRLf3KgwePFgbN26sdt9OnTpJknJzc2u8zby8PHXs2NF1fdiwYYqJidHixYuVlJSkw4cPa/Xq1brnnnvUrFkzSdJ3330nSfr1r3/t8XYPHTqksLAw1/UfvyfG4XDovffe00MPPaT09HTde++9atOmjW655RbNmTNH4eHhOnr0qH7+85+rRYsWmj17trp3767Q0FDl5+dr9OjROnHihNtthoaGqkWLFm7bmjdvrjZt2lSpr3nz5jp58mSV7dHR0dVuO/3eHm+1bdvW7brT6ZQkV+2nb/fMX+CnVbftTLfffrsGDRqkOXPm6Pvvv/f4UV9v1zEoKKhK3afX5cfr4Gm9Tu/boUMHfffdd3rzzTc9Boozg7zk+f1TgET4QBMUHBysmTNn6vHHH9e///3vGvft1KmTfv/732vq1KnKzs5Wr1699Oabb6q0tNS1T2xsrFfzp6SkuJ1JCQ8P97hvTEyMevXqpXXr1un48ePVvu/jo48+0nfffacxY8a4tjVr1ky33nqrnnzySR05ckRLly5VaWmpbrvtNtc+p9/38be//U1XXHFFtfP/+BdndX+Rd+7cWYsWLZIk7dy5U6+++qpSUlJUVlamp59+Whs2bNC3336rjRs3uv5Kl+Tz+y/ORkFBQbXbunXrVifznf4lfzrQ/Xjems5+DBw4UBdeeKEeeughDR061C1EnsnbdSwvL9fBgwfdAsjpdflxKPG0Xmfu265dO/Xp00dz5sypdr4f/z+gRwlqQvhAo7Z///5q/wI7fYr69BNmSUmJHA6HWrZsWeu+F1988TnV1KVLlxp/Gf1YcnKyxo4dqz//+c966qmn3MaOHTumu+++W6GhofrTn/7kNnbbbbcpPT1dL7/8sp5//nkNGDDA7U1/AwcOVKtWrfTll1/6rTFa9+7d9eCDD2r58uX69NNPJf33l9DpswWnPfPMM36ZszovvfSS20tEmzZtUl5enu644446ma9///5yOp165ZVX3PqtbN68WXl5ebX+vB988EG9/vrrmjJlisd9fFnHl156SXfffbfr+tKlSyWpyqdv3nvvPX333XeusFlRUaFXXnlFXbt2VYcOHST90Ozv7bffVteuXdW6desa7w9QG8IHAtaRI0e0efPmKtudTqfrvQFXX321OnTo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Fi0yX375pZk6daoJCwsze/bsqe/SrCgpKTGfffaZ+eyzz4wkM3fuXPPZZ5+5Pmr88MMPm8jISPPGG2+Y7du3m5tvvrlRfwzsD3/4g4mMjDQbN250+zjY8ePHXfs0tTWZMWOG+eCDD0xubq754osvzAMPPGDOO+88s27dOmNM01sPT878tIsxTW9d7r33XrNx40aTk5NjNm/ebK699loTHh7uei5tauthzA8fww4KCjJz5swxu3btMi+99JIJDQ01L774omufprguFRUVplOnTua+++6rMlaX69Ggwocxxvz97383nTt3Ns2bNzc//elPXR+rbAref/99I6nKZfz48caYHz4KNnPmTBMdHW2cTqf5xS9+YbZv316/Rdeh6tZCklm8eLFrn6a2JhMnTnT9/zj//PPNkCFDXMHDmKa3Hp78OHw0tXU53Y8hODjYxMbGmtGjR5vs7GzXeFNbj9PefPNN07t3b+N0Ok2PHj3MwoUL3cab4rqsXbvWSDI7duyoMlaX6+EwxphzP38CAABwdhrMez4AAEDTQPgAAABWET4AAIBVhA8AAGAV4QMAAFhF+AAAAFYRPgAAgFWEDwAAYBXhAwAAWEX4AAAAVhE+AACAVf8f/svzaOVBmicAAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - "HESS-I: oversampling\n", - "86.5 µs ± 943 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + "HESS-II - OversamplingMapper:\n", + "Initialization time: \n", + "133 ms ± 1.56 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "Mapping time: \n", + "33 µs ± 923 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGxCAYAAABIjE2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA4T0lEQVR4nO3deXzU1b3/8feQZUhCCBB+ZGENNbci4AZcK6DEBaiyqNQNUHHrVQE1RgtGbA1UEwwVaYti4SqgSEErCqJXSVVAipWwKcZeFEHWhAiGJEJISHJ+f3CZOswEGJzkeya8no/HPNo5cybzycmQfPzO9/09LmOMEQAAgEWaOF0AAADA8WhQAACAdWhQAACAdWhQAACAdWhQAACAdWhQAACAdWhQAACAdWhQAACAdWhQAACAdWhQYK05c+bI5XJp7dq1fh8fPHiwOnXq5DXWqVMnuVwuv7e0tDSvuZ9++qmuu+46dejQQW63WwkJCbr44ov18MMPe807cuSI/vKXv6hXr15q1aqVoqOj1bFjR11zzTV68803T+l7cblcGjt2rOf+t99+K5fLpT/84Q+n9PxAGGM0f/58XX755WrZsqXcbrc6d+6sMWPGaOfOnUF/vTNBWlqaz/vH5XIpKyurXl93+fLlnvfvnDlz/M65/PLL5XK5fP4tAKEu3OkCgGDr06eP3z/8zZs39/z/d955R0OHDlVaWppyc3OVlJSkwsJCrV27VgsWLNAzzzzjmXvrrbdq0aJFSk9P18SJE+V2u7V161a99957ev/993Xdddc1yPd1KmprazVixAgtXLhQw4cP15w5cxQXF6fPP/9cU6ZM0fz587V06VL16dPH6VJD3ieffKJ27do1yGvFxsbqxRdf1O233+41vm3bNi1fvtzrvQ00FjQoaHRatGihX/ziFyeck5ubq5SUFL3//vsKD//3P4Obb75Zubm5nvvbtm3TwoUL9bvf/U4TJ070jF9xxRX69a9/rdra2uB/Az/B008/rYULF2ry5MkaP368ZzwtLU033XSTLrroIv3qV7/S//7v/6pFixYNVtehQ4cUHR3dYK/XEE72Hgumm266Sf/93/+tr7/+WqmpqZ7xl156SW3btlX37t315ZdfNlg99enIkSNyuVxe/y5xZuIjHpyR9u/fr9atW/v9JdikSROveZKUlJTk9+v8eK7TqqqqNGXKFHXp0kXjxo3zeTwhIUE5OTnau3evXnzxRUlSenq6YmJiVFZW5jP/pptuUkJCgo4cOeIZW7hwoS6++GLFxMSoWbNmGjhwoDZs2OD1vNtvv13NmjXTpk2bNGDAAMXGxuqKK66QJG3YsEGDBw9WmzZt5Ha7lZycrEGDBmnXrl2e5z/33HO69NJL1aZNG8XExKh79+7Kzc31qkM62nR169ZNn3zyiXr37q2oqCh16tRJs2fPlnT0KNmFF16o6Ohode/eXe+9957X87OysuRyubRhwwYNGzZMzZs3V1xcnG655RZ99913J13v4z/iOfaR5EcffaT77rtPrVu3Vnx8vIYNG6Y9e/Z4PbeyslIPP/ywEhMTFR0drUsvvVTr1q1Tp06dfI6SSFL//v3Vvn17vfTSS56x2tpazZ07V6NGjfL7Pgx0HT/++GP94he/UFRUlNq2bavf/va3qqmp8cw79rFkbm6unnrqKXXo0EFNmzZVz5499cEHH/i8/tdff60RI0Z4ftZdunTRc8895zXn2EdYr7zyih5++GG1bdtWbrdbW7ZsOeHa48xgz29XoA41NTWqrq72udW1Ebcx5qTzL774Yn366ad64IEH9Omnn/r80j6mS5cuatGihSZOnKiZM2fq22+/rY9vMSjWrVunkpISDR06VC6Xy++cIUOGqEmTJsrLy5Mk3XnnnTp06JBee+01r3kHDhzQ4sWLdcsttygiIkKSlJ2dreHDh+ucc87Ra6+9pldeeUXl5eW65JJLfP7rvaqqSkOHDtXll1+uxYsXa+LEiTp48KD69++vvXv36rnnnlNeXp6mTZumDh06qLy83PPcb775RiNGjNArr7yipUuX6q677tKUKVN0zz33+Hw/RUVFuuOOO3T33Xdr8eLF6t69u+68805NmjRJmZmZGjdunN544w01a9ZM1157rU+jIEnXXXedzjrrLP3tb39TVlaW3nrrLQ0cOLDO98TJ3H333YqIiND8+fOVm5ur5cuX65ZbbvGac8cdd2jatGm64447tHjxYv3qV7/SddddpwMHDvj9mk2aNNHtt9+ul19+2dM0LFu2TLt27dIdd9zh9zmBruPNN9+skSNHavHixbr++uv15JNP6sEHH/SZO336dL333nuaNm2a5s2bpyZNmuiqq67SJ5984pnz5ZdfqlevXvriiy/0zDPPaOnSpRo0aJAeeOABryORx2RmZmrHjh164YUX9Pbbb6tNmzZ1ri/OIAaw1OzZs42kE946duzo9ZyOHTvWOff3v/+9Z96+fftM3759PY9FRESY3r17m5ycHFNeXu71Nd955x3TunVrz9z4+Hhzww03mCVLlpzy9yLJjBkzxnN/27ZtRpKZMmXK6S2OHwsWLDCSzAsvvHDCeQkJCaZLly6e+xdeeKHp3bu315znn3/eSDKbNm0yxhizY8cOEx4ebu6//36veeXl5SYxMdHceOONnrFRo0YZSeall17ymrt27Vojybz11lun/D3V1NSYI0eOmJdfftmEhYWZ77//3vNYv379jCSzdu1az9j+/ftNWFiYiYqKMrt37/aMb9y40Ugyf/rTnzxjTzzxhJFkHnroIa/XfPXVV40kM2/ePK/X6tevn9c8SeaJJ57w3D/2fh09erTXvNzcXCPJFBYWGmOMKSgoMJLM+PHjveb99a9/NZLMqFGjPGMfffSRkWRef/11s3XrVuNyuczSpUuNMcbccMMNJi0tzRhjzKBBg3z+LfzYqazj4sWLvZ7z61//2jRp0sRs377dGPPv92xycrKpqKjwzCsrKzOtWrUyV155pWds4MCBpl27dqa0tNTra44dO9Y0bdrU8/rHvr9LL720ztpx5uIICqz38ssvKz8/3+fWt29fv/P79u3rd/5dd93lmRMfH6+PP/5Y+fn5mjx5sq655hp99dVXyszMVPfu3bVv3z7P3Kuvvlo7duzQm2++qUceeURdu3bVW2+9paFDh3olc44/0hOM81Pq42saY7yOsNxxxx1avXq1Nm/e7BmbPXu2evXqpW7dukmS3n//fVVXV+u2227zqqdp06bq16+fli9f7vM6v/rVr7zun3XWWWrZsqXGjx+vF154oc5zJjZs2KChQ4cqPj5eYWFhioiI0G233aaamhp99dVXXnOTkpLUo0cPz/1WrVqpTZs2Ov/885WcnOwZ79KliyRp+/btPq83cuRIr/s33nijwsPD9dFHH/mt72SGDh3qdf/cc8/1eu0VK1Z4XufHrr/++hOed5GSkqK0tDS99NJL2r9/vxYvXqw777yzzvmBrGNsbKxP3SNGjFBtba1WrlzpNT5s2DA1bdrU67lDhgzRypUrVVNTo8OHD+uDDz7Qddddp+joaK/3y9VXX63Dhw/rn//8p9fXPP69Akh8xIMQ0KVLF/Xs2dPnFhcX53d+XFyc3/n+ziPp2bOnxo8fr9dff1179uzRQw89pG+//dbrRFlJioqK0rXXXqspU6ZoxYoV2rJli8455xw999xzKigokCT97Gc/U0REhOc2adKkn/y9X3HFFV5f80R/kDp06CDp6Im9dTl48KD27dun9u3be8ZGjhwpt9vtibF++eWXys/P9/roYO/evZKkXr16edUTERGhhQsXejV0khQdHe2TLImLi9OKFSt0/vnn67HHHlPXrl2VnJysJ554wvNxyo4dO3TJJZdo9+7d+uMf/+hpIo+du1BRUeH1NVu1auXzPUZGRvqMR0ZGSpIOHz7sMz8xMdHrfnh4uOLj4z3nHwUqPj7e677b7Zb079qPfd2EhAS/r3sid911l95++21NnTpVUVFRuv766/3OC3Qdj69F+ve6HL8Ox6/XsbGqqir98MMP2r9/v6qrq/XnP//Z571y9dVXS5LP+6Wuc7xwZuM0aeD/RERE6IknntCzzz6rL7744oRzO3TooP/6r/9Senq6CgoK1LVrV7399tuqrKz0zPnxf8Gfrr/85S9e52e0bt26zrk9evRQy5YttWTJEuXk5Pg9D2XJkiWqra1V//79PWMtW7bUNddco5dffllPPvmkZs+eraZNm2r48OE+r/u3v/1NHTt2PGnddZ0D0717dy1YsEDGGH3++eeaM2eOJk2apKioKD366KN66623dPDgQS1atMjrdTZu3HjS1zxdRUVFatu2red+dXW19u/ff9Jm4XQd+7p79+71+7onMmzYMI0ZM0aTJ0/Wr3/9a0VFRfmdF+g6HmtAf6yoqMir3uPHjx+LjIxUs2bNFBERobCwMN16660aM2aM39dLSUnxul/X+wVnNhoUnJEKCwv9/lfbv/71L0n/bi7Ky8vlcrnUrFmzk87t3r170Ov8+c9/fspzIyMj9Zvf/EaPPfaYpkyZ4pPkKS4uVmZmphISEnT33Xd7PXbHHXfotdde07vvvqt58+bpuuuu84ohDxw4UOHh4frmm2+Ccjje5XLpvPPO07PPPqs5c+Zo/fr1nnHp30cdpKMfSc2aNesnv2ZdXn31Va+PiV577TVVV1f7XJgtWC699FJJRxNRF154oWf8b3/7m6qrq0/43KioKP3ud7/TypUrdd9999U5L9B1LC8v15IlS7w+5pk/f76aNGniqfeY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xfo7h7V3TrDW/lQPLDjyoW5kZKR69OihvLw8r/G8vDz17t3biZIAAIBFHPuIJyMjQ7feeqt69uypiy++WDNnztSOHTt07733OlUSAACwhGMNyk033aT9+/dr0qRJKiwsVLdu3fTuu++qY8eOJ32u2+3WE0884fdjH9Q/1t85rL2zWH/nsPbOcWrtXeZUsj4AAAANyM4LCwAAgDMaDQoAALAODQoAALAODQoAALAODQoAALBOSDYozz//vFJSUtS0aVP16NFDH3/8sdMlNTo5OTnq1auXYmNj1aZNG1177bXavHmz1xxjjLKyspScnKyoqCilpaWpoKDAoYobr5ycHLlcLqWnp3vGWPv6tXv3bt1yyy2Kj49XdHS0zj//fK1bt87zOOtfP6qrq/X4448rJSVFUVFR6ty5syZNmqTa2lrPHNY+eFauXKkhQ4YoOTlZLpdLb731ltfjp7LWlZWVuv/++9W6dWvFxMRo6NCh2rVrV3AKNCFmwYIFJiIiwsyaNct8+eWX5sEHHzQxMTFm+/btTpfWqAwcONDMnj3bfPHFF2bjxo1m0KBBpkOHDuaHH37wzJk8ebKJjY01b7zxhtm0aZO56aabTFJSkikrK3Ow8sZlzZo1plOnTubcc881Dz74oGecta8/33//venYsaO5/fbbzaeffmq2bdtm/v73v5stW7Z45rD+9ePJJ5808fHxZunSpWbbtm3m9ddfN82aNTPTpk3zzGHtg+fdd981EyZMMG+88YaRZN58802vx09lre+9917Ttm1bk5eXZ9avX28uu+wyc95555nq6uqfXF/INSj/+Z//ae69916vsbPPPts8+uijDlV0ZiguLjaSzIoVK4wxxtTW1prExEQzefJkz5zDhw+buLg488ILLzhVZqNSXl5uUlNTTV5enunXr5+nQWHt69f48eNN375963yc9a8/gwYNMnfeeafX2LBhw8wtt9xijGHt69PxDcqprPWBAwdMRESEWbBggWfO7t27TZMmTcx77733k2sKqY94qqqqtG7dOg0YMMBrfMCAAVq9erVDVZ0ZSktLJUmtWrWSJG3btk1FRUVePwu3261+/frxswiSMWPGaNCgQbryyiu9xln7+rVkyRL17NlTN9xwg9q0aaMLLrhAs2bN8jzO+tefvn376oMPPtBXX30lSfrss8+0atUqXX311ZJY+4Z0Kmu9bt06HTlyxGtOcnKyunXrFpSfh2OXuj8d+/btU01Njc+OxwkJCT47IyN4jDHKyMhQ37591a1bN0nyrLe/n8X27dsbvMbGZsGCBVq/fr3y8/N9HmPt69fWrVs1Y8YMZWRk6LHHHtOaNWv0wAMPyO1267bbbmP969H48eNVWlqqs88+W2FhYaqpqdFTTz2l4cOHS+K935BOZa2LiooUGRmpli1b+swJxt/kkGpQjnG5XF73jTE+YwiesWPH6vPPP9eqVat8HuNnEXw7d+7Ugw8+qGXLlqlp06Z1zmPt60dtba169uyp7OxsSdIFF1yggoICzZgxQ7fddptnHusffAsXLtS8efM0f/58de3aVRs3blR6erqSk5M1atQozzzWvuGczloH6+cRUh/xtG7dWmFhYT6dWXFxsU+Xh+C4//77tWTJEn300Udq166dZzwxMVGS+FnUg3Xr1qm4uFg9evRQeHi4wsPDtWLFCv3pT39SeHi4Z31Z+/qRlJSkc845x2usS5cu2rFjhyTe+/XpN7/5jR599FHdfPPN6t69u2699VY99NBDysnJkcTaN6RTWevExERVVVWppKSkzjk/RUg1KJGRkerRo4fy8vK8xvPy8tS7d2+HqmqcjDEaO3asFi1apA8//FApKSlej6ekpCgxMdHrZ1FVVaUVK1bws/iJrrjiCm3atEkbN2703Hr27KmRI0dq48aN6ty5M2tfj/r06eMTqf/qq688O63z3q8/hw4dUpMm3n+WwsLCPDFj1r7hnMpa9+jRQxEREV5zCgsL9cUXXwTn5/GTT7NtYMdixi+++KL58ssvTXp6uomJiTHffvut06U1Kvfdd5+Ji4szy5cvN4WFhZ7boUOHPHMmT55s4uLizKJFi8ymTZvM8OHDifvVkx+neIxh7evTmjVrTHh4uHnqqafM119/bV599VUTHR1t5s2b55nD+tePUaNGmbZt23pixosWLTKtW7c248aN88xh7YOnvLzcbNiwwWzYsMFIMlOnTjUbNmzwXLbjVNb63nvvNe3atTN///vfzfr1683ll19+5saMjTHmueeeMx07djSRkZHmwgsv9ERfETyS/N5mz57tmVNbW2ueeOIJk5iYaNxut7n00kvNpk2bnCu6ETu+QWHt69fbb79tunXrZtxutzn77LPNzJkzvR5n/etHWVmZefDBB02HDh1M06ZNTefOnc2ECRNMZWWlZw5rHzwfffSR39/zo0aNMsac2lpXVFSYsWPHmlatWpmoqCgzePBgs2PHjqDU5zLGmJ9+HAYAACB4QuocFAAAcGagQQEAANahQQEAANahQQEAANahQQEAANahQQEAANahQQEAANahQQEAANahQQEAANahQQEAANahQQEAANb5//lDc1t06ZbNAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HESS-I: rebinning\n", - "93.7 µs ± 2.89 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HESS-I: nearest_interpolation\n", - "87.5 µs ± 2.34 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HESS-I: bilinear_interpolation\n", - "93.9 µs ± 158 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HESS-I: bicubic_interpolation\n", - "119 µs ± 2.85 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HESS-I: image_shifting\n", - "81.3 µs ± 357 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HESS-I: axial_addressing\n", - "85 µs ± 5.73 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HESS-II: oversampling\n", - "98.3 µs ± 4.29 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HESS-II: rebinning\n", - "106 µs ± 239 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HESS-II: nearest_interpolation\n", - "99.4 µs ± 4.06 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HESS-II: bilinear_interpolation\n", - "110 µs ± 657 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HESS-II: bicubic_interpolation\n", - "161 µs ± 556 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HESS-II: image_shifting\n", - "83.7 µs ± 180 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HESS-II: axial_addressing\n", - "89.5 µs ± 3.04 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SCTCam: oversampling\n", - "118 µs ± 3.12 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SCTCam: rebinning\n", - "138 µs ± 3.48 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SCTCam: nearest_interpolation\n", - "119 µs ± 5.82 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SCTCam: bilinear_interpolation\n", - "144 µs ± 4.47 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SCTCam: bicubic_interpolation\n", - "247 µs ± 2.44 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SCTCam: image_shifting\n", - "118 µs ± 5.38 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SCTCam: axial_addressing\n", - "116 µs ± 4.45 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CHEC: oversampling\n", - "86.5 µs ± 2.7 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CHEC: rebinning\n", - "93.5 µs ± 3.34 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CHEC: nearest_interpolation\n", - "88.6 µs ± 1.94 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CHEC: bilinear_interpolation\n", - "97.6 µs ± 6.86 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CHEC: bicubic_interpolation\n", - "118 µs ± 9.55 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CHEC: image_shifting\n", - "84.4 µs ± 291 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CHEC: axial_addressing\n", - "85.9 µs ± 2.87 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ASTRICam: oversampling\n", - "85.8 µs ± 939 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ASTRICam: rebinning\n", - "93.5 µs ± 5.88 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ASTRICam: nearest_interpolation\n", - "87.1 µs ± 4.06 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ASTRICam: bilinear_interpolation\n", - "95.2 µs ± 1.82 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ASTRICam: bicubic_interpolation\n", - "118 µs ± 5.66 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ASTRICam: image_shifting\n", - "85.6 µs ± 1.58 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ASTRICam: axial_addressing\n", - "85.7 µs ± 2.23 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# Plot mapped images for each camera type and hexagonal mapping method\n", - "for cam in camera_types:\n", - " for method in hex_methods:\n", - " print('{}: {}'.format(cam, method))\n", - " %timeit mappers[method].map_image(test_pixel_values[cam], cam)\n", - " image = mappers[method].map_image(test_pixel_values[cam], cam)\n", - " plot_image(image)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "LSTCam: unmasked - masked\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "FlashCam: unmasked - masked\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "NectarCam: unmasked - masked\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "DigiCam: unmasked - masked\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "VERITAS: unmasked - masked\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MAGICCam: unmasked - masked\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "FACT: unmasked - masked\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HESS-I: unmasked - masked\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HESS-II: unmasked - masked\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SCTCam: unmasked - masked\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CHEC: unmasked - masked\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ASTRICam: unmasked - masked\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAEQxJREFUeJzt3V2MXOV9x/Hvb8cvazAYG7DrxKSGxkLQtNiSRWncC8JL5FIac1FQIlFtJSRLVSIRKRIypa9SL7iiuakiuQXFUkgKaoJwKSWxNkFR1IjGJCaY2uAkMoTY2S3mNYBfdvffiz3Gcw72zszOOWfOzvP7SKOZ5+yZPf+dnf8883/Oc85RRGBm6RkZdABmNhhOfrNEOfnNEuXkN0uUk98sUU5+s0Q5+c0S5eQ3S5ST3yxRi+rc2JKRZbGsdUGdm6zH4lauefzi/Ms6euS9Dx57QmU1VGgfX3derj362nR+hVNT1QY0IG9P/d9rEXFpN+vWmvzLWhfwyYv/rM5N1iJWr8q1D/1Fvv3xv9l3Zt0hfdMNmlr5D+CX7tmYa1/5L2/m1584VnlMg/DUxFde7nZdf+03S5ST3yxRTn6zRNVa8w+rWJJ/GbXuvfzP2+r8mDpVS0ypW/6xt3PtD/2P6gymodzzmyXKyW+WKCe/WaJc89tQmglX9Z245zdLlJPfLFFOfrNEueavQLjetAXAPb9Zopz8Zony1/4y9HKQvnr8vI2Z3tY3wOdN6IZ7frNEOfnNEuXkN0tUVzW/pMPAO8A0MBURmyWtAh4B1gOHgTsi4o1qwlxgCrv6NHKmHdPFlTvwGIFVpJd31qciYmNEbM7aO4DxiNgAjGdtM1sg+vnavw3YlT3eBdzWfzhmVpdukz+A70h6VtL2bNmaiDgKkN2vriJAM6tGt/v5t0TEEUmrgT2SDna7gezDYjvA6MjyeYTYpcKpmzlvWa45c+GZ9szSxaVu+via0Vx71YrXc+2YqXGnc3GMINExgMtW5k/V/c7ll+Xa551X3ntg5P386dhbb+VP48Zv3s23p3sd+KlGVz1/RBzJ7ieBx4BrgQlJawGy+8lzPHdnRGyOiM1LRpadbRUzG4COyS/pfEkXnH4MfBrYD+wGxrLVxoDHqwrSzMrXzdf+NcBjkk6v//WIeErSj4BHJd0FvALcXl2YZla2jskfEb8ArjnL8mPAjVUENS+FGv+tTWty7Ylr2/a1f+R4qZtefkH+NNEP/u7Xc+37+GSp2+tJr/MEylTneENhW/915ZO59p9+YWuu/et3y7tm5LFfXpRrr/lBfmxr1TOFivit/PtlUDzDzyxRTn6zRDn5zRI1NMfzt+/Hh3yND/Dxv3/uTGO62lr0r2NLfkHbhP72ef51qHWOQVGN4w3Fv3PrxzYX1ngt17pkpLxLdF9SmGPy4j/9Xq694uB5uXbLNb+ZDZKT3yxRTn6zRA1PzV+Yrz+z9kR+hbY6P6XLZNc5xjDQ8YWC6DB/vufzKsyh2INefFn+uIKZZefn2oWjUAbGPb9Zopz8Zoly8pslamhqfhu84vhCk8YA6rRQLtfmnt8sUU5+s0Q5+c0SNbw1/1zlps+Fb3Vq6IUD3fObJcrJb5ao4f3aXyaXCdaDGe/qM7Mmc/KbJcrJb5aooan5VdidslCmWA4zT/dtNvf8Zoly8pslyslvlqh6a/7WCFyYXSZpUbknMzq5YkmuvWjpAE/V5ctkn1WVpxRr0njChaP5y8GduHhFrr1ozcWlbUunCucjm+j+ue75zRLl5DdLlJPfLFFd1/ySWsBe4FcRcaukVcAjwHrgMHBHRLwx1+84deFifn3TbwFw/JJ5RnwOJ1bma76brvjfXPvlcjfXm0FeJrtOAxzbqPsyaHO574r/zLX/8vY7c+14PX9J736MThTeW//Y/XN7eVfeDRxoa+8AxiNiAzCetc1sgegq+SWtA/4E+Ne2xduAXdnjXcBt5YZmZlXqtuf/MnAP0P69bk1EHAXI7lef7YmStkvaK2nv1Pvv9hWsmZWnY80v6VZgMiKelXR9rxuIiJ3AToAVrUtizcPPzy7vcDmlfr08x6mTmlQfDpOYSWRso6A4x+CBqzbl2ht0gMq08q/5wR6e2s2A3xbgM5JuAUaBCyV9DZiQtDYijkpaC0z2sF0zG7COH9URcW9ErIuI9cBnge9GxJ3AbmAsW20MeLyyKM2sdP18T7sfuFnSIeDmrG1mC0RPc/sj4mng6ezxMeDGXjf4Qa0/PcD57oPc7z7E8/ybNJYyyLn+H952deNb/bziaY7QmJmT3yxVTn6zRA3NOfwWjH7HG4Z4zMDq5Z7fLFFOfrNEOfnNEuWaf6HpNGbgMQHrknt+s0Q5+c0S5eQ3S5RrfhtKyVwnsI/jKdzzmyXKyW+WqNq/9mtk9vMmiqfZGtavZXXzpcKsS+75zRLl5DdLlJPfLFHN2dVX9imgPIZgbVK5PHgv3PObJcrJb5YoJ79ZoppT85etQaeR7ku/9WQqlwcvqnF+Q5NOWd6LRN8ZZubkN0uUk98sUfXX/Jqtj9RqzblazHhOOgCtPuvJOS5VPtwK768Fui++I/mQXjPrkZPfLFFOfrNEdaz5JY0C3weWZuv/e0T8naRVwCPAeuAwcEdEvNHhl0F2PD/Tc1+2+PRx/8NgoOMXfdSEA1X2WMUC3RffST950s0zTwA3RMQ1wEZgq6TrgB3AeERsAMaztpktEB2TP2b9Jmsuzm4BbAN2Zct3AbdVEqGZVaKr7wySWpL2AZPAnoh4BlgTEUcBsvvV53judkl7Je09OfN+WXGbWZ+6Sv6ImI6IjcA64FpJn+h2AxGxMyI2R8TmJSPL5hunpUbq7WY962m0ICLeBJ4GtgITktYCZPeTpUdnZpXpmPySLpV0UfZ4GXATcBDYDYxlq40Bj1cVpJmVr5vpvWuBXZJazH5YPBoRT0j6IfCopLuAV4DbK4zTzErWMfkj4qfAprMsPwbcWEVQw6Z9X6yPWahIse5P9piG7g3PTBoz64mT3yxRTn6zRA3vOfwaqtNcbI8JWF3c85slyslvlih/7W+Yfg9ldtlg3XLPb5YoJ79Zopz8ZolyzW/DydN9O3LPb5YoJ79Zopz8ZokaXM2f0qmXaqw3m3zKc5/CvFma+04xs0o5+c0S5eQ3S9TALtFNg2vTSiU8977TZdlLlcp+fV+i28x65eQ3S5ST3yxR9df8py+VPMyl71z1ZkpjHd6v31m/YxMVX6LbzIaQk98sUU5+s0T5eP4q+FjyWcV6NOE5Duc0wLEJ9/xmiXLymyWqY/JLukzS9yQdkPSCpLuz5ask7ZF0KLtfWX24ZlaWbnr+KeBLEXEVcB3weUlXAzuA8YjYAIxnbbNzGxnp/maV6/gqR8TRiPhx9vgd4ADwUWAbsCtbbRdwW1VBmln5evqIlbQe2AQ8A6yJiKMw+wEBrC47ODOrTtfJL2k58E3gixHxdg/P2y5pr6S9J+P4fGI0swp0lfySFjOb+A9HxLeyxROS1mY/XwtMnu25EbEzIjZHxOYlGi0jZktBL+MDHiOYl25G+wU8CByIiAfafrQbGMsejwGPlx+emVWlmxl+W4A/B56XtC9b9lfA/cCjku4CXgFuryZEM6tCx+SPiB8A55qDeGO54ZhZXTy3vw7t87dTnedfNR9H0DOPlJglyslvlignv1minPxmiXLymyXKyW+WqHp39Qmk2c+bGBngrpiZAe5uWyinlJ6PJu3GTGXKry/XZWa9cvKbJcrJb5aoWmv+WLqE6d/5CADTo+VuOlr5z7Gp5fnLQZ//3z8/s+4gxxuGSXHsZJjHM3pwZOzqXHv0jfzrNHKqvLGRJe8U3sv/0f1z3fObJcrJb5YoJ79Zomqt+XVyitavjgHQKrs+XJT/UxavPP/ccWh4P/MiahzPGGlwjV/nXI7C67DypVO59rLDb+XaOnGyvG1PT8/7qcObBWY2Jye/WaKc/GaJqndufwScOtV5vfkonLZJJ5dWs52GK45n1DoG0CT9jEf0OV7QOl54L773fn6F95tx/Qr3/GaJcvKbJcrJb5aodE7d3V4DDvJ4fmu+PucvqEnnNZiDe36zRDn5zRLl5DdL1PDW/Inu3i7yfn87F/f8Zoly8pslqmPyS3pI0qSk/W3LVknaI+lQdr+y2jDNrGzd9PxfBbYWlu0AxiNiAzCetRtFEbmbzZJGPrhZRaJ4i/ytITq+AyLi+8DrhcXbgF3Z413AbSXHZWYVm+/H/5qIOAqQ3a8uLyQzq0Plu/okbQe2A4yOLK96c9aDsr/6ezdipkFf7ecy3//+hKS1ANn95LlWjIidEbE5IjYvGVk2z82ZWdnmm/y7gbHs8RjweDnhmFldutnV9w3gh8CVkl6VdBdwP3CzpEPAzVnbzBaQjjV/RHzuHD+6seRY+lOss6bmOKVx3aecTuQQ4k5jCMM6JlD8u1vHp/IrNPT/7529Zoly8pslyslvlqjhOaS3cOpujp/It1dceOZx4XLeZV9aOhblf78mjpX6+/sywPqzzinFxzddnmuPnJz/Za06Kdb4rTfey6/QxyW1quSe3yxRTn6zRDn5zRI1PDV/cT9/8bJgVdZdhTEDLWpVt61+DfKy2lWONxT+rqVH38619W5hDGimxPdD8e8qvtdc85tZkzj5zRLl5DdL1PDU/EXFMYA6664Fcjx37Wocb9CJwvz69wuXyfb/yD2/Waqc/GaJcvKbJWp4a/4maZ8H4FqzHn6dO3LPb5YoJ79Zopz8ZolyzV+F4rkF2hXPHeDa1AbEPb9Zopz8Zoly8pslyjX/oJV8/kCPIWT8OnTknt8sUU5+s0Q5+c0S5Zq/Cq43bQFwz2+WKCe/WaL6Sn5JWyW9KOlnknaUFZT1QcrfUjU1lb/Zh8w7+SW1gH8G/hi4GvicpKvLCszMqtVPz38t8LOI+EVEnAT+DdhWTlhmVrV+kv+jwC/b2q9my8xsAehnV9/ZCsoP7eOStB3YnjVPPDXxlf19bLNKlwCvDTqIc2hqbE2NC9KN7be7XbGf5H8VuKytvQ44UlwpInYCOwEk7Y2IzX1sszKOrXdNjQscWzf6+dr/I2CDpMslLQE+C+wuJywzq9q8e/6ImJL0BeDbQAt4KCJeKC0yM6tUX9N7I+JJ4MkenrKzn+1VzLH1rqlxgWPrSOF56GZJ8vRes0TVkvxNmwYs6SFJk5L2ty1bJWmPpEPZ/coBxHWZpO9JOiDpBUl3Nyi2UUn/I+m5LLZ/aEpsWRwtST+R9EST4spiOSzpeUn7JO1tSnyVJ39DpwF/FdhaWLYDGI+IDcB41q7bFPCliLgKuA74fPZaNSG2E8ANEXENsBHYKum6hsQGcDdwoK3dlLhO+1REbGzbxTf4+CKi0hvwh8C329r3AvdWvd0u4loP7G9rvwiszR6vBV5sQIyPAzc3LTbgPODHwB80ITZm55iMAzcATzTt/wkcBi4pLBt4fHV87V8o04DXRMRRgOx+9SCDkbQe2AQ8Q0Niy75a7wMmgT0R0ZTYvgzcA7RfLaUJcZ0WwHckPZvNeIUGxFfHmXy6mgZsZ0haDnwT+GJEvK2GHJobEdPARkkXAY9J+sSgY5J0KzAZEc9Kun7Q8ZzDlog4Imk1sEfSwUEHBPUM+HU1DbgBJiStBcjuJwcRhKTFzCb+wxHxrSbFdlpEvAk8zey4yaBj2wJ8RtJhZo8svUHS1xoQ1wci4kh2Pwk8xuwRsQOPr47kXyjTgHcDY9njMWbr7Vpptot/EDgQEQ80LLZLsx4fScuAm4CDg44tIu6NiHURsZ7Z99Z3I+LOQcd1mqTzJV1w+jHwaWB/I+KracDjFuAl4OfAfYMaeGmL5xvAUeAUs99M7gIuZnbQ6FB2v2oAcf0RsyXRT4F92e2WhsT2+8BPstj2A3+bLR94bG0xXs+ZAb9GxAVcATyX3V44/f5vQnye4WeWKM/wM0uUk98sUU5+s0Q5+c0S5eQ3S5ST3yxRTn6zRDn5zRL1//UHsu7QfthAAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], "source": [ - "# Compare masked and non-masked interpolation\n", - "masked_mapper = ImageMapper(mapping_method={cam: 'bicubic_interpolation' for cam in camera_types}, mask_interpolation=True)\n", - "unmasked_mapper = ImageMapper(mapping_method={cam: 'bicubic_interpolation' for cam in camera_types}, mask_interpolation=False)\n", - "for cam in camera_types:\n", - " print('{}: unmasked - masked'.format(cam))\n", - " image = unmasked_mapper.map_image(test_pixel_values[cam], cam) - masked_mapper.map_image(test_pixel_values[cam], cam)\n", - " plot_image(image)" + "hexagonal_cameras = ['LSTCam', 'FlashCam', 'NectarCam', 'DigiCam', 'VERITAS', 'MAGICCam', 'FACT', 'HESS-I', 'HESS-II']\n", + "\n", + "mapper_class_names = [\"AxialMapper\", \"ShiftingMapper\", \"BilinearMapper\", \"BicubicMapper\", \"RebinMapper\", \"NearestNeighborMapper\", \"OversamplingMapper\"]\n", + "subarray = SubarrayDescription.read(\"dataset://gamma_prod5.simtel.zst\")\n", + "for mapper_class_name in mapper_class_names:\n", + " for camera in hexagonal_cameras:\n", + " cam_geom = CameraGeometry.from_name(camera)\n", + " print(f\"{camera} - {mapper_class_name}:\")\n", + " image_mapper = ImageMapper.from_name(mapper_class_name, geometry=cam_geom, subarray=subarray)\n", + " print(\"Initialization time: \")\n", + " %timeit image_mapper = ImageMapper.from_name(mapper_class_name, geometry=cam_geom, subarray=subarray)\n", + " test_pixel_values = np.expand_dims(np.arange(image_mapper.n_pixels), axis=1)\n", + " image = image_mapper.map_image(test_pixel_values)\n", + " print(\"Mapping time: \")\n", + " %timeit image = image_mapper.map_image(test_pixel_values)\n", + "\n", + " fig, ax = plt.subplots(1)\n", + " ax.pcolor(image[:,:,0], cmap='viridis')\n", + " ax.set_title(f\"{camera} - {mapper_class_name}\")\n", + " plt.show()" ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -2580,7 +1493,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.11.8" } }, "nbformat": 4, From d32d5038fb1362660511518f35c1d6c0a8beb889 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Tue, 10 Sep 2024 23:27:30 +0200 Subject: [PATCH 24/92] simplify map_image() --- dl1_data_handler/image_mapper.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/dl1_data_handler/image_mapper.py b/dl1_data_handler/image_mapper.py index 681e6e9..b242e18 100644 --- a/dl1_data_handler/image_mapper.py +++ b/dl1_data_handler/image_mapper.py @@ -134,17 +134,17 @@ def map_image(self, raw_vector): :param raw_vector: a numpy array of values for each pixel, in order of pixel index. :return: a numpy array of shape [img_width, img_length, N_channels] """ - - # We reshape each channel and then stack the result - result = [] - for channel in range(raw_vector.shape[1]): - vector = raw_vector[:, channel] - image_2d = (vector.T @ self.mapping_table).reshape( - self.image_shape, self.image_shape, 1 - ) - result.append(image_2d) - telescope_image = np.concatenate(result, axis=-1) - return telescope_image + # Reshape each channel and stack the result + images = np.concatenate( + [ + (raw_vector[:, channel].T @ self.mapping_table).reshape( + self.image_shape, self.image_shape, 1 + ) + for channel in range(raw_vector.shape[1]) + ], + axis=-1, + ) + return images def _get_virtual_pixels(self, x_ticks, y_ticks, pix_x, pix_y): gridpoints = np.array(np.meshgrid(x_ticks, y_ticks)).T.reshape(-1, 2) From 0e33f24b67a0a514a09bc1b709e2d97a2870d4b1 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Wed, 11 Sep 2024 13:02:59 +0200 Subject: [PATCH 25/92] make reader as API --- dl1_data_handler/reader.py | 1827 ++++++++++++++++-------------------- 1 file changed, 813 insertions(+), 1014 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 59bc9c0..4dc733f 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -1,342 +1,229 @@ +""" +This module defines the ``DLDataReader`` and ``TableQualityQuery`` classes, which holds the basic reading and processing functionality for Deep Learning (DL) analyses. +""" + +__all__ = [ + "TableQualityQuery", + "DLDataReader", + "DLImageReader", + "get_unmapped_image", + "DLWaveformReader", + "get_unmapped_waveform", +] + from abc import abstractmethod from collections import OrderedDict -import threading import numpy as np import tables +import threading -from dl1_data_handler.image_mapper import ImageMapper - -import astropy.units as u from astropy.coordinates import SkyCoord from astropy.table import ( Table, unique, - join, # let us merge tables horizontally - vstack, # and vertically + join, + vstack, ) +from ctapipe.core import Component, QualityQuery +from ctapipe.core.traits import ( + Bool, + CInt, + Int, + IntTelescopeParameter, + Set, + List, + Path, + CaselessStrEnum, + Unicode, + TelescopeParameter, +) from ctapipe.instrument import SubarrayDescription -from ctapipe.io import read_table # let us read full tables inside the DL1 output file +from ctapipe.io import read_table +from dl1_data_handler.image_mapper import ImageMapper -__all__ = [ - "DLDataReader", - "DLMonoReader", - "DLStereoReader", - "DLImageReader", - "DLWaveformReader", - "DLTriggerReader", - "get_unmapped_image", - "get_unmapped_waveform", - "get_mapped_triggerpatch", -] +lock = threading.Lock() -# Get a single telescope image from a particular event, uniquely -# identified by the filename, tel_type, and image table index. -# First extract a raw 1D vector and transform it into a 2D image using a -# mapping table. When 'indexed_conv' is selected this function should -# return the unmapped vector. -def get_unmapped_image(dl1_event, image_channels, image_transforms): - unmapped_image = np.zeros( - shape=( - len(dl1_event["image"]), - len(image_channels), +class TableQualityQuery(QualityQuery): + """Quality criteria for table-wise dl1b parameters.""" + + quality_criteria = List( + default_value=[ + ("> 50 phe", "hillas_intensity > 50"), + ("Positive width", "hillas_width > 0"), + ("> 3 pixels", "morphology_n_pixels > 3"), + ], + allow_none=True, + help=QualityQuery.quality_criteria.help, + ).tag(config=True) + + +class DLDataReader(Component): + """ + Base component for reading and processing data from ctapipe HDF5 files for Deep Learning (DL) analyses. + + This class handles the initialization and configuration of the data reader, including setting up quality criteria, + managing input files, and extracting relevant information from the data files. It supports both observational and + simulation data, and can operate in ``mono`` and ``stereo`` modes. + + Attributes + ---------- + quality_query : TableQualityQuery + An instance of TableQualityQuery to apply quality criteria to the data. + files : OrderedDict + A dictionary of filename:file_handle pairs for the input files. + first_file : str + The first file in the list of input files, which is used as reference. + _v_attrs : dict + Attributes and useful information retrieved from the first file. + process_type : str + The type of data processing (i.e. ``Observation`` or ``Simulation``). + data_format_version : str + The version of the ctapipe data format. + instrument_id : str + The ID of the instrument. + subarray : SubarrayDescription + The description of the subarray. + tel_ids : list + List of telescope IDs in the subarray. + selected_telescopes : dict + Dictionary of selected telescopes by type. + tel_type : str + The type of telescope (used in mono mode). + image_mappers : dict + Dictionary of ImageMapper instances for different telescope types. + telescope_pointings : dict + Dictionary of telescope pointings. + tel_trigger_table : Table + Table of telescope triggers. + dl1b_parameter_colnames : list + List of all column names for the DL1b parameter table. + example_identifiers : list + List of example identifiers for the dataset. + class_weight : dict + Dictionary of class weights for balancing the dataset. + + Parameters + ---------- + config : traitlets.loader.Config, optional + Configuration specified by config file or cmdline arguments. + Used to set traitlet values. + This is mutually exclusive with passing a ``parent``. + parent : ctapipe.core.Component or ctapipe.core.Tool, optional + Parent of this component in the configuration hierarchy, + this is mutually exclusive with passing ``config``. + **kwargs : dict + Additional keyword arguments. + + Methods + ------- + mono_batch_generation(batch_indices, dl1b_parameter_list=None) + Generate a batch of mono events from list of indices. + stereo_batch_generation(batch_indices, dl1b_parameter_list=None) + Generate a batch of stereo events from list of indices. + """ + + signal_input_files = List( + trait=Path(exists=True, directory_ok=False), + allow_none=False, + help="Required input CTA HDF5 files for signal events", + ).tag(config=True) + + bkg_input_files = List( + trait=Path(exists=True, directory_ok=False), + default_value=None, + allow_none=True, + help="Optional input CTA HDF5 files for background events.", + ).tag(config=True) + + mode = CaselessStrEnum( + ["mono", "stereo"], + default_value="mono", + help=( + "Set data loading mode. " + "``mono``: single images of one telescope type " + "``stereo``: events including multiple telescope types " ), - dtype=np.float32, - ) - for i, channel in enumerate(image_channels): - mask = dl1_event["image_mask"] - if "image" in channel: - unmapped_image[:, i] = dl1_event["image"] - if "time" in channel: - cleaned_peak_times = dl1_event["peak_time"] * mask - unmapped_image[:, i] = ( - dl1_event["peak_time"] - - cleaned_peak_times[np.nonzero(cleaned_peak_times)].mean() - ) - if "clean" in channel or "mask" in channel: - unmapped_image[:, i] *= mask - # Apply the transform to recover orginal floating point values if the file were compressed - if "image" in channel: - if image_transforms["image_scale"] > 0.0: - unmapped_image[:, i] /= image_transforms["image_scale"] - if image_transforms["image_offset"] > 0: - unmapped_image[:, i] -= image_transforms["image_offset"] - if "time" in channel: - if image_transforms["peak_time_scale"] > 0.0: - unmapped_image[:, i] /= image_transforms["peak_time_scale"] - if image_transforms["peak_time_offset"] > 0: - unmapped_image[:, i] -= image_transforms["peak_time_offset"] - return unmapped_image - - -# Get a single telescope waveform from a particular event, uniquely -# identified by the filename, tel_type, and waveform table index. -# First extract a raw 2D vector and transform it into a 3D waveform using a -# mapping table. When 'indexed_conv' is selected this function should -# return the unmapped vector. -def get_unmapped_waveform( - r1_event, - waveform_settings, - dl1_cleaning_mask=None, -): - - unmapped_waveform = np.float32(r1_event["waveform"]) - # Check if camera has one or two gain(s) and apply selection - if unmapped_waveform.shape[0] == 1: - unmapped_waveform = unmapped_waveform[0] - else: - selected_gain_channel = r1_event["selected_gain_channel"][:, np.newaxis] - unmapped_waveform = np.where( - selected_gain_channel == 0, unmapped_waveform[0], unmapped_waveform[1] - ) - if waveform_settings["waveform_scale"] > 0.0: - unmapped_waveform /= waveform_settings["waveform_scale"] - if waveform_settings["waveform_offset"] > 0: - unmapped_waveform -= waveform_settings["waveform_offset"] - waveform_max = np.argmax(np.sum(unmapped_waveform, axis=0)) - if dl1_cleaning_mask is not None: - waveform_max = np.argmax( - np.sum(unmapped_waveform * dl1_cleaning_mask[:, None], axis=0) - ) - if waveform_settings["max_from_simulation"]: - waveform_max = int((len(unmapped_waveform) / 2) - 1) - - # Retrieve the sequence around the shower maximum - if ( - waveform_settings["sequence_max_length"] - waveform_settings["sequence_length"] - ) < 0.001: - waveform_start = 0 - waveform_stop = waveform_settings["sequence_max_length"] - else: - waveform_start = 1 + waveform_max - waveform_settings["sequence_length"] / 2 - waveform_stop = 1 + waveform_max + waveform_settings["sequence_length"] / 2 - if waveform_stop > waveform_settings["sequence_max_length"]: - waveform_start -= waveform_stop - waveform_settings["sequence_max_length"] - waveform_stop = waveform_settings["sequence_max_length"] - if waveform_start < 0: - waveform_stop += np.abs(waveform_start) - waveform_start = 0 - - # Apply the DL1 cleaning mask if selected - if "clean" in waveform_settings["type"] or "mask" in waveform_settings["type"]: - unmapped_waveform *= dl1_cleaning_mask[:, None] - - # Crop the unmapped waveform in samples - return unmapped_waveform[:, int(waveform_start) : int(waveform_stop)] - - -# Get a single telescope waveform from a particular event, uniquely -# identified by the filename, tel_type, and waveform table index. -# First extract a raw 2D vector and transform it into a 3D waveform using a -# mapping table. When 'indexed_conv' is selected this function should -# return the unmapped vector. -def get_mapped_triggerpatch( - r0_event, - waveform_settings, - trigger_settings, - image_mapper, - camera_type, - true_image=None, - random_trigger_patch=False, - trg_pixel_id=None, - trg_waveform_sample_id=None, -): - waveform = np.zeros( - shape=( - waveform_settings["shapes"][camera_type][0], - waveform_settings["shapes"][camera_type][1], - waveform_settings["sequence_length"], + ).tag(config=True) + + skip_incompatible_files = Bool( + default_value=False, + help="Skip files that are not compatible to the reference instead of raising an error", + ).tag(config=True) + + allowed_tel_types = List( + default_value=None, + allow_none=True, + help=( + "List of allowed tel_types, others will be ignored. " + "If None, all telescope types in the input stream " + "will be included restricted by trait ``allowed_tels``" ), - dtype=np.float16, - ) - - # Retrieve the true image if the child of the simulated images are provided - mapped_true_image, trigger_patch_true_image_sum = None, None - if true_image is not None: - mapped_true_image = image_mapper.map_image(true_image, camera_type) - - vector = r0_event["waveform"][0] - - waveform_max = np.argmax(np.sum(vector, axis=0)) - - if waveform_settings["max_from_simulation"]: - waveform_max = int((len(vector) / 2) - 1) - if trg_waveform_sample_id is not None: - waveform_max = trg_waveform_sample_id - - # Retrieve the sequence around the shower maximum and calculate the pedestal - # level per pixel outside that sequence if R0-pedsub is selected and FADC - # offset is not provided from the simulation. - pixped_nsb, nsb_sequence_length = None, None - if "FADC_offset" in waveform_settings: - pixped_nsb = np.full( - (vector.shape[0],), waveform_settings["FADC_offset"], dtype=int - ) - if ( - waveform_settings["sequence_max_length"] - waveform_settings["sequence_length"] - ) < 0.001: - waveform_start = 0 - waveform_stop = nsb_sequence_length = waveform_settings["sequence_max_length"] - if trigger_settings["pedsub"] and pixped_nsb is None: - pixped_nsb = np.sum(vector, axis=1) / nsb_sequence_length - else: - waveform_start = 1 + waveform_max - waveform_settings["sequence_length"] / 2 - waveform_stop = 1 + waveform_max + waveform_settings["sequence_length"] / 2 - nsb_sequence_length = ( - waveform_settings["sequence_max_length"] - - waveform_settings["sequence_length"] - ) - if waveform_stop > waveform_settings["sequence_max_length"]: - waveform_start -= waveform_stop - waveform_settings["sequence_max_length"] - waveform_stop = waveform_settings["sequence_max_length"] - if trigger_settings["pedsub"] and pixped_nsb is None: - pixped_nsb = ( - np.sum(vector[:, : int(waveform_start)], axis=1) - / nsb_sequence_length - ) - if waveform_start < 0: - waveform_stop += np.abs(waveform_start) - waveform_start = 0 - if trigger_settings["pedsub"] and pixped_nsb is None: - pixped_nsb = ( - np.sum(vector[:, int(waveform_stop) :], axis=1) - / nsb_sequence_length - ) - if trigger_settings["pedsub"] and pixped_nsb is None: - pixped_nsb = np.sum(vector[:, 0 : int(waveform_start)], axis=1) - pixped_nsb += np.sum( - vector[:, int(waveform_stop) : waveform_settings["sequence_max_length"]], - axis=1, - ) - pixped_nsb = pixped_nsb / nsb_sequence_length - - # Subtract the pedestal per pixel if R0-pedsub selected - if trigger_settings["pedsub"]: - vector = vector - pixped_nsb[:, None] - - # Crop the waveform - vector = vector[:, int(waveform_start) : int(waveform_stop)] - - # Map the waveform snapshots through the ImageMapper - # and transform to selected returning format - mapped_waveform = image_mapper.map_image(vector, camera_type) - - trigger_patch_center = {} - waveform_shape_x = waveform_settings["shapes"][camera_type][0] - waveform_shape_y = waveform_settings["shapes"][camera_type][1] - - # There are three different ways of retrieving the trigger patches. - # In case an external algorithm (i.e. DBScan) is used, the trigger patch - # is found by the pixel id provided in a csv file. Otherwise, we search - # for a hot spot, which can either be the pixel with the highest intensity - # of the true Cherenkov image or the integrated waveform. - if trigger_settings["get_patch_from"] == "file": - pixid_vector = np.zeros(vector.shape) - pixid_vector[trg_pixel_id, :] = 1 - mapped_pixid = image_mapper.map_image(pixid_vector, camera_type) - hot_spot = np.unravel_index( - np.argmax(mapped_pixid, axis=None), - mapped_pixid.shape, - ) - elif trigger_settings["get_patch_from"] == "simulation": - hot_spot = np.unravel_index( - np.argmax(mapped_true_image, axis=None), - mapped_true_image.shape, - ) - else: - integrated_waveform = np.sum(mapped_waveform, axis=2) - hot_spot = np.unravel_index( - np.argmax(integrated_waveform, axis=None), - integrated_waveform.shape, - ) - # Detect in which trigger patch the hot spot is located - trigger_patch_center["x"] = trigger_settings["patches_xpos"][camera_type][ - np.argmin(np.abs(trigger_settings["patches_xpos"][camera_type] - hot_spot[0])) - ] - trigger_patch_center["y"] = trigger_settings["patches_ypos"][camera_type][ - np.argmin(np.abs(trigger_settings["patches_ypos"][camera_type] - hot_spot[1])) - ] - # Select randomly if a trigger patch with (guaranteed) cherenkov signal - # or a random trigger patch are processed - if random_trigger_patch and mapped_true_image is not None: - counter = 0 - while True: - counter += 1 - n_trigger_patches = 0 - if counter < 10: - n_trigger_patches = np.random.randint( - len(trigger_settings["patches"][camera_type]) - ) - random_trigger_patch_center = trigger_settings["patches"][camera_type][ - n_trigger_patches - ] - - # Get the number of cherenkov photons in the trigger patch - trigger_patch_true_image_sum = np.sum( - mapped_true_image[ - int(random_trigger_patch_center["x"] - waveform_shape_x / 2) : int( - random_trigger_patch_center["x"] + waveform_shape_x / 2 - ), - int(random_trigger_patch_center["y"] - waveform_shape_y / 2) : int( - random_trigger_patch_center["y"] + waveform_shape_y / 2 - ), - :, - ], - dtype=int, - ) - if trigger_patch_true_image_sum < 1.0 or counter >= 10: - break - trigger_patch_center = random_trigger_patch_center - else: - # Get the number of cherenkov photons in the trigger patch - trigger_patch_true_image_sum = np.sum( - mapped_true_image[ - int(trigger_patch_center["x"] - waveform_shape_x / 2) : int( - trigger_patch_center["x"] + waveform_shape_x / 2 - ), - int(trigger_patch_center["y"] - waveform_shape_y / 2) : int( - trigger_patch_center["y"] + waveform_shape_y / 2 - ), - :, - ], - dtype=int, - ) - # Crop the waveform according to the trigger patch - mapped_waveform = mapped_waveform[ - int(trigger_patch_center["x"] - waveform_shape_x / 2) : int( - trigger_patch_center["x"] + waveform_shape_x / 2 + ).tag(config=True) + + allowed_tels = Set( + trait=CInt(), + default_value=None, + allow_none=True, + help=( + "List of allowed tel_ids, others will be ignored. " + "If None, all telescopes in the input stream " + "will be included restricted by trait ``allowed_tel_types``" ), - int(trigger_patch_center["y"] - waveform_shape_y / 2) : int( - trigger_patch_center["y"] + waveform_shape_y / 2 + ).tag(config=True) + + image_mapper_type = TelescopeParameter( + trait=Unicode(), + default_value="OversamplingMapper", + help=( + "Instances of ``ImageMapper`` transforming a raw 1D vector into a 2D image. " + "Different mapping methods can be selected for each telescope type." ), - :, - ] - waveform = mapped_waveform - - # If 'indexed_conv' is selected, we only need the unmapped vector. - if image_mapper.mapping_method[camera_type] == "indexed_conv": - return vector, trigger_patch_true_image_sum - return waveform, trigger_patch_true_image_sum - - -lock = threading.Lock() - + ).tag(config=True) + + min_telescopes = Int( + default_value=4, + help=( + "Minimum number of telescopes required globally after ``TableQualityQuery``. " + "Events with fewer telescopes will be filtered out completely. " + "Requires mode to be ``stereo``." + ), + ).tag(config=True) + + min_telescopes_of_type = IntTelescopeParameter( + default_value=0, + help=( + "Minimum number of telescopes required for a specific type after ``TableQualityQuery``. " + "In events with fewer telescopes of that type, " + "those telescopes will be removed from the array event. " + "This might result in the event not fulfilling ``min_telescopes`` anymore " + "and thus being filtered completely. " + "Requires mode to be ``stereo``. " + ), + ).tag(config=True) -class DLDataReader: def __init__( self, - file_list, - tel_types=None, - tel_ids=None, - mapping_settings=None, + config=None, + parent=None, + **kwargs, ): - # Construct dict of filename:file_handle pairs + + super().__init__(config=config, parent=parent, **kwargs) + + # Initialize the Table data quality query + self.quality_query = TableQualityQuery(parent=self) + + # Construct dict of filename:file_handle pairs of an ordered file list self.files = OrderedDict() - # Order the file_list - file_list = np.sort(file_list) - for filename in file_list: + file_list = ( + self.signal_input_files + if self.bkg_input_files is None + else self.signal_input_files + self.bkg_input_files + ) + for filename in np.sort(file_list): with lock: self.files[filename] = tables.open_file(filename, mode="r") self.first_file = list(self.files)[0] @@ -357,16 +244,17 @@ def __init__( f"When processing real observational data, please provide a single file (currently: '{len(self.files)}')." ) + # Set up the subarray self.subarray = SubarrayDescription.from_hdf(self.first_file) selected_tel_ids = None - if tel_ids is not None: - selected_tel_ids = np.array(tel_ids, dtype=np.int16) + if self.allowed_tels is not None: + selected_tel_ids = np.array(self.allowed_tels, dtype=np.int16) else: - if tel_types is not None: + if self.allowed_tel_types is not None: selected_tel_ids = np.ravel( [ np.array(self.subarray.get_tel_ids_for_type(str(tel_type))) - for tel_type in tel_types + for tel_type in self.allowed_tel_types ] ) @@ -391,49 +279,44 @@ def __init__( for filename in self.files: # Read SubarrayDescription from the new file and subarray = SubarrayDescription.from_hdf(filename) + # Filter subarray by selected telescopes - subarray = subarray.select_subarray(self.tel_ids) + if selected_tel_ids is not None: + subarray = subarray.select_subarray(self.tel_ids) + # Check if it matches the reference if not subarray.__eq__(self.subarray): - raise ValueError( - f"Subarray description of file '{filename}' does not match the reference subarray description." - ) + if self.skip_incompatible_files: + self.log.warning( + f"Skipping '{filename}'. Subarray description does not match the reference subarray description." + ) + del self.files[filename] + else: + raise ValueError( + f"Subarray description of file '{filename}' does not match the reference subarray description." + ) # Set the telescope type as class attribute for mono mode for convenience self.tel_type = None if self.mode == "mono": self.tel_type = list(self.selected_telescopes)[0] + # Get the camera index for the different telescope types - camera2index = {} - for t in self.subarray.tels.values(): - camera_index = self.subarray.camera_types.index(t.camera) - if f"{t.camera.name}" not in camera2index: - camera2index[f"{t.camera.name}"] = camera_index - # Retrieve the camera geometry from the file - pixel_positions = self._construct_pixel_positions( - self.files[self.first_file].root.configuration.instrument.telescope, - camera2index, - ) + cam_geom = {} + for camera_type in self.subarray.camera_types: + if f"{camera_type.name}" not in cam_geom: + cam_geom[f"{camera_type.name}"] = camera_type.geometry # Initialize the ImageMapper with the pixel positions and mapping settings - if mapping_settings is None: - mapping_settings = {} - self.image_mapper = ImageMapper( - pixel_positions=pixel_positions, **mapping_settings - ) - - # Translate from CORSIKA shower primary ID to the particle name - self.shower_primary_id_to_name = { - 0: "gamma", - 101: "proton", - 1: "electron", - 404: "nsb", - } + self.image_mappers = {} + for _, tel_type, name in self.image_mapper_type: + camera_type = self._get_camera_type(tel_type) + self.image_mappers[camera_type] = ImageMapper.from_name( + name, geometry=cam_geom[camera_type], subarray=self.subarray, parent=self + ) # Telescope pointings self.telescope_pointings = {} - self.fix_pointing = None - tel_id = None self.tel_trigger_table = None if self.process_type == "Observation": for tel_id in self.tel_ids: @@ -456,205 +339,52 @@ def __init__( f"/dl1/event/telescope/parameters/tel_{self.tel_ids[0]:03d}", ).colnames - def _get_camera_type(self, tel_type): - return tel_type.split("_")[-1] - - def __len__(self): + # Construct the example identifiers if self.mode == "mono": - return len(self.example_identifiers) + self._construct_mono_example_identifiers() elif self.mode == "stereo": - return len(self.unique_example_identifiers) - - def _construct_pixel_positions(self, telescope_type_information, camera2index): - """ - Construct the pixel position of the cameras from the DL1 hdf5 file. - - # TODO: Converge further with ctapipe - Parameters - ---------- - telescope_type_information (tables.Table): - - Returns - ------- - pixel_positions (dict): dictionary of `{cameras: pixel_positions}` - - """ + self._construct_stereo_example_identifiers() - pixel_positions = {} - for camera in camera2index.keys(): - cam_geom = telescope_type_information.camera._f_get_child( - f"geometry_{camera2index[camera]}" - ) - pix_x = np.array(cam_geom.cols._f_col("pix_x")) - pix_y = np.array(cam_geom.cols._f_col("pix_y")) - pixel_positions[camera] = np.stack((pix_x, pix_y)) - # For now hardcoded, since this information is not in the h5 files. - # The official CTA DL1 format will contain this information. - camera_prefix = camera.split("_")[0] - if camera_prefix in ["LSTCam", "LSTSiPMCam", "NectarCam", "MAGICCam"]: - rotation_angle = -cam_geom._v_attrs["PIX_ROT"] * np.pi / 180.0 - if camera_prefix == "MAGICCam": - rotation_angle = -100.893 * np.pi / 180.0 - if self.process_type == "Observation" and camera_prefix == "LSTCam": - rotation_angle = -40.89299998552154 * np.pi / 180.0 - rotation_matrix = np.matrix( - [ - [np.cos(rotation_angle), -np.sin(rotation_angle)], - [np.sin(rotation_angle), np.cos(rotation_angle)], - ], - dtype=float, - ) - pixel_positions[camera] = np.squeeze( - np.asarray(np.dot(rotation_matrix, pixel_positions[camera])) - ) - - return pixel_positions - - def _get_tel_pointing(self, file, tel_ids): - tel_pointing = [] - for tel_id in tel_ids: - with lock: - tel_pointing.append( - read_table( - file, - f"/configuration/telescope/pointing/tel_{tel_id:03d}", - ) - ) - return vstack(tel_pointing) + # Transform true energy into the log space + self.example_identifiers = self._transform_to_log_energy( + self.example_identifiers + ) - def _transform_to_primary_class(self, table): - # Handling the particle ids automatically and class weights calculation + # Handling the class weights calculation. # Scaling by total/2 helps keep the loss to a similar magnitude. # The sum of the weights of all examples stays the same. - self.simulated_particles, self.class_weight = {}, {} + self.class_weight = None if self.process_type == "Simulation": - # Track number of events for each particle type - self.simulated_particles["total"] = self.__len__() - for primary_id in self.shower_primary_id_to_name: - if self.mode == "mono": - n_particles = np.count_nonzero( - self.example_identifiers["true_shower_primary_id"] == primary_id - ) - elif self.mode == "stereo": - n_particles = np.count_nonzero( - self.unique_example_identifiers["true_shower_primary_id"] - == primary_id - ) - # Store the number of events for each particle type if there are any - if n_particles > 0 and primary_id != 404: - self.simulated_particles[primary_id] = n_particles - self.n_classes = len(self.simulated_particles) - 1 - # Include NSB patches is selected - if self.include_nsb_patches == "auto": - for particle_id in list(self.simulated_particles.keys())[1:]: - self.simulated_particles[particle_id] = int( - self.simulated_particles[particle_id] - * self.n_classes - / (self.n_classes + 1) - ) - self.simulated_particles[404] = int( - self.simulated_particles["total"] / (self.n_classes + 1) - ) - self.n_classes += 1 - self._nsb_prob = np.around(1 / self.n_classes, decimals=2) - self._shower_prob = np.around(1 - self._nsb_prob, decimals=2) - - self.shower_primary_id_to_class = {} - for p, particle_id in enumerate(list(self.simulated_particles.keys())[1:]): - self.shower_primary_id_to_class[particle_id] = p - # Calculate class weights if there are more than 2 classes (particle classification task) - if len(self.simulated_particles) > 2: - for particle_id, n_particles in self.simulated_particles.items(): - if particle_id != "total": - self.class_weight[ - self.shower_primary_id_to_class[particle_id] - ] = (1 / n_particles) * ( - self.simulated_particles["total"] / 2.0 - ) - - # Transform shower primary id to class - # Create a vectorized function to map the values - vectorized_map = np.vectorize(self.shower_primary_id_to_class.get) - # Apply the mapping to the astropy column - true_shower_primary_class = vectorized_map(table["true_shower_primary_id"]) - table.add_column(true_shower_primary_class, name="true_shower_primary_class") - return table - - def _transform_to_log_energy(self, table): - # Transform true energy into the log space - table.add_column(np.log10(table["true_energy"]), name="log_true_energy") - return table - - def _transform_to_spherical_offsets(self, table): - # Transform alt and az into spherical offsets - # Set the telescope pointing of the SkyOffsetSeparation tranform to the fix pointing - fix_pointing = SkyCoord( - table["telescope_pointing_azimuth"], - table["telescope_pointing_altitude"], - frame="altaz", - ) - true_direction = SkyCoord( - table["true_az"], - table["true_alt"], - frame="altaz", - ) - sky_offset = fix_pointing.spherical_offsets_to(true_direction) - angular_separation = fix_pointing.separation(true_direction) - table.add_column(sky_offset[0], name="spherical_offset_az") - table.add_column(sky_offset[1], name="spherical_offset_alt") - table.add_column(angular_separation, name="angular_separation") - table.remove_columns( - [ - "telescope_pointing_azimuth", - "telescope_pointing_altitude", - ] - ) - return table - - def _get_parameters(self, batch, dl1b_parameter_list) -> np.array: - dl1b_parameters = [] - for file_idx, img_idx, tel_id in zip( - batch["file_index"], batch["img_index"], batch["tel_id"] - ): - filename = list(self.files)[file_idx] - with lock: - tel_table = f"tel_{tel_id:03d}" - child = self.files[ - filename - ].root.dl1.event.telescope.parameters._f_get_child(tel_table) - parameters = list(child[img_idx][dl1b_parameter_list]) - dl1b_parameters.append([np.stack(parameters)]) - return np.array(dl1b_parameters) - - @abstractmethod - def batch_generation( - self, batch_indices, dl1b_parameter_list=None - ) -> (dict, Table): - pass + if self.bkg_input_files is not None: + self.class_weight = { + 0: (1 / self.n_bkg_events) * (self._get_n_events() / 2.0), + 1: (1 / self.n_signal_events) * (self._get_n_events() / 2.0), + } + def _get_camera_type(self, tel_type): + """Extract the camera type from the telescope type string.""" + return tel_type.split("_")[-1] -class DLMonoReader(DLDataReader): - def __init__( - self, - file_list, - tel_types=None, - tel_ids=None, - mapping_settings=None, - quality_selection=None, - ): + def _get_n_events(self): + """Return the number of events in the dataset.""" + if self.mode == "mono": + return len(self.example_identifiers) + elif self.mode == "stereo": + return len(self.unique_example_identifiers) - DLDataReader.__init__( - self, - file_list=file_list, - tel_types=tel_types, - tel_ids=tel_ids, - mapping_settings=mapping_settings, - ) + def _construct_mono_example_identifiers(self): + """ + Construct example identifiers for mono mode. + This method generates a list of example identifiers for the mono mode + of operation. It processes the DL1b parameter tables for each telescope + and constructs identifiers based on the event and telescope IDs. These + identifiers are used to uniquely reference each example in the dataset. + """ # Columns to keep in the the example identifiers # This are the basic columns one need to do a # conventional IACT analysis with CNNs - self.example_ids_keep_columns = ["img_index", "obs_id", "event_id", "tel_id"] + self.example_ids_keep_columns = ["table_index", "obs_id", "event_id", "tel_id"] if self.process_type == "Simulation": self.example_ids_keep_columns.extend( ["true_energy", "true_alt", "true_az", "true_shower_primary_id"] @@ -678,7 +408,7 @@ def __init__( f, f"/dl1/event/telescope/parameters/tel_{tel_id:03d}" ) tel_table.add_column( - np.arange(len(tel_table)), name="img_index", index=0 + np.arange(len(tel_table)), name="table_index", index=0 ) if self.process_type == "Simulation": tel_table = join( @@ -690,22 +420,15 @@ def __init__( events = vstack(tel_tables) # Initialize a boolean mask to True for all events - self.quality_mask = np.ones(len(events), dtype=bool) + # Todo: Does not have to be class attribute. This needed at the momment + # for real data which is processed per file. + self.passes_quality_checks = np.ones(len(events), dtype=bool) # Quality selection based on the dl1b parameter and MC shower simulation tables - if quality_selection: - for filter in quality_selection: - # Update the mask for the minimum value condition - if "min_value" in filter: - self.quality_mask &= ( - events[filter["col_name"]] >= filter["min_value"] - ) - # Update the mask for the maximum value condition - if "max_value" in filter: - self.quality_mask &= ( - events[filter["col_name"]] < filter["max_value"] - ) - # Apply the updated mask to filter events - events = events[self.quality_mask] + if self.quality_query: + self.passes_quality_checks = self.quality_query.get_table_mask(events) + + # Apply the mask to filter events that are not fufilling the quality criteria + events = events[self.passes_quality_checks] # Construct the example identifiers events.keep_columns(self.example_ids_keep_columns) @@ -715,11 +438,18 @@ def __init__( right=tel_pointing, keys=["obs_id", "tel_id"], ) - events = DLDataReader._transform_to_spherical_offsets(self, table=events) + events = self._transform_to_spherical_offsets(events) # Add telescope type id which is always 0 in mono mode - # Needed to share code with stereo reading mode + # This is needed to share code with stereo reading mode later on events.add_column(file_idx, name="file_index", index=0) events.add_column(0, name="tel_type_id", index=3) + # Add the true shower primary class to the table based on the filename is + # signal or background input file list + true_shower_primary_class = 1 if filename in self.signal_input_files else 0 + events.add_column( + true_shower_primary_class, name="true_shower_primary_class" + ) + # Appending the events to the list of example identifiers example_identifiers.append(events) # Constrcut the example identifiers for all files @@ -727,64 +457,35 @@ def __init__( # Construct simulation information for all files if self.process_type == "Simulation": self.simulation_info = vstack(simulation_info) + self.n_signal_events = np.count_nonzero( + self.example_identifiers["true_shower_primary_class"] == 1 + ) + if self.bkg_input_files is not None: + self.n_bkg_events = np.count_nonzero( + self.example_identifiers["true_shower_primary_class"] == 0 + ) # Add index column to the example identifiers to later retrieve batches # using the loc functionality self.example_identifiers.add_column( np.arange(len(self.example_identifiers)), name="index", index=0 ) self.example_identifiers.add_index("index") - # Apply common transformation of MC data - # Transform shower primary id to class - self.example_identifiers = DLDataReader._transform_to_primary_class( - self, table=self.example_identifiers - ) - # Transform true energy into the log space - self.example_identifiers = DLDataReader._transform_to_log_energy( - self, table=self.example_identifiers - ) - def batch_generation(self, batch_indices, dl1b_parameter_list=None): - "Generates data containing batch_size samples" - # Retrieve the batch from the example identifiers via indexing - batch = self.example_identifiers.loc[batch_indices] - # Retrieve the features from child classes - features, batch = self._get_features(batch) - # Retrieve the dl1b parameters if requested - if dl1b_parameter_list is not None: - features["parameters"] = DLDataReader._get_parameters( - batch, - dl1b_parameter_list, - ) - return features, batch - - @abstractmethod - def _get_features(self, batch) -> (dict, Table): - pass - - -class DLStereoReader(DLDataReader): - def __init__( - self, - file_list, - tel_types=None, - tel_ids=None, - mapping_settings=None, - quality_selection=None, - multiplicity_selection=None, - ): - DLDataReader.__init__( - self, - file_list=file_list, - tel_types=tel_types, - tel_ids=tel_ids, - mapping_settings=mapping_settings, - ) + def _construct_stereo_example_identifiers(self): + """ + Construct example identifiers for stereo mode. + This method generates a list of example identifiers for the stereo mode + of operation. It processes the DL1b parameter tables for each event and constructs + identifiers based on the event ID and the combination of telescope IDs that participated + (triggered and passed quality cuts) in the event. These identifiers are used to uniquely + reference each example in the dataset. + """ # Columns to keep in the the example identifiers # This are the basic columns one need to do a # conventional IACT analysis with CNNs self.example_ids_keep_columns = [ - "img_index", + "table_index", "obs_id", "event_id", "tel_id", @@ -824,31 +525,24 @@ def __init__( f"/dl1/event/telescope/parameters/tel_{tel_id:03d}", ) tel_table.add_column( - np.arange(len(tel_table)), name="img_index", index=0 + np.arange(len(tel_table)), name="table_index", index=0 ) # Initialize a boolean mask to True for all events - quality_mask = np.ones(len(tel_table), dtype=bool) + passes_quality_checks = np.ones(len(tel_table), dtype=bool) # Quality selection based on the dl1b parameter and MC shower simulation tables - if quality_selection: - for filter in quality_selection: - # Update the mask for the minimum value condition - if "min_value" in filter: - quality_mask &= ( - tel_table[filter["col_name"]] >= filter["min_value"] - ) - # Update the mask for the maximum value condition - if "max_value" in filter: - quality_mask &= ( - tel_table[filter["col_name"]] < filter["max_value"] - ) + if self.quality_query: + passes_quality_checks = self.quality_query.get_table_mask( + tel_table + ) # Merge the telescope table with the trigger table merged_table = join( - left=tel_table[quality_mask], + left=tel_table[passes_quality_checks], right=trigger_table, keys=["obs_id", "event_id"], ) table_per_type.append(merged_table) table_per_type = vstack(table_per_type) + table_per_type = table_per_type.group_by(["obs_id", "event_id"]) table_per_type.keep_columns(self.example_ids_keep_columns) if self.process_type == "Simulation": @@ -858,65 +552,204 @@ def __init__( right=tel_pointing, keys=["obs_id", "tel_id"], ) - table_per_type = self._transform_to_spherical_offsets( - self, table=table_per_type - ) + table_per_type = self._transform_to_spherical_offsets(table_per_type) # Apply the multiplicity cut based on the telescope type - if tel_type in multiplicity_selection: - table_per_type = table_per_type.group_by(["obs_id", "event_id"]) + table_per_type = table_per_type.group_by(["obs_id", "event_id"]) - def _multiplicity_cut_tel_type(table, key_colnames): - return len(table) >= multiplicity_selection[tel_type] + def _multiplicity_cut_tel_type(table, key_colnames): + self.min_telescopes_of_type.attach_subarray(self.subarray) + return len(table) >= self.min_telescopes_of_type.tel[tel_type] + + table_per_type = table_per_type.groups.filter( + _multiplicity_cut_tel_type + ) - table_per_type = table_per_type.groups.filter( - _multiplicity_cut_tel_type - ) table_per_type.add_column(tel_type_id, name="tel_type_id", index=3) events.append(table_per_type) events = vstack(events) # Apply the multiplicity cut based on the subarray - if "Subarray" in multiplicity_selection: - events = events.group_by(["obs_id", "event_id"]) + events = events.group_by(["obs_id", "event_id"]) - def _multiplicity_cut_subarray(table, key_colnames): - return len(table) >= multiplicity_selection["Subarray"] + def _multiplicity_cut_subarray(table, key_colnames): + return len(table) >= self.min_telescopes - events = events.groups.filter(_multiplicity_cut_subarray) + events = events.groups.filter(_multiplicity_cut_subarray) events.add_column(file_idx, name="file_index", index=0) + # Add the true shower primary class to the table based on the filename is + # signal or background input file list + true_shower_primary_class = 1 if filename in self.signal_input_files else 0 + events.add_column( + true_shower_primary_class, name="true_shower_primary_class" + ) + # Appending the events to the list of example identifiers example_identifiers.append(events) # Constrcut the example identifiers for all files self.example_identifiers = vstack(example_identifiers) - # Construct simulation information for all files - if self.process_type == "Simulation": - self.simulation_info = vstack(simulation_info) # Unique example identifiers by events self.unique_example_identifiers = unique( self.example_identifiers, keys=["obs_id", "event_id"] ) + # Construct simulation information for all files + if self.process_type == "Simulation": + self.simulation_info = vstack(simulation_info) + self.n_signal_events = np.count_nonzero( + self.unique_example_identifiers["true_shower_primary_class"] == 1 + ) + if self.bkg_input_files is not None: + self.n_bkg_events = np.count_nonzero( + self.unique_example_identifiers["true_shower_primary_class"] == 0 + ) # Workaround for the missing multicolumn indexing in astropy: # Need this PR https://github.com/astropy/astropy/pull/15826 # waiting astropy v7.0.0 # self.example_identifiers.add_index(["obs_id", "event_id"]) - # Apply common transformation of MC data - # Transform shower primary id to class - self.simulated_particles, self.class_weight = {}, {} - self.example_identifiers = DLDataReader._transform_to_primary_class( - self, table=self.example_identifiers + def _get_tel_pointing(self, file, tel_ids): + """Retrieve the telescope pointing information for the specified telescope IDs.""" + tel_pointing = [] + for tel_id in tel_ids: + with lock: + tel_pointing.append( + read_table( + file, + f"/configuration/telescope/pointing/tel_{tel_id:03d}", + ) + ) + return vstack(tel_pointing) + + def _transform_to_log_energy(self, table): + """ + Transform true energy values in the given table to logarithmic space. + """ + table.add_column(np.log10(table["true_energy"]), name="log_true_energy") + return table + + def _transform_to_spherical_offsets(self, table): + """Transform Alt/Az coordinates to spherical offsets.""" + # Set the telescope pointing of the SkyOffsetSeparation tranform to the fix pointing + fix_pointing = SkyCoord( + table["telescope_pointing_azimuth"], + table["telescope_pointing_altitude"], + frame="altaz", ) - # Transform true energy into the log space - self.example_identifiers = DLDataReader._transform_to_log_energy( - self, table=self.example_identifiers + true_direction = SkyCoord( + table["true_az"], + table["true_alt"], + frame="altaz", ) + sky_offset = fix_pointing.spherical_offsets_to(true_direction) + angular_separation = fix_pointing.separation(true_direction) + table.add_column(sky_offset[0], name="spherical_offset_az") + table.add_column(sky_offset[1], name="spherical_offset_alt") + table.add_column(angular_separation, name="angular_separation") + table.remove_columns( + [ + "telescope_pointing_azimuth", + "telescope_pointing_altitude", + ] + ) + return table + + def _get_parameters(self, batch, dl1b_parameter_list) -> np.array: + """Retrieve DL1b parameters for a given batch of events.""" + dl1b_parameters = [] + for file_idx, table_idx, tel_id in zip( + batch["file_index"], batch["table_index"], batch["tel_id"] + ): + filename = list(self.files)[file_idx] + with lock: + tel_table = f"tel_{tel_id:03d}" + child = self.files[ + filename + ].root.dl1.event.telescope.parameters._f_get_child(tel_table) + parameters = list(child[table_idx][dl1b_parameter_list]) + dl1b_parameters.append([np.stack(parameters)]) + return np.array(dl1b_parameters) - def batch_generation(self, batch_indices, dl1b_parameter_list=None): + def mono_batch_generation( + self, batch_indices, dl1b_parameter_list=None + ) -> (dict, Table): + """ + Generate a batch of events for mono mode. + + This method generates a batch of examples for the mono mode of operation. + It retrieves the DL1b parameters and other relevant data for the specified + batch indices and constructs a dictionary of input features optionally with + a table of DL1b parameters. + + Parameters + ---------- + batch_indices : list of int + List of indices specifying the examples to include in the batch. + dl1b_parameter_list : list of str, optional + List of DL1b parameter names to include in the output table. If ``None``, + no DL1b parameters are included. + + Returns + ------- + dict + Dictionary containing the input features for the batch. The keys are + the feature names and the values are the corresponding data arrays. + Table + Table containing the DL1b parameters for the batch. The columns are + the specified DL1b parameters and the rows correspond to the examples + in the batch. + """ "Generates data containing batch_size samples" + # Check that the batch generation call is consistent with the mode + if self.mode != "mono": + raise ValueError( + "Mono batch generation is not supported in stereo mode." + ) + # Retrieve the batch from the example identifiers via indexing + batch = self.example_identifiers.loc[batch_indices] + # Retrieve the features from child classes + features = self._get_features(batch) + # Retrieve the dl1b parameters if requested + if dl1b_parameter_list is not None: + features["parameters"] = self._get_parameters( + batch, + dl1b_parameter_list, + ) + return features, batch + + def stereo_batch_generation( + self, batch_indices, dl1b_parameter_list=None + ) -> (dict, Table): + """ + Generate a batch of events for stereo mode. + + This method generates a batch of stereo examples based on the provided batch indices. + It retrieves the DL1b parameters for the selected events and telescopes, and constructs + the input data and labels for the batch. + + Parameters + ---------- + batch_indices : list of int + List of indices specifying the examples to include in the batch. + dl1b_parameter_list : list of str, optional + List of DL1b parameter names to include in the feature dictionary. If ``None``, + no DL1b parameters are included. + + Returns + ------- + dict + Dictionary containing the feature for the batch. The keys are the parameter names + and the values are the corresponding data arrays. + Table + Table containing the labels and additional infor for the batch examples. + """ + # Check that the batch generation call is consistent with the mode + if self.mode != "stereo": + raise ValueError( + "Stereo batch generation is not supported in mono mode." + ) # Retrieve the batch from the example identifiers via groupd by # Workaround for the missing multicolumn indexing in astropy: # Need this PR https://github.com/astropy/astropy/pull/15826 # waiting astropy v7.0.0 - # Once available, the batch_gereration can be shared with "mono subclass" + # Once available, the batch_generation can be shared with "mono" example_identifiers_grouped = self.example_identifiers.group_by( ["obs_id", "event_id"] ) @@ -927,79 +760,142 @@ def batch_generation(self, batch_indices, dl1b_parameter_list=None): ) batch.sort(["obs_id", "event_id", "tel_type_id"]) # Retrieve the features from child classes - features, batch = self._get_features(batch) + features = self._get_features(batch) # Retrieve the dl1b parameters if requested if dl1b_parameter_list is not None: - features["parameters"] = DLDataReader._get_parameters( + features["parameters"] = self._get_parameters( batch, dl1b_parameter_list, ) return features, batch @abstractmethod - def _get_features(self, batch) -> (dict, Table): + def _get_features(self, batch) -> dict: pass -class DLImageReader(DLMonoReader, DLStereoReader): +def get_unmapped_image(dl1_event, channels, transforms): + """ + Generate unmapped image from a DL1 event. + + This function processes the DL1 event data to generate an image array + based on the specified channels and transformation parameters. It handles + different types of channels such as 'image', 'time', and 'cleaned', and + applies the necessary transformations to recover the original floating + point values if the file was compressed. + + Parameters + ---------- + dl1_event : astropy.table.Table + A table containing DL1 event data, including ``image``, ``image_mask``, + and ``peak_time``. + channels : list of str + A list of channels to be processed, such as ``image`` and ``time`` with optional ``cleaned_``-prefix. + transforms : dict + A dictionary containing scaling and offset values for image and peak time + transformations. + + Returns + ------- + np.ndarray + The processed image data image for the specific channels. + """ + image = np.zeros( + shape=( + len(dl1_event["image"]), + len(channels), + ), + dtype=np.float32, + ) + for i, channel in enumerate(channels): + mask = dl1_event["image_mask"] + if "image" in channel: + image[:, i] = dl1_event["image"] + if "time" in channel: + cleaned_peak_times = dl1_event["peak_time"] * mask + image[:, i] = ( + dl1_event["peak_time"] + - cleaned_peak_times[np.nonzero(cleaned_peak_times)].mean() + ) + if "cleaned" in channel: + image[:, i] *= mask + # Apply the transform to recover orginal floating point values if the file were compressed + if "image" in channel: + if transforms["image_scale"] > 0.0: + image[:, i] /= transforms["image_scale"] + if transforms["image_offset"] > 0: + image[:, i] -= transforms["image_offset"] + if "time" in channel: + if transforms["peak_time_scale"] > 0.0: + image[:, i] /= transforms["peak_time_scale"] + if transforms["peak_time_offset"] > 0: + image[:, i] -= transforms["peak_time_offset"] + return image + + +lock = threading.Lock() + +class DLImageReader(DLDataReader): + """ + A data reader class for handling DL1 image data from telescopes. + + This class extends the ``DLDataReader`` to specifically handle the reading, + transformation, and mapping of DL1 image data, including integrated charges + and peak arrival times. It supports both ``mono`` and ``stereo`` data loading modes + and can apply DL1 cleaning masks to the images if specified. + + Attributes + ---------- + channels : list of str + Specifies the data channels to be loaded, such as ``image`` and/or ``peak_time``. + clean : bool + Indicates whether to apply the DL1 cleaning mask to the integrated images. + transforms : dict + Contains scaling and offset values for image and peak time transformations. + """ + + channels = List( + trait=CaselessStrEnum(["image", "peak_time"]), + default_value=["image", "peak_time"], + allow_none=False, + help=( + "Set data loading mode. " + "Mono: single images of one telescope type " + "Stereo: events including multiple telescope types " + ) + + ).tag(config=True) + + clean = Bool( + default_value=False, + allow_none=False, + help="Set whether to apply the DL1 cleaning mask to the integrated images.", + ).tag(config=True) + def __init__( self, - file_list, - image_settings, - tel_types=None, - tel_ids=None, - mapping_settings=None, - mode=None, - quality_selection=None, - multiplicity_selection=None, + config=None, + parent=None, + **kwargs, ): - # Set data loading mode - # Mono: single images of one telescope type - # Stereo: events including multiple telescope types - if mode in ["mono", "stereo"]: - self.mode = mode + super().__init__(config=config, parent=parent, **kwargs) + + # Integrated charges and peak arrival times (DL1a) + if self.clean: + self.img_channels = [ + "cleaned_" + channel + for channel in self.channels + ] else: - raise ValueError( - f"Invalid mode selection '{mode}'. Valid options: 'mono', 'stereo'" - ) + self.img_channels = self.channels - # temp fix - self.include_nsb_patches = "off" - if self.mode == "mono": - DLMonoReader.__init__( - self, - file_list=file_list, - tel_types=tel_types, - tel_ids=tel_ids, - quality_selection=quality_selection, - mapping_settings=mapping_settings, - ) - elif self.mode == "stereo": - DLStereoReader.__init__( - self, - file_list=file_list, - tel_types=tel_types, - tel_ids=tel_ids, - mapping_settings=mapping_settings, - quality_selection=quality_selection, - multiplicity_selection=multiplicity_selection, - ) - - # Integrated charges and peak arrival times (DL1a) - self.image_channels = image_settings["image_channels"] - for camera_type in self.image_mapper.camera_types: - self.image_mapper.image_shapes[camera_type] = ( - self.image_mapper.image_shapes[camera_type][0], - self.image_mapper.image_shapes[camera_type][1], - len(self.image_channels), # number of channels - ) # Get offset and scaling of images - self.image_transforms = {} - self.image_transforms["image_scale"] = 0.0 - self.image_transforms["image_offset"] = 0 - self.image_transforms["peak_time_scale"] = 0.0 - self.image_transforms["peak_time_offset"] = 0 + self.transforms = {} + self.transforms["image_scale"] = 0.0 + self.transforms["image_offset"] = 0 + self.transforms["peak_time_scale"] = 0.0 + self.transforms["peak_time_offset"] = 0 first_tel_table = f"tel_{self.tel_ids[0]:03d}" with lock: img_table_v_attrs = ( @@ -1009,32 +905,47 @@ def __init__( ) # Check the transform value used for the file compression if "CTAFIELD_3_TRANSFORM_SCALE" in img_table_v_attrs: - self.image_transforms["image_scale"] = img_table_v_attrs[ + self.transforms["image_scale"] = img_table_v_attrs[ "CTAFIELD_3_TRANSFORM_SCALE" ] - self.image_transforms["image_offset"] = img_table_v_attrs[ + self.transforms["image_offset"] = img_table_v_attrs[ "CTAFIELD_3_TRANSFORM_OFFSET" ] if "CTAFIELD_4_TRANSFORM_SCALE" in img_table_v_attrs: - self.image_transforms["peak_time_scale"] = img_table_v_attrs[ + self.transforms["peak_time_scale"] = img_table_v_attrs[ "CTAFIELD_4_TRANSFORM_SCALE" ] - self.image_transforms["peak_time_offset"] = img_table_v_attrs[ + self.transforms["peak_time_offset"] = img_table_v_attrs[ "CTAFIELD_4_TRANSFORM_OFFSET" ] - for camera_type in self.image_mapper.camera_types: - self.image_mapper.image_shapes[camera_type] = ( - self.image_mapper.image_shapes[camera_type][0], - self.image_mapper.image_shapes[camera_type][1], - len(self.image_channels), # number of channels - ) - def _get_features(self, batch) -> (dict, Table): - features = {} + def _get_features(self, batch) -> dict: + """ + Retrieve images of a given batch as features. + + This method processes a batch of events to retrieve images as input features for the neural networks. + It reads the image data from the specified files, applies any necessary transformations, and maps + the images using the appropriate ``ImageMapper``. + + Parameters + ---------- + batch : Table + A table containing information at minimum the following columns: + - "file_index": List of indices corresponding to the files. + - "table_index": List of indices corresponding to the event tables. + - "tel_type_id": List of telescope type IDs. + - "tel_id": List of telescope IDs. + + Returns + ------- + dict + A dictionary containing the extracted features with the key ``images``, + which maps to a numpy array of the processed images. + """ images = [] - for file_idx, img_idx, tel_type_id, tel_id in zip( + for file_idx, table_idx, tel_type_id, tel_id in zip( batch["file_index"], - batch["img_index"], + batch["table_index"], batch["tel_type_id"], batch["tel_id"], ): @@ -1045,85 +956,188 @@ def _get_features(self, batch) -> (dict, Table): filename ].root.dl1.event.telescope.images._f_get_child(tel_table) unmapped_image = get_unmapped_image( - child[img_idx], self.image_channels, self.image_transforms + child[table_idx], self.img_channels, self.transforms ) - # Apply the ImageMapper whenever the mapping method is not indexed_conv + # Apply the 'ImageMapper' whenever the index matrix is not None. + # Otherwise, return the unmapped image for the 'IndexedConv' package. camera_type = self._get_camera_type( list(self.selected_telescopes.keys())[tel_type_id] ) - if self.image_mapper.mapping_method[camera_type] != "indexed_conv": - images.append(self.image_mapper.map_image(unmapped_image, camera_type)) + if self.image_mappers[camera_type].index_matrix is None: + images.append(self.image_mappers[camera_type].map_image(unmapped_image)) else: images.append(unmapped_image) - features["images"] = np.array(images) - return features, batch + return {"images": np.array(images)} -class DLWaveformReader(DLMonoReader, DLStereoReader): +def get_unmapped_waveform( + r1_event, + settings, + dl1_cleaning_mask=None, +): + """ + Retrieve and process the unmapped waveform from an R1 event. + + This function extracts the waveform data from an R1 event, applies necessary transformations + based on the provided settings, and optionally applies a DL1 cleaning mask. The function + supports handling waveforms with one or two gain channels and can crop the waveform sequence + based on the specified sequence length and position. + + Parameters + ---------- + r1_event : astropy.table.Table + A table containing the R1 event data, including ``waveform`` and ``selected_gain_channel``. + settings : dict + Dictionary containing settings for waveform processing, including: + - ``waveform_scale`` (float): Scale factor for waveform values. + - ``waveform_offset`` (int): Offset value for waveform values. + - ``type`` (str): Type of waveform processing (``calibrated`` or ``cleaned_calibrated``). + - ``seq_length`` (int): Length of the waveform sequence to be extracted. + - ``readout_length`` (int): Total length of the readout window. + - ``seq_position`` (str): Position of the sequence within the readout window (``center`` or ``maximum``). + dl1_cleaning_mask : numpy.ndarray, optional + Array containing the DL1 cleaning mask to be applied to the waveform to find the shower maximum + to center the sequence. Default is ``None``. + + Returns + ------- + numpy.ndarray + The processed and optionally cropped waveform data. + """ + + waveform = np.float32(r1_event["waveform"]) + # Check if camera has one or two gain(s) and apply selection + if waveform.shape[0] == 1: + waveform = waveform[0] + else: + selected_gain_channel = r1_event["selected_gain_channel"][:, np.newaxis] + waveform = np.where( + selected_gain_channel == 0, waveform[0], waveform[1] + ) + # Apply the transform to recover orginal floating point values if the file were compressed + if settings["waveform_scale"] > 0.0: + waveform /= settings["waveform_scale"] + if settings["waveform_offset"] > 0: + waveform -= settings["waveform_offset"] + # Apply the DL1 cleaning mask if selected + if settings["type"] == "cleaned_calibrated": + waveform *= dl1_cleaning_mask[:, None] + # Retrieve the sequence around the center of the readout window or the shower maximum + if settings["seq_length"] < settings["readout_length"]: + if settings["seq_position"] == "center": + sequence_position = waveform.shape[1] // 2 - 1 + elif settings["seq_position"] == "maximum": + if dl1_cleaning_mask is None: + sequence_position = np.argmax(np.sum(waveform, axis=0)) + else: + sequence_position = np.argmax( + np.sum(waveform * dl1_cleaning_mask[:, None], axis=0) + ) + # Calculate start and stop positions + start = max(0, int(1 + sequence_position - settings["seq_length"] / 2)) + stop = min(settings["readout_length"], int(1 + sequence_position + settings["seq_length"] / 2)) + # Adjust the start and stop if bound overflows + if stop > settings["readout_length"]: + start -= stop - settings["readout_length"] + stop = settings["readout_length"] + # Crop the unmapped waveform in samples + waveform = waveform[:, int(start) : int(stop)] + + return waveform + +lock = threading.Lock() + + +class DLWaveformReader(DLDataReader): + """ + A data reader class for handling R1 calibrated waveform data from telescopes. + + This class extends the ``DLDataReader`` to specifically handle the reading, + transformation, and mapping of R1 calibrated waveform data. It supports both ``mono`` + and ``stereo`` data loading modes and can apply DL1 cleaning masks to the waveforms + if specified. + + Attributes + ---------- + sequence_length : int or None + Number of waveform samples considered in the selected sequence. If None, + the sequence length is set to the readout length. + sequence_position : str + Position of the sequence within the readout window. Can be ``center`` or ``maximum``. + clean : bool + Indicates whether to apply the DL1 cleaning mask to the calibrated waveforms. + waveform_settings : dict + Contains settings for waveform processing, including type, sequence length, + readout length, sequence position, scale, and offset. + """ + + sequence_length = Int( + default_value=None, + allow_none=True, + help="Number of waveform samples considered in the selected sequence.", + ).tag(config=True) + + sequence_position = CaselessStrEnum( + ["center", "maximum"], + default_value="center", + help=( + "Set where to position the sequence if ``sequence_length`` is selected. " + "``center``: sequence is extracted around the center of the readout window. " + "``maximum``: sequence is extracted around the shower maximum. " + ), + ).tag(config=True) + + clean = Bool( + default_value=False, + allow_none=False, + help="Set whether to apply the DL1 cleaning mask to the calibrated waveforms.", + ).tag(config=True) + def __init__( self, - file_list, - waveform_settings, - tel_types=None, - tel_ids=None, - mapping_settings=None, - mode=None, - multiplicity_selection=None, - quality_selection=None, + config=None, + parent=None, + **kwargs, ): - # Set data loading mode - # Mono: single images of one telescope type - # Stereo: events including multiple telescope types - if mode in ["mono", "stereo"]: - self.mode = mode - else: - raise ValueError( - f"Invalid mode selection '{mode}'. Valid options: 'mono', 'stereo'" - ) + super().__init__(config=config, parent=parent, **kwargs) - # temp fix - self.include_nsb_patches = "off" - if self.mode == "mono": - DLMonoReader.__init__( - self, - file_list=file_list, - tel_types=tel_types, - tel_ids=tel_ids, - mapping_settings=mapping_settings, - quality_selection=quality_selection, - ) - elif self.mode == "stereo": - DLStereoReader.__init__( - self, - file_list=file_list, - tel_types=tel_types, - tel_ids=tel_ids, - mapping_settings=mapping_settings, - quality_selection=quality_selection, - multiplicity_selection=multiplicity_selection, - ) + # Read the readout length from the first file + self.readout_length = int( + self.files[self.first_file] + .root.r1.event.telescope._f_get_child(f"tel_{self.tel_ids[0]:03d}") + .coldescrs["waveform"] + .shape[-1] + ) - # Calibrated waveform (R1) - self.waveform_settings = waveform_settings - self.waveform_type = waveform_settings["type"] + # Set the sequence length to the readout length if not selected + if self.sequence_length is None: + self.sequence_length = self.readout_length + else: + # Check that the waveform sequence length is valid + if self.sequence_length > self.readout_length: + raise ValueError( + f"Invalid sequence length '{self.sequence_length}' (must be <= '{self.readout_length}')." + ) - first_tel_table = f"tel_{self.tel_ids[0]:03d}" + # Construct settings dict for the calibrated waveforms + self.waveform_type = "cleaned_calibrated" if self.clean else "calibrated" + self.waveform_settings = { + "type": self.waveform_type, + "seq_length": self.sequence_length, + "readout_length": self.readout_length, + "seq_position": self.sequence_position, + } + + # Check the transform value used for the file compression + self.waveform_settings["waveform_scale"] = 0.0 + self.waveform_settings["waveform_offset"] = 0 with lock: wvf_table_v_attrs = ( self.files[self.first_file] - .root.r1.event.telescope._f_get_child(first_tel_table) + .root.r1.event.telescope._f_get_child(f"tel_{self.tel_ids[0]:03d}") ._v_attrs ) - self.waveform_settings["sequence_max_length"] = ( - self.files[self.first_file] - .root.r1.event.telescope._f_get_child(first_tel_table) - .coldescrs["waveform"] - .shape[-1] - ) - self.waveform_settings["waveform_scale"] = 0.0 - self.waveform_settings["waveform_offset"] = 0 - # Check the transform value used for the file compression if "CTAFIELD_5_TRANSFORM_SCALE" in wvf_table_v_attrs: self.waveform_settings["waveform_scale"] = wvf_table_v_attrs[ "CTAFIELD_5_TRANSFORM_SCALE" @@ -1131,32 +1145,34 @@ def __init__( self.waveform_settings["waveform_offset"] = wvf_table_v_attrs[ "CTAFIELD_5_TRANSFORM_OFFSET" ] - # Check that the waveform sequence length is valid - if ( - self.waveform_settings["sequence_length"] - > self.waveform_settings["sequence_max_length"] - ): - raise ValueError( - f"Invalid sequence length '{self.waveform_settings['sequence_length']}' (must be <= '{self.waveform_settings['sequence_max_length']}')." - ) - # Set the shapes of the waveforms - self.waveform_settings["shapes"] = {} - for camera_type in self.image_mapper.camera_types: - self.image_mapper.image_shapes[camera_type] = ( - self.image_mapper.image_shapes[camera_type][0], - self.image_mapper.image_shapes[camera_type][1], - self.waveform_settings["sequence_length"], - ) - self.waveform_settings["shapes"][camera_type] = ( - self.image_mapper.image_shapes[camera_type] - ) - def _get_features(self, batch) -> (dict, Table): - features = {} + def _get_features(self, batch) -> dict: + """ + Retrieve waveforms of a given batch as features. + + This method processes a batch of events to retrieve waveforms as input features for the neural networks. + It reads the waveform data from the specified files, applies any necessary transformations, and maps + the waveforms using the appropriate ``ImageMapper``. + + Parameters + ---------- + batch : astropy.table.Table + A table containing information at minimum the following columns: + - ``file_index``: List of indices corresponding to the files. + - ``table_index``: List of indices corresponding to the event tables. + - ``tel_type_id``: List of telescope type IDs. + - ``tel_id``: List of telescope IDs. + + Returns + ------- + dict + A dictionary containing the extracted features with the key ``waveforms``, + which maps to a numpy array of the processed waveforms. + """ waveforms = [] - for file_idx, img_idx, tel_type_id, tel_id in zip( + for file_idx, table_idx, tel_type_id, tel_id in zip( batch["file_index"], - batch["img_index"], + batch["table_index"], batch["tel_type_id"], batch["tel_id"], ): @@ -1173,237 +1189,20 @@ def _get_features(self, batch) -> (dict, Table): filename ].root.dl1.event.telescope.images._f_get_child(tel_table) dl1_cleaning_mask = np.array( - img_child[img_idx]["image_mask"], dtype=int + img_child[table_idx]["image_mask"], dtype=int ) unmapped_waveform = get_unmapped_waveform( - child[img_idx], + child[table_idx], self.waveform_settings, dl1_cleaning_mask, ) - # Apply the ImageMapper whenever the mapping method is not indexed_conv + # Apply the 'ImageMapper' whenever the index matrix is not None. + # Otherwise, return the unmapped image for the 'IndexedConv' package. camera_type = self._get_camera_type( list(self.selected_telescopes.keys())[tel_type_id] ) - if self.image_mapper.mapping_method[camera_type] != "indexed_conv": - waveforms.append( - self.image_mapper.map_image(unmapped_waveform, camera_type) - ) + if self.image_mappers[camera_type].index_matrix is None: + waveforms.append(self.image_mappers[camera_type].map_image(unmapped_waveform)) else: waveforms.append(unmapped_waveform) - features["waveforms"] = np.array(waveforms) - return features, batch - - -class DLTriggerReader(DLMonoReader): - def __init__( - self, - file_list, - waveform_settings, - trigger_settings, - tel_types=None, - tel_ids=None, - mapping_settings=None, - ): - - # Set data loading mode to mono - self.mode = "mono" - # AI-based trigger system settings - self.trigger_settings = trigger_settings - self.include_nsb_patches = self.trigger_settings["include_nsb_patches"] - self.get_trigger_patch_from = self.trigger_settings["get_patch_from"] - - DLMonoReader.__init__( - self, - file_list=file_list, - tel_types=tel_types, - tel_ids=tel_ids, - mapping_settings=mapping_settings, - ) - - # AI-based trigger system - # Obtain trigger patch info from an external algorithm (i.e. DBScan) - # TODO: Make a better iterface to read the trigger patch info - # Either append the hdf5 file with the trigger patch info or implement - # the DBscan algorithm here in the reader. - if self.get_trigger_patch_from == "file": - trigger_patch_info = [] - for filename in self.files: - try: - # Read csv containing the trigger patch info - import pandas as pd - - trigger_patch_info_csv_file = pd.read_csv( - filename.replace("r0.dl1.h5", "npe.csv") - )[ - [ - "obs_id", - "event_id", - "tel_id", - "trg_pixel_id", - "trg_waveform_sample_id", - ] - ].astype( - int - ) - trigger_patch_info.append( - Table.from_pandas(trigger_patch_info_csv_file) - ) - except: - raise IOError( - f"There is a problem with '{filename.replace('r0.dl1.h5','npe.csv')}'!" - ) - - # Join the events table ith the trigger patch info - self.example_identifiers = join( - left=vstack(trigger_patch_info), - right=self.example_identifiers, - keys=["obs_id", "event_id", "tel_id"], - ) - # Remove non-trigger events from the self.example_identifiers - # identified by negative pixel ids - self.example_identifiers = self.example_identifiers[ - self.example_identifiers["trg_pixel_id"] >= 0 - ] - - # Raw waveform (R0) - self.waveform_settings = waveform_settings - self.waveform_type = waveform_settings["type"] - first_tel_table = f"tel_{self.tel_ids[0]:03d}" - self.waveform_settings["sequence_max_length"] = ( - self.files[self.first_file] - .root.r0.event.telescope._f_get_child(first_tel_table) - .coldescrs["waveform"] - .shape[-1] - ) - # Check that the waveform sequence length is valid - if ( - self.waveform_settings["sequence_length"] - > self.waveform_settings["sequence_max_length"] - ): - raise ValueError( - f"Invalid sequence length '{self.waveform_settings['sequence_length']}' (must be <= '{self.waveform_settings['sequence_max_length']}')." - ) - self.waveform_settings["shapes"] = {} - for camera_type in self.image_mapper.camera_types: - self.image_mapper.image_shapes[camera_type] = ( - self.image_mapper.image_shapes[camera_type][0], - self.image_mapper.image_shapes[camera_type][1], - self.waveform_settings["sequence_length"], - ) - self.waveform_settings["shapes"][camera_type] = ( - self.image_mapper.image_shapes[camera_type] - ) - self.trigger_settings["patches_xpos"] = {} - self.trigger_settings["patches_ypos"] = {} - # Autoset the trigger patches - if ( - "patch_size" not in self.trigger_settings - or "patches" not in self.trigger_settings - ): - trigger_patches_xpos = np.linspace( - 0, - self.image_mapper.image_shapes[camera_type][0], - num=self.trigger_settings["number_of_patches"][0] + 1, - endpoint=False, - dtype=int, - )[1:] - trigger_patches_ypos = np.linspace( - 0, - self.image_mapper.image_shapes[camera_type][1], - num=self.trigger_settings["number_of_patches"][0] + 1, - endpoint=False, - dtype=int, - )[1:] - self.trigger_settings["patch_size"] = { - camera_type: [ - trigger_patches_xpos[0] * 2, - trigger_patches_ypos[0] * 2, - ] - } - self.trigger_settings["patches"] = {camera_type: []} - for patches in np.array( - np.meshgrid(trigger_patches_xpos, trigger_patches_ypos) - ).T: - for patch in patches: - self.trigger_settings["patches"][camera_type].append( - {"x": patch[0], "y": patch[1]} - ) - - self.waveform_settings["shapes"][camera_type] = ( - self.trigger_settings["patch_size"][camera_type][0], - self.trigger_settings["patch_size"][camera_type][1], - self.waveform_settings["sequence_length"], - ) - self.trigger_settings["patches_xpos"][camera_type] = np.unique( - [patch["x"] for patch in trigger_settings["patches"][camera_type]] - ) - self.trigger_settings["patches_ypos"][camera_type] = np.unique( - [patch["y"] for patch in trigger_settings["patches"][camera_type]] - ) - - def _get_features(self, batch) -> (dict, Table): - features = {} - - # Get the trigger patches from - trg_pixel_id, trg_waveform_sample_id = None, None - if self.get_trigger_patch_from == "file": - trg_pixel_ids = batch["trg_pixel_id"] - trg_waveform_sample_ids = batch["trg_waveform_sample_id"] - trigger_patches, true_cherenkov_photons = [], [] - random_trigger_patch = False - for i, (file_idx, img_idx, tel_type_id, tel_id) in enumerate( - zip( - batch["file_index"], - batch["img_index"], - batch["tel_type_id"], - batch["tel_id"], - ) - ): - filename = list(self.files)[file_idx] - if self.get_trigger_patch_from == "file": - trg_pixel_id = trg_pixel_ids[i] - trg_waveform_sample_id = trg_waveform_sample_ids[i] - with lock: - tel_table = f"tel_{tel_id:03d}" - child = self.files[filename].root.r0.event.telescope._f_get_child( - tel_table - ) - true_image = None - if self.process_type == "Simulation": - if self.include_nsb_patches == "auto": - random_trigger_patch = np.random.choice( - [False, True], p=[self._shower_prob, self._nsb_prob] - ) - elif self.include_nsb_patches == "all": - random_trigger_patch = True - if "images" in self.files[filename].root.simulation.event.telescope: - sim_child = self.files[ - filename - ].root.simulation.event.telescope.images._f_get_child(tel_table) - true_image = np.expand_dims( - np.array(sim_child[img_idx]["true_image"], dtype=int), - axis=1, - ) - camera_type = self._get_camera_type( - list(self.selected_telescopes.keys())[tel_type_id] - ) - waveform, trigger_patch_true_image_sum = get_mapped_triggerpatch( - child[img_idx], - self.waveform_settings, - self.trigger_settings, - self.image_mapper, - camera_type, - true_image, - random_trigger_patch, - trg_pixel_id, - trg_waveform_sample_id, - ) - trigger_patches.append(waveform) - if trigger_patch_true_image_sum is not None: - true_cherenkov_photons.append(trigger_patch_true_image_sum) - features["waveforms"] = np.array(trigger_patches) - # Add the true cherenkov photons to the batch if available - if len(true_cherenkov_photons) > 0: - batch.add_column(true_cherenkov_photons, name="true_cherenkov_photons") - - return features, batch + return {"waveforms": np.array(waveforms)} \ No newline at end of file From ce5ee63a6e5894d41a023d66f5e67d41637bbec3 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Thu, 12 Sep 2024 17:39:02 +0200 Subject: [PATCH 26/92] polish docstrings --- dl1_data_handler/image_mapper.py | 132 +++++++++++++++++++++++++++---- dl1_data_handler/reader.py | 6 +- 2 files changed, 117 insertions(+), 21 deletions(-) diff --git a/dl1_data_handler/image_mapper.py b/dl1_data_handler/image_mapper.py index b242e18..3e4f000 100644 --- a/dl1_data_handler/image_mapper.py +++ b/dl1_data_handler/image_mapper.py @@ -1,3 +1,7 @@ +""" +This module defines the ``ImageMapper`` classes, which holds the basic functionality for mapping raw 1D vectors into 2D mapped images. +""" + import numpy as np from scipy import spatial from scipy.sparse import csr_matrix @@ -131,8 +135,17 @@ def __init__( def map_image(self, raw_vector): """ - :param raw_vector: a numpy array of values for each pixel, in order of pixel index. - :return: a numpy array of shape [img_width, img_length, N_channels] + Map the raw pixel data to a 2D image. + + Parameters + ---------- + raw_vector : numpy.ndarray + A numpy array of values for each pixel, in order of pixel index. + + Returns + ------- + numpy.ndarray + A numpy array of shape [img_width, img_length, N_channels]. """ # Reshape each channel and stack the result images = np.concatenate( @@ -147,6 +160,7 @@ def map_image(self, raw_vector): return images def _get_virtual_pixels(self, x_ticks, y_ticks, pix_x, pix_y): + """Get the virtual pixels outside of the camera.""" gridpoints = np.array(np.meshgrid(x_ticks, y_ticks)).T.reshape(-1, 2) gridpoints = [tuple(l) for l in gridpoints.tolist()] virtual_pixels = set(gridpoints) - set(zip(pix_x, pix_y)) @@ -156,6 +170,7 @@ def _get_virtual_pixels(self, x_ticks, y_ticks, pix_x, pix_y): def _create_virtual_hex_pixels( self, first_ticks, second_ticks, first_pos, second_pos ): + """Create virtual hexagonal pixels outside of the camera.""" dist_first = np.around(abs(first_ticks[0] - first_ticks[1]), decimals=3) dist_second = np.around(abs(second_ticks[0] - second_ticks[1]), decimals=3) @@ -200,6 +215,7 @@ def _create_virtual_hex_pixels( return first_pos, second_pos, dist_first, dist_second def _generate_nearestneighbor_table(self, input_grid, output_grid, pixel_weight): + """Generate a nearest neighbor table for mapping.""" # Finding the nearest point in the hexagonal input grid # for each point in the square utü grid tree = spatial.cKDTree(input_grid) @@ -217,6 +233,7 @@ def _generate_nearestneighbor_table(self, input_grid, output_grid, pixel_weight) return self._get_sparse_mapping_matrix(mapping_matrix) def _get_sparse_mapping_matrix(self, mapping_matrix, normalize=False): + """Get a sparse mapping matrix from the given mapping matrix.""" # Cutting the mapping table after n_pixels, since the virtual pixels have intensity zero. mapping_matrix = mapping_matrix[: self.n_pixels] # Normalization (approximation) of the mapping table @@ -240,17 +257,25 @@ def _get_sparse_mapping_matrix(self, mapping_matrix, normalize=False): ) return sparse_mapping_matrix - def _get_weights(self, p, target): + def _get_weights(self, points, target): """ Calculate barycentric weights for multiple triangles and target points. - :param p: a numpy array of shape (i, 3, 2) for three points (one triangle). The index i means that one can calculate the weights for multiple triangles with one function call. - :param target: a numpy array of shape (i, 2) for one target 2D point. - :return: a numpy array of shape (i, 3) containing the three weights. + Parameters + ---------- + points : numpy.ndarray + A numpy array of shape (i, 3, 2) for three points (one triangle). + target : numpy.ndarray + A numpy array of shape (i, 2) for one target 2D point. + + Returns + ------- + numpy.ndarray + A numpy array of shape (i, 3) containing the three weights. """ - x1, y1 = p[:, 0, 0], p[:, 0, 1] - x2, y2 = p[:, 1, 0], p[:, 1, 1] - x3, y3 = p[:, 2, 0], p[:, 2, 1] + x1, y1 = points[:, 0, 0], points[:, 0, 1] + x2, y2 = points[:, 1, 0], points[:, 1, 1] + x3, y3 = points[:, 2, 0], points[:, 2, 1] xt, yt = target[:, 0], target[:, 1] divisor = (y2 - y3) * (x1 - x3) + (x3 - x2) * (y1 - y3) @@ -264,9 +289,7 @@ def _get_weights(self, p, target): def _get_grids_for_interpolation( self, ): - """ - :return: two 2D numpy arrays (hexagonal input grid and squared output grid) - """ + """Get the grids for interpolation.""" # Check orientation of the hexagonal pixels first_ticks, first_pos, second_ticks, second_pos = ( @@ -310,6 +333,7 @@ def _get_grids_for_interpolation( return input_grid, output_grid def _smooth_ticks(self, pix_pos, ticks): + """Smooth the ticks needed for the 'DigiCam' and 'CHEC' cameras.""" remove_val, change_val = [], [] for i in range(len(ticks) - 1): if abs(ticks[i] - ticks[i + 1]) <= 0.002: @@ -325,6 +349,14 @@ def _smooth_ticks(self, pix_pos, ticks): class SquareMapper(ImageMapper): + """ + SquareMapper maps images to a square pixel grid without any modifications. + + This class extends the functionality of ImageMapper by implementing + methods to generate a direct mapping table and perform the transformation. + It is particularly useful for applications where a direct one-to-one + mapping is sufficient for converting pixel data.for square pixel cameras + """ def __init__( self, geometry, @@ -382,6 +414,16 @@ def _get_square_grid( class AxialMapper(ImageMapper): + """ + AxialMapper applies a transformation to axial coordinates to map images + from a hexagonal pixel grid to a square pixel grid. + + This class extends the functionality of ImageMapper by implementing + methods to generate an axial mapping table and perform the transformation. + It is particularly useful for applications where axial coordinate + transformations are required for mapping pixel data. + """ + set_index_matrix = Bool( default_value=False, help=( @@ -499,6 +541,16 @@ def _get_grids( class ShiftingMapper(ImageMapper): + """ + ShiftingMapper applies a shifting transformation to map images + from a hexagonal pixel grid to a square pixel grid. + + This class extends the functionality of ImageMapper by implementing + methods to generate a shifting mapping table and perform the transformation. + It is particularly useful for applications where a simple shift-based + transformation is sufficient for mapping hexagonal pixel data. + """ + def __init__( self, geometry, @@ -581,6 +633,18 @@ def _get_grids( class OversamplingMapper(ImageMapper): + """ + OversamplingMapper maps images from a hexagonal pixel grid to + a square pixel grid using oversampling techniques. + + This class extends the functionality of ImageMapper by implementing + methods to generate an oversampling mapping table and perform the transformation. + One hexganoal pixel is split into four square pixels, which are then weighted + by one quarter of the intensity of the hexagonal pixel. The resulting + image is stretched in one direction. It is particularly useful for applications + where interpolation effects want to be surpressed. + """ + def __init__( self, geometry, @@ -668,6 +732,16 @@ def _get_grids( class NearestNeighborMapper(ImageMapper): + """ + NearestNeighborMapper maps images from a hexagonal pixel grid to + a square pixel grid using the nearest neighbor assignment technique. + + This class extends the functionality of ImageMapper by implementing + methods to generate a nearest neighbor mapping table and perform the + interpolation. It is particularly useful for applications where simplicity + and computational efficiency is prioritized over interpolation accuracy. + """ + interpolation_image_shape = Int( default_value=None, allow_none=True, @@ -709,6 +783,18 @@ def __init__( class BilinearMapper(ImageMapper): + """ + BilinearMapper maps images from a hexagonal pixel grid to + a square pixel grid using bilinear interpolation. + + This class extends the functionality of ImageMapper by implementing + methods to generate a bilinear interpolation mapping table and perform the transformation. + It leverages Delaunay triangulation to find the nearest neighbors for the interpolation process. + The mapping table is normalized to ensure that the intensity of the pixels is preserved. + It is particularly useful for applications where smooth and continuous mapping + of pixel data is required. Recommended to use as default for hexagonal pixel cameras. + """ + interpolation_image_shape = Int( default_value=None, allow_none=True, @@ -768,13 +854,14 @@ def _generate_table(self, input_grid, output_grid): class BicubicMapper(ImageMapper): """ - BicubicMapper is a class that extends the ImageMapper class to provide - bicubic interpolation mapping functionality. + BicubicMapper maps images from a hexagonal pixel grid to + a square pixel grid using bicubic interpolation. This class is used to generate a mapping table that maps input grid points - to output grid points using bicubic interpolation. It leverages Delaunay - triangulation to find the nearest neighbors and second nearest neighbors - for the interpolation process. + to output grid points using bicubic interpolation. The mapping table is + normalized to ensure that the intensity of the pixels is preserved. It + leverages Delaunay triangulation to find the nearest neighbors and second + nearest neighbors for the interpolation process. """ interpolation_image_shape = Int( @@ -983,6 +1070,17 @@ def _get_triangle(self, tri, hex_grid, simplex_index_NN, table_simplex): class RebinMapper(ImageMapper): + """ + RebinMapper maps images from a hexagonal pixel grid to + a square pixel grid using a rebinning technique. + + This class extends the functionality of ImageMapper by implementing + methods to generate a rebinning mapping table and perform the transformation. + Hexagonal pixels are rebinned or reshaped to square pixels, which preserve + the intensity of the pixels. It is particularly useful for + applications where a simple and efficient rebinning of pixel data is required. + """ + interpolation_image_shape = Int( default_value=None, allow_none=True, diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 4dc733f..6feb2f3 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -184,7 +184,7 @@ class DLDataReader(Component): ).tag(config=True) min_telescopes = Int( - default_value=4, + default_value=1, help=( "Minimum number of telescopes required globally after ``TableQualityQuery``. " "Events with fewer telescopes will be filtered out completely. " @@ -619,9 +619,7 @@ def _get_tel_pointing(self, file, tel_ids): return vstack(tel_pointing) def _transform_to_log_energy(self, table): - """ - Transform true energy values in the given table to logarithmic space. - """ + """Transform true energy values in the given table to logarithmic space.""" table.add_column(np.log10(table["true_energy"]), name="log_true_energy") return table From fbdcb805387318f1e86c845d9531562075a27df8 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Thu, 12 Sep 2024 18:04:18 +0200 Subject: [PATCH 27/92] removed multiple locks --- dl1_data_handler/reader.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 6feb2f3..e2620e9 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -831,8 +831,6 @@ def get_unmapped_image(dl1_event, channels, transforms): return image -lock = threading.Lock() - class DLImageReader(DLDataReader): """ A data reader class for handling DL1 image data from telescopes. @@ -1043,8 +1041,6 @@ def get_unmapped_waveform( return waveform -lock = threading.Lock() - class DLWaveformReader(DLDataReader): """ From ec97818324a42a50286b093fc0bbe9885a45d08f Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Wed, 18 Sep 2024 15:32:27 +0200 Subject: [PATCH 28/92] remove magic numbers by constants --- dl1_data_handler/image_mapper.py | 166 +++++++++++++++++++++++-------- 1 file changed, 125 insertions(+), 41 deletions(-) diff --git a/dl1_data_handler/image_mapper.py b/dl1_data_handler/image_mapper.py index 3e4f000..6ee163c 100644 --- a/dl1_data_handler/image_mapper.py +++ b/dl1_data_handler/image_mapper.py @@ -5,7 +5,7 @@ import numpy as np from scipy import spatial from scipy.sparse import csr_matrix -from collections import Counter +from collections import Counter, namedtuple from ctapipe.instrument.camera import PixelShape from ctapipe.core import TelescopeComponent @@ -23,6 +23,9 @@ "SquareMapper", ] +# Constants for the ImageMapper classes +Constants = namedtuple("Constants", ["decimal_precision", "tick_interval_limit"]) +constants = Constants(3, 0.002) class ImageMapper(TelescopeComponent): """ @@ -109,8 +112,12 @@ def __init__( # Rotate the pixel positions by the pixel to align self.geometry.rotate(self.geometry.pix_rotation) - self.pix_x = np.around(self.geometry.pix_x.value, decimals=3) - self.pix_y = np.around(self.geometry.pix_y.value, decimals=3) + self.pix_x = np.around( + self.geometry.pix_x.value, decimals=constants.decimal_precision + ) + self.pix_y = np.around( + self.geometry.pix_y.value, decimals=constants.decimal_precision + ) self.x_ticks = np.unique(self.pix_x).tolist() self.y_ticks = np.unique(self.pix_y).tolist() @@ -133,7 +140,7 @@ def __init__( # Set the indexed matrix to None self.index_matrix = None - def map_image(self, raw_vector): + def map_image(self, raw_vector: np.array) -> np.array: """ Map the raw pixel data to a 2D image. @@ -171,28 +178,57 @@ def _create_virtual_hex_pixels( self, first_ticks, second_ticks, first_pos, second_pos ): """Create virtual hexagonal pixels outside of the camera.""" - dist_first = np.around(abs(first_ticks[0] - first_ticks[1]), decimals=3) - dist_second = np.around(abs(second_ticks[0] - second_ticks[1]), decimals=3) + dist_first = np.around( + abs(first_ticks[0] - first_ticks[1]), decimals=constants.decimal_precision + ) + dist_second = np.around( + abs(second_ticks[0] - second_ticks[1]), decimals=constants.decimal_precision + ) tick_diff = len(first_ticks) * 2 - len(second_ticks) tick_diff_each_side = tick_diff // 2 # Extend second_ticks for _ in range(tick_diff_each_side + self.internal_pad * 2): second_ticks = ( - [np.around(second_ticks[0] - dist_second, decimals=3)] + [ + np.around( + second_ticks[0] - dist_second, + decimals=constants.decimal_precision, + ) + ] + second_ticks - + [np.around(second_ticks[-1] + dist_second, decimals=3)] + + [ + np.around( + second_ticks[-1] + dist_second, + decimals=constants.decimal_precision, + ) + ] ) # Extend first_ticks for _ in range(self.internal_pad): first_ticks = ( - [np.around(first_ticks[0] - dist_first, decimals=3)] + [ + np.around( + first_ticks[0] - dist_first, + decimals=constants.decimal_precision, + ) + ] + first_ticks - + [np.around(first_ticks[-1] + dist_first, decimals=3)] + + [ + np.around( + first_ticks[-1] + dist_first, + decimals=constants.decimal_precision, + ) + ] ) # Adjust for odd tick_diff if tick_diff % 2 != 0: - second_ticks.insert(0, np.around(second_ticks[0] - dist_second, decimals=3)) + second_ticks.insert( + 0, + np.around( + second_ticks[0] - dist_second, decimals=constants.decimal_precision + ), + ) # Create the virtual pixels outside of the camera virtual_pixels = [] @@ -336,7 +372,7 @@ def _smooth_ticks(self, pix_pos, ticks): """Smooth the ticks needed for the 'DigiCam' and 'CHEC' cameras.""" remove_val, change_val = [], [] for i in range(len(ticks) - 1): - if abs(ticks[i] - ticks[i + 1]) <= 0.002: + if abs(ticks[i] - ticks[i + 1]) <= constants.tick_interval_limit: remove_val.append(ticks[i]) change_val.append(ticks[i + 1]) @@ -352,11 +388,12 @@ class SquareMapper(ImageMapper): """ SquareMapper maps images to a square pixel grid without any modifications. - This class extends the functionality of ImageMapper by implementing - methods to generate a direct mapping table and perform the transformation. - It is particularly useful for applications where a direct one-to-one + This class extends the functionality of ImageMapper by implementing + methods to generate a direct mapping table and perform the transformation. + It is particularly useful for applications where a direct one-to-one mapping is sufficient for converting pixel data.for square pixel cameras """ + def __init__( self, geometry, @@ -415,12 +452,12 @@ def _get_square_grid( class AxialMapper(ImageMapper): """ - AxialMapper applies a transformation to axial coordinates to map images + AxialMapper applies a transformation to axial coordinates to map images from a hexagonal pixel grid to a square pixel grid. - This class extends the functionality of ImageMapper by implementing - methods to generate an axial mapping table and perform the transformation. - It is particularly useful for applications where axial coordinate + This class extends the functionality of ImageMapper by implementing + methods to generate an axial mapping table and perform the transformation. + It is particularly useful for applications where axial coordinate transformations are required for mapping pixel data. """ @@ -489,13 +526,21 @@ def _get_grids( else (self.y_ticks, self.pix_y, self.x_ticks, self.pix_x) ) - dist_first = np.around(abs(first_ticks[0] - first_ticks[1]), decimals=3) - dist_second = np.around(abs(second_ticks[0] - second_ticks[1]), decimals=3) + dist_first = np.around( + abs(first_ticks[0] - first_ticks[1]), decimals=constants.decimal_precision + ) + dist_second = np.around( + abs(second_ticks[0] - second_ticks[1]), decimals=constants.decimal_precision + ) # manipulate y ticks with extra ticks num_extra_ticks = len(self.y_ticks) for i in np.arange(num_extra_ticks): - second_ticks.append(np.around(second_ticks[-1] + dist_second, decimals=3)) + second_ticks.append( + np.around( + second_ticks[-1] + dist_second, decimals=constants.decimal_precision + ) + ) first_ticks = reversed(first_ticks) for shift, ticks in enumerate(first_ticks): for i in np.arange(len(second_pos)): @@ -510,10 +555,20 @@ def _get_grids( # Squaring the output image if grid axes have not the same length. if len(grid_first) > len(grid_second): for i in np.arange(len(grid_first) - len(grid_second)): - grid_second.append(np.around(grid_second[-1] + dist_second, decimals=3)) + grid_second.append( + np.around( + grid_second[-1] + dist_second, + decimals=constants.decimal_precision, + ) + ) elif len(grid_first) < len(grid_second): for i in np.arange(len(grid_second) - len(grid_first)): - grid_first.append(np.around(grid_first[-1] + dist_first, decimals=3)) + grid_first.append( + np.around( + grid_first[-1] + dist_first, + decimals=constants.decimal_precision, + ) + ) # Overwrite image_shape with the new shape of axial addressing self.image_shape = len(grid_first) @@ -544,10 +599,10 @@ class ShiftingMapper(ImageMapper): """ ShiftingMapper applies a shifting transformation to map images from a hexagonal pixel grid to a square pixel grid. - - This class extends the functionality of ImageMapper by implementing - methods to generate a shifting mapping table and perform the transformation. - It is particularly useful for applications where a simple shift-based + + This class extends the functionality of ImageMapper by implementing + methods to generate a shifting mapping table and perform the transformation. + It is particularly useful for applications where a simple shift-based transformation is sufficient for mapping hexagonal pixel data. """ @@ -609,11 +664,25 @@ def _get_grids( tick_diff_each_side = tick_diff // 2 # Extend second_ticks on both sides for _ in np.arange(tick_diff_each_side): - second_ticks.append(np.around(second_ticks[-1] + dist_second, decimals=3)) - second_ticks.insert(0, np.around(second_ticks[0] - dist_second, decimals=3)) + second_ticks.append( + np.around( + second_ticks[-1] + dist_second, decimals=constants.decimal_precision + ) + ) + second_ticks.insert( + 0, + np.around( + second_ticks[0] - dist_second, decimals=constants.decimal_precision + ), + ) # If tick_diff is odd, add one more tick to the beginning if tick_diff % 2 != 0: - second_ticks.insert(0, np.around(second_ticks[0] - dist_second, decimals=3)) + second_ticks.insert( + 0, + np.around( + second_ticks[0] - dist_second, decimals=constants.decimal_precision + ), + ) # Create the input and output grid for i in np.arange(len(second_pos)): if second_pos[i] in second_ticks[::2]: @@ -637,7 +706,7 @@ class OversamplingMapper(ImageMapper): OversamplingMapper maps images from a hexagonal pixel grid to a square pixel grid using oversampling techniques. - This class extends the functionality of ImageMapper by implementing + This class extends the functionality of ImageMapper by implementing methods to generate an oversampling mapping table and perform the transformation. One hexganoal pixel is split into four square pixels, which are then weighted by one quarter of the intensity of the hexagonal pixel. The resulting @@ -711,14 +780,29 @@ def _get_grids( # Extend second_ticks for _ in range(tick_diff): grid_second = ( - [np.around(grid_second[0] - dist_second, decimals=3)] + [ + np.around( + grid_second[0] - dist_second, + decimals=constants.decimal_precision, + ) + ] + grid_second - + [np.around(grid_second[-1] + dist_second, decimals=3)] + + [ + np.around( + grid_second[-1] + dist_second, + decimals=constants.decimal_precision, + ) + ] ) # Adjust for odd tick_diff # TODO: Check why MAGICCam and VERITAS do not need this adjustment if tick_diff % 2 != 0 and self.camera_type not in ["MAGICCam", "VERITAS"]: - grid_second.insert(0, np.around(grid_second[0] - dist_second, decimals=3)) + grid_second.insert( + 0, + np.around( + grid_second[0] - dist_second, decimals=constants.decimal_precision + ), + ) if len(self.x_ticks) < len(self.y_ticks): input_grid = np.column_stack([first_pos, second_pos]) @@ -736,8 +820,8 @@ class NearestNeighborMapper(ImageMapper): NearestNeighborMapper maps images from a hexagonal pixel grid to a square pixel grid using the nearest neighbor assignment technique. - This class extends the functionality of ImageMapper by implementing - methods to generate a nearest neighbor mapping table and perform the + This class extends the functionality of ImageMapper by implementing + methods to generate a nearest neighbor mapping table and perform the interpolation. It is particularly useful for applications where simplicity and computational efficiency is prioritized over interpolation accuracy. """ @@ -787,11 +871,11 @@ class BilinearMapper(ImageMapper): BilinearMapper maps images from a hexagonal pixel grid to a square pixel grid using bilinear interpolation. - This class extends the functionality of ImageMapper by implementing - methods to generate a bilinear interpolation mapping table and perform the transformation. + This class extends the functionality of ImageMapper by implementing + methods to generate a bilinear interpolation mapping table and perform the transformation. It leverages Delaunay triangulation to find the nearest neighbors for the interpolation process. The mapping table is normalized to ensure that the intensity of the pixels is preserved. - It is particularly useful for applications where smooth and continuous mapping + It is particularly useful for applications where smooth and continuous mapping of pixel data is required. Recommended to use as default for hexagonal pixel cameras. """ @@ -1074,7 +1158,7 @@ class RebinMapper(ImageMapper): RebinMapper maps images from a hexagonal pixel grid to a square pixel grid using a rebinning technique. - This class extends the functionality of ImageMapper by implementing + This class extends the functionality of ImageMapper by implementing methods to generate a rebinning mapping table and perform the transformation. Hexagonal pixels are rebinned or reshaped to square pixels, which preserve the intensity of the pixels. It is particularly useful for From c17ba5627f2d8b1f0b24881870b6cb90102c93b5 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Wed, 18 Sep 2024 15:33:55 +0200 Subject: [PATCH 29/92] calculate class weights with floats --- dl1_data_handler/reader.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index e2620e9..0a3efaa 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -357,8 +357,8 @@ def __init__( if self.process_type == "Simulation": if self.bkg_input_files is not None: self.class_weight = { - 0: (1 / self.n_bkg_events) * (self._get_n_events() / 2.0), - 1: (1 / self.n_signal_events) * (self._get_n_events() / 2.0), + 0: (1.0 / self.n_bkg_events) * (self._get_n_events() / 2.0), + 1: (1.0 / self.n_signal_events) * (self._get_n_events() / 2.0), } def _get_camera_type(self, tel_type): From 4d305997f9ad922db0d26880d5f095659a94408e Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Wed, 18 Sep 2024 17:17:14 +0200 Subject: [PATCH 30/92] get default image shape from the data removed magic numbers --- dl1_data_handler/image_mapper.py | 194 ++++++++++----------- notebooks/test_image_mapper.ipynb | 279 +++++++++++++++--------------- 2 files changed, 238 insertions(+), 235 deletions(-) diff --git a/dl1_data_handler/image_mapper.py b/dl1_data_handler/image_mapper.py index 6ee163c..086bf22 100644 --- a/dl1_data_handler/image_mapper.py +++ b/dl1_data_handler/image_mapper.py @@ -86,28 +86,9 @@ def __init__( this is mutually exclusive with passing ``config`` """ - # Default image_shapes should be a non static field to prevent problems - # when multiple instances of ImageMapper are created - self.default_image_shapes = { - "LSTCam": 110, - "LSTSiPMCam": 234, - "FlashCam": 112, - "NectarCam": 110, - "SCTCam": 120, - "DigiCam": 96, - "CHEC": 48, - "ASTRICam": 56, - "VERITAS": 54, - "MAGICCam": 78, - "FACT": 92, - "HESS-I": 72, - "HESS-II": 104, - } - # Camera types self.geometry = geometry self.camera_type = self.geometry.name - self.image_shape = self.default_image_shapes[self.camera_type] self.n_pixels = self.geometry.n_pixels # Rotate the pixel positions by the pixel to align self.geometry.rotate(self.geometry.pix_rotation) @@ -129,10 +110,14 @@ def __init__( self.pix_x, self.x_ticks = self._smooth_ticks(self.pix_x, self.x_ticks) self.pix_y, self.y_ticks = self._smooth_ticks(self.pix_y, self.y_ticks) - # At the edges of the cameras the mapping methods run into issues. + # At the edges of the cameras some mapping methods run into issues. # Therefore, we are using a default padding to ensure that the camera pixels aren't affected. # The default padding is removed after the conversion is finished. - self.internal_pad = 3 + self.internal_pad = 0 + # Retrieve default shape of the image from the oversampling method. + _, output_grid = self._get_grids_for_oversampling() + # This value can be overwritten by the subclass + self.image_shape = int(len(output_grid) ** 0.5) # Only needed for rebinnig self.rebinning_mult_factor = 1 @@ -322,6 +307,75 @@ def _get_weights(self, points, target): weights = np.stack((w1, w2, w3), axis=-1) return weights.astype(np.float32) + + def _get_grids_for_oversampling( + self, + ): + """Get the grids for oversampling.""" + + # Check orientation of the hexagonal pixels + first_ticks, first_pos, second_ticks, second_pos = ( + (self.x_ticks, self.pix_x, self.y_ticks, self.pix_y) + if len(self.x_ticks) < len(self.y_ticks) + else (self.y_ticks, self.pix_y, self.x_ticks, self.pix_x) + ) + # Create the virtual pixels outside of the camera with hexagonal pixels + ( + first_pos, + second_pos, + dist_first, + dist_second, + ) = self._create_virtual_hex_pixels( + first_ticks, second_ticks, first_pos, second_pos + ) + + # Create the output grid + grid_first = [] + for i in first_ticks: + grid_first.append(i - dist_first / 4.0) + grid_first.append(i + dist_first / 4.0) + grid_second = [second_ticks[0] - dist_second / 2.0] + for j in second_ticks: + grid_second.append(j + dist_second / 2.0) + + tick_diff = (len(grid_first) - len(grid_second)) // 2 + # Extend second_ticks + for _ in range(tick_diff): + grid_second = ( + [ + np.around( + grid_second[0] - dist_second, + decimals=constants.decimal_precision, + ) + ] + + grid_second + + [ + np.around( + grid_second[-1] + dist_second, + decimals=constants.decimal_precision, + ) + ] + ) + # Adjust for odd tick_diff + # TODO: Check why MAGICCam and VERITAS do not need this adjustment + if tick_diff % 2 != 0 and self.camera_type not in ["MAGICCam", "VERITAS"]: + grid_second.insert( + 0, + np.around( + grid_second[0] - dist_second, decimals=constants.decimal_precision + ), + ) + + if len(self.x_ticks) < len(self.y_ticks): + input_grid = np.column_stack([first_pos, second_pos]) + x_grid, y_grid = np.meshgrid(grid_first, grid_second) + else: + input_grid = np.column_stack([second_pos, first_pos]) + x_grid, y_grid = np.meshgrid(grid_second, grid_first) + output_grid = np.column_stack([x_grid.ravel(), y_grid.ravel()]) + + return input_grid, output_grid + def _get_grids_for_interpolation( self, ): @@ -413,8 +467,8 @@ def __init__( "SquareMapper is only available for square pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) - # Set shape and padding for the square camera - self.internal_pad = 0 + # Set shape of the image for the square camera + self.image_shape //= 2 self.internal_shape = self.image_shape # Create square grid @@ -494,7 +548,6 @@ def __init__( output_grid, ) = self._get_grids() # Set shape and padding for the axial addressing method - self.internal_pad = 0 self.internal_shape = self.image_shape # Calculate the mapping table self.mapping_table = super()._generate_nearestneighbor_table( @@ -624,7 +677,7 @@ def __init__( raise ValueError( "ShiftingMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) - self.internal_pad = 0 + # Creating the hexagonal and the output grid for the conversion methods. input_grid, output_grid = self._get_grids() # Set shape for the axial addressing method @@ -732,87 +785,15 @@ def __init__( raise ValueError( "OversamplingMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) - self.internal_pad = 0 + self.internal_shape = self.image_shape # Creating the hexagonal and the output grid for the conversion methods. - input_grid, output_grid = self._get_grids() + input_grid, output_grid = super()._get_grids_for_oversampling() # Calculate the mapping table self.mapping_table = super()._generate_nearestneighbor_table( input_grid, output_grid, pixel_weight=0.25 ) - def _get_grids( - self, - ): - """ - :param pos: a 2D numpy array of pixel positions, which were taken from the CTApipe. - :param camera_type: a string specifying the camera type - :param grid_size_factor: a number specifying the grid size of the output grid. Only if 'rebinning' is selected, this factor differs from 1. - :return: two 2D numpy arrays (hexagonal grid and squared output grid) - """ - - # Check orientation of the hexagonal pixels - first_ticks, first_pos, second_ticks, second_pos = ( - (self.x_ticks, self.pix_x, self.y_ticks, self.pix_y) - if len(self.x_ticks) < len(self.y_ticks) - else (self.y_ticks, self.pix_y, self.x_ticks, self.pix_x) - ) - # Create the virtual pixels outside of the camera with hexagonal pixels - ( - first_pos, - second_pos, - dist_first, - dist_second, - ) = super()._create_virtual_hex_pixels( - first_ticks, second_ticks, first_pos, second_pos - ) - - # Create the output grid - grid_first = [] - for i in first_ticks: - grid_first.append(i - dist_first / 4.0) - grid_first.append(i + dist_first / 4.0) - grid_second = [second_ticks[0] - dist_second / 2.0] - for j in second_ticks: - grid_second.append(j + dist_second / 2.0) - - tick_diff = (len(grid_first) - len(grid_second)) // 2 - # Extend second_ticks - for _ in range(tick_diff): - grid_second = ( - [ - np.around( - grid_second[0] - dist_second, - decimals=constants.decimal_precision, - ) - ] - + grid_second - + [ - np.around( - grid_second[-1] + dist_second, - decimals=constants.decimal_precision, - ) - ] - ) - # Adjust for odd tick_diff - # TODO: Check why MAGICCam and VERITAS do not need this adjustment - if tick_diff % 2 != 0 and self.camera_type not in ["MAGICCam", "VERITAS"]: - grid_second.insert( - 0, - np.around( - grid_second[0] - dist_second, decimals=constants.decimal_precision - ), - ) - - if len(self.x_ticks) < len(self.y_ticks): - input_grid = np.column_stack([first_pos, second_pos]) - x_grid, y_grid = np.meshgrid(grid_first, grid_second) - else: - input_grid = np.column_stack([second_pos, first_pos]) - x_grid, y_grid = np.meshgrid(grid_second, grid_first) - output_grid = np.column_stack([x_grid.ravel(), y_grid.ravel()]) - - return input_grid, output_grid class NearestNeighborMapper(ImageMapper): @@ -854,6 +835,9 @@ def __init__( "NearestNeighborMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) + # At the edges of the cameras the mapping methods run into issues. + # Therefore, we are using a default padding to ensure that the camera pixels aren't affected. + # The default padding is removed after the conversion is finished. self.internal_pad = 3 if self.interpolation_image_shape is not None: self.image_shape = self.interpolation_image_shape @@ -906,6 +890,10 @@ def __init__( raise ValueError( "BilinearMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) + + # At the edges of the cameras the mapping methods run into issues. + # Therefore, we are using a default padding to ensure that the camera pixels aren't affected. + # The default padding is removed after the conversion is finished. self.internal_pad = 3 if self.interpolation_image_shape is not None: self.image_shape = self.interpolation_image_shape @@ -975,6 +963,10 @@ def __init__( raise ValueError( "BicubicMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) + + # At the edges of the cameras the mapping methods run into issues. + # Therefore, we are using a default padding to ensure that the camera pixels aren't affected. + # The default padding is removed after the conversion is finished. self.internal_pad = 3 if self.interpolation_image_shape is not None: self.image_shape = self.interpolation_image_shape @@ -1204,6 +1196,10 @@ def __init__( raise ValueError( "RebinMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) + + # At the edges of the cameras the mapping methods run into issues. + # Therefore, we are using a default padding to ensure that the camera pixels aren't affected. + # The default padding is removed after the conversion is finished. self.internal_pad = 3 if self.interpolation_image_shape is not None: self.image_shape = self.interpolation_image_shape diff --git a/notebooks/test_image_mapper.ipynb b/notebooks/test_image_mapper.ipynb index 7ca0040..c1189fc 100644 --- a/notebooks/test_image_mapper.ipynb +++ b/notebooks/test_image_mapper.ipynb @@ -12,7 +12,7 @@ "\n", "from ctapipe.instrument import SubarrayDescription\n", "from ctapipe.instrument.camera import CameraGeometry\n", - "from dl1_data_handler.imagemapper import ImageMapper" + "from dl1_data_handler.image_mapper import ImageMapper" ] }, { @@ -24,7 +24,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/anaconda3/lib/python3.11/site-packages/ctapipe/instrument/camera/geometry.py:616: FromNameWarning: .from_name uses pre-defined data that is likely different from the data being analyzed. Access instrument information via the SubarrayDescription instead.\n", + "/opt/anaconda3/envs/ctlearn_clean/lib/python3.10/site-packages/ctapipe/instrument/camera/geometry.py:616: FromNameWarning: .from_name uses pre-defined data that is likely different from the data being analyzed. Access instrument information via the SubarrayDescription instead.\n", " warn_from_name()\n" ] }, @@ -34,9 +34,9 @@ "text": [ "ASTRICam - SquareMapper:\n", "Initialization time: \n", - "44.3 ms ± 235 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "45.4 ms ± 105 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "24.4 µs ± 52.7 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "27.8 µs ± 68.4 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -55,9 +55,9 @@ "text": [ "CHEC - SquareMapper:\n", "Initialization time: \n", - "29.6 ms ± 83.9 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "30.7 ms ± 188 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "23.8 µs ± 51.9 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "27.4 µs ± 147 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -76,9 +76,9 @@ "text": [ "SCTCam - SquareMapper:\n", "Initialization time: \n", - "900 ms ± 2.46 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "863 ms ± 3.62 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "39.3 µs ± 242 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "43.5 µs ± 320 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -125,7 +125,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/anaconda3/lib/python3.11/site-packages/ctapipe/instrument/camera/geometry.py:616: FromNameWarning: .from_name uses pre-defined data that is likely different from the data being analyzed. Access instrument information via the SubarrayDescription instead.\n", + "/opt/anaconda3/envs/ctlearn_clean/lib/python3.10/site-packages/ctapipe/instrument/camera/geometry.py:616: FromNameWarning: .from_name uses pre-defined data that is likely different from the data being analyzed. Access instrument information via the SubarrayDescription instead.\n", " warn_from_name()\n" ] }, @@ -135,9 +135,9 @@ "text": [ "LSTCam - AxialMapper:\n", "Initialization time: \n", - "47.1 ms ± 177 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "50.3 ms ± 201 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "23.7 µs ± 42.6 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "27.6 µs ± 58.6 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -156,9 +156,9 @@ "text": [ "FlashCam - AxialMapper:\n", "Initialization time: \n", - "46.5 ms ± 1.12 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "48.5 ms ± 467 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "23.5 µs ± 20.9 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "27.2 µs ± 29.6 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -177,9 +177,9 @@ "text": [ "NectarCam - AxialMapper:\n", "Initialization time: \n", - "46.9 ms ± 62.3 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "49 ms ± 180 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "23.8 µs ± 53.8 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "27.4 µs ± 91.2 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -198,9 +198,9 @@ "text": [ "DigiCam - AxialMapper:\n", "Initialization time: \n", - "24.6 ms ± 80.7 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "26.1 ms ± 116 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "22.8 µs ± 177 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "26.6 µs ± 95.5 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -219,9 +219,9 @@ "text": [ "VERITAS - AxialMapper:\n", "Initialization time: \n", - "4.79 ms ± 10 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "6.24 ms ± 795 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", "Mapping time: \n", - "21.5 µs ± 88.3 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "24.9 µs ± 33.5 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -240,9 +240,9 @@ "text": [ "MAGICCam - AxialMapper:\n", "Initialization time: \n", - "15.3 ms ± 156 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "16.4 ms ± 118 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", "Mapping time: \n", - "22.2 µs ± 112 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "26.4 µs ± 452 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -261,9 +261,9 @@ "text": [ "FACT - AxialMapper:\n", "Initialization time: \n", - "27.5 ms ± 54.8 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "29.5 ms ± 842 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "22.9 µs ± 103 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "26.7 µs ± 73.2 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -282,9 +282,9 @@ "text": [ "HESS-I - AxialMapper:\n", "Initialization time: \n", - "15.3 ms ± 10.8 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "16.9 ms ± 952 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", "Mapping time: \n", - "22.3 µs ± 36.6 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "25.7 µs ± 27.6 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -303,9 +303,9 @@ "text": [ "HESS-II - AxialMapper:\n", "Initialization time: \n", - "53.7 ms ± 51.8 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "56.6 ms ± 747 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "24.1 µs ± 103 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "28.2 µs ± 55.1 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -324,9 +324,9 @@ "text": [ "LSTCam - ShiftingMapper:\n", "Initialization time: \n", - "40.7 ms ± 166 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "42.9 ms ± 130 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "23.8 µs ± 41.9 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "27.6 µs ± 247 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -345,9 +345,9 @@ "text": [ "FlashCam - ShiftingMapper:\n", "Initialization time: \n", - "40.4 ms ± 46.2 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "41.8 ms ± 168 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "23.8 µs ± 25.2 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "27.4 µs ± 115 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -366,9 +366,9 @@ "text": [ "NectarCam - ShiftingMapper:\n", "Initialization time: \n", - "40.7 ms ± 33.7 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "41.9 ms ± 52.2 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "23.8 µs ± 104 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "27.7 µs ± 243 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -387,9 +387,9 @@ "text": [ "DigiCam - ShiftingMapper:\n", "Initialization time: \n", - "23.3 ms ± 45.5 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "24.5 ms ± 98.4 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "22.9 µs ± 32 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "26.6 µs ± 40.4 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -408,9 +408,9 @@ "text": [ "VERITAS - ShiftingMapper:\n", "Initialization time: \n", - "4.05 ms ± 18.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "4.72 ms ± 5.88 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", "Mapping time: \n", - "21.4 µs ± 159 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "25 µs ± 32.6 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -429,9 +429,9 @@ "text": [ "MAGICCam - ShiftingMapper:\n", "Initialization time: \n", - "12.8 ms ± 177 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "13.5 ms ± 18 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", "Mapping time: \n", - "22.1 µs ± 57.4 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "26 µs ± 51.9 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -450,9 +450,9 @@ "text": [ "FACT - ShiftingMapper:\n", "Initialization time: \n", - "23 ms ± 97.9 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "24.1 ms ± 109 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "22.9 µs ± 46.5 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "26.8 µs ± 29.3 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -471,9 +471,9 @@ "text": [ "HESS-I - ShiftingMapper:\n", "Initialization time: \n", - "10.3 ms ± 28.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "11.3 ms ± 16.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", "Mapping time: \n", - "22.1 µs ± 21.6 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "25.7 µs ± 60.8 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -492,9 +492,9 @@ "text": [ "HESS-II - ShiftingMapper:\n", "Initialization time: \n", - "38.7 ms ± 68.8 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "41.2 ms ± 2.76 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "23.9 µs ± 42.1 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "27.5 µs ± 93.6 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -513,9 +513,9 @@ "text": [ "LSTCam - BilinearMapper:\n", "Initialization time: \n", - "173 ms ± 1.63 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "174 ms ± 1.81 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "40.9 µs ± 393 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "44.5 µs ± 541 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -534,9 +534,9 @@ "text": [ "FlashCam - BilinearMapper:\n", "Initialization time: \n", - "171 ms ± 300 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "166 ms ± 661 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "40.8 µs ± 437 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "43.8 µs ± 714 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -555,9 +555,9 @@ "text": [ "NectarCam - BilinearMapper:\n", "Initialization time: \n", - "181 ms ± 1.64 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "167 ms ± 379 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "42.6 µs ± 925 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "45.6 µs ± 2.67 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -576,9 +576,9 @@ "text": [ "DigiCam - BilinearMapper:\n", "Initialization time: \n", - "106 ms ± 1.7 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "100 ms ± 260 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "36.6 µs ± 532 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "38.4 µs ± 640 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -597,9 +597,9 @@ "text": [ "VERITAS - BilinearMapper:\n", "Initialization time: \n", - "19.8 ms ± 172 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "19.6 ms ± 161 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "25.2 µs ± 90.5 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "29 µs ± 360 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -618,9 +618,9 @@ "text": [ "MAGICCam - BilinearMapper:\n", "Initialization time: \n", - "59.1 ms ± 84.4 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "58.4 ms ± 428 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "30.9 µs ± 50.6 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "41 µs ± 6.31 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -639,9 +639,9 @@ "text": [ "FACT - BilinearMapper:\n", "Initialization time: \n", - "101 ms ± 175 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "103 ms ± 1.94 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "38 µs ± 511 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "44.1 µs ± 6.58 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -660,9 +660,9 @@ "text": [ "HESS-I - BilinearMapper:\n", "Initialization time: \n", - "47.1 ms ± 68.8 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "47.4 ms ± 909 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "29.8 µs ± 27.8 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "35.4 µs ± 1.27 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -681,9 +681,9 @@ "text": [ "HESS-II - BilinearMapper:\n", "Initialization time: \n", - "167 ms ± 339 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "163 ms ± 1.27 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "44.2 µs ± 1.31 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "44 µs ± 240 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -702,9 +702,9 @@ "text": [ "LSTCam - BicubicMapper:\n", "Initialization time: \n", - "1.29 s ± 10.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "1.39 s ± 10.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "83.6 µs ± 1.2 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "86.7 µs ± 648 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -723,9 +723,9 @@ "text": [ "FlashCam - BicubicMapper:\n", "Initialization time: \n", - "1.28 s ± 13.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "1.37 s ± 7.09 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "82.5 µs ± 798 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "94.2 µs ± 3.37 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -744,9 +744,9 @@ "text": [ "NectarCam - BicubicMapper:\n", "Initialization time: \n", - "1.31 s ± 37.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "1.39 s ± 7.74 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "98.6 µs ± 2.79 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "91.2 µs ± 4.12 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -765,9 +765,9 @@ "text": [ "DigiCam - BicubicMapper:\n", "Initialization time: \n", - "919 ms ± 3.34 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "990 ms ± 4.18 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "66.6 µs ± 1.75 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "70.3 µs ± 3.11 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -786,9 +786,9 @@ "text": [ "VERITAS - BicubicMapper:\n", "Initialization time: \n", - "315 ms ± 1.16 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "345 ms ± 1.43 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "35.5 µs ± 97.9 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "39 µs ± 153 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -807,9 +807,9 @@ "text": [ "MAGICCam - BicubicMapper:\n", "Initialization time: \n", - "665 ms ± 13 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "718 ms ± 10.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "60.6 µs ± 2.54 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "64 µs ± 9.2 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -828,9 +828,9 @@ "text": [ "FACT - BicubicMapper:\n", "Initialization time: \n", - "921 ms ± 3.16 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "1 s ± 6.8 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "67.6 µs ± 420 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "76.2 µs ± 1.26 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -849,9 +849,9 @@ "text": [ "HESS-I - BicubicMapper:\n", "Initialization time: \n", - "586 ms ± 2.04 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "651 ms ± 10 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "59.3 µs ± 1.68 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "57.4 µs ± 1.49 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -870,9 +870,9 @@ "text": [ "HESS-II - BicubicMapper:\n", "Initialization time: \n", - "1.29 s ± 10.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "1.38 s ± 4.84 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "93.6 µs ± 1.31 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "89.6 µs ± 785 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -891,9 +891,9 @@ "text": [ "LSTCam - RebinMapper:\n", "Initialization time: \n", - "822 ms ± 2.98 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "839 ms ± 12.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "38.1 µs ± 395 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "40.6 µs ± 1.25 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -912,9 +912,9 @@ "text": [ "FlashCam - RebinMapper:\n", "Initialization time: \n", - "846 ms ± 10.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "847 ms ± 10.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "38.3 µs ± 368 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "39.9 µs ± 657 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -933,9 +933,9 @@ "text": [ "NectarCam - RebinMapper:\n", "Initialization time: \n", - "840 ms ± 27 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "815 ms ± 652 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "38 µs ± 590 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "40.5 µs ± 750 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -954,9 +954,9 @@ "text": [ "DigiCam - RebinMapper:\n", "Initialization time: \n", - "599 ms ± 1.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "618 ms ± 8.34 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "33.1 µs ± 263 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "37.3 µs ± 1.11 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -975,9 +975,9 @@ "text": [ "VERITAS - RebinMapper:\n", "Initialization time: \n", - "194 ms ± 9.78 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "200 ms ± 7.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "24.9 µs ± 827 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "27.9 µs ± 128 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -996,9 +996,9 @@ "text": [ "MAGICCam - RebinMapper:\n", "Initialization time: \n", - "467 ms ± 174 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "395 ms ± 2.78 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "31.5 µs ± 397 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "33.5 µs ± 467 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1017,9 +1017,9 @@ "text": [ "FACT - RebinMapper:\n", "Initialization time: \n", - "588 ms ± 29.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "564 ms ± 5.55 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "34.3 µs ± 308 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "36.5 µs ± 607 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1038,9 +1038,9 @@ "text": [ "HESS-I - RebinMapper:\n", "Initialization time: \n", - "338 ms ± 9.25 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "337 ms ± 769 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "29.2 µs ± 634 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "32.2 µs ± 356 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1059,9 +1059,9 @@ "text": [ "HESS-II - RebinMapper:\n", "Initialization time: \n", - "752 ms ± 6.74 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "748 ms ± 4.56 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Mapping time: \n", - "38.6 µs ± 355 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "41.4 µs ± 697 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1080,9 +1080,9 @@ "text": [ "LSTCam - NearestNeighborMapper:\n", "Initialization time: \n", - "138 ms ± 473 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "135 ms ± 2.82 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "30.3 µs ± 573 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "36 µs ± 4.72 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1101,9 +1101,9 @@ "text": [ "FlashCam - NearestNeighborMapper:\n", "Initialization time: \n", - "137 ms ± 550 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "132 ms ± 222 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "30.6 µs ± 803 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "34.2 µs ± 491 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1122,9 +1122,9 @@ "text": [ "NectarCam - NearestNeighborMapper:\n", "Initialization time: \n", - "140 ms ± 411 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "136 ms ± 1.2 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "32.3 µs ± 1.8 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "33.2 µs ± 336 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1143,9 +1143,9 @@ "text": [ "DigiCam - NearestNeighborMapper:\n", "Initialization time: \n", - "79.8 ms ± 152 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "77.9 ms ± 270 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "28.2 µs ± 553 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "30.7 µs ± 77.3 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1164,9 +1164,9 @@ "text": [ "VERITAS - NearestNeighborMapper:\n", "Initialization time: \n", - "12.4 ms ± 143 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "12.6 ms ± 140 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", "Mapping time: \n", - "22.8 µs ± 67 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "26.3 µs ± 69 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1185,9 +1185,9 @@ "text": [ "MAGICCam - NearestNeighborMapper:\n", "Initialization time: \n", - "43.7 ms ± 90.1 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "43.1 ms ± 168 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "25.7 µs ± 67.2 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "29.3 µs ± 462 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1206,9 +1206,9 @@ "text": [ "FACT - NearestNeighborMapper:\n", "Initialization time: \n", - "79.2 ms ± 193 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "76.8 ms ± 266 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "28.4 µs ± 488 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "31.2 µs ± 604 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1227,9 +1227,9 @@ "text": [ "HESS-I - NearestNeighborMapper:\n", "Initialization time: \n", - "34.4 ms ± 82 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "34.3 ms ± 410 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "25.1 µs ± 32.2 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "28.6 µs ± 60.9 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1248,9 +1248,9 @@ "text": [ "HESS-II - NearestNeighborMapper:\n", "Initialization time: \n", - "135 ms ± 390 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "131 ms ± 715 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "30.3 µs ± 359 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "33.9 µs ± 805 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1269,9 +1269,9 @@ "text": [ "LSTCam - OversamplingMapper:\n", "Initialization time: \n", - "136 ms ± 964 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "133 ms ± 973 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "31.5 µs ± 1.06 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "33.7 µs ± 690 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1290,9 +1290,9 @@ "text": [ "FlashCam - OversamplingMapper:\n", "Initialization time: \n", - "133 ms ± 1.05 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "130 ms ± 1.58 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "31.3 µs ± 469 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "34.8 µs ± 1.34 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1311,9 +1311,9 @@ "text": [ "NectarCam - OversamplingMapper:\n", "Initialization time: \n", - "134 ms ± 350 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "130 ms ± 368 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "29.7 µs ± 19.3 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "33.5 µs ± 636 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1332,9 +1332,9 @@ "text": [ "DigiCam - OversamplingMapper:\n", "Initialization time: \n", - "75.6 ms ± 307 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "73.4 ms ± 300 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "28.8 µs ± 1.11 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "31.2 µs ± 321 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1353,9 +1353,9 @@ "text": [ "VERITAS - OversamplingMapper:\n", "Initialization time: \n", - "10.9 ms ± 47.8 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", + "10.9 ms ± 55 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", "Mapping time: \n", - "23 µs ± 95.9 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "26.7 µs ± 127 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1374,9 +1374,9 @@ "text": [ "MAGICCam - OversamplingMapper:\n", "Initialization time: \n", - "41 ms ± 122 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "44.3 ms ± 7.95 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "25.7 µs ± 37.7 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "31.9 µs ± 1.91 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1395,9 +1395,9 @@ "text": [ "FACT - OversamplingMapper:\n", "Initialization time: \n", - "75.2 ms ± 330 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "75.1 ms ± 1.59 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "34.1 µs ± 863 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "33.2 µs ± 871 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1416,9 +1416,9 @@ "text": [ "HESS-I - OversamplingMapper:\n", "Initialization time: \n", - "33.2 ms ± 328 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "32.9 ms ± 88.2 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "25.5 µs ± 102 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "29.4 µs ± 249 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1437,9 +1437,9 @@ "text": [ "HESS-II - OversamplingMapper:\n", "Initialization time: \n", - "133 ms ± 1.56 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "128 ms ± 2.36 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Mapping time: \n", - "33 µs ± 923 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" + "35.6 µs ± 681 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] }, { @@ -1475,6 +1475,13 @@ " ax.set_title(f\"{camera} - {mapper_class_name}\")\n", " plt.show()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -1493,7 +1500,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.10.0" } }, "nbformat": 4, From a99bd9b727364c334310574397a538d1e99adc64 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Wed, 18 Sep 2024 18:12:59 +0200 Subject: [PATCH 31/92] use f-string --- dl1_data_handler/image_mapper.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/dl1_data_handler/image_mapper.py b/dl1_data_handler/image_mapper.py index 086bf22..ca65cbf 100644 --- a/dl1_data_handler/image_mapper.py +++ b/dl1_data_handler/image_mapper.py @@ -464,7 +464,7 @@ def __init__( if geometry.pix_type != PixelShape.SQUARE: raise ValueError( - "SquareMapper is only available for square pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." + f"SquareMapper is only available for square pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) # Set shape of the image for the square camera @@ -540,7 +540,7 @@ def __init__( if geometry.pix_type != PixelShape.HEXAGON: raise ValueError( - "AxialMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." + f"AxialMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) # Creating the hexagonal and the output grid for the conversion methods. ( @@ -675,7 +675,7 @@ def __init__( if geometry.pix_type != PixelShape.HEXAGON: raise ValueError( - "ShiftingMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." + f"ShiftingMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) # Creating the hexagonal and the output grid for the conversion methods. @@ -783,7 +783,7 @@ def __init__( if geometry.pix_type != PixelShape.HEXAGON: raise ValueError( - "OversamplingMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." + f"OversamplingMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) self.internal_shape = self.image_shape @@ -832,7 +832,7 @@ def __init__( if geometry.pix_type != PixelShape.HEXAGON: raise ValueError( - "NearestNeighborMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." + f"NearestNeighborMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) # At the edges of the cameras the mapping methods run into issues. @@ -888,7 +888,7 @@ def __init__( if geometry.pix_type != PixelShape.HEXAGON: raise ValueError( - "BilinearMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." + f"BilinearMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) # At the edges of the cameras the mapping methods run into issues. @@ -961,7 +961,7 @@ def __init__( if geometry.pix_type != PixelShape.HEXAGON: raise ValueError( - "BicubicMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." + f"BicubicMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) # At the edges of the cameras the mapping methods run into issues. @@ -1194,7 +1194,7 @@ def __init__( if geometry.pix_type != PixelShape.HEXAGON: raise ValueError( - "RebinMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." + f"RebinMapper is only available for hexagonal pixel cameras. Pixel type of the selected camera is '{geometry.pix_type}'." ) # At the edges of the cameras the mapping methods run into issues. From cf12cd0e1be7a2bfe3740e470e694a7a65f3b7cb Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Wed, 18 Sep 2024 22:40:49 +0200 Subject: [PATCH 32/92] make process type an enum --- dl1_data_handler/reader.py | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 0a3efaa..fdb78e2 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -13,6 +13,7 @@ from abc import abstractmethod from collections import OrderedDict +from enum import Enum import numpy as np import tables import threading @@ -45,6 +46,9 @@ lock = threading.Lock() +class ProcessType(Enum): + Observation = "Observation" + Simulation = "Simulation" class TableQualityQuery(QualityQuery): """Quality criteria for table-wise dl1b parameters.""" @@ -78,8 +82,8 @@ class DLDataReader(Component): The first file in the list of input files, which is used as reference. _v_attrs : dict Attributes and useful information retrieved from the first file. - process_type : str - The type of data processing (i.e. ``Observation`` or ``Simulation``). + process_type : enum + The type of data processing (i.e. ``ProcessType.Observation`` or ``ProcessType.Simulation``). data_format_version : str The version of the ctapipe data format. instrument_id : str @@ -229,7 +233,7 @@ def __init__( self.first_file = list(self.files)[0] # Save the user attributes and useful information retrieved from the first file as a reference self._v_attrs = self.files[self.first_file].root._v_attrs - self.process_type = self._v_attrs["CTA PROCESS TYPE"] + self.process_type = ProcessType(self._v_attrs["CTA PROCESS TYPE"]) self.data_format_version = self._v_attrs["CTA PRODUCT DATA MODEL VERSION"] self.instrument_id = self._v_attrs["CTA INSTRUMENT ID"] @@ -239,7 +243,7 @@ def __init__( f"Provided ctapipe data format version is '{self.data_format_version}' (must be >= v.6.0.0)." ) # Check for real data processing that only a single file is provided. - if self.process_type == "Observation" and len(self.files) != 1: + if self.process_type == ProcessType.Observation and len(self.files) != 1: raise ValueError( f"When processing real observational data, please provide a single file (currently: '{len(self.files)}')." ) @@ -318,7 +322,7 @@ def __init__( # Telescope pointings self.telescope_pointings = {} self.tel_trigger_table = None - if self.process_type == "Observation": + if self.process_type == ProcessType.Observation: for tel_id in self.tel_ids: with lock: self.telescope_pointings[f"tel_{tel_id:03d}"] = read_table( @@ -354,7 +358,7 @@ def __init__( # Scaling by total/2 helps keep the loss to a similar magnitude. # The sum of the weights of all examples stays the same. self.class_weight = None - if self.process_type == "Simulation": + if self.process_type == ProcessType.Simulation: if self.bkg_input_files is not None: self.class_weight = { 0: (1.0 / self.n_bkg_events) * (self._get_n_events() / 2.0), @@ -385,7 +389,7 @@ def _construct_mono_example_identifiers(self): # This are the basic columns one need to do a # conventional IACT analysis with CNNs self.example_ids_keep_columns = ["table_index", "obs_id", "event_id", "tel_id"] - if self.process_type == "Simulation": + if self.process_type == ProcessType.Simulation: self.example_ids_keep_columns.extend( ["true_energy", "true_alt", "true_az", "true_shower_primary_id"] ) @@ -393,7 +397,7 @@ def _construct_mono_example_identifiers(self): simulation_info = [] example_identifiers = [] for file_idx, (filename, f) in enumerate(self.files.items()): - if self.process_type == "Simulation": + if self.process_type == ProcessType.Simulation: # Read simulation information for each observation simulation_info.append(read_table(f, "/configuration/simulation/run")) # Construct the shower simulation table @@ -410,7 +414,7 @@ def _construct_mono_example_identifiers(self): tel_table.add_column( np.arange(len(tel_table)), name="table_index", index=0 ) - if self.process_type == "Simulation": + if self.process_type == ProcessType.Simulation: tel_table = join( left=tel_table, right=simshower_table, @@ -455,7 +459,7 @@ def _construct_mono_example_identifiers(self): # Constrcut the example identifiers for all files self.example_identifiers = vstack(example_identifiers) # Construct simulation information for all files - if self.process_type == "Simulation": + if self.process_type == ProcessType.Simulation: self.simulation_info = vstack(simulation_info) self.n_signal_events = np.count_nonzero( self.example_identifiers["true_shower_primary_class"] == 1 @@ -491,24 +495,24 @@ def _construct_stereo_example_identifiers(self): "tel_id", "hillas_intensity", ] - if self.process_type == "Simulation": + if self.process_type == ProcessType.Simulation: self.example_ids_keep_columns.extend( ["true_energy", "true_alt", "true_az", "true_shower_primary_id"] ) - elif self.process_type == "Observation": + elif self.process_type == ProcessType.Observation: self.example_ids_keep_columns.extend(["time", "event_type"]) simulation_info = [] example_identifiers = [] for file_idx, (filename, f) in enumerate(self.files.items()): - if self.process_type == "Simulation": + if self.process_type == ProcessType.Simulation: # Read simulation information for each observation simulation_info.append(read_table(f, "/configuration/simulation/run")) # Construct the shower simulation table simshower_table = read_table(f, "/simulation/event/subarray/shower") # Read the trigger table. trigger_table = read_table(f, "/dl1/event/subarray/trigger") - if self.process_type == "Simulation": + if self.process_type == ProcessType.Simulation: # The shower simulation table is joined with the subarray trigger table. trigger_table = join( left=trigger_table, @@ -545,7 +549,7 @@ def _construct_stereo_example_identifiers(self): table_per_type = table_per_type.group_by(["obs_id", "event_id"]) table_per_type.keep_columns(self.example_ids_keep_columns) - if self.process_type == "Simulation": + if self.process_type == ProcessType.Simulation: tel_pointing = self._get_tel_pointing(f, self.tel_ids) table_per_type = join( left=table_per_type, @@ -591,7 +595,7 @@ def _multiplicity_cut_subarray(table, key_colnames): self.example_identifiers, keys=["obs_id", "event_id"] ) # Construct simulation information for all files - if self.process_type == "Simulation": + if self.process_type == ProcessType.Simulation: self.simulation_info = vstack(simulation_info) self.n_signal_events = np.count_nonzero( self.unique_example_identifiers["true_shower_primary_class"] == 1 From d68559f2cea22919ca5e98c282ba12f0be1319b2 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Thu, 19 Sep 2024 10:46:40 +0200 Subject: [PATCH 33/92] added the data loader with keras api --- dl1_data_handler/loader.py | 88 ++++++++++++++++++++++++++++++++++++++ dl1_data_handler/reader.py | 8 ++-- environment.yml | 1 + setup.py | 1 + 4 files changed, 94 insertions(+), 4 deletions(-) create mode 100644 dl1_data_handler/loader.py diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py new file mode 100644 index 0000000..6e29421 --- /dev/null +++ b/dl1_data_handler/loader.py @@ -0,0 +1,88 @@ +import numpy as np +import astropy.units as u +from keras.utils import Sequence, to_categorical + + +class DLDataLoader(Sequence): + "Generates batches for Keras application" + + def __init__( + self, + DLDataReader, + indices, + tasks, + batch_size=64, + shuffle=True, + random_seed=1234, + ): + "Initialization" + self.DLDataReader = DLDataReader + self.indices = indices + self.tasks = tasks + self.batch_size = batch_size + self.shuffle = shuffle + self.random_seed = random_seed + self.on_epoch_end() + + # Get the input shape for the convolutional neural network + self.image_shape = self.DLDataReader.image_mapper.image_shape + if self.DLDataReader.__class__.__name__ == "DLImageReader": + self.channel_shape = len(self.DLDataReader.img_channels) + elif self.DLDataReader.__class__.__name__ == "DLWaveformReader": + self.channel_shape = self.DLDataReader.sequence_length + + self.input_shape = ( + self.image_shape, + self.image_shape, + self.channel_shape, + ) + + def __len__(self): + "Denotes the number of batches per epoch" + return int(np.floor(len(self.indices) / self.batch_size)) + + def on_epoch_end(self): + "Updates indexes after each epoch" + if self.shuffle: + np.random.seed(self.random_seed) + np.random.shuffle(self.indices) + + def __getitem__(self, index): + "Generate one batch of data" + # If shuffle is set to false, CTLearn is predicting and therfore all DL1b + # parameters are retrieved. + dl1b_parameter_list = None + if not self.shuffle: + dl1b_parameter_list = self.DLDataReader.dl1b_parameter_colnames + + # Generate indices of the batch + batch_indices = self.indices[index * self.batch_size : (index + 1) * self.batch_size] + if self.DLDataReader.mode == "mono": + features, batch = self.DLDataReader.mono_batch_generation( + batch_indices=batch_indices, + dl1b_parameter_list=dl1b_parameter_list + ) + elif self.DLDataReader.mode == "stereo": + features, batch = self.DLDataReader.stereo_batch_generation( + batch_indices=batch_indices, + dl1b_parameter_list=dl1b_parameter_list + ) + # Generate the labels for each task + label = {} + if "type" in self.tasks: + label["type"] = to_categorical( + batch["true_shower_primary_class"].data, + num_classes=self.DLDataReader.n_classes, + ) + if "energy" in self.tasks: + label["energy"] = batch["log_true_energy"].data + if "direction" in self.tasks: + label["direction"] = np.stack( + ( + batch["spherical_offset_az"].data, + batch["spherical_offset_alt"].data, + batch["angular_separation"].data, + ), + axis=1, + ) + return features, label diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index fdb78e2..2874da0 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -939,7 +939,7 @@ def _get_features(self, batch) -> dict: Returns ------- dict - A dictionary containing the extracted features with the key ``images``, + A dictionary containing the extracted features with the key ``input``, which maps to a numpy array of the processed images. """ images = [] @@ -967,7 +967,7 @@ def _get_features(self, batch) -> dict: images.append(self.image_mappers[camera_type].map_image(unmapped_image)) else: images.append(unmapped_image) - return {"images": np.array(images)} + return {"input": np.array(images)} def get_unmapped_waveform( @@ -1164,7 +1164,7 @@ def _get_features(self, batch) -> dict: Returns ------- dict - A dictionary containing the extracted features with the key ``waveforms``, + A dictionary containing the extracted features with the key ``input``, which maps to a numpy array of the processed waveforms. """ waveforms = [] @@ -1203,4 +1203,4 @@ def _get_features(self, batch) -> dict: waveforms.append(self.image_mappers[camera_type].map_image(unmapped_waveform)) else: waveforms.append(unmapped_waveform) - return {"waveforms": np.array(waveforms)} \ No newline at end of file + return {"input": np.array(waveforms)} \ No newline at end of file diff --git a/environment.yml b/environment.yml index f1b9df3..fc164b7 100644 --- a/environment.yml +++ b/environment.yml @@ -17,3 +17,4 @@ dependencies: - pandas - pip: - pydot + - keras diff --git a/setup.py b/setup.py index 2766d4a..c991769 100644 --- a/setup.py +++ b/setup.py @@ -30,6 +30,7 @@ def getVersionFromFile(): "ctapipe==0.21.2", "traitlets>=5.0", "jupyter", + "keras", "pandas", "pytest-cov", "tables>=3.8", From 8dd7241eaaf1e81c03f72ffb96d3f6fb1670b413 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Wed, 16 Oct 2024 13:33:57 +0200 Subject: [PATCH 34/92] remove files from config and pass them in the contructor --- dl1_data_handler/loader.py | 20 +++-------- dl1_data_handler/reader.py | 73 +++++++++++++++++++------------------- 2 files changed, 42 insertions(+), 51 deletions(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index 6e29421..5fc87ff 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -12,20 +12,18 @@ def __init__( indices, tasks, batch_size=64, - shuffle=True, - random_seed=1234, + random_seed=0, ): "Initialization" self.DLDataReader = DLDataReader self.indices = indices self.tasks = tasks self.batch_size = batch_size - self.shuffle = shuffle self.random_seed = random_seed self.on_epoch_end() # Get the input shape for the convolutional neural network - self.image_shape = self.DLDataReader.image_mapper.image_shape + self.image_shape = self.DLDataReader.image_mappers[self.DLDataReader.cam_name].image_shape if self.DLDataReader.__class__.__name__ == "DLImageReader": self.channel_shape = len(self.DLDataReader.img_channels) elif self.DLDataReader.__class__.__name__ == "DLWaveformReader": @@ -43,36 +41,28 @@ def __len__(self): def on_epoch_end(self): "Updates indexes after each epoch" - if self.shuffle: - np.random.seed(self.random_seed) - np.random.shuffle(self.indices) + np.random.seed(self.random_seed) + np.random.shuffle(self.indices) def __getitem__(self, index): "Generate one batch of data" - # If shuffle is set to false, CTLearn is predicting and therfore all DL1b - # parameters are retrieved. - dl1b_parameter_list = None - if not self.shuffle: - dl1b_parameter_list = self.DLDataReader.dl1b_parameter_colnames # Generate indices of the batch batch_indices = self.indices[index * self.batch_size : (index + 1) * self.batch_size] if self.DLDataReader.mode == "mono": features, batch = self.DLDataReader.mono_batch_generation( batch_indices=batch_indices, - dl1b_parameter_list=dl1b_parameter_list ) elif self.DLDataReader.mode == "stereo": features, batch = self.DLDataReader.stereo_batch_generation( batch_indices=batch_indices, - dl1b_parameter_list=dl1b_parameter_list ) # Generate the labels for each task label = {} if "type" in self.tasks: label["type"] = to_categorical( batch["true_shower_primary_class"].data, - num_classes=self.DLDataReader.n_classes, + num_classes=2, ) if "energy" in self.tasks: label["energy"] = batch["log_true_energy"].data diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 2874da0..eb6bdce 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -129,19 +129,6 @@ class DLDataReader(Component): Generate a batch of stereo events from list of indices. """ - signal_input_files = List( - trait=Path(exists=True, directory_ok=False), - allow_none=False, - help="Required input CTA HDF5 files for signal events", - ).tag(config=True) - - bkg_input_files = List( - trait=Path(exists=True, directory_ok=False), - default_value=None, - allow_none=True, - help="Optional input CTA HDF5 files for background events.", - ).tag(config=True) - mode = CaselessStrEnum( ["mono", "stereo"], default_value="mono", @@ -210,6 +197,8 @@ class DLDataReader(Component): def __init__( self, + input_url_signal, + input_url_background=[], config=None, parent=None, **kwargs, @@ -221,11 +210,13 @@ def __init__( self.quality_query = TableQualityQuery(parent=self) # Construct dict of filename:file_handle pairs of an ordered file list + self.input_url_signal = input_url_signal + self.input_url_background = input_url_background self.files = OrderedDict() file_list = ( - self.signal_input_files - if self.bkg_input_files is None - else self.signal_input_files + self.bkg_input_files + self.input_url_signal + self.input_url_background + if self.input_url_background + else self.input_url_signal ) for filename in np.sort(file_list): with lock: @@ -300,24 +291,30 @@ def __init__( f"Subarray description of file '{filename}' does not match the reference subarray description." ) - # Set the telescope type as class attribute for mono mode for convenience + # Set the telescope type and camera name as class attributes for mono mode for convenience self.tel_type = None + self.cam_name = None if self.mode == "mono": self.tel_type = list(self.selected_telescopes)[0] - - # Get the camera index for the different telescope types - cam_geom = {} - for camera_type in self.subarray.camera_types: - if f"{camera_type.name}" not in cam_geom: - cam_geom[f"{camera_type.name}"] = camera_type.geometry + self.cam_name = self._get_camera_type(self.tel_type) # Initialize the ImageMapper with the pixel positions and mapping settings + # TODO: Find a better way for passing the configuration self.image_mappers = {} - for _, tel_type, name in self.image_mapper_type: - camera_type = self._get_camera_type(tel_type) - self.image_mappers[camera_type] = ImageMapper.from_name( - name, geometry=cam_geom[camera_type], subarray=self.subarray, parent=self - ) + cam_geom = {} + for camera_type in self.subarray.camera_types: + camera_name = self._get_camera_type(camera_type.name) + if camera_name not in cam_geom: + cam_geom[camera_name] = camera_type.geometry + for scope, tel_type, name in self.image_mapper_type: + if scope == "type" and camera_name in tel_type: + self.image_mappers[camera_name] = ImageMapper.from_name( + name, geometry=cam_geom[camera_name], subarray=self.subarray, parent=self + ) + if tel_type == "*" and camera_name not in self.image_mappers: + self.image_mappers[camera_name] = ImageMapper.from_name( + name, geometry=cam_geom[camera_name], subarray=self.subarray, parent=self + ) # Telescope pointings self.telescope_pointings = {} @@ -359,7 +356,7 @@ def __init__( # The sum of the weights of all examples stays the same. self.class_weight = None if self.process_type == ProcessType.Simulation: - if self.bkg_input_files is not None: + if self.input_url_background: self.class_weight = { 0: (1.0 / self.n_bkg_events) * (self._get_n_events() / 2.0), 1: (1.0 / self.n_signal_events) * (self._get_n_events() / 2.0), @@ -449,7 +446,7 @@ def _construct_mono_example_identifiers(self): events.add_column(0, name="tel_type_id", index=3) # Add the true shower primary class to the table based on the filename is # signal or background input file list - true_shower_primary_class = 1 if filename in self.signal_input_files else 0 + true_shower_primary_class = 1 if filename in self.input_url_signal else 0 events.add_column( true_shower_primary_class, name="true_shower_primary_class" ) @@ -464,7 +461,7 @@ def _construct_mono_example_identifiers(self): self.n_signal_events = np.count_nonzero( self.example_identifiers["true_shower_primary_class"] == 1 ) - if self.bkg_input_files is not None: + if self.input_url_background: self.n_bkg_events = np.count_nonzero( self.example_identifiers["true_shower_primary_class"] == 0 ) @@ -581,7 +578,7 @@ def _multiplicity_cut_subarray(table, key_colnames): events.add_column(file_idx, name="file_index", index=0) # Add the true shower primary class to the table based on the filename is # signal or background input file list - true_shower_primary_class = 1 if filename in self.signal_input_files else 0 + true_shower_primary_class = 1 if filename in self.input_url_signal else 0 events.add_column( true_shower_primary_class, name="true_shower_primary_class" ) @@ -600,7 +597,7 @@ def _multiplicity_cut_subarray(table, key_colnames): self.n_signal_events = np.count_nonzero( self.unique_example_identifiers["true_shower_primary_class"] == 1 ) - if self.bkg_input_files is not None: + if self.input_url_background: self.n_bkg_events = np.count_nonzero( self.unique_example_identifiers["true_shower_primary_class"] == 0 ) @@ -874,12 +871,14 @@ class DLImageReader(DLDataReader): def __init__( self, + input_url_signal, + input_url_background=[], config=None, parent=None, **kwargs, ): - super().__init__(config=config, parent=parent, **kwargs) + super().__init__(input_url_signal=input_url_signal, input_url_background=input_url_background, config=config, parent=parent, **kwargs) # Integrated charges and peak arrival times (DL1a) if self.clean: @@ -1093,12 +1092,14 @@ class DLWaveformReader(DLDataReader): def __init__( self, + input_url_signal, + input_url_background=[], config=None, parent=None, **kwargs, ): - super().__init__(config=config, parent=parent, **kwargs) + super().__init__(input_url_signal=input_url_signal, input_url_background=input_url_background, config=config, parent=parent, **kwargs) # Read the readout length from the first file self.readout_length = int( @@ -1203,4 +1204,4 @@ def _get_features(self, batch) -> dict: waveforms.append(self.image_mappers[camera_type].map_image(unmapped_waveform)) else: waveforms.append(unmapped_waveform) - return {"input": np.array(waveforms)} \ No newline at end of file + return {"input": np.array(waveforms)} From d92c906ce2820456f66de0b87863b82167d66167 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Wed, 16 Oct 2024 13:34:42 +0200 Subject: [PATCH 35/92] update to ctapipe v0.22.0 --- README.rst | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index 6d1e04d..915e2b2 100644 --- a/README.rst +++ b/README.rst @@ -60,7 +60,7 @@ The main dependencies are: * PyTables >= 3.8 * NumPy >= 1.20.0 -* ctapipe == 0.21.2 +* ctapipe == 0.22.0 Also see setup.py. diff --git a/setup.py b/setup.py index c991769..8291d76 100644 --- a/setup.py +++ b/setup.py @@ -27,7 +27,7 @@ def getVersionFromFile(): "numpy>=1.20", "scipy>=1.11", "astropy", - "ctapipe==0.21.2", + "ctapipe==0.22.0", "traitlets>=5.0", "jupyter", "keras", From 6d37efa786c34d32b7c2c9766108d40ff15d427b Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Thu, 17 Oct 2024 16:23:43 +0200 Subject: [PATCH 36/92] temp fix keras/TF bug --- dl1_data_handler/loader.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index 5fc87ff..1ce2696 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -58,16 +58,20 @@ def __getitem__(self, index): batch_indices=batch_indices, ) # Generate the labels for each task - label = {} + labels = {} if "type" in self.tasks: - label["type"] = to_categorical( + labels["type"] = to_categorical( + batch["true_shower_primary_class"].data, + num_classes=2, + ) + label = to_categorical( batch["true_shower_primary_class"].data, num_classes=2, ) if "energy" in self.tasks: - label["energy"] = batch["log_true_energy"].data + labels["energy"] = batch["log_true_energy"].data if "direction" in self.tasks: - label["direction"] = np.stack( + labels["direction"] = np.stack( ( batch["spherical_offset_az"].data, batch["spherical_offset_alt"].data, @@ -75,4 +79,8 @@ def __getitem__(self, index): ), axis=1, ) - return features, label + # Temp fix till keras support class weights for multiple outputs or I wrote custom loss + # https://github.com/keras-team/keras/issues/11735 + if len(labels) == 1 and labels[0] == "type": + labels = label + return features, labels From 911d482137f26e2bf3678f205de3fb882022191b Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Thu, 17 Oct 2024 16:46:26 +0200 Subject: [PATCH 37/92] bug fix --- dl1_data_handler/loader.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index 1ce2696..f21cc9c 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -64,10 +64,13 @@ def __getitem__(self, index): batch["true_shower_primary_class"].data, num_classes=2, ) - label = to_categorical( - batch["true_shower_primary_class"].data, - num_classes=2, - ) + # Temp fix till keras support class weights for multiple outputs or I wrote custom loss + # https://github.com/keras-team/keras/issues/11735 + if len(self.tasks) == 1: + labels = to_categorical( + batch["true_shower_primary_class"].data, + num_classes=2, + ) if "energy" in self.tasks: labels["energy"] = batch["log_true_energy"].data if "direction" in self.tasks: @@ -79,8 +82,4 @@ def __getitem__(self, index): ), axis=1, ) - # Temp fix till keras support class weights for multiple outputs or I wrote custom loss - # https://github.com/keras-team/keras/issues/11735 - if len(labels) == 1 and labels[0] == "type": - labels = label return features, labels From 43547b275cf1e038f04776b8a6d4659fc47cd25c Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Fri, 18 Oct 2024 09:39:26 +0200 Subject: [PATCH 38/92] added skeleton for on-the-fly waveform cleaning with digital sum and DBSCAN --- dl1_data_handler/reader.py | 73 ++++++++++++++++++++++++++------------ 1 file changed, 50 insertions(+), 23 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index eb6bdce..3ec8c43 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -3,12 +3,14 @@ """ __all__ = [ + "ProcessType", "TableQualityQuery", "DLDataReader", "DLImageReader", "get_unmapped_image", "DLWaveformReader", "get_unmapped_waveform", + "clean_waveform", ] from abc import abstractmethod @@ -29,12 +31,12 @@ from ctapipe.core import Component, QualityQuery from ctapipe.core.traits import ( Bool, + Dict, CInt, Int, IntTelescopeParameter, Set, List, - Path, CaselessStrEnum, Unicode, TelescopeParameter, @@ -972,6 +974,7 @@ def _get_features(self, batch) -> dict: def get_unmapped_waveform( r1_event, settings, + camera_geometry=None, dl1_cleaning_mask=None, ): """ @@ -990,10 +993,12 @@ def get_unmapped_waveform( Dictionary containing settings for waveform processing, including: - ``waveform_scale`` (float): Scale factor for waveform values. - ``waveform_offset`` (int): Offset value for waveform values. - - ``type`` (str): Type of waveform processing (``calibrated`` or ``cleaned_calibrated``). + - ``cleaning_type`` (str or None): Data level on which the cleaning mask(s) are obtained for cleaning the waveforms. - ``seq_length`` (int): Length of the waveform sequence to be extracted. - ``readout_length`` (int): Total length of the readout window. - ``seq_position`` (str): Position of the sequence within the readout window (``center`` or ``maximum``). + camera_geometry : ctapipe.instrument.CameraGeometry, optional + The geometry of the camera, including pixel positions and camera type. Default is ``None``. dl1_cleaning_mask : numpy.ndarray, optional Array containing the DL1 cleaning mask to be applied to the waveform to find the shower maximum to center the sequence. Default is ``None``. @@ -1019,19 +1024,16 @@ def get_unmapped_waveform( if settings["waveform_offset"] > 0: waveform -= settings["waveform_offset"] # Apply the DL1 cleaning mask if selected - if settings["type"] == "cleaned_calibrated": + if settings["cleaning_type"] == "image": waveform *= dl1_cleaning_mask[:, None] + elif settings["cleaning_type"] == "waveform": + waveform = clean_waveform(waveform, camera_geometry, settings["DBSCAN_params"]) # Retrieve the sequence around the center of the readout window or the shower maximum if settings["seq_length"] < settings["readout_length"]: if settings["seq_position"] == "center": sequence_position = waveform.shape[1] // 2 - 1 elif settings["seq_position"] == "maximum": - if dl1_cleaning_mask is None: - sequence_position = np.argmax(np.sum(waveform, axis=0)) - else: - sequence_position = np.argmax( - np.sum(waveform * dl1_cleaning_mask[:, None], axis=0) - ) + sequence_position = np.argmax(np.sum(waveform, axis=0)) # Calculate start and stop positions start = max(0, int(1 + sequence_position - settings["seq_length"] / 2)) stop = min(settings["readout_length"], int(1 + sequence_position + settings["seq_length"] / 2)) @@ -1044,6 +1046,8 @@ def get_unmapped_waveform( return waveform +def clean_waveform(waveform, camera_geometry, DBSCAN_config): + pass class DLWaveformReader(DLDataReader): """ @@ -1051,7 +1055,7 @@ class DLWaveformReader(DLDataReader): This class extends the ``DLDataReader`` to specifically handle the reading, transformation, and mapping of R1 calibrated waveform data. It supports both ``mono`` - and ``stereo`` data loading modes and can apply DL1 cleaning masks to the waveforms + and ``stereo`` data loading modes and can perform a cleaning to the waveforms if specified. Attributes @@ -1061,11 +1065,14 @@ class DLWaveformReader(DLDataReader): the sequence length is set to the readout length. sequence_position : str Position of the sequence within the readout window. Can be ``center`` or ``maximum``. - clean : bool - Indicates whether to apply the DL1 cleaning mask to the calibrated waveforms. + cleaning_type : str or None + Data level on which the cleaning mask(s) are obtained for cleaning the waveforms. + Can be ``image`` or ``waveform``. + DBSCAN_params : dict or None + Dictionary containing the DBSCAN clustering parameters for waveform cleaning. waveform_settings : dict - Contains settings for waveform processing, including type, sequence length, - readout length, sequence position, scale, and offset. + Contains settings for waveform processing, including cleaning type (with DBSCAN parameters), + sequence length, readout length, sequence position, scale, and offset. """ sequence_length = Int( @@ -1084,12 +1091,31 @@ class DLWaveformReader(DLDataReader): ), ).tag(config=True) - clean = Bool( - default_value=False, - allow_none=False, - help="Set whether to apply the DL1 cleaning mask to the calibrated waveforms.", + cleaning_type = CaselessStrEnum( + ["image", "waveform"], + allow_none=True, + default_value=None, + help=( + "Set whether to apply cleaning of the calibrated waveforms. " + "Two cleaning types are supported obtained from different data levels." + "``image``: apply the DL1 cleaning mask to the calibrated waveforms. " + "``waveform``: perform a digital sum and a DBSCAN clustering on-the-fly. " + ), + ).tag(config=True) + + DBSCAN_params = Dict( + default_value={"eps": 0.5, "min_samples": 5, "metric": 'euclidean'}, + allow_none=True, + help=( + "Set the DBSCAN clustering parameters for waveform cleaning. " + "Only required when ``cleaning_type`` is set to ``waveform``. " + "``eps``: The maximum distance between two samples for one to be considered as in the neighborhood of the other." + "``min_samples``: The number of samples in a neighborhood for a point to be considered as a core point." + "``metric``: The metric to use when calculating distance between instances in a feature array." + ), ).tag(config=True) + def __init__( self, input_url_signal, @@ -1120,12 +1146,12 @@ def __init__( ) # Construct settings dict for the calibrated waveforms - self.waveform_type = "cleaned_calibrated" if self.clean else "calibrated" self.waveform_settings = { - "type": self.waveform_type, + "cleaning_type": self.cleaning_type, "seq_length": self.sequence_length, "readout_length": self.readout_length, "seq_position": self.sequence_position, + "DBSCAN_params": self.DBSCAN_params, } # Check the transform value used for the file compression @@ -1176,6 +1202,9 @@ def _get_features(self, batch) -> dict: batch["tel_id"], ): filename = list(self.files)[file_idx] + camera_type = self._get_camera_type( + list(self.selected_telescopes.keys())[tel_type_id] + ) with lock: tel_table = f"tel_{tel_id:03d}" child = self.files[filename].root.r1.event.telescope._f_get_child( @@ -1193,13 +1222,11 @@ def _get_features(self, batch) -> dict: unmapped_waveform = get_unmapped_waveform( child[table_idx], self.waveform_settings, + self.image_mappers[camera_type].geometry, dl1_cleaning_mask, ) # Apply the 'ImageMapper' whenever the index matrix is not None. # Otherwise, return the unmapped image for the 'IndexedConv' package. - camera_type = self._get_camera_type( - list(self.selected_telescopes.keys())[tel_type_id] - ) if self.image_mappers[camera_type].index_matrix is None: waveforms.append(self.image_mappers[camera_type].map_image(unmapped_waveform)) else: From a953e4ea95e12f2fccc687a09bf324716bf877f4 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Fri, 18 Oct 2024 14:15:10 +0200 Subject: [PATCH 39/92] support keras2 & keras3 --- dl1_data_handler/loader.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index f21cc9c..3d9ac56 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -13,7 +13,9 @@ def __init__( tasks, batch_size=64, random_seed=0, + **kwargs, ): + super().__init__(**kwargs) "Initialization" self.DLDataReader = DLDataReader self.indices = indices @@ -82,4 +84,7 @@ def __getitem__(self, index): ), axis=1, ) + # Temp fix for supporting keras2 & keras3 + if int(keras.__version__.split(".")[0]) >= 3: + features = features["input"] return features, labels From f6777b53c6519f3d06eb7974bfc19d464db6a5d1 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Fri, 18 Oct 2024 14:31:26 +0200 Subject: [PATCH 40/92] bug fix; import keras --- dl1_data_handler/loader.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index 3d9ac56..b60307c 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -1,5 +1,6 @@ import numpy as np import astropy.units as u +import keras from keras.utils import Sequence, to_categorical From 83abe3d6e8f65f5e7ab1d5b99ad3347c52ee8ad6 Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Wed, 30 Oct 2024 10:30:11 +0100 Subject: [PATCH 41/92] log number of particles per type --- dl1_data_handler/reader.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 3ec8c43..62f5dc9 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -359,6 +359,9 @@ def __init__( self.class_weight = None if self.process_type == ProcessType.Simulation: if self.input_url_background: + self.log.info(" Total number of events: %d", self._get_n_events()) + self.log.info(" Number of signal events: %d", self.n_signal_events()) + self.log.info(" Number of background events: %d", self.n_bkg_events()) self.class_weight = { 0: (1.0 / self.n_bkg_events) * (self._get_n_events() / 2.0), 1: (1.0 / self.n_signal_events) * (self._get_n_events() / 2.0), From 36e7c4bb7961b7cfe3d7ab81faaca2b39b59ddfc Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Wed, 30 Oct 2024 11:18:50 +0100 Subject: [PATCH 42/92] fix logger --- dl1_data_handler/reader.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 62f5dc9..6377b09 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -360,8 +360,8 @@ def __init__( if self.process_type == ProcessType.Simulation: if self.input_url_background: self.log.info(" Total number of events: %d", self._get_n_events()) - self.log.info(" Number of signal events: %d", self.n_signal_events()) - self.log.info(" Number of background events: %d", self.n_bkg_events()) + self.log.info(" Number of signal events: %d", self.n_signal_events) + self.log.info(" Number of background events: %d", self.n_bkg_events) self.class_weight = { 0: (1.0 / self.n_bkg_events) * (self._get_n_events() / 2.0), 1: (1.0 / self.n_signal_events) * (self._get_n_events() / 2.0), From 31167e0240b1a2376353e5219778b9d100cb625b Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Wed, 30 Oct 2024 16:43:32 +0100 Subject: [PATCH 43/92] set BilinearMapper as default --- dl1_data_handler/reader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 6377b09..2a3923b 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -169,7 +169,7 @@ class DLDataReader(Component): image_mapper_type = TelescopeParameter( trait=Unicode(), - default_value="OversamplingMapper", + default_value="BilinearMapper", help=( "Instances of ``ImageMapper`` transforming a raw 1D vector into a 2D image. " "Different mapping methods can be selected for each telescope type." From ea22625b1b59682935bb766133f7c4444d3e8b8d Mon Sep 17 00:00:00 2001 From: TjarkMiener Date: Wed, 30 Oct 2024 16:45:24 +0100 Subject: [PATCH 44/92] comment out qual cuts --- dl1_data_handler/reader.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 2a3923b..49f6cdc 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -58,8 +58,8 @@ class TableQualityQuery(QualityQuery): quality_criteria = List( default_value=[ ("> 50 phe", "hillas_intensity > 50"), - ("Positive width", "hillas_width > 0"), - ("> 3 pixels", "morphology_n_pixels > 3"), + #("Positive width", "hillas_width > 0"), + #("> 3 pixels", "morphology_n_pixels > 3"), ], allow_none=True, help=QualityQuery.quality_criteria.help, From 8cb47211c4940ac858d714233360a1ccb7006869 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Sun, 24 Nov 2024 13:04:32 +0100 Subject: [PATCH 45/92] add a sort and remove the shuffle in the loader for prediction --- dl1_data_handler/loader.py | 5 +++-- dl1_data_handler/reader.py | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index b60307c..cbcb70c 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -13,7 +13,7 @@ def __init__( indices, tasks, batch_size=64, - random_seed=0, + random_seed=None, **kwargs, ): super().__init__(**kwargs) @@ -23,7 +23,8 @@ def __init__( self.tasks = tasks self.batch_size = batch_size self.random_seed = random_seed - self.on_epoch_end() + if self.random_seed is not None: + self.on_epoch_end() # Get the input shape for the convolutional neural network self.image_shape = self.DLDataReader.image_mappers[self.DLDataReader.cam_name].image_shape diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 49f6cdc..2ce1a78 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -460,6 +460,7 @@ def _construct_mono_example_identifiers(self): # Constrcut the example identifiers for all files self.example_identifiers = vstack(example_identifiers) + self.example_identifiers.sort(["obs_id", "event_id", "tel_type_id"]) # Construct simulation information for all files if self.process_type == ProcessType.Simulation: self.simulation_info = vstack(simulation_info) @@ -592,6 +593,7 @@ def _multiplicity_cut_subarray(table, key_colnames): # Constrcut the example identifiers for all files self.example_identifiers = vstack(example_identifiers) + self.example_identifiers.sort(["obs_id", "event_id", "tel_type_id"]) # Unique example identifiers by events self.unique_example_identifiers = unique( self.example_identifiers, keys=["obs_id", "event_id"] From b3543f857266d935cfc8db7ce04152be93fab38e Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Sun, 24 Nov 2024 15:09:22 +0100 Subject: [PATCH 46/92] fix proper treatment of channels with relative and cleaned options --- dl1_data_handler/loader.py | 2 +- dl1_data_handler/reader.py | 81 ++++++++++++++++++++++---------------- 2 files changed, 48 insertions(+), 35 deletions(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index cbcb70c..af122e6 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -29,7 +29,7 @@ def __init__( # Get the input shape for the convolutional neural network self.image_shape = self.DLDataReader.image_mappers[self.DLDataReader.cam_name].image_shape if self.DLDataReader.__class__.__name__ == "DLImageReader": - self.channel_shape = len(self.DLDataReader.img_channels) + self.channel_shape = len(self.DLDataReader.channels) elif self.DLDataReader.__class__.__name__ == "DLWaveformReader": self.channel_shape = self.DLDataReader.sequence_length diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 2ce1a78..0f3ab93 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -786,7 +786,7 @@ def get_unmapped_image(dl1_event, channels, transforms): This function processes the DL1 event data to generate an image array based on the specified channels and transformation parameters. It handles - different types of channels such as 'image', 'time', and 'cleaned', and + different types of channels such as 'image' and 'peak_time', and applies the necessary transformations to recover the original floating point values if the file was compressed. @@ -796,7 +796,9 @@ def get_unmapped_image(dl1_event, channels, transforms): A table containing DL1 event data, including ``image``, ``image_mask``, and ``peak_time``. channels : list of str - A list of channels to be processed, such as ``image`` and ``time`` with optional ``cleaned_``-prefix. + A list of channels to be processed, such as ``image`` and ``peak_time`` + with optional ``cleaned_``-prefix for for the cleaned versions of the channels + and ``relative_``-prefix for the relative peak arrival times. transforms : dict A dictionary containing scaling and offset values for image and peak time transformations. @@ -806,6 +808,7 @@ def get_unmapped_image(dl1_event, channels, transforms): np.ndarray The processed image data image for the specific channels. """ + # Initialize the image array image = np.zeros( shape=( len(dl1_event["image"]), @@ -813,16 +816,29 @@ def get_unmapped_image(dl1_event, channels, transforms): ), dtype=np.float32, ) + # Process the channels and apply the necessary transformations for i, channel in enumerate(channels): + # Save the cleaning mask to be applied to the channels in various cases mask = dl1_event["image_mask"] + # TODO: Check here if the mask is valid + # and return NaNs if not and cleaned is requested + # Process the integrated charges if specified if "image" in channel: image[:, i] = dl1_event["image"] - if "time" in channel: - cleaned_peak_times = dl1_event["peak_time"] * mask - image[:, i] = ( - dl1_event["peak_time"] - - cleaned_peak_times[np.nonzero(cleaned_peak_times)].mean() - ) + # Process the peak arrival times if specified + if "peak_time" in channel: + # Calculate the relative peak arrival times if specified + if "relative" in channel: + peak_times = dl1_event["peak_time"] + # Apply the cleaning mask to the peak times if specified + if "cleaned" in channel: peak_times *= mask + image[:, i] = ( + dl1_event["peak_time"] + - peak_times[np.nonzero(peak_times)].mean() + ) + else: + image[:, i] = dl1_event["peak_time"] + # Apply the cleaning mask to the image if specified if "cleaned" in channel: image[:, i] *= mask # Apply the transform to recover orginal floating point values if the file were compressed @@ -831,7 +847,7 @@ def get_unmapped_image(dl1_event, channels, transforms): image[:, i] /= transforms["image_scale"] if transforms["image_offset"] > 0: image[:, i] -= transforms["image_offset"] - if "time" in channel: + if "peak_time" in channel: if transforms["peak_time_scale"] > 0.0: image[:, i] /= transforms["peak_time_scale"] if transforms["peak_time_offset"] > 0: @@ -851,29 +867,35 @@ class DLImageReader(DLDataReader): Attributes ---------- channels : list of str - Specifies the data channels to be loaded, such as ``image`` and/or ``peak_time``. - clean : bool - Indicates whether to apply the DL1 cleaning mask to the integrated images. + Specifies the input channels to be loaded, such as ``image`` and/or ``peak_time``. + Also supports ``cleaned_``-prefix for the cleaned versions of the channels and + ``relative_``-prefix for the relative peak arrival times. transforms : dict Contains scaling and offset values for image and peak time transformations. """ channels = List( - trait=CaselessStrEnum(["image", "peak_time"]), + trait=CaselessStrEnum( + [ + "image", + "cleaned_image", + "peak_time", + "relative_peak_time", + "cleaned_peak_time", + "cleaned_relative_peak_time" + ] + ), default_value=["image", "peak_time"], allow_none=False, help=( - "Set data loading mode. " - "Mono: single images of one telescope type " - "Stereo: events including multiple telescope types " - ) - - ).tag(config=True) - - clean = Bool( - default_value=False, - allow_none=False, - help="Set whether to apply the DL1 cleaning mask to the integrated images.", + "Set the input channels to be loaded from the DL1 event data. " + "image: integrated charges, " + "cleaned_image: integrated charges cleaned with the DL1 cleaning mask, " + "peak_time: extracted peak arrival times, " + "relative_peak_time: extracted relative peak arrival times, " + "cleaned_peak_time: extracted peak arrival times cleaned with the DL1 cleaning mask," + "cleaned_peak_time: extracted relative peak arrival times cleaned with the DL1 cleaning mask." + ), ).tag(config=True) def __init__( @@ -887,15 +909,6 @@ def __init__( super().__init__(input_url_signal=input_url_signal, input_url_background=input_url_background, config=config, parent=parent, **kwargs) - # Integrated charges and peak arrival times (DL1a) - if self.clean: - self.img_channels = [ - "cleaned_" + channel - for channel in self.channels - ] - else: - self.img_channels = self.channels - # Get offset and scaling of images self.transforms = {} self.transforms["image_scale"] = 0.0 @@ -962,7 +975,7 @@ def _get_features(self, batch) -> dict: filename ].root.dl1.event.telescope.images._f_get_child(tel_table) unmapped_image = get_unmapped_image( - child[table_idx], self.img_channels, self.transforms + child[table_idx], self.channels, self.transforms ) # Apply the 'ImageMapper' whenever the index matrix is not None. # Otherwise, return the unmapped image for the 'IndexedConv' package. From 23eb27453fa4f703857aa67e45eddeb9e0205696 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Sun, 24 Nov 2024 15:09:59 +0100 Subject: [PATCH 47/92] fix ToDo string --- dl1_data_handler/reader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 0f3ab93..8a930ae 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -820,7 +820,7 @@ def get_unmapped_image(dl1_event, channels, transforms): for i, channel in enumerate(channels): # Save the cleaning mask to be applied to the channels in various cases mask = dl1_event["image_mask"] - # TODO: Check here if the mask is valid + # TODO: Check here if the mask is valid # and return NaNs if not and cleaned is requested # Process the integrated charges if specified if "image" in channel: From 5943687fdc522e5a9234b1e8f40c92acd429d7fa Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Sun, 24 Nov 2024 15:14:28 +0100 Subject: [PATCH 48/92] fix help for channels --- dl1_data_handler/reader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 8a930ae..7d30531 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -894,7 +894,7 @@ class DLImageReader(DLDataReader): "peak_time: extracted peak arrival times, " "relative_peak_time: extracted relative peak arrival times, " "cleaned_peak_time: extracted peak arrival times cleaned with the DL1 cleaning mask," - "cleaned_peak_time: extracted relative peak arrival times cleaned with the DL1 cleaning mask." + "cleaned_relative_peak_time: extracted relative peak arrival times cleaned with the DL1 cleaning mask." ), ).tag(config=True) From 3f1c07aa271032a1fb5fcdb008ae06fe14e1d41e Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 25 Nov 2024 10:02:29 +0100 Subject: [PATCH 49/92] upgrade to ctapipe v0.23.0 --- environment.yml | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/environment.yml b/environment.yml index fc164b7..39c3915 100644 --- a/environment.yml +++ b/environment.yml @@ -11,7 +11,7 @@ dependencies: - numpy>=1.20 - scipy>=1.11 - pip - - ctapipe>=0.21.1 + - ctapipe>=0.23.0 - traitlets>=5.0 - pyyaml - pandas diff --git a/setup.py b/setup.py index 8291d76..754e2db 100644 --- a/setup.py +++ b/setup.py @@ -27,7 +27,7 @@ def getVersionFromFile(): "numpy>=1.20", "scipy>=1.11", "astropy", - "ctapipe==0.22.0", + "ctapipe==0.23.0", "traitlets>=5.0", "jupyter", "keras", From ab5255a6b56ccf0427e2926041ed634bcabd2b0a Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Tue, 26 Nov 2024 10:31:10 +0100 Subject: [PATCH 50/92] retrieve trigger table also for MCs --- dl1_data_handler/reader.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 7d30531..74a9713 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -328,11 +328,11 @@ def __init__( self.files[self.first_file], f"/dl0/monitoring/telescope/pointing/tel_{tel_id:03d}", ) - with lock: - self.tel_trigger_table = read_table( - self.files[self.first_file], - "/dl1/event/telescope/trigger", - ) + with lock: + self.tel_trigger_table = read_table( + self.files[self.first_file], + "/dl1/event/telescope/trigger", + ) # Image parameters (DL1b) # Retrieve the column names for the DL1b parameter table From 473f82e5e567820329475e1165d6433b7ee8ad7c Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Tue, 26 Nov 2024 12:52:26 +0100 Subject: [PATCH 51/92] only apply transformation to sims data --- dl1_data_handler/reader.py | 43 ++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 74a9713..7709cb6 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -349,9 +349,10 @@ def __init__( self._construct_stereo_example_identifiers() # Transform true energy into the log space - self.example_identifiers = self._transform_to_log_energy( - self.example_identifiers - ) + if self.process_type == ProcessType.Simulation: + self.example_identifiers = self._transform_to_log_energy( + self.example_identifiers + ) # Handling the class weights calculation. # Scaling by total/2 helps keep the loss to a similar magnitude. @@ -438,23 +439,24 @@ def _construct_mono_example_identifiers(self): # Construct the example identifiers events.keep_columns(self.example_ids_keep_columns) - tel_pointing = self._get_tel_pointing(f, self.tel_ids) - events = join( - left=events, - right=tel_pointing, - keys=["obs_id", "tel_id"], - ) - events = self._transform_to_spherical_offsets(events) + if self.process_type == ProcessType.Simulation: + tel_pointing = self._get_tel_pointing(f, self.tel_ids) + events = join( + left=events, + right=tel_pointing, + keys=["obs_id", "tel_id"], + ) + events = self._transform_to_spherical_offsets(events) + # Add the true shower primary class to the table based on the filename is + # signal or background input file list + true_shower_primary_class = 1 if filename in self.input_url_signal else 0 + events.add_column( + true_shower_primary_class, name="true_shower_primary_class" + ) # Add telescope type id which is always 0 in mono mode # This is needed to share code with stereo reading mode later on events.add_column(file_idx, name="file_index", index=0) events.add_column(0, name="tel_type_id", index=3) - # Add the true shower primary class to the table based on the filename is - # signal or background input file list - true_shower_primary_class = 1 if filename in self.input_url_signal else 0 - events.add_column( - true_shower_primary_class, name="true_shower_primary_class" - ) # Appending the events to the list of example identifiers example_identifiers.append(events) @@ -584,10 +586,11 @@ def _multiplicity_cut_subarray(table, key_colnames): events.add_column(file_idx, name="file_index", index=0) # Add the true shower primary class to the table based on the filename is # signal or background input file list - true_shower_primary_class = 1 if filename in self.input_url_signal else 0 - events.add_column( - true_shower_primary_class, name="true_shower_primary_class" - ) + if self.process_type == ProcessType.Simulation: + true_shower_primary_class = 1 if filename in self.input_url_signal else 0 + events.add_column( + true_shower_primary_class, name="true_shower_primary_class" + ) # Appending the events to the list of example identifiers example_identifiers.append(events) From 2a928f037b1dba0e776bce9b2045c207490eacff Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Wed, 27 Nov 2024 11:14:18 +0100 Subject: [PATCH 52/92] add tel_id in sort --- dl1_data_handler/reader.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 7709cb6..65acbde 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -462,7 +462,7 @@ def _construct_mono_example_identifiers(self): # Constrcut the example identifiers for all files self.example_identifiers = vstack(example_identifiers) - self.example_identifiers.sort(["obs_id", "event_id", "tel_type_id"]) + self.example_identifiers.sort(["obs_id", "event_id", "tel_id", "tel_type_id"]) # Construct simulation information for all files if self.process_type == ProcessType.Simulation: self.simulation_info = vstack(simulation_info) @@ -596,7 +596,7 @@ def _multiplicity_cut_subarray(table, key_colnames): # Constrcut the example identifiers for all files self.example_identifiers = vstack(example_identifiers) - self.example_identifiers.sort(["obs_id", "event_id", "tel_type_id"]) + self.example_identifiers.sort(["obs_id", "event_id", "tel_id", "tel_type_id"]) # Unique example identifiers by events self.unique_example_identifiers = unique( self.example_identifiers, keys=["obs_id", "event_id"] From 2c0419c61cef8016dff5556f61307de1fa74913c Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Wed, 27 Nov 2024 13:25:10 +0100 Subject: [PATCH 53/92] fix on_epoch_end --- dl1_data_handler/loader.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index af122e6..3916879 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -23,8 +23,7 @@ def __init__( self.tasks = tasks self.batch_size = batch_size self.random_seed = random_seed - if self.random_seed is not None: - self.on_epoch_end() + self.on_epoch_end() # Get the input shape for the convolutional neural network self.image_shape = self.DLDataReader.image_mappers[self.DLDataReader.cam_name].image_shape @@ -44,9 +43,10 @@ def __len__(self): return int(np.floor(len(self.indices) / self.batch_size)) def on_epoch_end(self): - "Updates indexes after each epoch" - np.random.seed(self.random_seed) - np.random.shuffle(self.indices) + "Updates indexes after each epoch if random seed is set" + if self.random_seed is not None: + np.random.seed(self.random_seed) + np.random.shuffle(self.indices) def __getitem__(self, index): "Generate one batch of data" From 3dad0f9d8165374918255348119289f80c3fc404 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Wed, 27 Nov 2024 14:22:10 +0100 Subject: [PATCH 54/92] polish docstring --- dl1_data_handler/loader.py | 62 +++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index 3916879..76a8bf5 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -5,7 +5,34 @@ class DLDataLoader(Sequence): - "Generates batches for Keras application" + """ + Generates batches for Keras application. + + DLDataLoader is a data loader class that inherits from ``~keras.utils.Sequence``. + It is designed to handle and load data for deep learning models in a batch-wise manner. + + Attributes: + ----------- + data_reader : DLDataReader + An instance of DLDataReader to read the input data. + indices : list + List of indices to specify the data to be loaded. + tasks : list + List of tasks to be performed on the data to properly set up the labels. + batch_size : int + Size of the batch to load the data. + random_seed : int, optional + Whether to shuffle the data after each epoch with a provided random seed. + + Methods: + -------- + __len__(): + Returns the number of batches per epoch. + __getitem__(index): + Generates one batch of data. + on_epoch_end(): + Updates indices after each epoch if random seed is provided. + """ def __init__( self, @@ -39,18 +66,45 @@ def __init__( ) def __len__(self): - "Denotes the number of batches per epoch" + """ + Returns the number of batches per epoch. + + This method calculates the number of batches required to cover the entire dataset + based on the batch size. + + Returns: + -------- + int + Number of batches per epoch. + """ return int(np.floor(len(self.indices) / self.batch_size)) def on_epoch_end(self): - "Updates indexes after each epoch if random seed is set" + """ + Updates indices after each epoch. If a random seed is provided, the indices are shuffled. + + This method is called at the end of each epoch to ensure that the data is shuffled + if the shuffle attribute is set to True. This helps in improving the training process + by providing the model with a different order of data in each epoch. + """ if self.random_seed is not None: np.random.seed(self.random_seed) np.random.shuffle(self.indices) def __getitem__(self, index): - "Generate one batch of data" + """ + Generates one batch of data. + + Parameters: + ----------- + index : int + Index of the batch to generate. + Returns: + -------- + tuple + A tuple containing the input data as features and the corresponding labels. + """ # Generate indices of the batch batch_indices = self.indices[index * self.batch_size : (index + 1) * self.batch_size] if self.DLDataReader.mode == "mono": From a0e82b290afe66737b6e9accfff215af7556967f Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Thu, 28 Nov 2024 15:40:35 +0100 Subject: [PATCH 55/92] add tick smoothing for RealLSTCam RealLSTCam is the cam geometry from LST in the lstchain data format --- dl1_data_handler/image_mapper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dl1_data_handler/image_mapper.py b/dl1_data_handler/image_mapper.py index ca65cbf..13ba0aa 100644 --- a/dl1_data_handler/image_mapper.py +++ b/dl1_data_handler/image_mapper.py @@ -103,8 +103,8 @@ def __init__( self.x_ticks = np.unique(self.pix_x).tolist() self.y_ticks = np.unique(self.pix_y).tolist() - # Additional smooth the ticks for 'DigiCam' and 'CHEC' cameras - if self.camera_type == "DigiCam": + # Additional smooth the ticks for 'DigiCam', 'RealLSTCam' and 'CHEC' cameras + if self.camera_type in ["DigiCam", "RealLSTCam"]: self.pix_y, self.y_ticks = self._smooth_ticks(self.pix_y, self.y_ticks) if self.camera_type == "CHEC": self.pix_x, self.x_ticks = self._smooth_ticks(self.pix_x, self.x_ticks) From 76bf4d4a2519e8676947f73ebf20c949b3f50629 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 2 Dec 2024 16:12:43 +0100 Subject: [PATCH 56/92] added blank features to the batch --- dl1_data_handler/loader.py | 48 ++++++++++++++++---- dl1_data_handler/reader.py | 93 ++++++++++++++++++-------------------- 2 files changed, 84 insertions(+), 57 deletions(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index 76a8bf5..5e4beb7 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -23,6 +23,10 @@ class DLDataLoader(Sequence): Size of the batch to load the data. random_seed : int, optional Whether to shuffle the data after each epoch with a provided random seed. + sort_by_intensity : bool, optional + Whether to sort the events based on the hillas intensity for stereo analysis. + stack_telescope_images : bool, optional + Whether to stack the telescope images for stereo analysis. Methods: -------- @@ -41,6 +45,8 @@ def __init__( tasks, batch_size=64, random_seed=None, + sort_by_intensity=False, + stack_telescope_images=False, **kwargs, ): super().__init__(**kwargs) @@ -51,19 +57,35 @@ def __init__( self.batch_size = batch_size self.random_seed = random_seed self.on_epoch_end() + self.stack_telescope_images = stack_telescope_images + self.sort_by_intensity = sort_by_intensity # Get the input shape for the convolutional neural network - self.image_shape = self.DLDataReader.image_mappers[self.DLDataReader.cam_name].image_shape if self.DLDataReader.__class__.__name__ == "DLImageReader": self.channel_shape = len(self.DLDataReader.channels) elif self.DLDataReader.__class__.__name__ == "DLWaveformReader": self.channel_shape = self.DLDataReader.sequence_length - self.input_shape = ( - self.image_shape, - self.image_shape, - self.channel_shape, - ) + + if self.DLDataReader.mode == "mono": + self.image_shape = self.DLDataReader.image_mappers[self.DLDataReader.cam_name].image_shape + self.input_shape = ( + len(self.DLDataReader.tel_ids), + self.image_shape, + self.image_shape, + self.channel_shape, + ) + elif self.DLDataReader.mode == "stereo": + if self.stack_telescope_images: + # Reshape inputs into proper dimensions for the stereo analysis with stacked images + self.input_shape = ( + self.image_shape, + self.image_shape, + len(self.DLDataReader.tel_ids) * self.channel_shape, + ) + else: + self.input_shape = (110, 110, 2) + def __len__(self): """ @@ -108,13 +130,23 @@ def __getitem__(self, index): # Generate indices of the batch batch_indices = self.indices[index * self.batch_size : (index + 1) * self.batch_size] if self.DLDataReader.mode == "mono": - features, batch = self.DLDataReader.mono_batch_generation( + batch = self.DLDataReader.mono_batch_generation( batch_indices=batch_indices, ) + features = {"input": batch["features"].data} elif self.DLDataReader.mode == "stereo": - features, batch = self.DLDataReader.stereo_batch_generation( + batch = self.DLDataReader.stereo_batch_generation( batch_indices=batch_indices, ) + batch_grouped = batch.group_by(["obs_id", "event_id", "tel_type_id"]) + # Sort events based on their telescope types by the hillas intensity in a given batch if requested + if self.sort_by_intensity: + for batch_grouped in batch_grouped.groups: + batch_grouped.sort(["hillas_intensity"], reverse=True) + print(batch_grouped) + + if self.stack_telescope_images: + print(features) # Generate the labels for each task labels = {} if "type" in self.tasks: diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 65acbde..23f8147 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -597,6 +597,9 @@ def _multiplicity_cut_subarray(table, key_colnames): # Constrcut the example identifiers for all files self.example_identifiers = vstack(example_identifiers) self.example_identifiers.sort(["obs_id", "event_id", "tel_id", "tel_type_id"]) + self.example_identifiers_grouped = self.example_identifiers.group_by( + ["obs_id", "event_id"] + ) # Unique example identifiers by events self.unique_example_identifiers = unique( self.example_identifiers, keys=["obs_id", "event_id"] @@ -676,9 +679,7 @@ def _get_parameters(self, batch, dl1b_parameter_list) -> np.array: dl1b_parameters.append([np.stack(parameters)]) return np.array(dl1b_parameters) - def mono_batch_generation( - self, batch_indices, dl1b_parameter_list=None - ) -> (dict, Table): + def mono_batch_generation(self, batch_indices) -> (dict, Table): """ Generate a batch of events for mono mode. @@ -713,19 +714,11 @@ def mono_batch_generation( ) # Retrieve the batch from the example identifiers via indexing batch = self.example_identifiers.loc[batch_indices] - # Retrieve the features from child classes - features = self._get_features(batch) - # Retrieve the dl1b parameters if requested - if dl1b_parameter_list is not None: - features["parameters"] = self._get_parameters( - batch, - dl1b_parameter_list, - ) - return features, batch + # Append the features from child classes to the batch + batch = self._append_features(batch) + return batch - def stereo_batch_generation( - self, batch_indices, dl1b_parameter_list=None - ) -> (dict, Table): + def stereo_batch_generation(self, batch_indices) -> (dict, Table): """ Generate a batch of events for stereo mode. @@ -759,27 +752,29 @@ def stereo_batch_generation( # Need this PR https://github.com/astropy/astropy/pull/15826 # waiting astropy v7.0.0 # Once available, the batch_generation can be shared with "mono" - example_identifiers_grouped = self.example_identifiers.group_by( - ["obs_id", "event_id"] - ) - batch = example_identifiers_grouped.groups[batch_indices] - # Sort events based on their telescope types by the hillas intensity in a given batch - batch.sort( - ["obs_id", "event_id", "tel_type_id", "hillas_intensity"], reverse=True - ) - batch.sort(["obs_id", "event_id", "tel_type_id"]) - # Retrieve the features from child classes - features = self._get_features(batch) - # Retrieve the dl1b parameters if requested - if dl1b_parameter_list is not None: - features["parameters"] = self._get_parameters( - batch, - dl1b_parameter_list, - ) - return features, batch + batch = self.example_identifiers_grouped.groups[batch_indices] + # Append the features from child classes to the batch + batch = self._append_features(batch) + # Add blank features for missing telescopes in the batch + batch_grouped = batch.group_by(["obs_id", "event_id"]) + for batch_grouped in batch_grouped.groups: + for tel_type_id, tel_type in enumerate(self.selected_telescopes): + for tel_id in self.selected_telescopes[tel_type]: + # Check if the telescope is missing in the batch + if tel_id not in batch_grouped["tel_id"]: + blank_features = batch_grouped.copy()[0] + blank_features["table_index"] = -1 + blank_features["tel_type_id"] = tel_type_id + blank_features["tel_id"] = tel_id + blank_features["hillas_intensity"] = 0.0 + blank_features["features"] = np.zeros_like(blank_features["features"]) + batch.add_row(blank_features) + # Sort the batch with the new rows of blank features + batch.sort(["obs_id", "event_id", "tel_type_id", "tel_id"]) + return batch @abstractmethod - def _get_features(self, batch) -> dict: + def _append_features(self, batch) -> dict: pass @@ -941,17 +936,17 @@ def __init__( "CTAFIELD_4_TRANSFORM_OFFSET" ] - def _get_features(self, batch) -> dict: + def _append_features(self, batch) -> dict: """ - Retrieve images of a given batch as features. + Append images to a given batch as features. - This method processes a batch of events to retrieve images as input features for the neural networks. + This method processes a batch of events to append images as input features for the neural networks. It reads the image data from the specified files, applies any necessary transformations, and maps the images using the appropriate ``ImageMapper``. Parameters ---------- - batch : Table + batch : astropy.table.Table A table containing information at minimum the following columns: - "file_index": List of indices corresponding to the files. - "table_index": List of indices corresponding to the event tables. @@ -960,9 +955,8 @@ def _get_features(self, batch) -> dict: Returns ------- - dict - A dictionary containing the extracted features with the key ``input``, - which maps to a numpy array of the processed images. + batch : astropy.table.Table + The input batch with the appended processed images as features. """ images = [] for file_idx, table_idx, tel_type_id, tel_id in zip( @@ -989,7 +983,8 @@ def _get_features(self, batch) -> dict: images.append(self.image_mappers[camera_type].map_image(unmapped_image)) else: images.append(unmapped_image) - return {"input": np.array(images)} + batch.add_column(images, name="features", index=7) + return batch def get_unmapped_waveform( @@ -1192,11 +1187,11 @@ def __init__( "CTAFIELD_5_TRANSFORM_OFFSET" ] - def _get_features(self, batch) -> dict: + def _append_features(self, batch) -> dict: """ - Retrieve waveforms of a given batch as features. + Append waveforms to a given batch as features. - This method processes a batch of events to retrieve waveforms as input features for the neural networks. + This method processes a batch of events to append waveforms as input features for the neural networks. It reads the waveform data from the specified files, applies any necessary transformations, and maps the waveforms using the appropriate ``ImageMapper``. @@ -1211,9 +1206,8 @@ def _get_features(self, batch) -> dict: Returns ------- - dict - A dictionary containing the extracted features with the key ``input``, - which maps to a numpy array of the processed waveforms. + batch : astropy.table.Table + The input batch with the appended processed waveforms as features. """ waveforms = [] for file_idx, table_idx, tel_type_id, tel_id in zip( @@ -1252,4 +1246,5 @@ def _get_features(self, batch) -> dict: waveforms.append(self.image_mappers[camera_type].map_image(unmapped_waveform)) else: waveforms.append(unmapped_waveform) - return {"input": np.array(waveforms)} + batch.add_column(waveforms, name="features", index=7) + return batch From 1f8f9cc72af4d7f16fbd95b37cc902111e0b0a6e Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Tue, 3 Dec 2024 11:58:26 +0100 Subject: [PATCH 57/92] added support for reading and loading stereo events --- dl1_data_handler/loader.py | 159 ++++++++++++++++++++------------ dl1_data_handler/reader.py | 180 +++++++++++++++++++++++++------------ 2 files changed, 222 insertions(+), 117 deletions(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index 5e4beb7..cddab64 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -60,32 +60,20 @@ def __init__( self.stack_telescope_images = stack_telescope_images self.sort_by_intensity = sort_by_intensity - # Get the input shape for the convolutional neural network - if self.DLDataReader.__class__.__name__ == "DLImageReader": - self.channel_shape = len(self.DLDataReader.channels) - elif self.DLDataReader.__class__.__name__ == "DLWaveformReader": - self.channel_shape = self.DLDataReader.sequence_length - - + # Set the input shape based on the mode of the DLDataReader if self.DLDataReader.mode == "mono": - self.image_shape = self.DLDataReader.image_mappers[self.DLDataReader.cam_name].image_shape - self.input_shape = ( - len(self.DLDataReader.tel_ids), - self.image_shape, - self.image_shape, - self.channel_shape, - ) + self.input_shape = self.DLDataReader.input_shape elif self.DLDataReader.mode == "stereo": + self.input_shape = self.DLDataReader.input_shape[ + list(self.DLDataReader.selected_telescopes)[0] + ] + # Reshape inputs into proper dimensions for the stereo analysis with stacked images if self.stack_telescope_images: - # Reshape inputs into proper dimensions for the stereo analysis with stacked images self.input_shape = ( - self.image_shape, - self.image_shape, - len(self.DLDataReader.tel_ids) * self.channel_shape, + self.input_shape[1], + self.input_shape[2], + self.input_shape[0] * self.input_shape[3], ) - else: - self.input_shape = (110, 110, 2) - def __len__(self): """ @@ -128,50 +116,103 @@ def __getitem__(self, index): A tuple containing the input data as features and the corresponding labels. """ # Generate indices of the batch - batch_indices = self.indices[index * self.batch_size : (index + 1) * self.batch_size] + batch_indices = self.indices[ + index * self.batch_size : (index + 1) * self.batch_size + ] + labels = {} if self.DLDataReader.mode == "mono": - batch = self.DLDataReader.mono_batch_generation( - batch_indices=batch_indices, - ) + batch = self.DLDataReader.generate_mono_batch(batch_indices) + # Retrieve the telescope images and store in the features dictionary features = {"input": batch["features"].data} + if "type" in self.tasks: + labels["type"] = to_categorical( + batch["true_shower_primary_class"].data, + num_classes=2, + ) + # Temp fix till keras support class weights for multiple outputs or I wrote custom loss + # https://github.com/keras-team/keras/issues/11735 + if len(self.tasks) == 1: + labels = to_categorical( + batch["true_shower_primary_class"].data, + num_classes=2, + ) + if "energy" in self.tasks: + labels["energy"] = batch["log_true_energy"].data + if "direction" in self.tasks: + labels["direction"] = np.stack( + ( + batch["spherical_offset_az"].data, + batch["spherical_offset_alt"].data, + batch["angular_separation"].data, + ), + axis=1, + ) elif self.DLDataReader.mode == "stereo": - batch = self.DLDataReader.stereo_batch_generation( - batch_indices=batch_indices, - ) + batch = self.DLDataReader.generate_stereo_batch(batch_indices) batch_grouped = batch.group_by(["obs_id", "event_id", "tel_type_id"]) - # Sort events based on their telescope types by the hillas intensity in a given batch if requested - if self.sort_by_intensity: - for batch_grouped in batch_grouped.groups: - batch_grouped.sort(["hillas_intensity"], reverse=True) - print(batch_grouped) - - if self.stack_telescope_images: - print(features) - # Generate the labels for each task - labels = {} - if "type" in self.tasks: - labels["type"] = to_categorical( - batch["true_shower_primary_class"].data, - num_classes=2, - ) - # Temp fix till keras support class weights for multiple outputs or I wrote custom loss - # https://github.com/keras-team/keras/issues/11735 - if len(self.tasks) == 1: - labels = to_categorical( - batch["true_shower_primary_class"].data, + features = [] + true_shower_primary_class = [] + log_true_energy = [] + spherical_offset_az, spherical_offset_alt, angular_separation = [], [], [] + for group_element in batch_grouped.groups: + if self.sort_by_intensity: + # Sort images by the hillas intensity in a given batch if requested + group_element.sort(["hillas_intensity"], reverse=True) + # Stack the telescope images for stereo analysis + if self.stack_telescope_images: + # Retrieve the telescope images + plain_features = group_element["features"].data + # Stack the telescope images along the last axis + stacked_features = np.concatenate( + [ + plain_features[i] + for i in range(plain_features.shape[0]) + ], + axis=-1, + ) + # Append the stacked images to the features list + # shape: (batch_size, image_shape, image_shape, n_channels * n_tel) + features.append(stacked_features) + else: + # Append the plain images to the features list + # shape: (batch_size, n_tel, image_shape, image_shape, n_channels) + features.append(group_element["features"].data) + # Retrieve the labels for the tasks + # FIXME: This won't work for divergent pointing directions + if "type" in self.tasks: + true_shower_primary_class.append(group_element["true_shower_primary_class"].data[0]) + if "energy" in self.tasks: + log_true_energy.append(group_element["log_true_energy"].data[0]) + if "direction" in self.tasks: + spherical_offset_az.append(group_element["spherical_offset_az"].data[0]) + spherical_offset_alt.append(group_element["spherical_offset_alt"].data[0]) + angular_separation.append(group_element["angular_separation"].data[0]) + # Store the labels in the labels dictionary + if "type" in self.tasks: + labels["type"] = to_categorical( + np.array(true_shower_primary_class), num_classes=2, ) - if "energy" in self.tasks: - labels["energy"] = batch["log_true_energy"].data - if "direction" in self.tasks: - labels["direction"] = np.stack( - ( - batch["spherical_offset_az"].data, - batch["spherical_offset_alt"].data, - batch["angular_separation"].data, - ), - axis=1, - ) + # Temp fix till keras support class weights for multiple outputs or I wrote custom loss + # https://github.com/keras-team/keras/issues/11735 + if len(self.tasks) == 1: + labels = to_categorical( + np.array(true_shower_primary_class), + num_classes=2, + ) + if "energy" in self.tasks: + labels["energy"] = np.array(log_true_energy) + if "direction" in self.tasks: + labels["direction"] = np.stack( + ( + np.array(spherical_offset_az), + np.array(spherical_offset_alt), + np.array(angular_separation), + ), + axis=1, + ) + # Store the fatures in the features dictionary + features = {"input": np.array(features)} # Temp fix for supporting keras2 & keras3 if int(keras.__version__.split(".")[0]) >= 3: features = features["input"] diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 23f8147..113c6db 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -48,18 +48,20 @@ lock = threading.Lock() + class ProcessType(Enum): Observation = "Observation" Simulation = "Simulation" + class TableQualityQuery(QualityQuery): """Quality criteria for table-wise dl1b parameters.""" quality_criteria = List( default_value=[ ("> 50 phe", "hillas_intensity > 50"), - #("Positive width", "hillas_width > 0"), - #("> 3 pixels", "morphology_n_pixels > 3"), + # ("Positive width", "hillas_width > 0"), + # ("> 3 pixels", "morphology_n_pixels > 3"), ], allow_none=True, help=QualityQuery.quality_criteria.help, @@ -125,9 +127,9 @@ class DLDataReader(Component): Methods ------- - mono_batch_generation(batch_indices, dl1b_parameter_list=None) + generate_mono_batch(batch_indices) Generate a batch of mono events from list of indices. - stereo_batch_generation(batch_indices, dl1b_parameter_list=None) + generate_stereo_batch(batch_indices) Generate a batch of stereo events from list of indices. """ @@ -280,7 +282,7 @@ def __init__( # Filter subarray by selected telescopes if selected_tel_ids is not None: subarray = subarray.select_subarray(self.tel_ids) - + # Check if it matches the reference if not subarray.__eq__(self.subarray): if self.skip_incompatible_files: @@ -311,11 +313,17 @@ def __init__( for scope, tel_type, name in self.image_mapper_type: if scope == "type" and camera_name in tel_type: self.image_mappers[camera_name] = ImageMapper.from_name( - name, geometry=cam_geom[camera_name], subarray=self.subarray, parent=self + name, + geometry=cam_geom[camera_name], + subarray=self.subarray, + parent=self, ) if tel_type == "*" and camera_name not in self.image_mappers: self.image_mappers[camera_name] = ImageMapper.from_name( - name, geometry=cam_geom[camera_name], subarray=self.subarray, parent=self + name, + geometry=cam_geom[camera_name], + subarray=self.subarray, + parent=self, ) # Telescope pointings @@ -348,12 +356,6 @@ def __init__( elif self.mode == "stereo": self._construct_stereo_example_identifiers() - # Transform true energy into the log space - if self.process_type == ProcessType.Simulation: - self.example_identifiers = self._transform_to_log_energy( - self.example_identifiers - ) - # Handling the class weights calculation. # Scaling by total/2 helps keep the loss to a similar magnitude. # The sum of the weights of all examples stays the same. @@ -440,6 +442,7 @@ def _construct_mono_example_identifiers(self): # Construct the example identifiers events.keep_columns(self.example_ids_keep_columns) if self.process_type == ProcessType.Simulation: + # Add the spherical offsets w.r.t. to the telescope pointing tel_pointing = self._get_tel_pointing(f, self.tel_ids) events = join( left=events, @@ -447,9 +450,13 @@ def _construct_mono_example_identifiers(self): keys=["obs_id", "tel_id"], ) events = self._transform_to_spherical_offsets(events) - # Add the true shower primary class to the table based on the filename is - # signal or background input file list - true_shower_primary_class = 1 if filename in self.input_url_signal else 0 + # Add the logarithm of the true energy in TeV + events = self._transform_to_log_energy(events) + # Add the true shower primary class to the table based on the filename + # is signal or background input file list + true_shower_primary_class = ( + 1 if filename in self.input_url_signal else 0 + ) events.add_column( true_shower_primary_class, name="true_shower_primary_class" ) @@ -561,7 +568,9 @@ def _construct_stereo_example_identifiers(self): right=tel_pointing, keys=["obs_id", "tel_id"], ) - table_per_type = self._transform_to_spherical_offsets(table_per_type) + table_per_type = self._transform_to_spherical_offsets( + table_per_type + ) # Apply the multiplicity cut based on the telescope type table_per_type = table_per_type.group_by(["obs_id", "event_id"]) @@ -584,10 +593,14 @@ def _multiplicity_cut_subarray(table, key_colnames): events = events.groups.filter(_multiplicity_cut_subarray) events.add_column(file_idx, name="file_index", index=0) - # Add the true shower primary class to the table based on the filename is - # signal or background input file list if self.process_type == ProcessType.Simulation: - true_shower_primary_class = 1 if filename in self.input_url_signal else 0 + # Add the logarithm of the true energy in TeV + events = self._transform_to_log_energy(events) + # Add the true shower primary class to the table based on the filename + # is signal or background input file list + true_shower_primary_class = ( + 1 if filename in self.input_url_signal else 0 + ) events.add_column( true_shower_primary_class, name="true_shower_primary_class" ) @@ -679,7 +692,7 @@ def _get_parameters(self, batch, dl1b_parameter_list) -> np.array: dl1b_parameters.append([np.stack(parameters)]) return np.array(dl1b_parameters) - def mono_batch_generation(self, batch_indices) -> (dict, Table): + def generate_mono_batch(self, batch_indices) -> (dict, Table): """ Generate a batch of events for mono mode. @@ -709,16 +722,14 @@ def mono_batch_generation(self, batch_indices) -> (dict, Table): "Generates data containing batch_size samples" # Check that the batch generation call is consistent with the mode if self.mode != "mono": - raise ValueError( - "Mono batch generation is not supported in stereo mode." - ) + raise ValueError("Mono batch generation is not supported in stereo mode.") # Retrieve the batch from the example identifiers via indexing batch = self.example_identifiers.loc[batch_indices] # Append the features from child classes to the batch batch = self._append_features(batch) return batch - def stereo_batch_generation(self, batch_indices) -> (dict, Table): + def generate_stereo_batch(self, batch_indices) -> (dict, Table): """ Generate a batch of events for stereo mode. @@ -744,32 +755,31 @@ def stereo_batch_generation(self, batch_indices) -> (dict, Table): """ # Check that the batch generation call is consistent with the mode if self.mode != "stereo": - raise ValueError( - "Stereo batch generation is not supported in mono mode." - ) + raise ValueError("Stereo batch generation is not supported in mono mode.") # Retrieve the batch from the example identifiers via groupd by # Workaround for the missing multicolumn indexing in astropy: # Need this PR https://github.com/astropy/astropy/pull/15826 # waiting astropy v7.0.0 # Once available, the batch_generation can be shared with "mono" batch = self.example_identifiers_grouped.groups[batch_indices] - # Append the features from child classes to the batch + # Append the features from child classes to the batch batch = self._append_features(batch) - # Add blank features for missing telescopes in the batch + # Add blank inputs for missing telescopes in the batch batch_grouped = batch.group_by(["obs_id", "event_id"]) - for batch_grouped in batch_grouped.groups: + for group_element in batch_grouped.groups: for tel_type_id, tel_type in enumerate(self.selected_telescopes): + blank_input = np.zeros(self.input_shape[tel_type][1:]) for tel_id in self.selected_telescopes[tel_type]: # Check if the telescope is missing in the batch - if tel_id not in batch_grouped["tel_id"]: - blank_features = batch_grouped.copy()[0] - blank_features["table_index"] = -1 - blank_features["tel_type_id"] = tel_type_id - blank_features["tel_id"] = tel_id - blank_features["hillas_intensity"] = 0.0 - blank_features["features"] = np.zeros_like(blank_features["features"]) - batch.add_row(blank_features) - # Sort the batch with the new rows of blank features + if tel_id not in group_element["tel_id"]: + blank_input_row = group_element.copy()[0] + blank_input_row["table_index"] = -1 + blank_input_row["tel_type_id"] = tel_type_id + blank_input_row["tel_id"] = tel_id + blank_input_row["hillas_intensity"] = 0.0 + blank_input_row["features"] = blank_input + batch.add_row(blank_input_row) + # Sort the batch with the new rows of blank inputs batch.sort(["obs_id", "event_id", "tel_type_id", "tel_id"]) return batch @@ -785,20 +795,20 @@ def get_unmapped_image(dl1_event, channels, transforms): This function processes the DL1 event data to generate an image array based on the specified channels and transformation parameters. It handles different types of channels such as 'image' and 'peak_time', and - applies the necessary transformations to recover the original floating + applies the necessary transformations to recover the original floating point values if the file was compressed. Parameters ---------- dl1_event : astropy.table.Table - A table containing DL1 event data, including ``image``, ``image_mask``, + A table containing DL1 event data, including ``image``, ``image_mask``, and ``peak_time``. channels : list of str A list of channels to be processed, such as ``image`` and ``peak_time`` with optional ``cleaned_``-prefix for for the cleaned versions of the channels and ``relative_``-prefix for the relative peak arrival times. transforms : dict - A dictionary containing scaling and offset values for image and peak time + A dictionary containing scaling and offset values for image and peak time transformations. Returns @@ -829,10 +839,10 @@ def get_unmapped_image(dl1_event, channels, transforms): if "relative" in channel: peak_times = dl1_event["peak_time"] # Apply the cleaning mask to the peak times if specified - if "cleaned" in channel: peak_times *= mask + if "cleaned" in channel: + peak_times *= mask image[:, i] = ( - dl1_event["peak_time"] - - peak_times[np.nonzero(peak_times)].mean() + dl1_event["peak_time"] - peak_times[np.nonzero(peak_times)].mean() ) else: image[:, i] = dl1_event["peak_time"] @@ -880,11 +890,11 @@ class DLImageReader(DLDataReader): "peak_time", "relative_peak_time", "cleaned_peak_time", - "cleaned_relative_peak_time" + "cleaned_relative_peak_time", ] ), default_value=["image", "peak_time"], - allow_none=False, + allow_none=False, help=( "Set the input channels to be loaded from the DL1 event data. " "image: integrated charges, " @@ -905,8 +915,33 @@ def __init__( **kwargs, ): - super().__init__(input_url_signal=input_url_signal, input_url_background=input_url_background, config=config, parent=parent, **kwargs) - + super().__init__( + input_url_signal=input_url_signal, + input_url_background=input_url_background, + config=config, + parent=parent, + **kwargs, + ) + + # Set the input shape based on the selected mode + if self.mode == "mono": + self.input_shape = ( + self.image_mappers[self.cam_name].image_shape, + self.image_mappers[self.cam_name].image_shape, + len(self.channels), + ) + elif self.mode == "stereo": + self.input_shape = {} + for tel_type in self.selected_telescopes: + camera_name = super()._get_camera_type(tel_type) + input_shape = ( + len(self.subarray.get_tel_ids_for_type(tel_type)), + self.image_mappers[camera_name].image_shape, + self.image_mappers[camera_name].image_shape, + len(self.channels), + ) + self.input_shape[tel_type] = input_shape + # Get offset and scaling of images self.transforms = {} self.transforms["image_scale"] = 0.0 @@ -1031,9 +1066,7 @@ def get_unmapped_waveform( waveform = waveform[0] else: selected_gain_channel = r1_event["selected_gain_channel"][:, np.newaxis] - waveform = np.where( - selected_gain_channel == 0, waveform[0], waveform[1] - ) + waveform = np.where(selected_gain_channel == 0, waveform[0], waveform[1]) # Apply the transform to recover orginal floating point values if the file were compressed if settings["waveform_scale"] > 0.0: waveform /= settings["waveform_scale"] @@ -1052,7 +1085,10 @@ def get_unmapped_waveform( sequence_position = np.argmax(np.sum(waveform, axis=0)) # Calculate start and stop positions start = max(0, int(1 + sequence_position - settings["seq_length"] / 2)) - stop = min(settings["readout_length"], int(1 + sequence_position + settings["seq_length"] / 2)) + stop = min( + settings["readout_length"], + int(1 + sequence_position + settings["seq_length"] / 2), + ) # Adjust the start and stop if bound overflows if stop > settings["readout_length"]: start -= stop - settings["readout_length"] @@ -1062,9 +1098,11 @@ def get_unmapped_waveform( return waveform + def clean_waveform(waveform, camera_geometry, DBSCAN_config): pass + class DLWaveformReader(DLDataReader): """ A data reader class for handling R1 calibrated waveform data from telescopes. @@ -1120,7 +1158,7 @@ class DLWaveformReader(DLDataReader): ).tag(config=True) DBSCAN_params = Dict( - default_value={"eps": 0.5, "min_samples": 5, "metric": 'euclidean'}, + default_value={"eps": 0.5, "min_samples": 5, "metric": "euclidean"}, allow_none=True, help=( "Set the DBSCAN clustering parameters for waveform cleaning. " @@ -1131,7 +1169,6 @@ class DLWaveformReader(DLDataReader): ), ).tag(config=True) - def __init__( self, input_url_signal, @@ -1141,7 +1178,13 @@ def __init__( **kwargs, ): - super().__init__(input_url_signal=input_url_signal, input_url_background=input_url_background, config=config, parent=parent, **kwargs) + super().__init__( + input_url_signal=input_url_signal, + input_url_background=input_url_background, + config=config, + parent=parent, + **kwargs, + ) # Read the readout length from the first file self.readout_length = int( @@ -1161,6 +1204,25 @@ def __init__( f"Invalid sequence length '{self.sequence_length}' (must be <= '{self.readout_length}')." ) + # Set the input shape based on the selected mode + if self.mode == "mono": + self.input_shape = ( + self.image_mappers[self.cam_name].image_shape, + self.image_mappers[self.cam_name].image_shape, + self.sequence_length, + ) + elif self.mode == "stereo": + self.input_shape = {} + for tel_type in self.selected_telescopes: + camera_name = super()._get_camera_type(tel_type) + input_shape = ( + len(self.subarray.get_tel_ids_for_type(tel_type)), + self.image_mappers[camera_name].image_shape, + self.image_mappers[camera_name].image_shape, + self.sequence_length, + ) + self.input_shape[tel_type] = input_shape + # Construct settings dict for the calibrated waveforms self.waveform_settings = { "cleaning_type": self.cleaning_type, @@ -1243,7 +1305,9 @@ def _append_features(self, batch) -> dict: # Apply the 'ImageMapper' whenever the index matrix is not None. # Otherwise, return the unmapped image for the 'IndexedConv' package. if self.image_mappers[camera_type].index_matrix is None: - waveforms.append(self.image_mappers[camera_type].map_image(unmapped_waveform)) + waveforms.append( + self.image_mappers[camera_type].map_image(unmapped_waveform) + ) else: waveforms.append(unmapped_waveform) batch.add_column(waveforms, name="features", index=7) From e4faee6359336048e4c51910aadaa250ea70dc92 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Tue, 3 Dec 2024 16:20:40 +0100 Subject: [PATCH 58/92] make get_parameters external callable --- dl1_data_handler/reader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 113c6db..712cb36 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -676,7 +676,7 @@ def _transform_to_spherical_offsets(self, table): ) return table - def _get_parameters(self, batch, dl1b_parameter_list) -> np.array: + def get_parameters(self, batch, dl1b_parameter_list) -> np.array: """Retrieve DL1b parameters for a given batch of events.""" dl1b_parameters = [] for file_idx, table_idx, tel_id in zip( From c79a01902b02d0dacb3b9ce7e4ba585647ddac62 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Tue, 3 Dec 2024 17:11:42 +0100 Subject: [PATCH 59/92] polish docstrings --- dl1_data_handler/reader.py | 96 +++++++++++++++++++++++++++++++------- 1 file changed, 80 insertions(+), 16 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 712cb36..7c69753 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -632,8 +632,26 @@ def _multiplicity_cut_subarray(table, key_colnames): # waiting astropy v7.0.0 # self.example_identifiers.add_index(["obs_id", "event_id"]) - def _get_tel_pointing(self, file, tel_ids): - """Retrieve the telescope pointing information for the specified telescope IDs.""" + def _get_tel_pointing(self, file, tel_ids) -> Table: + """ + Retrieve the telescope pointing information for the specified telescope IDs. + + This method extracts the pointing information (azimuth and altitude) + for the given telescope IDs from the provided file. + + Parameters: + ----------- + file : str + Path to the file containing the telescope pointing data. + tel_ids : list + List of telescope IDs for which the pointing information is to be retrieved. + + Returns: + -------- + tel_pointing : astropy.table.Table + A dictionary with telescope IDs as keys and their corresponding + pointing information (azimuth and altitude) as values. + """ tel_pointing = [] for tel_id in tel_ids: with lock: @@ -646,12 +664,43 @@ def _get_tel_pointing(self, file, tel_ids): return vstack(tel_pointing) def _transform_to_log_energy(self, table): - """Transform true energy values in the given table to logarithmic space.""" + """ + Transform energy values to their logarithmic scale. + + This method converts the energy values in the provided table to their logarithmic scale. + + Parameters: + ----------- + table : astropy.table.Table + A Table containing the energy values. + + Returns: + -------- + table : astropy.table.Table + A Table with the logarithmic energy values added as a new column. + """ table.add_column(np.log10(table["true_energy"]), name="log_true_energy") return table - def _transform_to_spherical_offsets(self, table): - """Transform Alt/Az coordinates to spherical offsets.""" + def _transform_to_spherical_offsets(self, table) -> Table: + """ + Transform Alt/Az coordinates to spherical offsets w.r.t. the telescope pointing. + + This method converts the Alt/Az coordinates in the provided table to spherical offsets + w.r.t. the telescope pointing. It also calculates the angular separation between the + true and telescope pointing directions. + + Parameters: + ----------- + table : astropy.table.Table + A Table containing the true Alt/Az coordinates and telescope pointing. + + Returns: + -------- + table : astropy.table.Table + A Table with the spherical offsets and the angular separation added as new columns. + The telescope pointing columns are removed from the table. + """ # Set the telescope pointing of the SkyOffsetSeparation tranform to the fix pointing fix_pointing = SkyCoord( table["telescope_pointing_azimuth"], @@ -677,7 +726,23 @@ def _transform_to_spherical_offsets(self, table): return table def get_parameters(self, batch, dl1b_parameter_list) -> np.array: - """Retrieve DL1b parameters for a given batch of events.""" + """ + Retrieve DL1b parameters for a given batch of events. + + This method extracts the specified DL1b parameters for each event in the batch. + + Parameters: + ----------- + batch : astropy.table.Table + A Table containing the batch with columns ``file_index``, ``table_index``, and ``tel_id``. + dl1b_parameter_list : list + A list of DL1b parameters to be retrieved for each event. + + Returns: + -------- + dl1b_parameters : np.array + An array of DL1b parameters for the batch of events. + """ dl1b_parameters = [] for file_idx, table_idx, tel_id in zip( batch["file_index"], batch["table_index"], batch["tel_id"] @@ -692,7 +757,7 @@ def get_parameters(self, batch, dl1b_parameter_list) -> np.array: dl1b_parameters.append([np.stack(parameters)]) return np.array(dl1b_parameters) - def generate_mono_batch(self, batch_indices) -> (dict, Table): + def generate_mono_batch(self, batch_indices) -> Table: """ Generate a batch of events for mono mode. @@ -729,7 +794,7 @@ def generate_mono_batch(self, batch_indices) -> (dict, Table): batch = self._append_features(batch) return batch - def generate_stereo_batch(self, batch_indices) -> (dict, Table): + def generate_stereo_batch(self, batch_indices) -> Table: """ Generate a batch of events for stereo mode. @@ -784,11 +849,11 @@ def generate_stereo_batch(self, batch_indices) -> (dict, Table): return batch @abstractmethod - def _append_features(self, batch) -> dict: + def _append_features(self, batch) -> Table: pass -def get_unmapped_image(dl1_event, channels, transforms): +def get_unmapped_image(dl1_event, channels, transforms) -> np.ndarray: """ Generate unmapped image from a DL1 event. @@ -813,7 +878,7 @@ def get_unmapped_image(dl1_event, channels, transforms): Returns ------- - np.ndarray + image : np.ndarray The processed image data image for the specific channels. """ # Initialize the image array @@ -971,7 +1036,7 @@ def __init__( "CTAFIELD_4_TRANSFORM_OFFSET" ] - def _append_features(self, batch) -> dict: + def _append_features(self, batch) -> Table: """ Append images to a given batch as features. @@ -1027,7 +1092,7 @@ def get_unmapped_waveform( settings, camera_geometry=None, dl1_cleaning_mask=None, -): +) -> numpy.ndarray: """ Retrieve and process the unmapped waveform from an R1 event. @@ -1056,7 +1121,7 @@ def get_unmapped_waveform( Returns ------- - numpy.ndarray + waveform : numpy.ndarray The processed and optionally cropped waveform data. """ @@ -1095,7 +1160,6 @@ def get_unmapped_waveform( stop = settings["readout_length"] # Crop the unmapped waveform in samples waveform = waveform[:, int(start) : int(stop)] - return waveform @@ -1249,7 +1313,7 @@ def __init__( "CTAFIELD_5_TRANSFORM_OFFSET" ] - def _append_features(self, batch) -> dict: + def _append_features(self, batch) -> Table: """ Append waveforms to a given batch as features. From f50b0652d8b820a27fe0d8d65f21b177850f011d Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Tue, 3 Dec 2024 17:29:59 +0100 Subject: [PATCH 60/92] fix docstrings --- dl1_data_handler/reader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 7c69753..36370f1 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -1092,7 +1092,7 @@ def get_unmapped_waveform( settings, camera_geometry=None, dl1_cleaning_mask=None, -) -> numpy.ndarray: +) -> np.ndarray: """ Retrieve and process the unmapped waveform from an R1 event. From 8e1faec2baad07025f4330d85ae4ad893b8acb24 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Wed, 11 Dec 2024 16:28:39 +0100 Subject: [PATCH 61/92] bug fix to create event based on the type if obs id and event id is the same for different types, the code failed. --- dl1_data_handler/loader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index cddab64..7226f6e 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -149,7 +149,7 @@ def __getitem__(self, index): ) elif self.DLDataReader.mode == "stereo": batch = self.DLDataReader.generate_stereo_batch(batch_indices) - batch_grouped = batch.group_by(["obs_id", "event_id", "tel_type_id"]) + batch_grouped = batch.group_by(["obs_id", "event_id", "tel_type_id", "true_shower_primary_class"]) features = [] true_shower_primary_class = [] log_true_energy = [] From 9a5ede1b031bb6a1fd4162512d5083a13767bcf5 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Tue, 31 Dec 2024 13:35:17 +0100 Subject: [PATCH 62/92] bug fix; loc returned Rows object for a single event in the batch which should be a table use iterrows for iteration over the batch store also subarray trigger table as class attribute make get_tel_pointing also external --- dl1_data_handler/reader.py | 43 ++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 36370f1..193877b 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -131,6 +131,8 @@ class DLDataReader(Component): Generate a batch of mono events from list of indices. generate_stereo_batch(batch_indices) Generate a batch of stereo events from list of indices. + get_tel_pointing(file, tel_ids) + Retrieve the telescope pointing information for the specified telescope IDs. """ mode = CaselessStrEnum( @@ -328,7 +330,7 @@ def __init__( # Telescope pointings self.telescope_pointings = {} - self.tel_trigger_table = None + self.tel_trigger_table, self.subarray_trigger_table = None, None if self.process_type == ProcessType.Observation: for tel_id in self.tel_ids: with lock: @@ -341,7 +343,10 @@ def __init__( self.files[self.first_file], "/dl1/event/telescope/trigger", ) - + self.subarray_trigger_table = read_table( + self.files[self.first_file], + "/dl1/event/subarray/trigger", + ) # Image parameters (DL1b) # Retrieve the column names for the DL1b parameter table with lock: @@ -443,7 +448,7 @@ def _construct_mono_example_identifiers(self): events.keep_columns(self.example_ids_keep_columns) if self.process_type == ProcessType.Simulation: # Add the spherical offsets w.r.t. to the telescope pointing - tel_pointing = self._get_tel_pointing(f, self.tel_ids) + tel_pointing = self.get_tel_pointing(f, self.tel_ids) events = join( left=events, right=tel_pointing, @@ -562,7 +567,7 @@ def _construct_stereo_example_identifiers(self): table_per_type = table_per_type.group_by(["obs_id", "event_id"]) table_per_type.keep_columns(self.example_ids_keep_columns) if self.process_type == ProcessType.Simulation: - tel_pointing = self._get_tel_pointing(f, self.tel_ids) + tel_pointing = self.get_tel_pointing(f, self.tel_ids) table_per_type = join( left=table_per_type, right=tel_pointing, @@ -632,7 +637,7 @@ def _multiplicity_cut_subarray(table, key_colnames): # waiting astropy v7.0.0 # self.example_identifiers.add_index(["obs_id", "event_id"]) - def _get_tel_pointing(self, file, tel_ids) -> Table: + def get_tel_pointing(self, file, tel_ids) -> Table: """ Retrieve the telescope pointing information for the specified telescope IDs. @@ -682,7 +687,7 @@ def _transform_to_log_energy(self, table): table.add_column(np.log10(table["true_energy"]), name="log_true_energy") return table - def _transform_to_spherical_offsets(self, table) -> Table: + def _transform_to_spherical_offsets(self, table) -> Table: """ Transform Alt/Az coordinates to spherical offsets w.r.t. the telescope pointing. @@ -744,8 +749,8 @@ def get_parameters(self, batch, dl1b_parameter_list) -> np.array: An array of DL1b parameters for the batch of events. """ dl1b_parameters = [] - for file_idx, table_idx, tel_id in zip( - batch["file_index"], batch["table_index"], batch["tel_id"] + for file_idx, table_idx, tel_id in batch.iterrows( + "file_index", "table_index", "tel_id" ): filename = list(self.files)[file_idx] with lock: @@ -790,6 +795,10 @@ def generate_mono_batch(self, batch_indices) -> Table: raise ValueError("Mono batch generation is not supported in stereo mode.") # Retrieve the batch from the example identifiers via indexing batch = self.example_identifiers.loc[batch_indices] + # If the batch is a single event loc returns a Rows object and not a Table. + # Convert the batch to a Table in order to append the features later + if not isinstance(batch, Table): + batch = Table(rows=batch) # Append the features from child classes to the batch batch = self._append_features(batch) return batch @@ -827,6 +836,10 @@ def generate_stereo_batch(self, batch_indices) -> Table: # waiting astropy v7.0.0 # Once available, the batch_generation can be shared with "mono" batch = self.example_identifiers_grouped.groups[batch_indices] + # This may returns a Rows object and not a Table if the batch is a single event. + # Convert the batch to a Table in order to append the features later + if not isinstance(batch, Table): + batch = Table(rows=batch) # Append the features from child classes to the batch batch = self._append_features(batch) # Add blank inputs for missing telescopes in the batch @@ -1059,11 +1072,8 @@ def _append_features(self, batch) -> Table: The input batch with the appended processed images as features. """ images = [] - for file_idx, table_idx, tel_type_id, tel_id in zip( - batch["file_index"], - batch["table_index"], - batch["tel_type_id"], - batch["tel_id"], + for file_idx, table_idx, tel_type_id, tel_id in batch.iterrows( + "file_index", "table_index", "tel_type_id", "tel_id" ): filename = list(self.files)[file_idx] with lock: @@ -1336,11 +1346,8 @@ def _append_features(self, batch) -> Table: The input batch with the appended processed waveforms as features. """ waveforms = [] - for file_idx, table_idx, tel_type_id, tel_id in zip( - batch["file_index"], - batch["table_index"], - batch["tel_type_id"], - batch["tel_id"], + for file_idx, table_idx, tel_type_id, tel_id in batch.iterrows( + "file_index", "table_index", "tel_type_id", "tel_id" ): filename = list(self.files)[file_idx] camera_type = self._get_camera_type( From 8dee341b924894b75401016b817c68b536cfbac9 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Tue, 7 Jan 2025 16:03:12 +0100 Subject: [PATCH 63/92] add reference dummy location and obstime for SkyCoord object to avoid warning --- dl1_data_handler/reader.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 193877b..1565f9d 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -20,6 +20,8 @@ import tables import threading +from astropy import units as u +from astropy.coordinates.earth import EarthLocation from astropy.coordinates import SkyCoord from astropy.table import ( Table, @@ -27,6 +29,7 @@ join, vstack, ) +from astropy.time import Time from ctapipe.core import Component, QualityQuery from ctapipe.core.traits import ( @@ -45,6 +48,15 @@ from ctapipe.io import read_table from dl1_data_handler.image_mapper import ImageMapper +# Reference (dummy) location to insert in the SkyCoord object as the default location +#: Area averaged position of LST-1, MAGIC-1 and MAGIC-2 (using 23**2 and 17**2 m2) +REFERENCE_LOCATION = EarthLocation( + lon=-17.890879 * u.deg, + lat=28.761579 * u.deg, + height=2199 * u.m, # MC obs-level +) +# Reference (dummy) time to insert in the SkyCoord object as the default time +LST_EPOCH = Time("2018-10-01T00:00:00", scale="utc") lock = threading.Lock() @@ -367,9 +379,6 @@ def __init__( self.class_weight = None if self.process_type == ProcessType.Simulation: if self.input_url_background: - self.log.info(" Total number of events: %d", self._get_n_events()) - self.log.info(" Number of signal events: %d", self.n_signal_events) - self.log.info(" Number of background events: %d", self.n_bkg_events) self.class_weight = { 0: (1.0 / self.n_bkg_events) * (self._get_n_events() / 2.0), 1: (1.0 / self.n_signal_events) * (self._get_n_events() / 2.0), @@ -711,11 +720,15 @@ def _transform_to_spherical_offsets(self, table) -> Table: table["telescope_pointing_azimuth"], table["telescope_pointing_altitude"], frame="altaz", + location=REFERENCE_LOCATION, + obstime=LST_EPOCH, ) true_direction = SkyCoord( table["true_az"], table["true_alt"], frame="altaz", + location=REFERENCE_LOCATION, + obstime=LST_EPOCH, ) sky_offset = fix_pointing.spherical_offsets_to(true_direction) angular_separation = fix_pointing.separation(true_direction) From c251ac1724d47cde21728749fe56b681a42f9358 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Thu, 9 Jan 2025 09:01:14 +0100 Subject: [PATCH 64/92] bug fix; processing real stereo data while processing real stereo data we do not have the true shower id in the batch --- dl1_data_handler/loader.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index 7226f6e..2c1d7a0 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -149,7 +149,10 @@ def __getitem__(self, index): ) elif self.DLDataReader.mode == "stereo": batch = self.DLDataReader.generate_stereo_batch(batch_indices) - batch_grouped = batch.group_by(["obs_id", "event_id", "tel_type_id", "true_shower_primary_class"]) + if self.DLDataReader.process_type == ProcessType.Simulation: + batch_grouped = batch.group_by(["obs_id", "event_id", "tel_type_id", "true_shower_primary_class"]) + elif self.DLDataReader.process_type == ProcessType.Observation: + batch_grouped = batch.group_by(["obs_id", "event_id", "tel_type_id"]) features = [] true_shower_primary_class = [] log_true_energy = [] From ed4b8699c713f095c5d3351454535f7adf932670 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Thu, 9 Jan 2025 09:05:28 +0100 Subject: [PATCH 65/92] fix import --- dl1_data_handler/loader.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index 2c1d7a0..4268263 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -2,7 +2,8 @@ import astropy.units as u import keras from keras.utils import Sequence, to_categorical - + +from dl1_data_handler.reader import ProcessType class DLDataLoader(Sequence): """ From a5101f08a83f1bdac706a1d69344405e3f9410b7 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 13 Jan 2025 15:56:05 +0100 Subject: [PATCH 66/92] added a new reader for feature vectors (DLFeatureVectorReader) --- dl1_data_handler/loader.py | 246 ++++++++++++++++++++++------------ dl1_data_handler/reader.py | 265 ++++++++++++++++++++++++++++++++----- 2 files changed, 393 insertions(+), 118 deletions(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index 4268263..03708a4 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -2,9 +2,10 @@ import astropy.units as u import keras from keras.utils import Sequence, to_categorical - + from dl1_data_handler.reader import ProcessType + class DLDataLoader(Sequence): """ Generates batches for Keras application. @@ -24,10 +25,6 @@ class DLDataLoader(Sequence): Size of the batch to load the data. random_seed : int, optional Whether to shuffle the data after each epoch with a provided random seed. - sort_by_intensity : bool, optional - Whether to sort the events based on the hillas intensity for stereo analysis. - stack_telescope_images : bool, optional - Whether to stack the telescope images for stereo analysis. Methods: -------- @@ -62,19 +59,21 @@ def __init__( self.sort_by_intensity = sort_by_intensity # Set the input shape based on the mode of the DLDataReader - if self.DLDataReader.mode == "mono": - self.input_shape = self.DLDataReader.input_shape - elif self.DLDataReader.mode == "stereo": - self.input_shape = self.DLDataReader.input_shape[ - list(self.DLDataReader.selected_telescopes)[0] - ] - # Reshape inputs into proper dimensions for the stereo analysis with stacked images - if self.stack_telescope_images: - self.input_shape = ( - self.input_shape[1], - self.input_shape[2], - self.input_shape[0] * self.input_shape[3], - ) + if self.DLDataReader.__class__.__name__ != "DLFeatureVectorReader": + if self.DLDataReader.mode == "mono": + self.input_shape = self.DLDataReader.input_shape + elif self.DLDataReader.mode == "stereo": + self.input_shape = self.DLDataReader.input_shape[ + list(self.DLDataReader.selected_telescopes)[0] + ] + # Reshape inputs into proper dimensions + # for the stereo analysis with stacked images + if self.stack_telescope_images: + self.input_shape = ( + self.input_shape[1], + self.input_shape[2], + self.input_shape[0] * self.input_shape[3], + ) def __len__(self): """ @@ -106,6 +105,35 @@ def __getitem__(self, index): """ Generates one batch of data. + This method is called to generate one batch of data based on the index provided. It + retrieves the data from the DLDataReader and sets up the labels based on the tasks + specified. + + Parameters: + ----------- + index : int + Index of the batch to generate. + + Returns: + -------- + tuple + A tuple containing the input data as features and the corresponding labels. + """ + features, labels = None, None + if self.DLDataReader.mode == "mono": + features, labels = self._get_mono_item(index) + elif self.DLDataReader.mode == "stereo": + features, labels = self._get_stereo_item(index) + return features, labels + + def _get_mono_item(self, index): + """ + Generates one batch of monoscopic data. + + This method is called to generate one batch of monoscopic data + based on the index provided. It retrieves the data from the DLDataReader and + sets up the labels based on the tasks specified. + Parameters: ----------- index : int @@ -121,44 +149,73 @@ def __getitem__(self, index): index * self.batch_size : (index + 1) * self.batch_size ] labels = {} - if self.DLDataReader.mode == "mono": - batch = self.DLDataReader.generate_mono_batch(batch_indices) - # Retrieve the telescope images and store in the features dictionary - features = {"input": batch["features"].data} - if "type" in self.tasks: - labels["type"] = to_categorical( + batch = self.DLDataReader.generate_mono_batch(batch_indices) + # Retrieve the telescope images and store in the features dictionary + features = {"input": batch["features"].data} + if "type" in self.tasks: + labels["type"] = to_categorical( + batch["true_shower_primary_class"].data, + num_classes=2, + ) + # Temp fix till keras support class weights for multiple outputs or I wrote custom loss + # https://github.com/keras-team/keras/issues/11735 + if len(self.tasks) == 1: + labels = to_categorical( batch["true_shower_primary_class"].data, num_classes=2, ) - # Temp fix till keras support class weights for multiple outputs or I wrote custom loss - # https://github.com/keras-team/keras/issues/11735 - if len(self.tasks) == 1: - labels = to_categorical( - batch["true_shower_primary_class"].data, - num_classes=2, - ) - if "energy" in self.tasks: - labels["energy"] = batch["log_true_energy"].data - if "direction" in self.tasks: - labels["direction"] = np.stack( - ( - batch["spherical_offset_az"].data, - batch["spherical_offset_alt"].data, - batch["angular_separation"].data, - ), - axis=1, - ) - elif self.DLDataReader.mode == "stereo": - batch = self.DLDataReader.generate_stereo_batch(batch_indices) - if self.DLDataReader.process_type == ProcessType.Simulation: - batch_grouped = batch.group_by(["obs_id", "event_id", "tel_type_id", "true_shower_primary_class"]) - elif self.DLDataReader.process_type == ProcessType.Observation: - batch_grouped = batch.group_by(["obs_id", "event_id", "tel_type_id"]) - features = [] - true_shower_primary_class = [] - log_true_energy = [] - spherical_offset_az, spherical_offset_alt, angular_separation = [], [], [] - for group_element in batch_grouped.groups: + if "energy" in self.tasks: + labels["energy"] = batch["log_true_energy"].data + if "direction" in self.tasks: + labels["direction"] = np.stack( + ( + batch["spherical_offset_az"].data, + batch["spherical_offset_alt"].data, + batch["angular_separation"].data, + ), + axis=1, + ) + # Temp fix for supporting keras2 & keras3 + if int(keras.__version__.split(".")[0]) >= 3: + features = features["input"] + return features, labels + + def _get_stereo_item(self, index): + """ + Generates one batch of stereoscopic data. + + This method is called to generate one batch of stereoscopic data + based on the index provided. It retrieves the data from the DLDataReader and + sets up the labels based on the tasks. + + Parameters: + ----------- + index : int + Index of the batch to generate. + + Returns: + -------- + tuple + A tuple containing the input data as features and the corresponding labels. + """ + # Generate indices of the batch + batch_indices = self.indices[ + index * self.batch_size : (index + 1) * self.batch_size + ] + labels = {} + batch = self.DLDataReader.generate_stereo_batch(batch_indices) + if self.DLDataReader.process_type == ProcessType.Simulation: + batch_grouped = batch.group_by( + ["obs_id", "event_id", "tel_type_id", "true_shower_primary_class"] + ) + elif self.DLDataReader.process_type == ProcessType.Observation: + batch_grouped = batch.group_by(["obs_id", "event_id", "tel_type_id"]) + features, mono_feature_vectors, stereo_feature_vectors = [], [], [] + true_shower_primary_class = [] + log_true_energy = [] + spherical_offset_az, spherical_offset_alt, angular_separation = [], [], [] + for group_element in batch_grouped.groups: + if "features" in batch.colnames: if self.sort_by_intensity: # Sort images by the hillas intensity in a given batch if requested group_element.sort(["hillas_intensity"], reverse=True) @@ -168,10 +225,7 @@ def __getitem__(self, index): plain_features = group_element["features"].data # Stack the telescope images along the last axis stacked_features = np.concatenate( - [ - plain_features[i] - for i in range(plain_features.shape[0]) - ], + [plain_features[i] for i in range(plain_features.shape[0])], axis=-1, ) # Append the stacked images to the features list @@ -181,43 +235,61 @@ def __getitem__(self, index): # Append the plain images to the features list # shape: (batch_size, n_tel, image_shape, image_shape, n_channels) features.append(group_element["features"].data) - # Retrieve the labels for the tasks - # FIXME: This won't work for divergent pointing directions - if "type" in self.tasks: - true_shower_primary_class.append(group_element["true_shower_primary_class"].data[0]) - if "energy" in self.tasks: - log_true_energy.append(group_element["log_true_energy"].data[0]) - if "direction" in self.tasks: - spherical_offset_az.append(group_element["spherical_offset_az"].data[0]) - spherical_offset_alt.append(group_element["spherical_offset_alt"].data[0]) - angular_separation.append(group_element["angular_separation"].data[0]) - # Store the labels in the labels dictionary + # Retrieve the feature vectors + if "mono_feature_vectors" in batch.colnames: + mono_feature_vectors.append(group_element["mono_feature_vectors"].data) + if "stereo_feature_vectors" in batch.colnames: + stereo_feature_vectors.append( + group_element["stereo_feature_vectors"].data + ) + # Retrieve the labels for the tasks + # FIXME: This won't work for divergent pointing directions if "type" in self.tasks: - labels["type"] = to_categorical( - np.array(true_shower_primary_class), - num_classes=2, + true_shower_primary_class.append( + group_element["true_shower_primary_class"].data[0] ) - # Temp fix till keras support class weights for multiple outputs or I wrote custom loss - # https://github.com/keras-team/keras/issues/11735 - if len(self.tasks) == 1: - labels = to_categorical( - np.array(true_shower_primary_class), - num_classes=2, - ) if "energy" in self.tasks: - labels["energy"] = np.array(log_true_energy) + log_true_energy.append(group_element["log_true_energy"].data[0]) if "direction" in self.tasks: - labels["direction"] = np.stack( - ( - np.array(spherical_offset_az), - np.array(spherical_offset_alt), - np.array(angular_separation), - ), - axis=1, + spherical_offset_az.append(group_element["spherical_offset_az"].data[0]) + spherical_offset_alt.append( + group_element["spherical_offset_alt"].data[0] ) - # Store the fatures in the features dictionary + angular_separation.append(group_element["angular_separation"].data[0]) + # Store the labels in the labels dictionary + if "type" in self.tasks: + labels["type"] = to_categorical( + np.array(true_shower_primary_class), + num_classes=2, + ) + # Temp fix till keras support class weights for multiple outputs or I wrote custom loss + # https://github.com/keras-team/keras/issues/11735 + if len(self.tasks) == 1: + labels = to_categorical( + np.array(true_shower_primary_class), + num_classes=2, + ) + if "energy" in self.tasks: + labels["energy"] = np.array(log_true_energy) + if "direction" in self.tasks: + labels["direction"] = np.stack( + ( + np.array(spherical_offset_az), + np.array(spherical_offset_alt), + np.array(angular_separation), + ), + axis=1, + ) + # Store the fatures in the features dictionary + if "features" in batch.colnames: features = {"input": np.array(features)} + # TDOO: Add support for both feature vectors + if "mono_feature_vectors" in batch.colnames: + features = {"input": np.array(mono_feature_vectors)} + if "stereo_feature_vectors" in batch.colnames: + features = {"input": np.array(stereo_feature_vectors)} # Temp fix for supporting keras2 & keras3 if int(keras.__version__.split(".")[0]) >= 3: features = features["input"] + return features, labels diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 1565f9d..1e543f5 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -186,6 +186,7 @@ class DLDataReader(Component): image_mapper_type = TelescopeParameter( trait=Unicode(), default_value="BilinearMapper", + allow_none=True, help=( "Instances of ``ImageMapper`` transforming a raw 1D vector into a 2D image. " "Different mapping methods can be selected for each telescope type." @@ -283,14 +284,20 @@ def __init__( self.subarray.get_tel_ids_for_type(str(tel_type)) ) - # Check if only one telescope type is selected when reading in mono mode - if self.mode == "mono" and len(self.selected_telescopes) > 1: + # Check if only one telescope type is selected for any subclass except the 'DLFeatureVectorReader' + if ( + self.__class__.__name__ != "DLFeatureVectorReader" + and len(self.selected_telescopes) > 1 + ): raise ValueError( - f"Mono mode selected but multiple telescope types are provided: '{self.selected_telescopes}'." + f"'{self.__class__.__name__}' do not support multiple telescope types: '{self.selected_telescopes}'. " + "Please select only one telescope type or perform the event reconstruction with multiple telescope " + "types using the 'DLFeatureVectorReader' subclass. Beforehand, the feature vectors have to be appended " + "to the DL1 data files using '$ ctlearn-predict-model --dl1-features ...'." ) # Check that all files have the same SubarrayDescription for filename in self.files: - # Read SubarrayDescription from the new file and + # Read SubarrayDescription from the new file subarray = SubarrayDescription.from_hdf(filename) # Filter subarray by selected telescopes @@ -310,35 +317,33 @@ def __init__( ) # Set the telescope type and camera name as class attributes for mono mode for convenience - self.tel_type = None - self.cam_name = None - if self.mode == "mono": - self.tel_type = list(self.selected_telescopes)[0] - self.cam_name = self._get_camera_type(self.tel_type) - + # FIXME Make image mapper not a dict because we only need one since we do not select multiple telescope types for image/wvf reading + self.tel_type = list(self.selected_telescopes)[0] + self.cam_name = self._get_camera_type(self.tel_type) # Initialize the ImageMapper with the pixel positions and mapping settings # TODO: Find a better way for passing the configuration self.image_mappers = {} cam_geom = {} - for camera_type in self.subarray.camera_types: - camera_name = self._get_camera_type(camera_type.name) - if camera_name not in cam_geom: - cam_geom[camera_name] = camera_type.geometry - for scope, tel_type, name in self.image_mapper_type: - if scope == "type" and camera_name in tel_type: - self.image_mappers[camera_name] = ImageMapper.from_name( - name, - geometry=cam_geom[camera_name], - subarray=self.subarray, - parent=self, - ) - if tel_type == "*" and camera_name not in self.image_mappers: - self.image_mappers[camera_name] = ImageMapper.from_name( - name, - geometry=cam_geom[camera_name], - subarray=self.subarray, - parent=self, - ) + if self.image_mapper_type is not None: + for camera_type in self.subarray.camera_types: + camera_name = self._get_camera_type(camera_type.name) + if camera_name not in cam_geom: + cam_geom[camera_name] = camera_type.geometry + for scope, tel_type, name in self.image_mapper_type: + if scope == "type" and camera_name in tel_type: + self.image_mappers[camera_name] = ImageMapper.from_name( + name, + geometry=cam_geom[camera_name], + subarray=self.subarray, + parent=self, + ) + if tel_type == "*" and camera_name not in self.image_mappers: + self.image_mappers[camera_name] = ImageMapper.from_name( + name, + geometry=cam_geom[camera_name], + subarray=self.subarray, + parent=self, + ) # Telescope pointings self.telescope_pointings = {} @@ -859,7 +864,16 @@ def generate_stereo_batch(self, batch_indices) -> Table: batch_grouped = batch.group_by(["obs_id", "event_id"]) for group_element in batch_grouped.groups: for tel_type_id, tel_type in enumerate(self.selected_telescopes): - blank_input = np.zeros(self.input_shape[tel_type][1:]) + if "features" in group_element.colnames: + blank_input = np.zeros(self.input_shape[tel_type][1:]) + if "mono_feature_vectors" in group_element.colnames: + blank_mono_feature_vectors = np.zeros( + group_element["mono_feature_vectors"][0].shape + ) + if "stereo_feature_vectors" in group_element.colnames: + blank_stereo_feature_vectors = np.zeros( + group_element["stereo_feature_vectors"][0].shape + ) for tel_id in self.selected_telescopes[tel_type]: # Check if the telescope is missing in the batch if tel_id not in group_element["tel_id"]: @@ -868,7 +882,16 @@ def generate_stereo_batch(self, batch_indices) -> Table: blank_input_row["tel_type_id"] = tel_type_id blank_input_row["tel_id"] = tel_id blank_input_row["hillas_intensity"] = 0.0 - blank_input_row["features"] = blank_input + if "features" in group_element.colnames: + blank_input_row["features"] = blank_input + if "mono_feature_vectors" in group_element.colnames: + blank_input_row["mono_feature_vectors"] = ( + blank_mono_feature_vectors + ) + if "stereo_feature_vectors" in group_element.colnames: + blank_input_row["stereo_feature_vectors"] = ( + blank_stereo_feature_vectors + ) batch.add_row(blank_input_row) # Sort the batch with the new rows of blank inputs batch.sort(["obs_id", "event_id", "tel_type_id", "tel_id"]) @@ -1396,3 +1419,183 @@ def _append_features(self, batch) -> Table: waveforms.append(unmapped_waveform) batch.add_column(waveforms, name="features", index=7) return batch + + +def get_feature_vectors(dl1_event, prefix, feature_vector_types) -> list: + """ + Generate unmapped image from a DL1 event. + + This function processes the DL1 event data to generate an image array + based on the specified channels and transformation parameters. It handles + different types of channels such as 'image' and 'peak_time', and + applies the necessary transformations to recover the original floating + point values if the file was compressed. + + Parameters + ---------- + dl1_event : astropy.table.Table + A table containing DL1 event data, including ``image``, ``image_mask``, + and ``peak_time``. + channels : list of str + A list of channels to be processed, such as ``image`` and ``peak_time`` + with optional ``cleaned_``-prefix for for the cleaned versions of the channels + and ``relative_``-prefix for the relative peak arrival times. + transforms : dict + A dictionary containing scaling and offset values for image and peak time + transformations. + + Returns + ------- + image : np.ndarray + The processed image data image for the specific channels. + """ + feature_vectors = [] + for feature_vector_type in feature_vector_types: + feature_vectors.append( + dl1_event[f"{prefix}_{feature_vector_type}_feature_vectors"] + ) + return feature_vectors + + +class DLFeatureVectorReader(DLDataReader): + """ + A data reader class for handling DL1 feature vector data. + + This class extends the ``DLDataReader`` to specifically handle the reading of + DL1 feature vectors, obtained from a previous CTLearnModel. It supports the reading + of both ``mono`` and ``stereo`` feature vectors. This reader class only supports + the reading in stereo mode. + """ + + prefixes = List( + trait=Unicode(), + default_value=["CTLearn"], + allow_none=False, + help="List of prefixes for the feature vector group in the HDF5 file.", + ).tag(config=True) + + feature_vector_types = List( + trait=CaselessStrEnum( + [ + "classification", + "energy", + "direction", + ] + ), + allow_none=False, + help=( + "Set the type of the feature vector to be loaded from the DL1 data. " + "classification: " + "energy: , " + "direction: , " + ), + ).tag(config=True) + + load_telescope_features = Bool( + default_value=True, + help="Set whether to load telescope feature vectors from the DL1 data.", + ).tag(config=True) + + load_subarray_features = Bool( + default_value=False, + help="Set whether to load subarray feature vectors from the DL1 data.", + ).tag(config=True) + + def __init__( + self, + input_url_signal, + input_url_background=[], + config=None, + parent=None, + **kwargs, + ): + super().__init__( + input_url_signal=input_url_signal, + input_url_background=input_url_background, + config=config, + parent=parent, + **kwargs, + ) + # Check that the mode is consistent with the feature reader. + # The feature reader only supports stereo mode. + if self.mode != "stereo": + raise ValueError( + f"'{self.__class__.__name__}' only supports 'stereo' mode. " + "Please set the mode to 'stereo' or use one of the other subclasses." + ) + # Check that at least one of the feature vector types is selected + if not self.load_telescope_features and not self.load_subarray_features: + raise ValueError( + "No loading of feature vectors selected. Please set 'load_telescope_features' " + "and/or 'load_subarray_features' to 'True'." + ) + + def _append_features(self, batch) -> Table: + """ + Append previous obtained feature vectors to a given batch as features. + + This method processes a batch of events to append feature vectors as input features + for the neural networks. It reads the feature vector data from the specified files + and appends the feature vectors to the batch. The feature vectors can be loaded + for both telescope and subarray level. + + Parameters + ---------- + batch : astropy.table.Table + A table containing information at minimum the following columns: + - "file_index": List of indices corresponding to the files. + - "table_index": List of indices corresponding to the event tables. + - "tel_type_id": List of telescope type IDs. + - "tel_id": List of telescope IDs. + + Returns + ------- + batch : astropy.table.Table + The input batch with the appended mono and stereo feature vectors. + """ + mono_fvs, stereo_fvs = [], [] + for file_idx, table_idx, tel_type_id, tel_id in batch.iterrows( + "file_index", "table_index", "tel_type_id", "tel_id" + ): + filename = list(self.files)[file_idx] + if self.load_telescope_features: + with lock: + mono_fvs_per_prefix = [] + tel_table = f"tel_{tel_id:03d}" + for prefix in self.prefixes: + telescope_child = ( + self.files[filename] + .root.dl1.event.telescope.features.__getitem__(prefix) + ._f_get_child(tel_table) + ) + mono_fvs_per_prefix.append( + get_feature_vectors( + telescope_child[table_idx], + f"{prefix}_tel", + self.feature_vector_types, + ) + ) + mono_fvs.append(mono_fvs_per_prefix) + if self.load_subarray_features: + with lock: + stereo_fvs_per_prefix = [] + for prefix in self.prefixes: + subarray_child = self.files[ + filename + ].root.dl1.event.subarray.features._f_get_child(prefix) + stereo_fvs_per_prefix.append( + get_feature_vectors( + subarray_child[table_idx], + prefix, + self.feature_vector_types, + ) + ) + stereo_fvs.append(stereo_fvs_per_prefix) + # Append the features to the batch + if self.load_telescope_features: + batch.add_column(np.array(mono_fvs), name="mono_feature_vectors", index=7) + if self.load_subarray_features: + batch.add_column( + np.array(stereo_fvs), name="stereo_feature_vectors", index=7 + ) + return batch From 0d2b8db46cc1f604173219b36921d0d399990cd3 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 13 Jan 2025 16:06:13 +0100 Subject: [PATCH 67/92] support data format v5.0.0 for real data SST1M pipe writes real data in data format v5.0.0. We can support this version for real data only. --- dl1_data_handler/reader.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 1e543f5..2f58972 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -247,10 +247,15 @@ def __init__( self.data_format_version = self._v_attrs["CTA PRODUCT DATA MODEL VERSION"] self.instrument_id = self._v_attrs["CTA INSTRUMENT ID"] - # Check for the minimum ctapipe data format version (v6.0.0) - if int(self.data_format_version.split(".")[0].replace("v", "")) < 6: + # Check for the minimum ctapipe data format version (v6.0.0) for MC sims + if self.process_type == ProcessType.Simulation and int(self.data_format_version.split(".")[0].replace("v", "")) < 6: raise IOError( - f"Provided ctapipe data format version is '{self.data_format_version}' (must be >= v.6.0.0)." + f"Provided ctapipe data format version is '{self.data_format_version}' (must be >= v.6.0.0 for Simulation)." + ) + # Check for the minimum ctapipe data format version (v5.0.0) for real observational data + if self.process_type == ProcessType.Observation and int(self.data_format_version.split(".")[0].replace("v", "")) < 5: + raise IOError( + f"Provided ctapipe data format version is '{self.data_format_version}' (must be >= v.5.0.0 for Observation)." ) # Check for real data processing that only a single file is provided. if self.process_type == ProcessType.Observation and len(self.files) != 1: From 76f8eba392126d53d597b9aafd1fed080d59549c Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 13 Jan 2025 16:20:16 +0100 Subject: [PATCH 68/92] allow to read the pointing from both dl0 or dl1; dl1 has priority SST1M write the event-wise pointing directly in dl1 monitoring --- dl1_data_handler/reader.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 2f58972..fe3681b 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -248,12 +248,18 @@ def __init__( self.instrument_id = self._v_attrs["CTA INSTRUMENT ID"] # Check for the minimum ctapipe data format version (v6.0.0) for MC sims - if self.process_type == ProcessType.Simulation and int(self.data_format_version.split(".")[0].replace("v", "")) < 6: + if ( + self.process_type == ProcessType.Simulation + and int(self.data_format_version.split(".")[0].replace("v", "")) < 6 + ): raise IOError( f"Provided ctapipe data format version is '{self.data_format_version}' (must be >= v.6.0.0 for Simulation)." ) # Check for the minimum ctapipe data format version (v5.0.0) for real observational data - if self.process_type == ProcessType.Observation and int(self.data_format_version.split(".")[0].replace("v", "")) < 5: + if ( + self.process_type == ProcessType.Observation + and int(self.data_format_version.split(".")[0].replace("v", "")) < 5 + ): raise IOError( f"Provided ctapipe data format version is '{self.data_format_version}' (must be >= v.5.0.0 for Observation)." ) @@ -356,10 +362,17 @@ def __init__( if self.process_type == ProcessType.Observation: for tel_id in self.tel_ids: with lock: - self.telescope_pointings[f"tel_{tel_id:03d}"] = read_table( - self.files[self.first_file], - f"/dl0/monitoring/telescope/pointing/tel_{tel_id:03d}", - ) + # Read the telescope pointing information from the dl0/dl1 monitoring. dl1 monitoring has priority. + if self.files[self.first_file].__contains__(f"/dl0/monitoring/telescope/pointing/tel_{tel_id:03d}"): + self.telescope_pointings[f"tel_{tel_id:03d}"] = read_table( + self.files[self.first_file], + f"/dl0/monitoring/telescope/pointing/tel_{tel_id:03d}", + ) + if self.files[self.first_file].__contains__(f"/dl1/monitoring/telescope/pointing/tel_{tel_id:03d}"): + self.telescope_pointings[f"tel_{tel_id:03d}"] = read_table( + self.files[self.first_file], + f"/dl1/monitoring/telescope/pointing/tel_{tel_id:03d}", + ) with lock: self.tel_trigger_table = read_table( self.files[self.first_file], From ab172caf3bba653d31e8aef1b558972adc0c049f Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 13 Jan 2025 16:36:43 +0100 Subject: [PATCH 69/92] add check if pointing table is available --- dl1_data_handler/reader.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index fe3681b..7d123ed 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -362,17 +362,32 @@ def __init__( if self.process_type == ProcessType.Observation: for tel_id in self.tel_ids: with lock: - # Read the telescope pointing information from the dl0/dl1 monitoring. dl1 monitoring has priority. - if self.files[self.first_file].__contains__(f"/dl0/monitoring/telescope/pointing/tel_{tel_id:03d}"): + # Read the telescope pointing information from the dl0/dl1 monitoring tables. + # dl1 monitoring table has priority. + if self.files[self.first_file].__contains__( + f"/dl0/monitoring/telescope/pointing/tel_{tel_id:03d}" + ): self.telescope_pointings[f"tel_{tel_id:03d}"] = read_table( self.files[self.first_file], f"/dl0/monitoring/telescope/pointing/tel_{tel_id:03d}", ) - if self.files[self.first_file].__contains__(f"/dl1/monitoring/telescope/pointing/tel_{tel_id:03d}"): + if self.files[self.first_file].__contains__( + f"/dl1/monitoring/telescope/pointing/tel_{tel_id:03d}" + ): self.telescope_pointings[f"tel_{tel_id:03d}"] = read_table( self.files[self.first_file], f"/dl1/monitoring/telescope/pointing/tel_{tel_id:03d}", ) + # Break if no pointing information is available + if not self.files[self.first_file].__contains__( + f"/dl0/monitoring/telescope/pointing/tel_{tel_id:03d}" + ) and not self.files[self.first_file].__contains__( + f"/dl1/monitoring/telescope/pointing/tel_{tel_id:03d}" + ): + raise IOError( + f"Telescope pointing information for telescope '{tel_id}' is not available " + f"in the dl0/dl1 monitoring tables of file '{self.first_file}'." + ) with lock: self.tel_trigger_table = read_table( self.files[self.first_file], From c48e5fefb24a52fdd1c0edd9a0f14d2738c44779 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 13 Jan 2025 16:40:17 +0100 Subject: [PATCH 70/92] polish docstring --- dl1_data_handler/loader.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index 03708a4..21c2f2d 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -30,10 +30,14 @@ class DLDataLoader(Sequence): -------- __len__(): Returns the number of batches per epoch. - __getitem__(index): - Generates one batch of data. on_epoch_end(): Updates indices after each epoch if random seed is provided. + __getitem__(index): + Generates one batch of data using _get_mono_item(index) or _get_stereo_item(index). + _get_mono_item(index): + Generates one batch of monoscopic data. + _get_stereo_item(index): + Generates one batch of stereoscopic data. """ def __init__( @@ -106,8 +110,7 @@ def __getitem__(self, index): Generates one batch of data. This method is called to generate one batch of data based on the index provided. It - retrieves the data from the DLDataReader and sets up the labels based on the tasks - specified. + calls either _get_mono_item(index) or _get_stereo_item(index) based on the mode of the DLDataReader. Parameters: ----------- From cba3881ac453579054488247b4987cc84db1347c Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Tue, 14 Jan 2025 10:00:32 +0100 Subject: [PATCH 71/92] polish docstrings --- dl1_data_handler/reader.py | 47 +++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 7d123ed..c4ac5a0 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -11,6 +11,8 @@ "DLWaveformReader", "get_unmapped_waveform", "clean_waveform", + "DLFeatureVectorReader", + "get_feature_vectors", ] from abc import abstractmethod @@ -1456,31 +1458,28 @@ def _append_features(self, batch) -> Table: def get_feature_vectors(dl1_event, prefix, feature_vector_types) -> list: """ - Generate unmapped image from a DL1 event. + Retrieve selected feature vectors from a DL1 event. - This function processes the DL1 event data to generate an image array - based on the specified channels and transformation parameters. It handles - different types of channels such as 'image' and 'peak_time', and - applies the necessary transformations to recover the original floating - point values if the file was compressed. + This function processes the DL1 event data to retrieve feature vectors + based on the specified feature vector types and prefix. It returns a list + of feature vectors for the selected types, which can be used as input features + for the neural networks. Parameters ---------- dl1_event : astropy.table.Table - A table containing DL1 event data, including ``image``, ``image_mask``, - and ``peak_time``. - channels : list of str - A list of channels to be processed, such as ``image`` and ``peak_time`` - with optional ``cleaned_``-prefix for for the cleaned versions of the channels - and ``relative_``-prefix for the relative peak arrival times. - transforms : dict - A dictionary containing scaling and offset values for image and peak time - transformations. + A table containing DL1 event data, including feature vectors for classification, + energy regression, and geometry/direction regression. + prefix : str + A prefix for the feature vector group in the HDF5 file. + feature_vector_types : list of str + A list of feature vector types to be loaded from the DL1 data, such as + ``classification``, ``energy``, and ``geometry``. Returns ------- - image : np.ndarray - The processed image data image for the specific channels. + feature_vectors : list of np.ndarray + A list of feature vectors for the selected types. """ feature_vectors = [] for feature_vector_type in feature_vector_types: @@ -1496,8 +1495,8 @@ class DLFeatureVectorReader(DLDataReader): This class extends the ``DLDataReader`` to specifically handle the reading of DL1 feature vectors, obtained from a previous CTLearnModel. It supports the reading - of both ``mono`` and ``stereo`` feature vectors. This reader class only supports - the reading in stereo mode. + of both ``telescope``- and ``subarray``-level feature vectors. This reader class only + supports the reading in stereo mode. """ prefixes = List( @@ -1512,15 +1511,15 @@ class DLFeatureVectorReader(DLDataReader): [ "classification", "energy", - "direction", + "geometry", ] ), allow_none=False, help=( "Set the type of the feature vector to be loaded from the DL1 data. " - "classification: " - "energy: , " - "direction: , " + "classification: load feature vectors used for particle classification, " + "energy: load feature vectors used for energy regression, " + "geometry: load feature vectors used for geometry/direction regression." ), ).tag(config=True) @@ -1570,7 +1569,7 @@ def _append_features(self, batch) -> Table: This method processes a batch of events to append feature vectors as input features for the neural networks. It reads the feature vector data from the specified files and appends the feature vectors to the batch. The feature vectors can be loaded - for both telescope and subarray level. + for both ``telescope``- and ``subarray``-level. Parameters ---------- From e2a2e97f9efb0395e70010dc13aeb86122b6a718 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Tue, 14 Jan 2025 10:17:16 +0100 Subject: [PATCH 72/92] move generation of batch to __getitem__() polish docstrings --- dl1_data_handler/loader.py | 56 ++++++++++++++++++-------------------- dl1_data_handler/reader.py | 1 - 2 files changed, 27 insertions(+), 30 deletions(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index 21c2f2d..426e1a4 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -107,10 +107,11 @@ def on_epoch_end(self): def __getitem__(self, index): """ - Generates one batch of data. + Generate one batch of data and retrieve the features and labels. - This method is called to generate one batch of data based on the index provided. It - calls either _get_mono_item(index) or _get_stereo_item(index) based on the mode of the DLDataReader. + This method is called to generate one batch of monoscopic and stereoscopic data based on + the index provided. It calls either _get_mono_item(batch) or _get_stereo_item(batch) + based on the mode of the DLDataReader. Parameters: ----------- @@ -122,38 +123,38 @@ def __getitem__(self, index): tuple A tuple containing the input data as features and the corresponding labels. """ + # Generate indices of the batch + batch_indices = self.indices[ + index * self.batch_size : (index + 1) * self.batch_size + ] features, labels = None, None if self.DLDataReader.mode == "mono": - features, labels = self._get_mono_item(index) + batch = self.DLDataReader.generate_mono_batch(batch_indices) + features, labels = self._get_mono_item(batch) elif self.DLDataReader.mode == "stereo": - features, labels = self._get_stereo_item(index) + batch = self.DLDataReader.generate_stereo_batch(batch_indices) + features, labels = self._get_stereo_item(batch) return features, labels def _get_mono_item(self, index): """ - Generates one batch of monoscopic data. + Retrieve the features and labels for one batch of monoscopic data. - This method is called to generate one batch of monoscopic data - based on the index provided. It retrieves the data from the DLDataReader and - sets up the labels based on the tasks specified. + This method is called to retrieve the features and labels for one batch of + monoscopic data. The labels are set up based on the tasks specified. Parameters: ----------- - index : int - Index of the batch to generate. + batch : astropy.table.Table + A table containing the data for the batch. Returns: -------- tuple A tuple containing the input data as features and the corresponding labels. """ - # Generate indices of the batch - batch_indices = self.indices[ - index * self.batch_size : (index + 1) * self.batch_size - ] - labels = {} - batch = self.DLDataReader.generate_mono_batch(batch_indices) # Retrieve the telescope images and store in the features dictionary + labels = {} features = {"input": batch["features"].data} if "type" in self.tasks: labels["type"] = to_categorical( @@ -185,28 +186,26 @@ def _get_mono_item(self, index): def _get_stereo_item(self, index): """ - Generates one batch of stereoscopic data. + Retrieve the features and labels for one batch of stereoscopic data. - This method is called to generate one batch of stereoscopic data - based on the index provided. It retrieves the data from the DLDataReader and - sets up the labels based on the tasks. + This method is called to retrieve the features and labels for one batch of + stereoscopic data. The original batch is grouped to retrieve the telescope + data for each event and then the telescope images or waveforms are stored + by the hillas intensity or stacked if required. Feature vectors can also + be retrieved if available for ``telescope``- and ``subarray``level. The + labels are set up based on the tasks specified. Parameters: ----------- - index : int - Index of the batch to generate. + batch : astropy.table.Table + A table containing the data for the batch. Returns: -------- tuple A tuple containing the input data as features and the corresponding labels. """ - # Generate indices of the batch - batch_indices = self.indices[ - index * self.batch_size : (index + 1) * self.batch_size - ] labels = {} - batch = self.DLDataReader.generate_stereo_batch(batch_indices) if self.DLDataReader.process_type == ProcessType.Simulation: batch_grouped = batch.group_by( ["obs_id", "event_id", "tel_type_id", "true_shower_primary_class"] @@ -294,5 +293,4 @@ def _get_stereo_item(self, index): # Temp fix for supporting keras2 & keras3 if int(keras.__version__.split(".")[0]) >= 3: features = features["input"] - return features, labels diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index c4ac5a0..01d6afa 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -842,7 +842,6 @@ def generate_mono_batch(self, batch_indices) -> Table: the specified DL1b parameters and the rows correspond to the examples in the batch. """ - "Generates data containing batch_size samples" # Check that the batch generation call is consistent with the mode if self.mode != "mono": raise ValueError("Mono batch generation is not supported in stereo mode.") From 35214a3bb3f1636fb2c5bf58da82ecd12674ec9d Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Tue, 14 Jan 2025 11:45:52 +0100 Subject: [PATCH 73/92] fix args from get mono and stereo function --- dl1_data_handler/loader.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py index 426e1a4..27570d9 100644 --- a/dl1_data_handler/loader.py +++ b/dl1_data_handler/loader.py @@ -136,7 +136,7 @@ def __getitem__(self, index): features, labels = self._get_stereo_item(batch) return features, labels - def _get_mono_item(self, index): + def _get_mono_item(self, batch): """ Retrieve the features and labels for one batch of monoscopic data. @@ -184,7 +184,7 @@ def _get_mono_item(self, index): features = features["input"] return features, labels - def _get_stereo_item(self, index): + def _get_stereo_item(self, batch): """ Retrieve the features and labels for one batch of stereoscopic data. From ac5e7dd9628c43acc5e15f03c2526a2cf5f03c1e Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Thu, 6 Feb 2025 14:20:19 +0100 Subject: [PATCH 74/92] fix AdvCam --- dl1_data_handler/image_mapper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dl1_data_handler/image_mapper.py b/dl1_data_handler/image_mapper.py index 13ba0aa..6faadb7 100644 --- a/dl1_data_handler/image_mapper.py +++ b/dl1_data_handler/image_mapper.py @@ -357,8 +357,8 @@ def _get_grids_for_oversampling( ] ) # Adjust for odd tick_diff - # TODO: Check why MAGICCam and VERITAS do not need this adjustment - if tick_diff % 2 != 0 and self.camera_type not in ["MAGICCam", "VERITAS"]: + # TODO: Check why MAGICCam, VERITAS, and UNKNOWN-7987PX (AdvCam) do not need this adjustment + if tick_diff % 2 != 0 and self.camera_type not in ["MAGICCam", "VERITAS", "UNKNOWN-7987PX"]: grid_second.insert( 0, np.around( From dd5f03a3109a8f7cb5e6c717327f3407512dc912 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Thu, 6 Feb 2025 14:22:05 +0100 Subject: [PATCH 75/92] fix stereo reading obs and event ids can be equal for protons and gammas; if they end up in the same batch the code break; this is fixing the issue by grouping also by particle type for simulation --- dl1_data_handler/reader.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 01d6afa..f2b6c42 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -895,7 +895,10 @@ def generate_stereo_batch(self, batch_indices) -> Table: # Append the features from child classes to the batch batch = self._append_features(batch) # Add blank inputs for missing telescopes in the batch - batch_grouped = batch.group_by(["obs_id", "event_id"]) + if self.process_type == ProcessType.Simulation: + batch_grouped = batch.group_by(["obs_id", "event_id", "true_shower_primary_class"]) + elif self.process_type == ProcessType.Observation: + batch_grouped = batch.group_by(["obs_id", "event_id"]) for group_element in batch_grouped.groups: for tel_type_id, tel_type in enumerate(self.selected_telescopes): if "features" in group_element.colnames: From 85874496671f5bf698e04ff5497e9f31a333a285 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Thu, 6 Feb 2025 15:53:06 +0100 Subject: [PATCH 76/92] move constants to class polish docstrings --- README.rst | 2 +- dl1_data_handler/image_mapper.py | 10 +++++----- dl1_data_handler/reader.py | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.rst b/README.rst index 915e2b2..1779a94 100644 --- a/README.rst +++ b/README.rst @@ -60,7 +60,7 @@ The main dependencies are: * PyTables >= 3.8 * NumPy >= 1.20.0 -* ctapipe == 0.22.0 +* ctapipe >= 0.23 Also see setup.py. diff --git a/dl1_data_handler/image_mapper.py b/dl1_data_handler/image_mapper.py index 6faadb7..635db13 100644 --- a/dl1_data_handler/image_mapper.py +++ b/dl1_data_handler/image_mapper.py @@ -1,5 +1,5 @@ """ -This module defines the ``ImageMapper`` classes, which holds the basic functionality for mapping raw 1D vectors into 2D mapped images. +This module defines the ``ImageMapper`` classes that hold the basic functionality for mapping raw 1D vectors into 2D mapped images. """ import numpy as np @@ -23,10 +23,6 @@ "SquareMapper", ] -# Constants for the ImageMapper classes -Constants = namedtuple("Constants", ["decimal_precision", "tick_interval_limit"]) -constants = Constants(3, 0.002) - class ImageMapper(TelescopeComponent): """ Base component for mapping raw 1D vectors into 2D mapped images. @@ -67,6 +63,10 @@ class ImageMapper(TelescopeComponent): Transform the raw 1D vector data into the 2D mapped image. """ + # Constants for the ImageMapper classes + Constants = namedtuple("Constants", ["decimal_precision", "tick_interval_limit"]) + constants = Constants(3, 0.002) + def __init__( self, geometry, diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index f2b6c42..ba1638c 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -1,5 +1,5 @@ """ -This module defines the ``DLDataReader`` and ``TableQualityQuery`` classes, which holds the basic reading and processing functionality for Deep Learning (DL) analyses. +This module defines the ``DLDataReader`` and ``TableQualityQuery`` classes that hold the basic reading and processing functionality for Deep Learning (DL) analyses. """ __all__ = [ From 4b854bd2ec69b89d364993c5c0a0c18da3fcb414 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Thu, 6 Feb 2025 16:32:35 +0100 Subject: [PATCH 77/92] fix constants class attribute --- dl1_data_handler/image_mapper.py | 42 ++++++++++++++++---------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/dl1_data_handler/image_mapper.py b/dl1_data_handler/image_mapper.py index 635db13..38c84cf 100644 --- a/dl1_data_handler/image_mapper.py +++ b/dl1_data_handler/image_mapper.py @@ -94,10 +94,10 @@ def __init__( self.geometry.rotate(self.geometry.pix_rotation) self.pix_x = np.around( - self.geometry.pix_x.value, decimals=constants.decimal_precision + self.geometry.pix_x.value, decimals=self.constants.decimal_precision ) self.pix_y = np.around( - self.geometry.pix_y.value, decimals=constants.decimal_precision + self.geometry.pix_y.value, decimals=self.constants.decimal_precision ) self.x_ticks = np.unique(self.pix_x).tolist() @@ -164,10 +164,10 @@ def _create_virtual_hex_pixels( ): """Create virtual hexagonal pixels outside of the camera.""" dist_first = np.around( - abs(first_ticks[0] - first_ticks[1]), decimals=constants.decimal_precision + abs(first_ticks[0] - first_ticks[1]), decimals=self.constants.decimal_precision ) dist_second = np.around( - abs(second_ticks[0] - second_ticks[1]), decimals=constants.decimal_precision + abs(second_ticks[0] - second_ticks[1]), decimals=self.constants.decimal_precision ) tick_diff = len(first_ticks) * 2 - len(second_ticks) @@ -178,14 +178,14 @@ def _create_virtual_hex_pixels( [ np.around( second_ticks[0] - dist_second, - decimals=constants.decimal_precision, + decimals=self.constants.decimal_precision, ) ] + second_ticks + [ np.around( second_ticks[-1] + dist_second, - decimals=constants.decimal_precision, + decimals=self.constants.decimal_precision, ) ] ) @@ -195,14 +195,14 @@ def _create_virtual_hex_pixels( [ np.around( first_ticks[0] - dist_first, - decimals=constants.decimal_precision, + decimals=self.constants.decimal_precision, ) ] + first_ticks + [ np.around( first_ticks[-1] + dist_first, - decimals=constants.decimal_precision, + decimals=self.constants.decimal_precision, ) ] ) @@ -211,7 +211,7 @@ def _create_virtual_hex_pixels( second_ticks.insert( 0, np.around( - second_ticks[0] - dist_second, decimals=constants.decimal_precision + second_ticks[0] - dist_second, decimals=self.constants.decimal_precision ), ) @@ -345,14 +345,14 @@ def _get_grids_for_oversampling( [ np.around( grid_second[0] - dist_second, - decimals=constants.decimal_precision, + decimals=self.constants.decimal_precision, ) ] + grid_second + [ np.around( grid_second[-1] + dist_second, - decimals=constants.decimal_precision, + decimals=self.constants.decimal_precision, ) ] ) @@ -362,7 +362,7 @@ def _get_grids_for_oversampling( grid_second.insert( 0, np.around( - grid_second[0] - dist_second, decimals=constants.decimal_precision + grid_second[0] - dist_second, decimals=self.constants.decimal_precision ), ) @@ -426,7 +426,7 @@ def _smooth_ticks(self, pix_pos, ticks): """Smooth the ticks needed for the 'DigiCam' and 'CHEC' cameras.""" remove_val, change_val = [], [] for i in range(len(ticks) - 1): - if abs(ticks[i] - ticks[i + 1]) <= constants.tick_interval_limit: + if abs(ticks[i] - ticks[i + 1]) <= self.constants.tick_interval_limit: remove_val.append(ticks[i]) change_val.append(ticks[i + 1]) @@ -580,10 +580,10 @@ def _get_grids( ) dist_first = np.around( - abs(first_ticks[0] - first_ticks[1]), decimals=constants.decimal_precision + abs(first_ticks[0] - first_ticks[1]), decimals=self.constants.decimal_precision ) dist_second = np.around( - abs(second_ticks[0] - second_ticks[1]), decimals=constants.decimal_precision + abs(second_ticks[0] - second_ticks[1]), decimals=self.constants.decimal_precision ) # manipulate y ticks with extra ticks @@ -591,7 +591,7 @@ def _get_grids( for i in np.arange(num_extra_ticks): second_ticks.append( np.around( - second_ticks[-1] + dist_second, decimals=constants.decimal_precision + second_ticks[-1] + dist_second, decimals=self.constants.decimal_precision ) ) first_ticks = reversed(first_ticks) @@ -611,7 +611,7 @@ def _get_grids( grid_second.append( np.around( grid_second[-1] + dist_second, - decimals=constants.decimal_precision, + decimals=self.constants.decimal_precision, ) ) elif len(grid_first) < len(grid_second): @@ -619,7 +619,7 @@ def _get_grids( grid_first.append( np.around( grid_first[-1] + dist_first, - decimals=constants.decimal_precision, + decimals=self.constants.decimal_precision, ) ) @@ -719,13 +719,13 @@ def _get_grids( for _ in np.arange(tick_diff_each_side): second_ticks.append( np.around( - second_ticks[-1] + dist_second, decimals=constants.decimal_precision + second_ticks[-1] + dist_second, decimals=self.constants.decimal_precision ) ) second_ticks.insert( 0, np.around( - second_ticks[0] - dist_second, decimals=constants.decimal_precision + second_ticks[0] - dist_second, decimals=self.constants.decimal_precision ), ) # If tick_diff is odd, add one more tick to the beginning @@ -733,7 +733,7 @@ def _get_grids( second_ticks.insert( 0, np.around( - second_ticks[0] - dist_second, decimals=constants.decimal_precision + second_ticks[0] - dist_second, decimals=self.constants.decimal_precision ), ) # Create the input and output grid From 7f7d0a3d7c512baee619b7ee32302b0eb7183062 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 10 Feb 2025 11:18:18 +0100 Subject: [PATCH 78/92] add minimal unit test --- dl1_data_handler/conftest.py | 42 +++++++++++++++++++++++++++ dl1_data_handler/reader.py | 2 +- dl1_data_handler/tests/test_reader.py | 23 +++++++++++++++ setup.cfg | 3 +- 4 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 dl1_data_handler/conftest.py create mode 100644 dl1_data_handler/tests/test_reader.py diff --git a/dl1_data_handler/conftest.py b/dl1_data_handler/conftest.py new file mode 100644 index 0000000..7c2982d --- /dev/null +++ b/dl1_data_handler/conftest.py @@ -0,0 +1,42 @@ +""" +common pytest fixtures for tests in dl1-data-handler. +Credits to ctapipe for the original code. +""" + +import pytest + +from ctapipe.core import run_tool +from ctapipe.utils import get_dataset_path +from ctapipe.utils.filelock import FileLock + +@pytest.fixture(scope="session") +def prod5_gamma_simtel_path(): + return get_dataset_path("gamma_prod5.simtel.zst") + +@pytest.fixture(scope="session") +def dl1_tmp_path(tmp_path_factory): + """Temporary directory for global dl1 test data""" + return tmp_path_factory.mktemp("dl1_") + +@pytest.fixture(scope="session") +def dl1_gamma_file(dl1_tmp_path, prod5_gamma_simtel_path): + """ + DL1 file containing both images and parameters from a gamma simulation set. + """ + from ctapipe.tools.process import ProcessorTool + + output = dl1_tmp_path / "gamma.dl1.h5" + + # prevent running process multiple times in case of parallel tests + with FileLock(output.with_suffix(output.suffix + ".lock")): + if output.is_file(): + return output + + argv = [ + f"--input={prod5_gamma_simtel_path}", + f"--output={output}", + "--write-images", + "--DataWriter.Contact.name=αℓℓ the äüöß", + ] + assert run_tool(ProcessorTool(), argv=argv, cwd=dl1_tmp_path) == 0 + return output \ No newline at end of file diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index ba1638c..844985a 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -275,7 +275,7 @@ def __init__( self.subarray = SubarrayDescription.from_hdf(self.first_file) selected_tel_ids = None if self.allowed_tels is not None: - selected_tel_ids = np.array(self.allowed_tels, dtype=np.int16) + selected_tel_ids = np.array(list(self.allowed_tels), dtype=np.int16) else: if self.allowed_tel_types is not None: selected_tel_ids = np.ravel( diff --git a/dl1_data_handler/tests/test_reader.py b/dl1_data_handler/tests/test_reader.py new file mode 100644 index 0000000..5abbe19 --- /dev/null +++ b/dl1_data_handler/tests/test_reader.py @@ -0,0 +1,23 @@ +import pytest +from traitlets.config.loader import Config + +from dl1_data_handler.reader import DLImageReader + +def test_dl1_image_reading(dl1_tmp_path, dl1_gamma_file): + """check reading from pixel-wise image data files""" + # Create a configuration suitable for the test + config = Config( + { + "DLImageReader": { + "allowed_tels": [4], + }, + } + ) + # Create an image reader and test basic properties + dl1_reader = DLImageReader(input_url_signal=[dl1_gamma_file], config=config) + assert dl1_reader._get_n_events() == 1 + assert dl1_reader.tel_type == "LST_LST_LSTCam" + # Test the generation of a mono batch + mono_batch = dl1_reader.generate_mono_batch([0]) + assert mono_batch["tel_id"] == 4 + assert mono_batch["features"].shape == (1, 110, 110, 2) \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index b6b9726..8c79ffe 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,2 +1 @@ -[tool:pytest] -pep8ignore = +[tool:pytest] \ No newline at end of file From 62a97c8e94009fc91e360e81c7420524470a8c1c Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 10 Feb 2025 11:40:15 +0100 Subject: [PATCH 79/92] add also unit test for R1 reading --- dl1_data_handler/conftest.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/dl1_data_handler/conftest.py b/dl1_data_handler/conftest.py index 7c2982d..4b5ff28 100644 --- a/dl1_data_handler/conftest.py +++ b/dl1_data_handler/conftest.py @@ -18,6 +18,11 @@ def dl1_tmp_path(tmp_path_factory): """Temporary directory for global dl1 test data""" return tmp_path_factory.mktemp("dl1_") +@pytest.fixture(scope="session") +def r1_tmp_path(tmp_path_factory): + """Temporary directory for global r1 test data""" + return tmp_path_factory.mktemp("r1_") + @pytest.fixture(scope="session") def dl1_gamma_file(dl1_tmp_path, prod5_gamma_simtel_path): """ @@ -39,4 +44,27 @@ def dl1_gamma_file(dl1_tmp_path, prod5_gamma_simtel_path): "--DataWriter.Contact.name=αℓℓ the äüöß", ] assert run_tool(ProcessorTool(), argv=argv, cwd=dl1_tmp_path) == 0 + return output + +@pytest.fixture(scope="session") +def r1_gamma_file(r1_tmp_path, prod5_gamma_simtel_path): + """ + R1 file containing both waveforms and parameters from a gamma simulation set. + """ + from ctapipe.tools.process import ProcessorTool + + output = r1_tmp_path / "gamma.r1.h5" + + # prevent running process multiple times in case of parallel tests + with FileLock(output.with_suffix(output.suffix + ".lock")): + if output.is_file(): + return output + + argv = [ + f"--input={prod5_gamma_simtel_path}", + f"--output={output}", + f"--DataWriter.write_r1_waveforms=True", + "--DataWriter.Contact.name=αℓℓ the äüöß", + ] + assert run_tool(ProcessorTool(), argv=argv, cwd=r1_tmp_path) == 0 return output \ No newline at end of file From 0785517e4f2317958adfe87cc5c1dff0de02a51a Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 10 Feb 2025 12:10:16 +0100 Subject: [PATCH 80/92] add the r1 waveform reading unit test --- dl1_data_handler/tests/test_reader.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/dl1_data_handler/tests/test_reader.py b/dl1_data_handler/tests/test_reader.py index 5abbe19..8ba966a 100644 --- a/dl1_data_handler/tests/test_reader.py +++ b/dl1_data_handler/tests/test_reader.py @@ -1,7 +1,7 @@ import pytest from traitlets.config.loader import Config -from dl1_data_handler.reader import DLImageReader +from dl1_data_handler.reader import DLImageReader, DLWaveformReader def test_dl1_image_reading(dl1_tmp_path, dl1_gamma_file): """check reading from pixel-wise image data files""" @@ -20,4 +20,25 @@ def test_dl1_image_reading(dl1_tmp_path, dl1_gamma_file): # Test the generation of a mono batch mono_batch = dl1_reader.generate_mono_batch([0]) assert mono_batch["tel_id"] == 4 - assert mono_batch["features"].shape == (1, 110, 110, 2) \ No newline at end of file + assert mono_batch["features"].shape == (1, 110, 110, 2) + + +def test_r1_waveform_reading(r1_tmp_path, r1_gamma_file): + """check reading from pixel-wise waveform data files""" + # Create a configuration suitable for the test + config = Config( + { + "DLWaveformReader": { + "allowed_tels": [4], + "sequence_length": 20, + }, + } + ) + # Create an image reader and test basic properties + r1_reader = DLWaveformReader(input_url_signal=[r1_gamma_file], config=config) + assert r1_reader._get_n_events() == 1 + assert r1_reader.tel_type == "LST_LST_LSTCam" + # Test the generation of a mono batch + mono_batch = r1_reader.generate_mono_batch([0]) + assert mono_batch["tel_id"] == 4 + assert mono_batch["features"].shape == (1, 110, 110, 20) \ No newline at end of file From a8de0d90c4f331684654039978ac80ccf1a0e470 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 10 Feb 2025 12:11:26 +0100 Subject: [PATCH 81/92] upgrade to ctapipe v0.23.2 process tool was failing in the tests because we need the latest ctapipe version --- environment.yml | 8 ++++---- setup.py | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/environment.yml b/environment.yml index 39c3915..3207fbc 100644 --- a/environment.yml +++ b/environment.yml @@ -8,11 +8,11 @@ dependencies: - python>=3.10 - astropy - setuptools - - numpy>=1.20 - - scipy>=1.11 + - numpy + - scipy - pip - - ctapipe>=0.23.0 - - traitlets>=5.0 + - ctapipe==0.23.2 + - traitlets - pyyaml - pandas - pip: diff --git a/setup.py b/setup.py index 754e2db..75c39c9 100644 --- a/setup.py +++ b/setup.py @@ -24,16 +24,16 @@ def getVersionFromFile(): license="MIT", packages=["dl1_data_handler"], install_requires=[ - "numpy>=1.20", - "scipy>=1.11", + "numpy", + "scipy", "astropy", - "ctapipe==0.23.0", - "traitlets>=5.0", + "ctapipe==0.23.2", + "traitlets", "jupyter", "keras", "pandas", "pytest-cov", - "tables>=3.8", + "tables", ], dependency_links=[], zip_safe=True, From 6871ba53fa5141803f6efb565a10fbd29999374f Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 10 Feb 2025 13:34:30 +0100 Subject: [PATCH 82/92] add test for the loader remove placeholder --- dl1_data_handler/tests/test_loader.py | 31 +++++++++++++++++++++++++++ tests/test_placeholder.py | 2 -- 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 dl1_data_handler/tests/test_loader.py delete mode 100644 tests/test_placeholder.py diff --git a/dl1_data_handler/tests/test_loader.py b/dl1_data_handler/tests/test_loader.py new file mode 100644 index 0000000..a039fb9 --- /dev/null +++ b/dl1_data_handler/tests/test_loader.py @@ -0,0 +1,31 @@ +import pytest +from traitlets.config.loader import Config + +from dl1_data_handler.reader import DLImageReader +from dl1_data_handler.loader import DLDataLoader + +def test_data_loader(dl1_tmp_path, dl1_gamma_file): + """check """ + # Create a configuration suitable for the test + config = Config( + { + "DLImageReader": { + "allowed_tels": [4], + }, + } + ) + # Create an image reader + dl1_reader = DLImageReader(input_url_signal=[dl1_gamma_file], config=config) + # Create a data loader + dl1_loader = DLDataLoader( + DLDataReader=dl1_reader, + indices=[0], + tasks=["type", "energy", "direction"], + batch_size=1 + ) + # Get the features and labels fgrom the data loader for one batch + features, labels = dl1_loader[0] + # Check that all the correct labels are present + assert "type" in labels and "energy" in labels and "direction" in labels + # Check the shape of the features + assert features["input"].shape == (1, 110, 110, 2) \ No newline at end of file diff --git a/tests/test_placeholder.py b/tests/test_placeholder.py deleted file mode 100644 index 201975f..0000000 --- a/tests/test_placeholder.py +++ /dev/null @@ -1,2 +0,0 @@ -def test_placeholder(): - pass From df73654964385b47340e3a65423fb65705b9ab35 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 10 Feb 2025 14:19:53 +0100 Subject: [PATCH 83/92] move data loader to ctlearn dl1dh should be not import keras or tensorflow --- README.rst | 23 +- dl1_data_handler/loader.py | 296 -------------------------- dl1_data_handler/tests/test_loader.py | 31 --- environment.yml | 1 - setup.py | 1 - 5 files changed, 1 insertion(+), 351 deletions(-) delete mode 100644 dl1_data_handler/loader.py delete mode 100644 dl1_data_handler/tests/test_loader.py diff --git a/README.rst b/README.rst index 1779a94..2dbc428 100644 --- a/README.rst +++ b/README.rst @@ -43,7 +43,7 @@ necessary package channels, and install dl1-data-handler specified version and i .. code-block:: bash - DL1DH_VER=0.12.0 + DL1DH_VER=0.13.0 wget https://raw.githubusercontent.com/cta-observatory/dl1-data-handler/v$DL1DH_VER/environment.yml conda env create -n [ENVIRONMENT_NAME] -f environment.yml conda activate [ENVIRONMENT_NAME] @@ -52,27 +52,6 @@ necessary package channels, and install dl1-data-handler specified version and i This should automatically install all dependencies (NOTE: this may take some time, as by default MKL is included as a dependency of NumPy and it is very large). -Dependencies ------------- - -The main dependencies are: - - -* PyTables >= 3.8 -* NumPy >= 1.20.0 -* ctapipe >= 0.23 - -Also see setup.py. - -Usage ------ - -ImageMapper -^^^^^^^^^^^ - -The ImageMapper class transforms the hexagonal input pixels into a 2D Cartesian output image. The basic usage is demonstrated in the `ImageMapper tutorial `_. It requires `ctapipe-extra `_ outside of the dl1-data-handler. See this publication for a detailed description: `arXiv:1912.09898 `_ - - Links ----- diff --git a/dl1_data_handler/loader.py b/dl1_data_handler/loader.py deleted file mode 100644 index 27570d9..0000000 --- a/dl1_data_handler/loader.py +++ /dev/null @@ -1,296 +0,0 @@ -import numpy as np -import astropy.units as u -import keras -from keras.utils import Sequence, to_categorical - -from dl1_data_handler.reader import ProcessType - - -class DLDataLoader(Sequence): - """ - Generates batches for Keras application. - - DLDataLoader is a data loader class that inherits from ``~keras.utils.Sequence``. - It is designed to handle and load data for deep learning models in a batch-wise manner. - - Attributes: - ----------- - data_reader : DLDataReader - An instance of DLDataReader to read the input data. - indices : list - List of indices to specify the data to be loaded. - tasks : list - List of tasks to be performed on the data to properly set up the labels. - batch_size : int - Size of the batch to load the data. - random_seed : int, optional - Whether to shuffle the data after each epoch with a provided random seed. - - Methods: - -------- - __len__(): - Returns the number of batches per epoch. - on_epoch_end(): - Updates indices after each epoch if random seed is provided. - __getitem__(index): - Generates one batch of data using _get_mono_item(index) or _get_stereo_item(index). - _get_mono_item(index): - Generates one batch of monoscopic data. - _get_stereo_item(index): - Generates one batch of stereoscopic data. - """ - - def __init__( - self, - DLDataReader, - indices, - tasks, - batch_size=64, - random_seed=None, - sort_by_intensity=False, - stack_telescope_images=False, - **kwargs, - ): - super().__init__(**kwargs) - "Initialization" - self.DLDataReader = DLDataReader - self.indices = indices - self.tasks = tasks - self.batch_size = batch_size - self.random_seed = random_seed - self.on_epoch_end() - self.stack_telescope_images = stack_telescope_images - self.sort_by_intensity = sort_by_intensity - - # Set the input shape based on the mode of the DLDataReader - if self.DLDataReader.__class__.__name__ != "DLFeatureVectorReader": - if self.DLDataReader.mode == "mono": - self.input_shape = self.DLDataReader.input_shape - elif self.DLDataReader.mode == "stereo": - self.input_shape = self.DLDataReader.input_shape[ - list(self.DLDataReader.selected_telescopes)[0] - ] - # Reshape inputs into proper dimensions - # for the stereo analysis with stacked images - if self.stack_telescope_images: - self.input_shape = ( - self.input_shape[1], - self.input_shape[2], - self.input_shape[0] * self.input_shape[3], - ) - - def __len__(self): - """ - Returns the number of batches per epoch. - - This method calculates the number of batches required to cover the entire dataset - based on the batch size. - - Returns: - -------- - int - Number of batches per epoch. - """ - return int(np.floor(len(self.indices) / self.batch_size)) - - def on_epoch_end(self): - """ - Updates indices after each epoch. If a random seed is provided, the indices are shuffled. - - This method is called at the end of each epoch to ensure that the data is shuffled - if the shuffle attribute is set to True. This helps in improving the training process - by providing the model with a different order of data in each epoch. - """ - if self.random_seed is not None: - np.random.seed(self.random_seed) - np.random.shuffle(self.indices) - - def __getitem__(self, index): - """ - Generate one batch of data and retrieve the features and labels. - - This method is called to generate one batch of monoscopic and stereoscopic data based on - the index provided. It calls either _get_mono_item(batch) or _get_stereo_item(batch) - based on the mode of the DLDataReader. - - Parameters: - ----------- - index : int - Index of the batch to generate. - - Returns: - -------- - tuple - A tuple containing the input data as features and the corresponding labels. - """ - # Generate indices of the batch - batch_indices = self.indices[ - index * self.batch_size : (index + 1) * self.batch_size - ] - features, labels = None, None - if self.DLDataReader.mode == "mono": - batch = self.DLDataReader.generate_mono_batch(batch_indices) - features, labels = self._get_mono_item(batch) - elif self.DLDataReader.mode == "stereo": - batch = self.DLDataReader.generate_stereo_batch(batch_indices) - features, labels = self._get_stereo_item(batch) - return features, labels - - def _get_mono_item(self, batch): - """ - Retrieve the features and labels for one batch of monoscopic data. - - This method is called to retrieve the features and labels for one batch of - monoscopic data. The labels are set up based on the tasks specified. - - Parameters: - ----------- - batch : astropy.table.Table - A table containing the data for the batch. - - Returns: - -------- - tuple - A tuple containing the input data as features and the corresponding labels. - """ - # Retrieve the telescope images and store in the features dictionary - labels = {} - features = {"input": batch["features"].data} - if "type" in self.tasks: - labels["type"] = to_categorical( - batch["true_shower_primary_class"].data, - num_classes=2, - ) - # Temp fix till keras support class weights for multiple outputs or I wrote custom loss - # https://github.com/keras-team/keras/issues/11735 - if len(self.tasks) == 1: - labels = to_categorical( - batch["true_shower_primary_class"].data, - num_classes=2, - ) - if "energy" in self.tasks: - labels["energy"] = batch["log_true_energy"].data - if "direction" in self.tasks: - labels["direction"] = np.stack( - ( - batch["spherical_offset_az"].data, - batch["spherical_offset_alt"].data, - batch["angular_separation"].data, - ), - axis=1, - ) - # Temp fix for supporting keras2 & keras3 - if int(keras.__version__.split(".")[0]) >= 3: - features = features["input"] - return features, labels - - def _get_stereo_item(self, batch): - """ - Retrieve the features and labels for one batch of stereoscopic data. - - This method is called to retrieve the features and labels for one batch of - stereoscopic data. The original batch is grouped to retrieve the telescope - data for each event and then the telescope images or waveforms are stored - by the hillas intensity or stacked if required. Feature vectors can also - be retrieved if available for ``telescope``- and ``subarray``level. The - labels are set up based on the tasks specified. - - Parameters: - ----------- - batch : astropy.table.Table - A table containing the data for the batch. - - Returns: - -------- - tuple - A tuple containing the input data as features and the corresponding labels. - """ - labels = {} - if self.DLDataReader.process_type == ProcessType.Simulation: - batch_grouped = batch.group_by( - ["obs_id", "event_id", "tel_type_id", "true_shower_primary_class"] - ) - elif self.DLDataReader.process_type == ProcessType.Observation: - batch_grouped = batch.group_by(["obs_id", "event_id", "tel_type_id"]) - features, mono_feature_vectors, stereo_feature_vectors = [], [], [] - true_shower_primary_class = [] - log_true_energy = [] - spherical_offset_az, spherical_offset_alt, angular_separation = [], [], [] - for group_element in batch_grouped.groups: - if "features" in batch.colnames: - if self.sort_by_intensity: - # Sort images by the hillas intensity in a given batch if requested - group_element.sort(["hillas_intensity"], reverse=True) - # Stack the telescope images for stereo analysis - if self.stack_telescope_images: - # Retrieve the telescope images - plain_features = group_element["features"].data - # Stack the telescope images along the last axis - stacked_features = np.concatenate( - [plain_features[i] for i in range(plain_features.shape[0])], - axis=-1, - ) - # Append the stacked images to the features list - # shape: (batch_size, image_shape, image_shape, n_channels * n_tel) - features.append(stacked_features) - else: - # Append the plain images to the features list - # shape: (batch_size, n_tel, image_shape, image_shape, n_channels) - features.append(group_element["features"].data) - # Retrieve the feature vectors - if "mono_feature_vectors" in batch.colnames: - mono_feature_vectors.append(group_element["mono_feature_vectors"].data) - if "stereo_feature_vectors" in batch.colnames: - stereo_feature_vectors.append( - group_element["stereo_feature_vectors"].data - ) - # Retrieve the labels for the tasks - # FIXME: This won't work for divergent pointing directions - if "type" in self.tasks: - true_shower_primary_class.append( - group_element["true_shower_primary_class"].data[0] - ) - if "energy" in self.tasks: - log_true_energy.append(group_element["log_true_energy"].data[0]) - if "direction" in self.tasks: - spherical_offset_az.append(group_element["spherical_offset_az"].data[0]) - spherical_offset_alt.append( - group_element["spherical_offset_alt"].data[0] - ) - angular_separation.append(group_element["angular_separation"].data[0]) - # Store the labels in the labels dictionary - if "type" in self.tasks: - labels["type"] = to_categorical( - np.array(true_shower_primary_class), - num_classes=2, - ) - # Temp fix till keras support class weights for multiple outputs or I wrote custom loss - # https://github.com/keras-team/keras/issues/11735 - if len(self.tasks) == 1: - labels = to_categorical( - np.array(true_shower_primary_class), - num_classes=2, - ) - if "energy" in self.tasks: - labels["energy"] = np.array(log_true_energy) - if "direction" in self.tasks: - labels["direction"] = np.stack( - ( - np.array(spherical_offset_az), - np.array(spherical_offset_alt), - np.array(angular_separation), - ), - axis=1, - ) - # Store the fatures in the features dictionary - if "features" in batch.colnames: - features = {"input": np.array(features)} - # TDOO: Add support for both feature vectors - if "mono_feature_vectors" in batch.colnames: - features = {"input": np.array(mono_feature_vectors)} - if "stereo_feature_vectors" in batch.colnames: - features = {"input": np.array(stereo_feature_vectors)} - # Temp fix for supporting keras2 & keras3 - if int(keras.__version__.split(".")[0]) >= 3: - features = features["input"] - return features, labels diff --git a/dl1_data_handler/tests/test_loader.py b/dl1_data_handler/tests/test_loader.py deleted file mode 100644 index a039fb9..0000000 --- a/dl1_data_handler/tests/test_loader.py +++ /dev/null @@ -1,31 +0,0 @@ -import pytest -from traitlets.config.loader import Config - -from dl1_data_handler.reader import DLImageReader -from dl1_data_handler.loader import DLDataLoader - -def test_data_loader(dl1_tmp_path, dl1_gamma_file): - """check """ - # Create a configuration suitable for the test - config = Config( - { - "DLImageReader": { - "allowed_tels": [4], - }, - } - ) - # Create an image reader - dl1_reader = DLImageReader(input_url_signal=[dl1_gamma_file], config=config) - # Create a data loader - dl1_loader = DLDataLoader( - DLDataReader=dl1_reader, - indices=[0], - tasks=["type", "energy", "direction"], - batch_size=1 - ) - # Get the features and labels fgrom the data loader for one batch - features, labels = dl1_loader[0] - # Check that all the correct labels are present - assert "type" in labels and "energy" in labels and "direction" in labels - # Check the shape of the features - assert features["input"].shape == (1, 110, 110, 2) \ No newline at end of file diff --git a/environment.yml b/environment.yml index 3207fbc..519d9e2 100644 --- a/environment.yml +++ b/environment.yml @@ -17,4 +17,3 @@ dependencies: - pandas - pip: - pydot - - keras diff --git a/setup.py b/setup.py index 75c39c9..49ee90c 100644 --- a/setup.py +++ b/setup.py @@ -30,7 +30,6 @@ def getVersionFromFile(): "ctapipe==0.23.2", "traitlets", "jupyter", - "keras", "pandas", "pytest-cov", "tables", From 56d4ffc45448fbea686b788f792f3b9702fcab49 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 10 Feb 2025 15:14:01 +0100 Subject: [PATCH 84/92] speed up pytest by adding testpaths --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 0e5980c..7bdee18 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -57,3 +57,6 @@ repository = "https://github.com/cta-observatory/dl1-data-handler" [tool.setuptools_scm] version_file = "dl1_data_handler/_version.py" + +[tool.pytest.ini_options] +testpaths = ["dl1_data_handler"] \ No newline at end of file From 20eb639158c39686a30c5223eb905b46078f719d Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 10 Feb 2025 17:12:56 +0100 Subject: [PATCH 85/92] remove filelock because we do not use multi-processes in pytest --- dl1_data_handler/conftest.py | 43 ++++++++++++++---------------------- pyproject.toml | 8 ++++++- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/dl1_data_handler/conftest.py b/dl1_data_handler/conftest.py index 4b5ff28..5c35bf1 100644 --- a/dl1_data_handler/conftest.py +++ b/dl1_data_handler/conftest.py @@ -7,7 +7,6 @@ from ctapipe.core import run_tool from ctapipe.utils import get_dataset_path -from ctapipe.utils.filelock import FileLock @pytest.fixture(scope="session") def prod5_gamma_simtel_path(): @@ -32,19 +31,14 @@ def dl1_gamma_file(dl1_tmp_path, prod5_gamma_simtel_path): output = dl1_tmp_path / "gamma.dl1.h5" - # prevent running process multiple times in case of parallel tests - with FileLock(output.with_suffix(output.suffix + ".lock")): - if output.is_file(): - return output - - argv = [ - f"--input={prod5_gamma_simtel_path}", - f"--output={output}", - "--write-images", - "--DataWriter.Contact.name=αℓℓ the äüöß", - ] - assert run_tool(ProcessorTool(), argv=argv, cwd=dl1_tmp_path) == 0 - return output + argv = [ + f"--input={prod5_gamma_simtel_path}", + f"--output={output}", + "--write-images", + "--DataWriter.Contact.name=αℓℓ the äüöß", + ] + assert run_tool(ProcessorTool(), argv=argv, cwd=dl1_tmp_path) == 0 + return output @pytest.fixture(scope="session") def r1_gamma_file(r1_tmp_path, prod5_gamma_simtel_path): @@ -55,16 +49,11 @@ def r1_gamma_file(r1_tmp_path, prod5_gamma_simtel_path): output = r1_tmp_path / "gamma.r1.h5" - # prevent running process multiple times in case of parallel tests - with FileLock(output.with_suffix(output.suffix + ".lock")): - if output.is_file(): - return output - - argv = [ - f"--input={prod5_gamma_simtel_path}", - f"--output={output}", - f"--DataWriter.write_r1_waveforms=True", - "--DataWriter.Contact.name=αℓℓ the äüöß", - ] - assert run_tool(ProcessorTool(), argv=argv, cwd=r1_tmp_path) == 0 - return output \ No newline at end of file + argv = [ + f"--input={prod5_gamma_simtel_path}", + f"--output={output}", + f"--DataWriter.write_r1_waveforms=True", + "--DataWriter.Contact.name=αℓℓ the äüöß", + ] + assert run_tool(ProcessorTool(), argv=argv, cwd=r1_tmp_path) == 0 + return output \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 7bdee18..d275003 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,4 +59,10 @@ repository = "https://github.com/cta-observatory/dl1-data-handler" version_file = "dl1_data_handler/_version.py" [tool.pytest.ini_options] -testpaths = ["dl1_data_handler"] \ No newline at end of file +testpaths = ["dl1_data_handler"] + +norecursedirs = [ + ".git", + "notebooks", + "build", +] \ No newline at end of file From a097e5fa281654d92df9cc78f0536d14bdcc2412 Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Mon, 10 Feb 2025 17:43:10 +0100 Subject: [PATCH 86/92] add functions to close all open files and use it in the test --- dl1_data_handler/reader.py | 7 +++++++ dl1_data_handler/tests/test_reader.py | 7 +++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 844985a..1608191 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -147,6 +147,8 @@ class DLDataReader(Component): Generate a batch of stereo events from list of indices. get_tel_pointing(file, tel_ids) Retrieve the telescope pointing information for the specified telescope IDs. + close_files() + Close all open files. """ mode = CaselessStrEnum( @@ -934,6 +936,11 @@ def generate_stereo_batch(self, batch_indices) -> Table: batch.sort(["obs_id", "event_id", "tel_type_id", "tel_id"]) return batch + def close_files(self): + """Close all open HDF5 files.""" + for file in self.files.values(): + file.close() + @abstractmethod def _append_features(self, batch) -> Table: pass diff --git a/dl1_data_handler/tests/test_reader.py b/dl1_data_handler/tests/test_reader.py index 8ba966a..2b8d9d4 100644 --- a/dl1_data_handler/tests/test_reader.py +++ b/dl1_data_handler/tests/test_reader.py @@ -21,7 +21,8 @@ def test_dl1_image_reading(dl1_tmp_path, dl1_gamma_file): mono_batch = dl1_reader.generate_mono_batch([0]) assert mono_batch["tel_id"] == 4 assert mono_batch["features"].shape == (1, 110, 110, 2) - + # Close the files + dl1_reader.close_files() def test_r1_waveform_reading(r1_tmp_path, r1_gamma_file): """check reading from pixel-wise waveform data files""" @@ -41,4 +42,6 @@ def test_r1_waveform_reading(r1_tmp_path, r1_gamma_file): # Test the generation of a mono batch mono_batch = r1_reader.generate_mono_batch([0]) assert mono_batch["tel_id"] == 4 - assert mono_batch["features"].shape == (1, 110, 110, 20) \ No newline at end of file + assert mono_batch["features"].shape == (1, 110, 110, 20) + # Close the files + r1_reader.close_files() \ No newline at end of file From 4e5f7d78c5f424209a11e4cdafdb2a11003896b8 Mon Sep 17 00:00:00 2001 From: rcervinoucm Date: Tue, 11 Feb 2025 10:42:28 +0100 Subject: [PATCH 87/92] Update python-package-conda.yml --- .github/workflows/python-package-conda.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/python-package-conda.yml b/.github/workflows/python-package-conda.yml index d132b47..dfafded 100644 --- a/.github/workflows/python-package-conda.yml +++ b/.github/workflows/python-package-conda.yml @@ -10,6 +10,8 @@ on: jobs: build: + env: + MKL_THREADING_LAYER :'GNU' strategy: matrix: os: [ubuntu-22.04] @@ -29,6 +31,8 @@ jobs: run: | # $CONDA is an environment variable pointing to the root of the miniconda directory echo $CONDA/bin >> $GITHUB_PATH + - name: Add MKL_THREADING_LAYER variable + run: echo "::set-env name=MKL_THREADING_LAYER::GNU" - name: Install dependencies run: | conda env update --file environment.yml --name base --solver=classic From edf9cd4d0c84c7e84a637051473375a10cf602e2 Mon Sep 17 00:00:00 2001 From: rcervinoucm Date: Tue, 11 Feb 2025 10:42:51 +0100 Subject: [PATCH 88/92] Update python-package-conda.yml --- .github/workflows/python-package-conda.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/python-package-conda.yml b/.github/workflows/python-package-conda.yml index dfafded..465fd5e 100644 --- a/.github/workflows/python-package-conda.yml +++ b/.github/workflows/python-package-conda.yml @@ -10,8 +10,6 @@ on: jobs: build: - env: - MKL_THREADING_LAYER :'GNU' strategy: matrix: os: [ubuntu-22.04] From 3ceac50fb99c3aaddf873a2af86b2893bf800803 Mon Sep 17 00:00:00 2001 From: rcervinoucm Date: Tue, 11 Feb 2025 10:47:12 +0100 Subject: [PATCH 89/92] Update python-package-conda.yml --- .github/workflows/python-package-conda.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-package-conda.yml b/.github/workflows/python-package-conda.yml index 465fd5e..cb5de34 100644 --- a/.github/workflows/python-package-conda.yml +++ b/.github/workflows/python-package-conda.yml @@ -30,7 +30,7 @@ jobs: # $CONDA is an environment variable pointing to the root of the miniconda directory echo $CONDA/bin >> $GITHUB_PATH - name: Add MKL_THREADING_LAYER variable - run: echo "::set-env name=MKL_THREADING_LAYER::GNU" + run: echo "MKL_THREADING_LAYER=GNU" >> $GITHUB_ENV - name: Install dependencies run: | conda env update --file environment.yml --name base --solver=classic From c06dd0d9a6625fc73ced1e4a0401ffe662b2e3db Mon Sep 17 00:00:00 2001 From: Tjark Miener Date: Tue, 11 Feb 2025 11:58:59 +0100 Subject: [PATCH 90/92] use __destructor rather than close_files() remove redundant setup.cfg --- dl1_data_handler/reader.py | 14 ++++++++++---- dl1_data_handler/tests/test_reader.py | 6 +----- setup.cfg | 1 - 3 files changed, 11 insertions(+), 10 deletions(-) delete mode 100644 setup.cfg diff --git a/dl1_data_handler/reader.py b/dl1_data_handler/reader.py index 1608191..5db26b8 100644 --- a/dl1_data_handler/reader.py +++ b/dl1_data_handler/reader.py @@ -16,6 +16,7 @@ ] from abc import abstractmethod +import atexit from collections import OrderedDict from enum import Enum import numpy as np @@ -229,6 +230,8 @@ def __init__( super().__init__(config=config, parent=parent, **kwargs) + # Register the destructor to close all open files properly + atexit.register(self.__destructor) # Initialize the Table data quality query self.quality_query = TableQualityQuery(parent=self) @@ -936,10 +939,13 @@ def generate_stereo_batch(self, batch_indices) -> Table: batch.sort(["obs_id", "event_id", "tel_type_id", "tel_id"]) return batch - def close_files(self): - """Close all open HDF5 files.""" - for file in self.files.values(): - file.close() + def __destructor(self): + """Destructor to ensure all opened HDF5 files are properly closed.""" + if hasattr(self, "files"): # Ensure self.files exists before attempting to close + for file_name in list(self.files.keys()): + if self.files[file_name].isopen: # Check if file is still open + self.files[file_name].close() + @abstractmethod def _append_features(self, batch) -> Table: diff --git a/dl1_data_handler/tests/test_reader.py b/dl1_data_handler/tests/test_reader.py index 2b8d9d4..9b46b70 100644 --- a/dl1_data_handler/tests/test_reader.py +++ b/dl1_data_handler/tests/test_reader.py @@ -21,8 +21,6 @@ def test_dl1_image_reading(dl1_tmp_path, dl1_gamma_file): mono_batch = dl1_reader.generate_mono_batch([0]) assert mono_batch["tel_id"] == 4 assert mono_batch["features"].shape == (1, 110, 110, 2) - # Close the files - dl1_reader.close_files() def test_r1_waveform_reading(r1_tmp_path, r1_gamma_file): """check reading from pixel-wise waveform data files""" @@ -42,6 +40,4 @@ def test_r1_waveform_reading(r1_tmp_path, r1_gamma_file): # Test the generation of a mono batch mono_batch = r1_reader.generate_mono_batch([0]) assert mono_batch["tel_id"] == 4 - assert mono_batch["features"].shape == (1, 110, 110, 20) - # Close the files - r1_reader.close_files() \ No newline at end of file + assert mono_batch["features"].shape == (1, 110, 110, 20) \ No newline at end of file diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 8c79ffe..0000000 --- a/setup.cfg +++ /dev/null @@ -1 +0,0 @@ -[tool:pytest] \ No newline at end of file From 28472f46aeb81795f70fdb895e95a5491f0e5046 Mon Sep 17 00:00:00 2001 From: Daniel Nieto Date: Tue, 11 Feb 2025 12:18:42 +0100 Subject: [PATCH 91/92] Update .zenodo.json --- .zenodo.json | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/.zenodo.json b/.zenodo.json index ce02dc4..d7fc74a 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -1,11 +1,6 @@ { "license": "MIT", "contributors": [ - { - "affiliation": "Laboratoire d'Annecy de Physique des Particules, CNRS, and LISTIC,Universit\u00e9 Savoie Mont-Blanc, Annecy, France", - "type": "Researcher", - "name": "Mika\u00ebl Jacquemont" - }, { "orcid": "0000-0002-5686-2078", "affiliation": "Laboratoire d'Annecy de Physique des Particules, CNRS, Universit\u00e9 Savoie Mont-Blanc, Annecy, France", @@ -17,6 +12,12 @@ "affiliation": "Instituto de F\u00edsica de Part\u00edculas y del Cosmos and Departamento de EMFTEL, Universidad Complutense de Madrid, Madrid, Spain", "type": "Researcher", "name": "Jos\u00e9 Luis Contreras" + }, + { + "orcid": "0009-0007-1566-9507", + "affiliation": "Instituto de F\u00edsica de Part\u00edculas y del Cosmos and Departamento de EMFTEL, Universidad Complutense de Madrid, Madrid, Spain", + "type": "Researcher", + "name": "Alexander Cervi\u00f1o" } ], "language": "eng", @@ -30,15 +31,8 @@ ], "creators": [ { - "affiliation": "University of California Los Angeles, Division of Astronomy and Astrophysics, Los Angeles, CA, USA", - "name": "Bryan Kim" - }, - { - "affiliation": "Columbia University, Department of Physics, New York, NY, USA", - "name": "Ari Brill" - }, - { - "affiliation": "Instituto de F\u00edsica de Part\u00edculas y del Cosmos and Departamento de EMFTEL, Universidad Complutense de Madrid, Madrid, Spain", + "orcid": "0000-0003-1821-7964" + "affiliation": "Universit\u00e9 de Gen\00e8ve, D\u00e9partement de physique nucl\u00e9aire et corpusculaire, Gen\00e8ve, Suisse", "name": "Tjark Miener" }, { @@ -46,6 +40,14 @@ "affiliation": "Instituto de F\u00edsica de Part\u00edculas y del Cosmos and Departamento de EMFTEL, Universidad Complutense de Madrid, Madrid, Spain", "name": "Daniel Nieto" }, + { + "affiliation": "University of California Los Angeles, Division of Astronomy and Astrophysics, Los Angeles, CA, USA", + "name": "Bryan Kim" + }, + { + "affiliation": "Columbia University, Department of Physics, New York, NY, USA", + "name": "Ari Brill" + }, { "affiliation": "Columbia University, Department of Physics, New York, NY, USA", "name": "Qi Feng" @@ -53,4 +55,4 @@ ], "access_right": "open", "description": "

A package of utilities for writing, reading, and applying image processing to calibrated data from imaging atmospheric Cherenkov telescopes in a standardized format.

" -} \ No newline at end of file +} From d9e725b87843af6f1cb38973aaed4be4beb8b0b6 Mon Sep 17 00:00:00 2001 From: Daniel Nieto Date: Tue, 11 Feb 2025 12:19:49 +0100 Subject: [PATCH 92/92] Update .zenodo.json --- .zenodo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.zenodo.json b/.zenodo.json index d7fc74a..5e5be60 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -32,7 +32,7 @@ "creators": [ { "orcid": "0000-0003-1821-7964" - "affiliation": "Universit\u00e9 de Gen\00e8ve, D\u00e9partement de physique nucl\u00e9aire et corpusculaire, Gen\00e8ve, Suisse", + "affiliation": "Universit\u00e9 de Gen\u00e8ve, D\u00e9partement de physique nucl\u00e9aire et corpusculaire, Gen\u00e8ve, Suisse", "name": "Tjark Miener" }, {