Source code for nxtomomill.app.nxcopy

"""application to copy NXtomo(s) from one file to another"""

import argparse
import os
from nxtomo.application.nxtomo import copy_nxtomo_file as copy_nxtomo
from nxtomomill.io.utils import convert_str_to_tuple


[docs]def main(argv): """ """ parser = argparse.ArgumentParser( description="copy one or several NXtomo to another location" ) parser.add_argument( "nexus_file", help="file path to the nexus file containing NXtomo", nargs="?" ) parser.add_argument("output_file", help="output nexus file", nargs="?") parser.add_argument( "--entry", "--entries", default=None, help="NXtomo path(s) to be copied. If none provided then all NXtomo entries will be copied", dest="entries", ) parser.add_argument( "--overwrite", help="Do not ask for user permission to overwrite output files", action="store_true", default=False, ) parser.add_argument( "--debug", help="Set logs to debug mode", action="store_true", default=False, ) parser.add_argument( "--remove-vds", help="Remove any Virtual dataset to the resulting NXtomo (duplicate detector data - warning: all data will be load in memory before dumping it)", action="store_true", default=False, ) options = parser.parse_args(argv[1:]) copy_nxtomo( input_file=options.nexus_file, output_file=get_output_file(options.output_file, options.nexus_file), entries=( convert_str_to_tuple(options.entries) if options.entries is not None else None ), overwrite=options.overwrite, vds_resolution="remove" if options.remove_vds else "update", )
[docs]def get_output_file(output_file_or_folder, input_file) -> str: """compute output file for copying NXtomo from input file or folder""" def get_output_file_from_folder(): return os.path.join( output_file_or_folder, os.path.basename(os.path.abspath(input_file)) ) if os.path.isdir(output_file_or_folder): output_file = get_output_file_from_folder() elif ( os.path.isfile(output_file_or_folder) or os.path.splitext(output_file_or_folder)[-1] != "" ): output_file = output_file_or_folder else: output_file = get_output_file_from_folder() return os.path.abspath(output_file)