Ejemplo n.º 1
0
    def measure(ChapX, expt_name, dbnames, *args):
        """
        CommandLine:
            python -m wbia Chap3.measure all --dbs=GZ_Master1
            python -m wbia Chap3.measure all --dbs=PZ_Master1

            python -m wbia Chap3.measure nsum --dbs=GZ_Master1,PZ_Master1
            python -m wbia Chap3.measure foregroundness --dbs=GZ_Master1,PZ_Master1

        # Example:
        #     >>> # Script
        #     >>> from wbia.scripts.thesis import *  # NOQA
        #     >>> expt_name = ut.get_argval('--expt', type_=str, pos=1)
        #     >>> dbnames = ut.get_argval(('--dbs', '--db'), type_=list, default=[])
        #     >>> ChapX.measure(expt_name, dbnames)
        """
        logger.info('expt_name = %r' % (expt_name, ))
        logger.info('dbnames = %r' % (dbnames, ))
        logger.info('args = %r' % (args, ))
        dbnames = ut.smart_cast(dbnames, list)
        for dbname in dbnames:
            self = ChapX(dbname)
            if expt_name == 'all':
                if self.ibs is None:
                    self._setup()
                    # self._precollect()
                self.measure_all(*args)
            else:
                getattr(self, 'measure_' + expt_name)(*args)
        if len(dbnames) == 1:
            return self
Ejemplo n.º 2
0
    def qt_set_data(self, qvar):
        """
        Sets backend data using QVariants
        """
        if VERBOSE_CONFIG:
            print('[Wrapper] Attempting to set data')
        assert self.is_leaf(), 'must be a leaf'
        if self.parent is None:
            raise Exception('[Pref.qtleaf] Cannot set root preference')
        if self.qt_is_editable():
            new_val = '[Pref.qtleaf] BadThingsHappenedInPref'
            try:
                type_ = self.type_
                new_val = ut.smart_cast(qvar, type_)
            except Exception as ex:
                ut.printex(ex, keys=['qvar', 'type_'])
                raise

            if VERBOSE_CONFIG:
                print('[Wrapper] new_val=%r' % new_val)
                # print('[Wrapper] type(new_val)=%r' % type(new_val))
                # print('L____ [config.qt_set_leaf_data]')
            # TODO Add ability to set a callback function when certain
            # preferences are changed.
            self.set_value(new_val)
        if VERBOSE_CONFIG:
            print('[Wrapper] Accepted new value.')
        return True
Ejemplo n.º 3
0
def cast_from_qt(var, type_=None):
    """ Casts a QVariant to data """
    if SIMPLE_CASTING:
        if var is None:
            return None
        if type_ is not None:
            reprstr = __STR__(var)
            return ut.smart_cast(reprstr, type_)
        return var
Ejemplo n.º 4
0
def cast_from_qt(var, type_=None):
    """ Casts a QVariant to data """
    if SIMPLE_CASTING:
        if var is None:
            return None
        if type_ is not None:
            reprstr = __STR__(var)
            return ut.smart_cast(reprstr, type_)
        return var
Ejemplo n.º 5
0
    def draw(ChapX, expt_name, dbnames, *args):
        """
        CommandLine:
            python -m wbia Chap3.draw nsum --dbs=GZ_Master1,PZ_Master1
            python -m wbia Chap3.draw foregroundness --dbs=GZ_Master1,PZ_Master1 --diskshow
            python -m wbia Chap3.draw kexpt --dbs=GZ_Master1 --diskshow

            python -m wbia Chap4.draw importance GZ_Master1

            python -m wbia Chap4.draw hard_cases GZ_Master1,PZ_Master1 match_state,photobomb_state
            --diskshow

        # Example:
        #     >>> # Script
        #     >>> from wbia.scripts.thesis import *  # NOQA
        #     >>> expt_name = ut.get_argval('--expt', type_=str, pos=1)
        #     >>> dbnames = ut.get_argval(('--dbs', '--db'), type_=list, default=[])
        #     >>> Chap3.draw(expt_name, dbnames)
        """
        logger.info('expt_name = %r' % (expt_name, ))
        logger.info('dbnames = %r' % (dbnames, ))
        logger.info('args = %r' % (args, ))
        dbnames = ut.smart_cast(dbnames, list)

        if len(dbnames) > 1:
            # parallelize drawing tasks
            from concurrent import futures

            multi_args = [ut.smart_cast(a, list) for a in args]
            with futures.ProcessPoolExecutor(max_workers=6) as executor:
                list(
                    futures.as_completed([
                        executor.submit(ChapX.draw_serial, expt_name, *fsargs)
                        for fsargs in ut.product(dbnames, *multi_args)
                    ]))
            logger.info('\n\n Completed multiple tasks')
        else:
            ChapX.draw_serial(expt_name, dbnames, *args)
Ejemplo n.º 6
0
    def draw_serial(ChapX, expt_name, dbnames, *args):
        dbnames = ut.smart_cast(dbnames, list)
        mpl.rcParams.update(TMP_RC)

        for dbname in dbnames:
            self = ChapX(dbname)
            if expt_name == 'all':
                self.draw_all()
            else:
                draw_func = getattr(self, 'draw_' + expt_name, None)
                if draw_func is None:
                    draw_func = getattr(self, 'write_' + expt_name, None)
                if draw_func is None:
                    raise ValueError('Cannot find a way to draw ' + expt_name)
                fpath = draw_func(*args)
                if ut.get_argflag('--diskshow'):
                    if isinstance(fpath, six.text_type):
                        ut.startfile(fpath)
                    elif fpath is not None:
                        fpath_list = fpath
                        for fpath in fpath_list:
                            ut.startfile(fpath)
Ejemplo n.º 7
0
 def qt_set_data(self, qvar):
     """
     Sets backend data using QVariants
     """
     if VERBOSE_CONFIG:
         print('[Wrapper] Attempting to set data')
     if not self.is_leaf():
         raise Exception(' must be a leaf')
     if self.parent is None:
         raise Exception('[Pref.qtleaf] Cannot set root preference')
     if self.qt_is_editable():
         new_val = '[Pref.qtleaf] BadThingsHappenedInPref'
         new_val = ut.smart_cast(qvar, self.type_)
         if VERBOSE_CONFIG:
             print('[Wrapper] new_val=%r' % new_val)
             # print('[Wrapper] type(new_val)=%r' % type(new_val))
             # print('L____ [config.qt_set_leaf_data]')
         # TODO Add ability to set a callback function when certain
         # preferences are changed.
         self.value = new_val
         self.parent.config[self.name] = new_val
     if VERBOSE_CONFIG:
         print('[Wrapper] Accepted new value.')
     return True
Ejemplo n.º 8
0
 def qt_set_data(self, qvar):
     """
     Sets backend data using QVariants
     """
     if VERBOSE_CONFIG:
         print('[Wrapper] Attempting to set data')
     if not self.is_leaf():
         raise Exception(' must be a leaf')
     if self.parent is None:
         raise Exception('[Pref.qtleaf] Cannot set root preference')
     if self.qt_is_editable():
         new_val = '[Pref.qtleaf] BadThingsHappenedInPref'
         new_val = ut.smart_cast(qvar, self.type_)
         if VERBOSE_CONFIG:
             print('[Wrapper] new_val=%r' % new_val)
             # print('[Wrapper] type(new_val)=%r' % type(new_val))
             # print('L____ [config.qt_set_leaf_data]')
         # TODO Add ability to set a callback function when certain
         # preferences are changed.
         self.value = new_val
         self.parent.config[self.name] = new_val
     if VERBOSE_CONFIG:
         print('[Wrapper] Accepted new value.')
     return True
Ejemplo n.º 9
0
def rsync_ibsdb_main():
    import sys
    default_user = ut.get_user_name()
    # default_db = 'MUGU_Master'
    default_db = None

    # Get positional commandline arguments
    cmdline_varags = ut.get_cmdline_varargs()
    if len(cmdline_varags) > 0 and cmdline_varags[0] == 'rsync':
        # ignore rsync as first command (b/c we are calling from
        # ibeis.__main__)
        cmdline_varags = cmdline_varags[1:]
    valid_modes = ['push', 'pull', 'list']

    if len(cmdline_varags) < 1:
        print('Usage: '
              # 'python -m ibeis.scripts.rsync_ibeisdb'
              'python -m ibeis rsync'
              '%s --db <db=%s> --user <user=%s>' % (
                  valid_modes,
                  default_db,
                  default_user,
              ))
        sys.exit(1)

    varargs_dict = dict(enumerate(cmdline_varags))

    mode = varargs_dict.get(0, None)
    default_db = varargs_dict.get(1, None)

    user = ut.get_argval('--user', type_=str, default=default_user)
    port = ut.get_argval('--port', type_=int, default=22)
    dbnames = ut.get_argval(('--db', '--dbs', '--dbname'),
                            type_=str,
                            default=default_db)
    dbnames = ut.smart_cast(dbnames, list)
    workdir = ut.get_argval(('--workdir'),
                            type_=str,
                            default=None,
                            help_='local work dir override')
    dry_run = ut.get_argflag(('--dryrun', '--dry-run', '--dry'))

    assert mode in valid_modes, 'mode=%r must be in %r' % (mode, valid_modes)
    remote_key = ut.get_argval('--remote', type_=str, default='hyrule')
    remote_map = {
        'hyrule': 'hyrule.cs.rpi.edu',
        'pachy': 'pachy.cs.uic.edu',
        'lewa': '41.203.223.178',
        'lev': 'lev.cs.rpi.edu',
    }
    remote_workdir_map = {
        'hyrule': '/raid/work',
        'pachy': '/home/shared_ibeis/data/work',
        'lewa': '/data/ibeis',
        'lev': '/media/hdd/work',
    }
    if ':' in remote_key:
        remote_key_, remote_workdir = remote_key.split(':')
    else:
        remote_key_ = remote_key
        if remote_key not in remote_workdir_map:
            import warnings
            warnings.warn('Workdir not specified for remote')
        remote_workdir = remote_workdir_map.get(remote_key, '')

    remote = remote_map.get(remote_key_, remote_key_)
    remote_uri = user + '@' + remote + ':' + remote_workdir

    if mode == 'list':
        print('remote = %r' % (remote, ))
        print('need to list')
        remote_paths = ut.list_remote(remote_uri)
        print('REMOTE LS -- TODO need to get only ibeis dirs')
        print('\n'.join(remote_paths))
    elif mode in ['push', 'pull']:
        print('dbnames = {!r}'.format(dbnames))
        for dbname in ut.ProgIter(dbnames, label='sync db'):
            ut.change_term_title('RSYNC IBEISDB %r' % (dbname, ))
            sync_ibeisdb(remote_uri, dbname, mode, workdir, port, dry_run)