示例#1
0
def config_program(
        wrapped, *args,  # keep for clize
        return_: parameters.one_of('<cfg_from_args>', '<gen_names_and_log>', '<end>') = '<end>',
        b_interact=False,
        log='',
        verbose: parameters.one_of('CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG', 'NOTSET') = 'INFO',
        **kwargs        # keep for clize
        ):
    """
    ----------------------------
    Add data from CSV-like files
    to Pandas HDF5 store*.h5
    ----------------------------

    "program": program behaviour:

    :param return_: choices=[],
        <cfg_from_args>: returns cfg based on input args only and exit,
        <gen_names_and_log>: execute init_input_cols() and also returns fun_proc_loaded function... - see main()
    :param log_,
    :param verbose_,
    """
    kw_args = locals()
    if __debug__:
        del kw_args['kw_args']  # exist if debug
    return wrapped(*args, cfg_program=kw_args, **kwargs)
示例#2
0
    def with_prog_config(
            wrapped,
            config_path='to_pandas_hdf5/csv2h5_ini/csv2h5_vaex.yml',
            return_: parameters.one_of('<cfg_from_args>', '<gen_names_and_log>', '<end>')='<end>',
            # b_interact=False,
            # verbose=:
            **kwargs):
        """
        overwrite command line arguments with program and in
        :param wrapped:
        :param return_: parameters.one_of('<cfg_from_args>', '<gen_names_and_log>', '<end>')='<end>',
        :param in_:
        :return:
        """
        global l

        @hydra.main(config_path=config_path)
        def main_cfg(cfg: DictConfig):
            global l

            # cfg = cfg_from_args(argparser_files(), **kwargs)
            if not cfg or not cfg['program'].get('return'):
                print('Can not initialise')
                return cfg
            elif cfg['program']['return'] == '<cfg_from_args>':  # to help testing
                return cfg

            l = init_logging(logging, None, cfg['program']['log'], cfg['program']['verbose'])
            print('\n' + this_prog_basename(__file__), end=' started. ')
            try:
                cfg['in']['paths'], cfg['in']['nfiles'], cfg['in']['path'] = init_file_names(
                    **cfg['in'], b_interact=cfg['program']['b_interact'])

            except Ex_nothing_done as e:
                print(e.message)
                return ()

            return cfg

        def wrap(**kwargs):
            return wrapped(**main_cfg(kwargs))

        return wrap
def main(flavour: one_of('harmful', 'agonism')):
    fieldnames = ('Drug 1', 'Drug 2', 'DDI Type', 'Time', 'Unit')

    writer = csv.DictWriter(sys.stdout,
                            fieldnames=fieldnames,
                            lineterminator='\n')
    writer.writeheader()

    for ddi in enrich(dinto.all_ddis()):
        ddi['Drug 1'] = ddi['drug_a']
        ddi['Drug 2'] = ddi['drug_b']
        ddi['Time'] = ddi['spacing']
        ddi['Unit'] = ddi['unit']

        if flavour == 'harmful':
            ddi['DDI Type'] = 'bad' if ddi[flavour] else 'good'
        if flavour == 'agonism':
            ddi['DDI Type'] = 'agonism' if ddi[flavour] else 'antagonism'

        writer.writerow({k: ddi[k] for k in fieldnames})
示例#4
0
        try:
            mod = importlib.import_module('.' + self.value, __name__)
            return mod.Writer
        except (ImportError, AttributeError):
            log.warning("%s format has no writer implementation",
                        self.value,
                        exc_info=True)


DEFAULT_FORMAT = Format.TEXT
"""str: the name of the default format."""


@wrappers.decorator
@modifiers.autokwoargs
@modifiers.annotate(fmt=parameters.one_of(*map(attrgetter('value'), Format)))
@modifiers.annotate(kwargs=parser.Parameter.IGNORE)
def with_format(wrapped, fmt=DEFAULT_FORMAT, *args, **kwargs):
    """Provide ``--format`` argument.

    Args:
        format (str, optional): one of :class:`Format` values. Defaults to
            ``'text'``.

    Raises:
        clize.errors.CliValueError: if the format argument is invalid.
    """
    if fmt.writer is None:
        raise errors.CliValueError(
            '{} is unavailable (missing requirements?)'.format(fmt.value))
    return wrapped(fmt=Format(fmt), *args, **kwargs)
示例#5
0
        fh = open(filepath, mode='r')
        line = fh.readline()
        log.info('Determing Taxa file source...')
        if 'k__' in line:
            return taxa_import_gg(filepath)
        else:
            return taxa_import_rdp(filepath)
    except Exception as e:
        log.error(f'Whoops while importing {filepath}.')
        raise e


types_of_imports = parameters.one_of(
    ('sample', "sample metadata"),
    ('analysis', "analysis sets with names, descriptions"),
    ('count', "otu count table, pct abundance per sample"),
    ('fasta', "otu seq fasta"),
    ('taxa', "otu annotations (taxonomy)"),
)


def parse_import(
    *,
    filepath: ['p', str] = None,
    filetype: ['t', types_of_imports] = None,
):
    """Perform imports of files into OTUdb, as indicated.

    :param filepath: path to file to be imported (REQUIRED)
    :param filetype: which type of file are you importing?
        
示例#6
0
class RepTests(object):
    mapped_basic = ('par:a',
                    parameters.mapped([
                        ('greeting', ['hello'], 'h1'),
                        ('parting', ['goodbye'], 'h2'),
                    ]), 'par')
    mapped_default = ('par:a="greeting"',
                      parameters.mapped([
                          ('greeting', ['hello'], 'h1'),
                          ('parting', ['goodbye'], 'h2'),
                      ]), '[par]')
    mapped_alternate_list = ('par:a',
                             parameters.mapped([
                                 ('greeting', ['hello'], 'h1'),
                                 ('parting', ['goodbye'], 'h2'),
                             ],
                                               list_name="options"), 'par')
    mapped_no_list = ('par:a',
                      parameters.mapped([
                          ('greeting', ['hello'], 'h1'),
                          ('parting', ['goodbye'], 'h2'),
                      ],
                                        list_name=None), 'par')
    mapped_kw = ('*, par:a',
                 parameters.mapped([
                     ('greeting', ['hello'], 'h1'),
                     ('parting', ['goodbye'], 'h2'),
                 ],
                                   list_name=None), '--par=STR')
    mapped_force_icase = ('par:a',
                          parameters.mapped([(1, ['thing'], 'h')],
                                            case_sensitive=False), 'par')
    mapped_force_scase = ('par:a',
                          parameters.mapped([
                              (1, ['Thing'], 'h'),
                          ],
                                            case_sensitive=True), 'par')
    mapped_imply_scase = ('par:a',
                          parameters.mapped([
                              (1, ['thing'], 'h'),
                              (2, ['Thing'], 'h'),
                          ]), 'par')
    mapped_bad_icase = ('par:a',
                        parameters.mapped([
                            (1, ['thing'], 'h'),
                            (2, ['Thing'], 'h'),
                        ],
                                          case_sensitive=False), 'par')

    oneof_basic = 'par:a', parameters.one_of('hello', 'goodbye', 'bye'), 'par'
    oneof_help = ('par:a', parameters.one_of(('hello', 'h1'),
                                             ('bye', 'h2')), 'par')

    multi_basic = '*, par:a', parameters.multi(), '[--par=STR...]'
    multi_req = '*, par:a', parameters.multi(1), '--par=STR...'
    multi_min = '*, par:a', parameters.multi(2), '--par=STR...'
    multi_max = '*, par:a', parameters.multi(max=2), '[--par=STR...]'
    multi_bound = '*, par:a', parameters.multi(min=2, max=3), '--par=STR...'
    multi_conv = '*, par:a', (parameters.multi(), int), '[--par=INT...]'
    multi_last_opt = ('*args, par:a', (parameters.multi(), Parameter.L),
                      '[--par=STR...] [args...]')

    margs_basic = '*args:a', parameters.multi(), '[args...]'
    margs_req = '*args:a', parameters.multi(1), 'args...'
    margs_min = '*args:a', parameters.multi(2), 'args...'
    margs_max = '*args:a', parameters.multi(max=2), '[args...]'
    margs_bound = '*args:a', parameters.multi(min=2, max=3), 'args...'
    margs_conv = '*args:a', (parameters.multi(), int), '[args...]'
    margs_last_opt = ('*args:a, par=""', (parameters.multi(), Parameter.L),
                      '[--par=STR] [args...]')

    @parameters.argument_decorator
    def _blank(arg):
        return arg + 'x'

    deco_blank_pos = 'par:a', _blank, 'par'
    deco_blank_posd = 'par:a="d"', _blank, '[par]'
    deco_blank_kw = '*, par:a', _blank, '--par=STR'
    deco_blank_kwd = '*, par:a="d"', _blank, '[--par=STR]'
    deco_blank_args = '*par:a', _blank, '[par...]'

    @parameters.argument_decorator
    @modifiers.kwoargs(start='kw')
    def _kw(arg, kw):
        return arg + kw

    deco_kw_pos = 'par:a', _kw, '--kw=STR par'
    deco_kw_posd = 'par:a="d"', _kw, '[--kw=STR par]'
    deco_kw_kw = '*, par:a', _kw, '--kw=STR --par=STR'
    deco_kw_kwd = '*, par:a="d"', _kw, '[--kw=STR --par=STR]'
    deco_kw_args = '*par:a', _kw, '[--kw=STR par...]'

    @parameters.argument_decorator
    @modifiers.autokwoargs
    def _kwdef(arg, kw='D'):
        return arg + kw

    deco_def_pos = 'par:a', _kwdef, '[--kw=STR] par'
    deco_def_posd = 'par:a="d"', _kwdef, '[[--kw=STR] par]'
    deco_def_kw = '*, par:a', _kwdef, '[--kw=STR] --par=STR'
    deco_def_kwd = '*, par:a="d"', _kwdef, '[[--kw=STR] --par=STR]'
    deco_def_args = '*par:a', _kwdef, '[[--kw=STR] par...]'

    @parameters.argument_decorator
    @modifiers.autokwoargs
    def _flag(arg, f=False):
        return arg + ('y' if f else 'n')

    deco_flag_pos = 'par:a', _flag, '[-f] par'
    deco_flag_posd = 'par:a="d"', _flag, '[[-f] par]'
    deco_flag_kw = '*, par:a', _flag, '[-f] --par=STR'
    deco_flag_kwd = '*, par:a="d"', _flag, '[[-f] --par=STR]'
    deco_flag_args = '*par:a', _flag, '[[-f] par...]'
    deco_flag_other = 'par:a, *, x=False', _flag, '[-x] [-f] par'

    @parameters.argument_decorator
    @modifiers.autokwoargs
    def _int(arg, i=0):
        return arg + str(i)

    deco_int_pos = 'par:a', _int, '[-i INT] par'
    deco_int_posd = 'par:a="d"', _int, '[[-i INT] par]'
    deco_int_kw = '*, par:a', _int, '[-i INT] --par=STR'
    deco_int_kwd = '*, par:a="d"', _int, '[[-i INT] --par=STR]'
    deco_int_args = '*par:a', _int, '[[-i INT] par...]'
    deco_int_other = 'par:a, *, x=False', _int, '[-x] [-i INT] par'

    @parameters.argument_decorator
    @modifiers.kwoargs(start='kw')
    def _all(arg, kw, flag=False, kwd='D', i=0):
        return arg, kw, flag, kwd, i

    _all_rep = '--kw=STR [--flag] [--kwd=STR] [-i INT] '
    deco_all_pos = 'par:a', _all, _all_rep + 'par'
    deco_all_posd = 'par:a="d"', _all, '[' + _all_rep + 'par]'
    deco_all_kw = '*, par:a', _all, _all_rep + '--par=STR'
    deco_all_kwd = '*, par:a="d"', _all, '[' + _all_rep + '--par=STR]'
    deco_all_args = '*par:a', _all, '[' + _all_rep + 'par...]'

    @parameters.argument_decorator
    @modifiers.kwoargs(start='why')
    def _inner(arg, why, zed='zed'):
        return '(' + arg + why + zed + ')'

    @parameters.argument_decorator
    @modifiers.kwoargs(start='ab')
    @modifiers.annotate(cd=_inner)
    def _nest(arg, ab, cd='cd'):
        return '(' + arg + ab + cd + ')'

    _nest_rep = '--ab=STR [--why=STR [--zed=STR] --cd=STR] '
    deco_nest_pos = 'par:a', _nest, _nest_rep + 'par'
    deco_nest_posd = 'par:a="d"', _nest, '[' + _nest_rep + 'par]'
    deco_nest_kw = '*, par:a', _nest, _nest_rep + '--par=STR'
    deco_nest_kwd = '*, par:a="d"', _nest, '[' + _nest_rep + '--par=STR]'
    deco_nest_args = '*par:a', _nest, '[' + _nest_rep + 'par...]'

    pn_pos = 'par:a', parameters.pass_name, ''
    pn_pos_first = 'par:a, other', parameters.pass_name, 'other'
    pn_pos_nextpicky = 'par:a, other:int', parameters.pass_name, 'other'
    pn_kw = '*, par:a', parameters.pass_name, ''