def test_get_settings_from_file(self): settings = get_settings_from_file(SETTING_FILE) answers = [METADATA, ORIGINAL_METADATA, SCAN_SIZE_FILE] assert len(settings) == len(answers) for setting_read, answer in zip(settings, answers): np.testing.assert_equal(setting_read.as_dictionary(), answer)
def file_reader(filename: str, lazy: bool = False) -> List[dict]: """Reader electron backscatter patterns from .bmp files stored in a NORDIF project directory, their filenames listed in a text file. Parameters ---------- filename File path to the NORDIF settings text file. lazy This parameter is not used in this reader. Returns ------- scan : list of dicts Data, axes, metadata and original metadata. """ # Get metadata from setting file ebsd_node = metadata_nodes("ebsd") md, omd, _ = get_settings_from_file(filename) dirname = os.path.dirname(filename) # Read static background image into metadata static_bg_file = os.path.join(dirname, "Background calibration pattern.bmp") try: md.set_item(ebsd_node + ".static_background", imread(static_bg_file)) except FileNotFoundError: warnings.warn( f"Could not read static background pattern '{static_bg_file}', however it " "can be added using set_experimental_parameters().") # Set required and other parameters in metadata md.set_item("General.original_filename", filename) md.set_item("General.title", "Calibration patterns") md.set_item("Signal.signal_type", "EBSD") md.set_item("Signal.record_by", "image") scan = {} scan["metadata"] = md.as_dictionary() scan["original_metadata"] = omd.as_dictionary() coordinates = _get_coordinates(filename) data = _get_patterns(dirname=dirname, coordinates=coordinates) scan["data"] = data units = ["um"] * 3 names = ["x", "dy", "dx"] scales = np.ones(3) scan["axes"] = [{ "size": data.shape[i], "index_in_array": i, "name": names[i], "scale": scales[i], "offset": 0, "units": units[i], } for i in range(data.ndim)] return [scan]