def save(filename, signal, overwrite=None, **kwds): extension = os.path.splitext(filename)[1][1:] if extension == '': extension = "hspy" filename = filename + '.' + extension writer = None for plugin in io_plugins: if extension.lower() in plugin.file_extensions: writer = plugin break if writer is None: raise ValueError( ('.%s does not correspond to any supported format. Supported ' + 'file extensions are: %s') % (extension, strlist2enumeration(default_write_ext))) else: # Check if the writer can write sd = signal.axes_manager.signal_dimension nd = signal.axes_manager.navigation_dimension if writer.writes is False: raise ValueError('Writing to this format is not ' 'supported, supported file extensions are: %s ' % strlist2enumeration(default_write_ext)) if writer.writes is not True and (sd, nd) not in writer.writes: yes_we_can = [ plugin.format_name for plugin in io_plugins if plugin.writes is True or plugin.writes is not False and (sd, nd) in plugin.writes ] raise IOError('This file format cannot write this data. ' 'The following formats can: %s' % strlist2enumeration(yes_we_can)) ensure_directory(filename) is_file = os.path.isfile(filename) if overwrite is None: write = overwrite_method(filename) # Ask what to do elif overwrite is True or (overwrite is False and not is_file): write = True # Write the file elif overwrite is False and is_file: write = False # Don't write the file else: raise ValueError("`overwrite` parameter can only be None, True or " "False.") if write: writer.file_writer(filename, signal, **kwds) _logger.info('The %s file was created' % filename) folder, filename = os.path.split(os.path.abspath(filename)) signal.tmp_parameters.set_item('folder', folder) signal.tmp_parameters.set_item('filename', os.path.splitext(filename)[0]) signal.tmp_parameters.set_item('extension', extension)
def save(filename, signal, overwrite=None, **kwds): extension = os.path.splitext(filename)[1][1:] if extension == '': extension = \ hyperspy.defaults_parser.preferences.General.default_file_format filename = filename + '.' + \ hyperspy.defaults_parser.preferences.General.default_file_format writer = None for plugin in io_plugins: if extension.lower() in plugin.file_extensions: writer = plugin break if writer is None: raise ValueError( ('.%s does not correspond to any supported format. Supported ' + 'file extensions are: %s') % (extension, strlist2enumeration(default_write_ext))) else: # Check if the writer can write sd = signal.axes_manager.signal_dimension nd = signal.axes_manager.navigation_dimension if writer.writes is False: raise ValueError('Writing to this format is not ' 'supported, supported file extensions are: %s ' % strlist2enumeration(default_write_ext)) if writer.writes is not True and (sd, nd) not in writer.writes: yes_we_can = [ plugin.format_name for plugin in io_plugins if plugin.writes is True or plugin.writes is not False and (sd, nd) in plugin.writes ] raise IOError('This file format cannot write this data. ' 'The following formats can: %s' % strlist2enumeration(yes_we_can)) ensure_directory(filename) if overwrite is None: overwrite = hyperspy.misc.io.tools.overwrite(filename) if overwrite is True: writer.file_writer(filename, signal, **kwds) _logger.info('The %s file was created' % filename) folder, filename = os.path.split(os.path.abspath(filename)) signal.tmp_parameters.set_item('folder', folder) signal.tmp_parameters.set_item('filename', os.path.splitext(filename)[0]) signal.tmp_parameters.set_item('extension', extension)
def save(filename, signal, overwrite=None, **kwds): extension = os.path.splitext(filename)[1][1:] if extension == '': extension = \ hyperspy.defaults_parser.preferences.General.default_file_format filename = filename + '.' + \ hyperspy.defaults_parser.preferences.General.default_file_format writer = None for plugin in io_plugins: if extension.lower() in plugin.file_extensions: writer = plugin break if writer is None: raise ValueError( ('.%s does not correspond to any supported format. Supported ' + 'file extensions are: %s') % (extension, strlist2enumeration(default_write_ext))) else: # Check if the writer can write sd = signal.axes_manager.signal_dimension nd = signal.axes_manager.navigation_dimension if writer.writes is False: raise ValueError('Writing to this format is not ' 'supported, supported file extensions are: %s ' % strlist2enumeration(default_write_ext)) if writer.writes is not True and (sd, nd) not in writer.writes: yes_we_can = [plugin.format_name for plugin in io_plugins if plugin.writes is True or plugin.writes is not False and (sd, nd) in plugin.writes] raise ValueError('This file format cannot write this data. ' 'The following formats can: %s' % strlist2enumeration(yes_we_can)) ensure_directory(filename) if overwrite is None: overwrite = hyperspy.misc.io.tools.overwrite(filename) if overwrite is True: writer.file_writer(filename, signal, **kwds) print('The %s file was created' % filename) folder, filename = os.path.split(os.path.abspath(filename)) signal.tmp_parameters.set_item('folder', folder) signal.tmp_parameters.set_item('filename', os.path.splitext(filename)[0]) signal.tmp_parameters.set_item('extension', extension)
def save(filename, signal, **kwds): extension = os.path.splitext(filename)[1][1:] if extension == '': extension = \ hyperspy.defaults_parser.preferences.General.default_file_format filename = filename + '.' + \ hyperspy.defaults_parser.preferences.General.default_file_format writer = None for plugin in io_plugins: if extension.lower() in plugin.file_extensions: writer = plugin break if writer is None: raise ValueError('.%s does not correspond ' % extension + 'of any supported format. Supported file extensions are: %s ' % strlist2enumeration(default_write_ext)) else: # Check if the writer can write sd = signal.axes_manager.signal_dimension nd = signal.axes_manager.navigation_dimension if writer.writes is False: raise ValueError('Writing to this format is not ' 'supported, supported file extensions are: %s ' % strlist2enumeration(default_write_ext)) if writer.writes is not True and (sd, nd) not in writer.writes: yes_we_can = [plugin.format_name for plugin in io_plugins if plugin.writes is True or plugin.writes is not False and (sd, nd) in plugin.writes] raise ValueError('This file format cannot write this data. ' 'The following formats can: %s' % strlist2enumeration(yes_we_can)) ensure_directory(filename) writer.file_writer(filename, signal, **kwds) print('The %s file was created' % filename)
def save(filename, signal, overwrite=None, **kwds): """ Save hyperspy signal to a file. A list of plugins supporting file saving can be found here: http://hyperspy.org/hyperspy-doc/current/user_guide/io.html#supported-formats Any extra keyword is passed to the corresponding save method in the io_plugin. For available options see their individual documentation. Parameters ---------- filename : None or str The filename to save the signal to. signal : Hyperspy signal The signal to be saved to file overwrite : None or Bool (default, None) If None and a file exists the user will be prompted to on whether to overwrite. If False and a file exists the file will not be written. If True and a file exists the file will be overwritten without prompting """ extension = os.path.splitext(filename)[1][1:] if extension == '': extension = "hspy" filename = filename + '.' + extension writer = None for plugin in io_plugins: if extension.lower() in plugin.file_extensions: writer = plugin break if writer is None: raise ValueError( ('.%s does not correspond to any supported format. Supported ' + 'file extensions are: %s') % (extension, strlist2enumeration(default_write_ext))) else: # Check if the writer can write sd = signal.axes_manager.signal_dimension nd = signal.axes_manager.navigation_dimension if writer.writes is False: raise ValueError('Writing to this format is not ' 'supported, supported file extensions are: %s ' % strlist2enumeration(default_write_ext)) if writer.writes is not True and (sd, nd) not in writer.writes: yes_we_can = [ plugin.format_name for plugin in io_plugins if plugin.writes is True or plugin.writes is not False and (sd, nd) in plugin.writes ] raise IOError('This file format cannot write this data. ' 'The following formats can: %s' % strlist2enumeration(yes_we_can)) ensure_directory(filename) is_file = os.path.isfile(filename) if overwrite is None: write = overwrite_method(filename) # Ask what to do elif overwrite is True or (overwrite is False and not is_file): write = True # Write the file elif overwrite is False and is_file: write = False # Don't write the file else: raise ValueError("`overwrite` parameter can only be None, True or " "False.") if write: writer.file_writer(filename, signal, **kwds) _logger.info('The %s file was created' % filename) folder, filename = os.path.split(os.path.abspath(filename)) signal.tmp_parameters.set_item('folder', folder) signal.tmp_parameters.set_item('filename', os.path.splitext(filename)[0]) signal.tmp_parameters.set_item('extension', extension)
def test_strlist2enumeration(): assert strlist2enumeration([]) == "" assert strlist2enumeration("a") == "a" assert strlist2enumeration(["a"]) == "a" assert strlist2enumeration(["a", "b"]) == "a and b" assert strlist2enumeration(["a", "b", "c"]) == "a, b and c"
def save(filename, signal, overwrite=None, add_scan=None, **kwargs): """Write electron backscatter patterns to file. Parameters ---------- filename : str File path including name of new file. signal : {kikuchipy.signals.EBSD, kikuchipy.lazy_signals.LazyEBSD} Signal instance. overwrite : {bool, None}, optional Whether to overwrite file or not if it already exists. add_scan : {bool, None}, optional Whether to add the signal to an already existing h5ebsd file or not. If the file does not exist the signal is written to a new file. **kwargs : Keyword arguments passed to the writer. """ from hyperspy.misc.io.tools import overwrite as overwrite_method ext = os.path.splitext(filename)[1][1:] if ext == '': # Will write to HyperSpy's HDF5 format ext = 'hspy' filename = filename + '.' + ext writer = None for plugin in io_plugins: if ext.lower() in plugin.file_extensions: writer = plugin break if writer is None: raise ValueError( (".%s does not correspond to any supported format. Supported " "file extensions are: %s") % (ext, strlist2enumeration(default_write_ext))) else: # Check if the writer can write sd = signal.axes_manager.signal_dimension nd = signal.axes_manager.navigation_dimension if writer.writes is False: raise ValueError("Writing to this format is not " "supported, supported file extensions are: %s " % strlist2enumeration(default_write_ext)) if writer.writes is not True and (sd, nd) not in writer.writes: yes_we_can = [ plugin.format_name for plugin in io_plugins if plugin.writes is True or plugin.writes is not False and (sd, nd) in plugin.writes ] raise IOError("This file format cannot write this data. " "The following formats " "can: {}".format(strlist2enumeration(yes_we_can))) # Check possibilities for overwriting file and/or datasets within file ensure_directory(filename) is_file = os.path.isfile(filename) if writer.format_name == 'h5ebsd' and overwrite is not True and is_file: if add_scan is None: q = "Add scan to '{}' (y/n)?\n".format(filename) add_scan = get_input_bool(q) if add_scan: overwrite = True # So that the 2nd statement below triggers kwargs['add_scan'] = add_scan if overwrite is None: write = overwrite_method(filename) # Ask what to do elif overwrite is True or (overwrite is False and not is_file): write = True # Write the file elif overwrite is False and is_file: write = False # Don't write the file else: raise ValueError("`overwrite` parameter can only be None, True or " "False, and not {}".format(overwrite)) if write: writer.file_writer(filename, signal, **kwargs) folder, filename = os.path.split(os.path.abspath(filename)) signal.tmp_parameters.set_item('folder', folder) signal.tmp_parameters.set_item('filename', os.path.splitext(filename)[0]) signal.tmp_parameters.set_item('extension', ext)