def test_model_info(self): model = CmdStanModel(stan_file=BERN_STAN, compile=False) model.compile(force=True) info_dict = model.exe_info() self.assertEqual(info_dict['STAN_THREADS'].lower(), 'false') if model.exe_file is not None and os.path.exists(model.exe_file): os.remove(model.exe_file) empty_dict = model.exe_info() self.assertEqual(len(empty_dict), 0) model_info = model.src_info() self.assertNotEqual(model_info, {}) self.assertIn('theta', model_info['parameters'])
def test_compile_force(self): if os.path.exists(BERN_EXE): os.remove(BERN_EXE) model = CmdStanModel(stan_file=BERN_STAN, compile=False, cpp_options={}) self.assertIsNone(model.exe_file) model.compile(force=True) self.assertIsNotNone(model.exe_file) self.assertTrue(os.path.exists(model.exe_file)) info_dict = model.exe_info() print(f'info={info_dict}') self.assertEqual(info_dict['STAN_THREADS'].lower(), 'false') more_opts = {'STAN_THREADS': 'TRUE'} model.compile(force=True, cpp_options=more_opts) self.assertIsNotNone(model.exe_file) self.assertTrue(os.path.exists(model.exe_file)) info_dict2 = model.exe_info() print(f'info2={info_dict2}') self.assertEqual(info_dict2['STAN_THREADS'].lower(), 'true') override_opts = {'STAN_NO_RANGE_CHECKS': 'TRUE'} model.compile( force=True, cpp_options=override_opts, override_options=True ) info_dict3 = model.exe_info() print(f'info3={info_dict3}') self.assertEqual(info_dict3['STAN_THREADS'].lower(), 'false') # cmdstan#1056 # self.assertEqual(info_dict3['STAN_NO_RANGE_CHECKS'].lower(), 'true') model.compile(force=True, cpp_options=more_opts) info_dict4 = model.exe_info() self.assertEqual(info_dict4['STAN_THREADS'].lower(), 'true') # test compile='force' in constructor model2 = CmdStanModel(stan_file=BERN_STAN, compile='force') info_dict5 = model2.exe_info() self.assertEqual(info_dict5['STAN_THREADS'].lower(), 'false')