def test_load_ser_sim_res_no_json(self): tmpfolder = gf.generate_temp_folder() os.makedirs(tmpfolder) pres = CP.load_serial_simulation_results(tmpfolder) shutil.rmtree(tmpfolder) self.assertTrue(isinstance(pres['chain'], list)) self.assertTrue(isinstance(pres['s2chain'], list)) self.assertEqual(pres['chain'], [])
def test_read_in_parallel_txt(self): parallel_dir = gf.generate_temp_folder() mcstat = setup_problem(parallel_dir, case='text') out = CP.read_in_parallel_savedir_files(parallel_dir=parallel_dir, extension='txt') StandardCheck(out[0], mcstat) StandardCheck(out[1], mcstat) StandardCheck(out[2], mcstat) shutil.rmtree(parallel_dir)
def test_read_in_parallel_unknown(self): parallel_dir = gf.generate_temp_folder() setup_problem(parallel_dir, case='binary') out = CP.read_in_parallel_savedir_files(parallel_dir=parallel_dir, extension='unknown') self.assertEqual(out[0], None) self.assertEqual(out[1], None) self.assertEqual(out[2], None) shutil.rmtree(parallel_dir)
def test_run_simulation(self): mcstat = gf.basic_mcmc() mcstat.simulation_options.nsimu = 100 mcstat.simulation_options.save_to_bin = False mcstat.simulation_options.save_to_txt = False mcstat.custom_samplers.append(gf.CustomSampler(nsimu=100)) tmpfolder = gf.generate_temp_folder() mcstat.simulation_options.savedir = tmpfolder mcstat.run_simulation() self.assertTrue(mcstat._mcmc_status, msg='Expect True if successfully run')
def test_id_chain_no(self): parallel_dir = gf.generate_temp_folder() setup_problem(parallel_dir, case='binary') chainfolders = os.listdir(parallel_dir) chainfolders2 = CP.check_parallel_directory_contents( parallel_dir, chainfolders) self.assertEqual( chainfolders2, ['chain_0', 'chain_1', 'chain_2'], msg='List of strings do not match ({}): {} neq {}'.format( parallel_dir, chainfolders2, ['chain_0', 'chain_1', 'chain_2'])) shutil.rmtree(parallel_dir)
def test_run_simulation(self): mcstat = gf.basic_mcmc() mcstat.simulation_options.nsimu = 100 mcstat.simulation_options.save_to_bin = False mcstat.simulation_options.save_to_txt = False tmpfolder = gf.generate_temp_folder() mcstat.simulation_options.savedir = tmpfolder mcstat.run_simulation() self.assertTrue(mcstat._mcmc_status, msg='Expect True if successfully run') check_these = ['mcmcplot', 'PI', 'chainstats'] for ci in check_these: self.assertTrue(hasattr(mcstat, ci), msg=str('object has attribute: {}'.format(ci)))
def test_load_ser_sim_res(self): tmpfolder = gf.generate_temp_folder() tmpfolder0 = os.path.join(tmpfolder, 'chain_0') os.makedirs(tmpfolder0) tmpfile0 = 'chain_0.json' tmpfile0 = os.path.join(tmpfolder0, tmpfile0) results = dict(a=[0, 1], b='hello') RS = ResultsStructure() RS.save_json_object(results, tmpfile0) pres = CP.load_serial_simulation_results(tmpfolder0) shutil.rmtree(tmpfolder) self.assertTrue(isinstance(pres['a'], np.ndarray)) self.assertTrue(isinstance(pres['b'], str)) self.assertEqual(pres['b'], 'hello')
def test_save_to_log_file_txt(self): mcstat = gf.basic_mcmc() mcstat.simulation_options.save_to_bin = False mcstat.simulation_options.save_to_txt = True tmpfolder = gf.generate_temp_folder() mcstat.simulation_options.savedir = tmpfolder chains = [] chains.append( dict(file='chain', mtx=np.random.random_sample((1000, 3)))) savecount, lastbin = mcstat._MCMC__save_to_log_file(chains=chains, start=0, end=100) self.assertEqual(savecount, 0, msg='Expect 0') self.assertEqual(lastbin, 100, msg='Expect lastbin = end = 100') shutil.rmtree(tmpfolder)
def test_save_to_log_file_txt_no_append(self): mcstat = gf.basic_mcmc() mcstat.simulation_options.save_to_bin = False mcstat.simulation_options.save_to_txt = True tmpfolder = gf.generate_temp_folder() mcstat.simulation_options.savedir = tmpfolder tmpfile = tmpfolder + os.sep + 'txtlogfile.txt' chains = [] chains.append( dict(file='chain', mtx=np.random.random_sample((1000, 3)))) savecount, lastbin = mcstat._MCMC__save_to_log_file( chains=chains, start=0, end=100, append_to_log=False) self.assertFalse(os.path.isfile(tmpfile), msg=str('File exists: {}'.format(tmpfile))) shutil.rmtree(tmpfolder)
def test_no_save_to_log_file(self): mcstat = gf.basic_mcmc() mcstat.simulation_options.save_to_bin = False mcstat.simulation_options.save_to_txt = False tmpfolder = gf.generate_temp_folder() mcstat.simulation_options.savedir = tmpfolder chains = [] chains.append( dict(file='chain', mtx=np.random.random_sample((1000, 3)))) savecount, lastbin = mcstat._MCMC__save_to_log_file(chains=chains, start=0, end=100) self.assertEqual(savecount, 0, msg='Expect 0') self.assertEqual(lastbin, 100, msg='Expect lastbin = end = 100') self.assertFalse(os.path.isdir(tmpfolder), msg=str('Folder exists: {}'.format(tmpfolder)))
def test_id_chain_no_with_bad_items(self): parallel_dir = gf.generate_temp_folder() setup_problem(parallel_dir, case='binary') tmpfile = gf.generate_temp_file() os.mkdir(parallel_dir + os.sep + 'chain') if not os.path.exists(parallel_dir + os.sep + tmpfile): with open(parallel_dir + os.sep + tmpfile, 'w'): pass chainfolders = os.listdir(parallel_dir) chainfolders2 = CP.check_parallel_directory_contents( parallel_dir, chainfolders) self.assertEqual( chainfolders2, ['chain_0', 'chain_1', 'chain_2'], msg='List of strings do not match ({}): {} neq {}'.format( parallel_dir, chainfolders2, ['chain_0', 'chain_1', 'chain_2'])) shutil.rmtree(parallel_dir)
def test_run_simulation_with_json(self): mcstat = gf.basic_mcmc() mcstat.simulation_options.nsimu = 100 mcstat.simulation_options.save_to_bin = False mcstat.simulation_options.save_to_txt = False tmpfile = gf.generate_temp_file(extension='json') tmpfolder = gf.generate_temp_folder() os.mkdir(tmpfolder) mcstat.simulation_options.savedir = tmpfolder mcstat.simulation_options.results_filename = tmpfile mcstat.simulation_options.save_to_json = True mcstat.run_simulation() self.assertTrue(mcstat._mcmc_status, msg='Expect True if successfully run') check_these = ['mcmcplot', 'PI', 'chainstats'] for ci in check_these: self.assertTrue(hasattr(mcstat, ci), msg=str('object has attribute: {}'.format(ci))) shutil.rmtree(tmpfolder)
def test_read_in_savedir_files_unknown(self): mcstat = gf.setup_case() savedir = gf.generate_temp_folder() mcstat.simulation_options.savedir = savedir mcstat.simulation_options.save_to_txt = True mcstat._MCMC__save_to_log_file(chains=mcstat._MCMC__chains, start=0, end=100) mcstat._MCMC__save_to_log_file(chains=[ dict(mtx=np.dot(mcstat._covariance._R.transpose(), mcstat._covariance._R)) ], start=0, end=100, covmtx=True) out = CP.read_in_savedir_files(savedir, extension='unknown') self.assertEqual(out, None, msg='Expect None') shutil.rmtree(savedir)
def test_read_in_savedir_files_txt(self): mcstat = gf.setup_case() savedir = gf.generate_temp_folder() mcstat.simulation_options.savedir = savedir mcstat.simulation_options.save_to_txt = True mcstat._MCMC__save_to_log_file(chains=mcstat._MCMC__chains, start=0, end=100) mcstat._MCMC__save_to_log_file(chains=[ dict(mtx=np.dot(mcstat._covariance._R.transpose(), mcstat._covariance._R)) ], start=0, end=100, covmtx=True) out = CP.read_in_savedir_files(savedir, extension='txt') StandardCheck(out, mcstat) shutil.rmtree(savedir)
def test_print_log_files(self): mcstat = gf.setup_case() savedir = gf.generate_temp_folder() mcstat.simulation_options.savedir = savedir mcstat.simulation_options.save_to_bin = True chains = mcstat._MCMC__chains mcstat._MCMC__save_to_log_file(chains=chains, start=0, end=100) capturedOutput = io.StringIO() sys.stdout = capturedOutput CP.print_log_files(savedir) sys.stdout = sys.__stdout__ self.assertTrue(isinstance(capturedOutput.getvalue(), str), msg='Should contain a string') self.assertTrue('Display log file:' in capturedOutput.getvalue(), msg='Expect string to contain these words') shutil.rmtree(savedir)
def test_covmtx_save_to_log_file(self): mcstat = gf.setup_case() mcstat.simulation_options.save_to_bin = False mcstat.simulation_options.save_to_txt = True tmpfolder = gf.generate_temp_folder() mcstat.simulation_options.savedir = tmpfolder tmpfile = tmpfolder + os.sep + 'txtlogfile.txt' tmptxtfile = tmpfolder + os.sep + 'covchainfile.txt' savecount, lastbin = mcstat._MCMC__save_to_log_file(chains=[ dict(mtx=np.dot(mcstat._covariance._R.transpose(), mcstat._covariance._R)) ], start=0, end=100, covmtx=True) self.assertEqual(savecount, 0, msg='Expect 0') self.assertEqual(lastbin, 100, msg='Expect lastbin = end = 100') self.assertTrue(os.path.isfile(tmpfile), msg=str('File exists: {}'.format(tmpfile))) self.assertTrue(os.path.isfile(tmptxtfile), msg=str('File exists: {}'.format(tmptxtfile))) mcstat.simulation_options.save_to_bin = True mcstat.simulation_options.save_to_txt = False tmpfile = tmpfolder + os.sep + 'binlogfile.txt' tmpbinfile = tmpfolder + os.sep + 'covchainfile.h5' savecount, lastbin = mcstat._MCMC__save_to_log_file(chains=[ dict(mtx=np.dot(mcstat._covariance._R.transpose(), mcstat._covariance._R)) ], start=0, end=100, covmtx=True) self.assertEqual(savecount, 0, msg='Expect 0') self.assertEqual(lastbin, 100, msg='Expect lastbin = end = 100') self.assertTrue(os.path.isfile(tmpfile), msg=str('File exists: {}'.format(tmpfile))) self.assertTrue(os.path.isfile(tmpbinfile), msg=str('File exists: {}'.format(tmpbinfile))) shutil.rmtree(tmpfolder)
def test_check_directory(self): tmpfolder = gf.generate_temp_folder() CP._check_directory(tmpfolder) self.assertTrue(os.path.isdir(tmpfolder), msg='Directory exists') os.removedirs(tmpfolder)
def setup_par_mcmc_basic(): mcstat = gf.basic_mcmc() tmpfolder = gf.generate_temp_folder() mcstat.simulation_options.savedir = tmpfolder return mcstat, tmpfolder
def test_check_directory(self): tmpfolder = gf.generate_temp_folder() check_directory(tmpfolder) self.assertTrue(os.path.exists(tmpfolder), msg='Directory should exist') shutil.rmtree(tmpfolder)