示例#1
0
    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'])
示例#2
0
    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')