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')
示例#2
0
 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'))
示例#3
0
    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))
示例#4
0
    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
示例#5
0
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
示例#6
0
  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
示例#7
0
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()
示例#8
0
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()
示例#9
0
  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))
示例#11
0
 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")