def configure(self, global_config=False, project_config=False, ifile=None,
                  forcing=None, serial=False, nprocs=None, update_from=None,
                  **kwargs):
        if global_config:
            d = self.config.global_config
        elif project_config:
            self.app_main(**kwargs)
            d = self.config.projects[self.projectname]
        else:
            d = self.config.experiments[self.experiment]
        if ifile is not None:
            d['input'] = osp.abspath(ifile)
        if forcing is not None:
            d['forcing'] = osp.abspath(forcing)
        if update_from is not None:
            with open('update_from') as f:
                d.update(yaml.load(f))
        global_config = self.config.global_config
        if serial:
            global_config['serial'] = True
        elif nprocs:
            nprocs = int(nprocs) if nprocs != 'all' else nprocs
            global_config['serial'] = False
            global_config['nprocs'] = nprocs