예제 #1
0
def mapper_from_yaml(yamlfilename):
    import yaml
    ydict = yaml.load(open(yamlfilename, 'rt'))
    ybins = ydict['bins']
    from westpa.core._rc import bins_from_yaml_dict
    #return mapper_from_dict(ybins)
    return bins_from_yaml_dict(ybins)
예제 #2
0
    def __init__(self, sim_manager, plugin_config):
        if not sim_manager.work_manager.is_master:
            return

        self.sim_manager = sim_manager
        self.data_manager = sim_manager.data_manager
        self.system = sim_manager.system
        self.work_manager = sim_manager.work_manager

        self.do_reweight = check_bool(
            plugin_config.get('do_reweighting', False))
        self.windowsize = 0.5
        self.windowtype = 'fraction'

        windowsize = plugin_config.get('window_size')
        if windowsize is not None:
            if isinstance(windowsize, float):
                self.windowsize = windowsize
                self.windowtype = 'fraction'
                if self.windowsize <= 0 or self.windowsize > 1:
                    raise ValueError(
                        'WESS parameter error -- fractional window size must be in (0,1]'
                    )
            elif isinstance(windowsize, int):
                self.windowsize = int(windowsize)
                self.windowtype = 'fixed'
            else:
                raise ValueError(
                    'WESS parameter error -- invalid window size {!r}'.format(
                        windowsize))
        log.info('using window size of {!r} ({})'.format(
            self.windowsize, self.windowtype))

        self.max_windowsize = plugin_config.get('max_window_size')
        if self.max_windowsize is not None:
            log.info('Using max windowsize of {:d}'.format(
                self.max_windowsize))

        self.reweight_period = plugin_config.get('reweight_period', 0)
        self.priority = plugin_config.get('priority', 0)

        self.rate_calc_queue_size = plugin_config.get('rate_calc_queue_size',
                                                      1)
        self.rate_calc_n_blocks = plugin_config.get('rate_calc_n_blocks', 1)

        bin_obj = plugin_config.get('bins', None)
        if isinstance(bin_obj, dict):
            bin_obj = bins_from_yaml_dict(bin_obj)
        self.bin_mapper = bin_obj

        if self.do_reweight:
            sim_manager.register_callback(sim_manager.prepare_new_iteration,
                                          self.prepare_new_iteration,
                                          self.priority)

        self.write_matrices = plugin_config.get('write_matrices', False)
예제 #3
0
    def load_config_from_west(self, scheme):
        try:
            config = westpa.rc.config['west']['analysis']
        except:
            raise ValueError('There is no configuration file specified.')
        ystates = config['analysis_schemes'][scheme]['states']
        self.states_from_dict(ystates)
        try:
            self.subsample = config['subsample']
        except:
            pass
        from westpa.core._rc import bins_from_yaml_dict
        self.binning.mapper = bins_from_yaml_dict(config['analysis_schemes'][scheme]['bins'][0])
        path = os.path.join(os.getcwd(), config['directory'], scheme)
        try:
            os.mkdir(config['directory'])
            os.mkdir(path)
        except:
            pass

        self.output_filename = os.path.join(path, 'assign.h5')