def save_init_data(self, dirname): data_utils.make_dir('optim_data/' + dirname) for cell in self.cells: data_utils.make_dir('optim_data/' + dirname + '/' + cell.bp_type) cell.save_init_data('optim_data/' + dirname + '/' + cell.bp_type) data_utils.save_var(self.rec_data, file='optim_data/' + dirname + '/init_rec_data.pkl')
def save_init_data(self, dirname): ''' Save pilot run, i.e. initial data. ''' print('# Save init data to ' + dirname) data_utils.make_dir(os.path.join('optim_data', dirname)) self.cell.save_init_data(os.path.join('optim_data', dirname)) data_utils.save_var( self.rec_data, os.path.join('optim_data', dirname, 'init_rec_data.pkl'))
def init_output_folder(self): ''' Create output folder. ''' data_utils.make_dir('optim_data') assert self.output_folder is not None if os.path.exists(os.path.join('optim_data', self.output_folder)): print('Output folder already exists.') else: data_utils.make_dir(os.path.join('optim_data', self.output_folder))
def gen_and_save_data(self, method, adaptive, step_param, pert_method, pert_param='auto', stim=None, overwrite=False, allowgenerror=False, plot=False): """Generate data and save to file.""" folder, filename = self.get_data_folder_and_filename( method, adaptive, step_param, pert_method, pert_param) print('/'.join(filename.split('/')[2:]).rjust(60), end=' --> ') data_utils.make_dir(folder) if not os.path.isfile(filename): data_loaded = 'file was not found.' elif overwrite: data_loaded = 'overwrite==True.' else: data_loaded = self.load_data_and_check(method=method, adaptive=adaptive, step_param=step_param, pert_method=pert_method, pert_param=pert_param, stim=stim, filename=filename) if not isinstance(data_loaded, str): print('Loaded data.') return data_loaded else: print('Generate data because', data_loaded) try: data = self.gen_data(method=method, adaptive=adaptive, step_param=step_param, pert_method=pert_method, pert_param=pert_param, plot=plot) except KeyboardInterrupt: raise KeyboardInterrupt() except Exception: if allowgenerror: print('Data generation failed') data = None else: traceback.print_exc() raise data_utils.save_var(data, filename) return data
def savefig(filename, fig=None): """Save figure to file""" assert "figures" not in filename assert ".pdf" not in filename assert ".png" not in filename assert ".eps" not in filename data_utils.make_dir("_figures") data_utils.make_dir("../../_figures") if fig is None: fig = plt.gcf() fig.savefig(f"_figures/{filename}.pdf") # save in folder fig.savefig(f"../../_figures/{filename}.pdf") # save in general folder
def __init__( self, optim, prior, n_parallel=25, gen_minibatch=300, samples_file=None, snpe_type='B', round_cl=1, scalar_loss=True, post_as_truncated_normal=True, samples_folder='samples', snpe_folder='snpe', backups_folder='backups', retsim_folder='retsim', ): ''' Initialize DELFI wrapper. Parameters: post_as_truncated_normal : bool Transform posteriors to truncated normal distributions. ''' self.snpe_type = snpe_type self.prior = prior self.optim = optim self.optim.n_parallel = n_parallel self.scalar_loss = scalar_loss self.gen_minibatch = gen_minibatch self.round_cl = round_cl # Make folders to store data. self.general_folder = os.path.join('optim_data', self.optim.output_folder) self.samples_folder = os.path.join(self.general_folder, samples_folder+'/') self.snpe_folder = os.path.join(self.general_folder, snpe_folder+'/') self.backups_folder = os.path.join(self.general_folder, backups_folder+'/') self.retsim_folder = os.path.join(self.general_folder, retsim_folder+'/') data_utils.make_dir(self.samples_folder) data_utils.make_dir(self.snpe_folder) data_utils.make_dir(self.backups_folder) data_utils.make_dir(self.retsim_folder) # Save retsim files and check parameters. if self.optim.cell is not None: self.optim.copy_retsim_files( cell=self.optim.cell, retsim_folder=self.retsim_folder ) self.optim.check_parameter_files( cell=self.optim.cell, params=self.optim.params, folder=self.general_folder ) # Define file for samples. self.update_samples_file(samples_file) self.post_as_truncated_normal = post_as_truncated_normal if self.post_as_truncated_normal: self.trunc_lower = self.prior.lower self.trunc_upper = self.prior.upper else: self.trunc_lower = None self.trunc_upper = None
def main(): parser = argparse.ArgumentParser() parser.add_argument('--mode', choices={'train', 'chat'}, default='train', help="mode. if not specified, it's in the train mode") args = parser.parse_args() if not os.path.isdir(config.PROCESSED_PATH): data_utils.prepare_raw_data() data_utils.process_data() print('Data ready!') data_utils.make_dir(config.CPT_PATH) if args.mode == 'train': train() elif args.mode == 'chat': chat()
def main(): parser = argparse.ArgumentParser() parser.add_argument("--mode", choices={"train", "chat"}, default="train", help="mode. if not specified, it's in the train mode") args = parser.parse_args() if not os.path.exists(os.path.join(config.DATA_PATH, "test_ids.dec")): data_utils.process_data() print("Data ready!") # create checkpoints folder if there isn't one already data_utils.make_dir(config.CPT_PATH) if args.mode == "train": train() elif args.mode == "chat": chat()
def __init__(self, params, output_folder, EDL_phase_total, V_amps, absZ_est, verbose=True, p_unit={}, reset=True): assert isinstance(p_unit, dict) self.output_folder = output_folder self.params = params self.p_unit = p_unit self.EDL_phase_total = EDL_phase_total self.V_amps = V_amps self.absZ_est = absZ_est data_utils.make_dir('optim_data/' + output_folder) self.folder_i = 'COMSOL2python_interface/COMSOL_input/' self.folder_o = 'COMSOL2python_interface/COMSOL_output/' data_utils.make_dir(self.folder_i) data_utils.make_dir(self.folder_o) if reset: self.reset_and_wait_for_COMSOL()
def find_and_replace_in_files(inputfiles, input_folder, outputfiles, output_folder, params): ''' Find params in given files and replace them with new params. Save updated files to given output folder. ''' found_params = {} data_utils.make_dir(output_folder) data_utils.clean_folder(output_folder) for inputfile, outputfile in zip(inputfiles, outputfiles): inputfilepath = os.path.join(input_folder, inputfile) assert os.path.isfile( inputfilepath), 'Input file not found: ' + inputfilepath with open(inputfilepath, 'r') as f: lines = f.readlines() # Replace optimized params. for p_name, p_value in params.items(): found_param = False for idx, line in enumerate(lines): if p_name in line: found_param = True for i in np.flip(np.arange(15)): if p_name.ljust(i) in line: line = line.replace( p_name.ljust(i), "{:.5g}".format(p_value).ljust(i - 1) + " ") lines[idx] = line lines[idx] = lines[idx].replace('\t', ' ') if found_param: found_params[p_name] = p_value # Write file. outputfilepath = os.path.join(output_folder, outputfile) print() print('saveing updated version of (1) to (2)') print('\t(1)', inputfilepath) print('\t(2)', outputfilepath) print() with open(outputfilepath, 'w+') as f: for line in lines: f.write(line) print() print('The following params were (not) found:') max_len_p_name = np.max([len(p_name) for p_name in params.keys()]) for p_name, p_value in params.items(): if p_name not in found_params.keys(): print('\t WARNING: Have not found \t' + p_name.ljust(max_len_p_name) + ' = {:.5g} \t Please replace manually.'.format(p_value)) else: print('\t Found \t' + p_name.ljust(max_len_p_name) + ' = {:.5g}'.format(p_value))
def save_acc_sols_to_file(self): """Save acc sols in folder""" folder = f'{self.base_folder}' if self.subfoldername is not None: folder += f'/{self.subfoldername}' data_utils.make_dir(folder) data_utils.save_var(self.acc_sols, f"{folder}/acc_sols.pkl")