Exemplo n.º 1
0
 def validate_csv_files(self) -> None:
     """
     Checks that csv output files for all chains are consistent.
     Populates attributes for draws, column_names, num_params, metric_type.
     Raises exception when inconsistencies detected.
     """
     dzero = {}
     for i in range(self.runset.chains):
         if i == 0:
             dzero = check_sampler_csv(
                 path=self.runset.csv_files[i],
                 is_fixed_param=self._is_fixed_param,
                 iter_sampling=self._iter_sampling,
                 iter_warmup=self._iter_warmup,
                 save_warmup=self._save_warmup,
                 thin=self._thin,
             )
         else:
             drest = check_sampler_csv(
                 path=self.runset.csv_files[i],
                 is_fixed_param=self._is_fixed_param,
                 iter_sampling=self._iter_sampling,
                 iter_warmup=self._iter_warmup,
                 save_warmup=self._save_warmup,
                 thin=self._thin,
             )
             for key in dzero:
                 if (
                     key not in ['id', 'diagnostic_file']
                     and dzero[key] != drest[key]
                 ):
                     raise ValueError(
                         'csv file header mismatch, '
                         'file {}, key {} is {}, expected {}'.format(
                             self.runset.csv_files[i],
                             key,
                             dzero[key],
                             drest[key],
                         )
                     )
     self._draws_sampling = dzero['draws_sampling']
     if self._save_warmup:
         self._draws_warmup = dzero['draws_warmup']
     else:
         self._draws_warmup = 0
     self._column_names = dzero['column_names']
     if not self._is_fixed_param:
         self._num_params = dzero['num_params']
         self._metric_type = dzero.get('metric')
     self._stan_variable_dims = parse_var_dims(dzero['column_names'])
Exemplo n.º 2
0
 def test_parse_scalar_vec_scalar(self):
     x = [
         'foo',
         'phi.1',
         'phi.2',
         'phi.3',
         'phi.4',
         'phi.5',
         'phi.6',
         'phi.7',
         'phi.8',
         'phi.9',
         'phi.10',
         'bar',
     ]
     vars_dict = parse_var_dims(x)
     self.assertEqual(len(vars_dict), 3)
     self.assertEqual(vars_dict['foo'], 1)
     self.assertEqual(vars_dict['phi'], (10,))
     self.assertEqual(vars_dict['bar'], 1)
Exemplo n.º 3
0
 def test_parse_scalar_vec_scalar(self):
     x = [
         'foo',
         'phi[1]',
         'phi[2]',
         'phi[3]',
         'phi[4]',
         'phi[5]',
         'phi[6]',
         'phi[7]',
         'phi[8]',
         'phi[9]',
         'phi[10]',
         'bar',
     ]
     vars_dict = parse_var_dims(x)
     self.assertEqual(len(vars_dict), 3)
     self.assertEqual(vars_dict['foo'], 1)
     self.assertEqual(vars_dict['phi'], (10, ))
     self.assertEqual(vars_dict['bar'], 1)
Exemplo n.º 4
0
 def test_parse_scalar_matrix_vec(self):
     x = [
         'foo',
         'phi.1.1',
         'phi.1.2',
         'phi.1.3',
         'phi.1.4',
         'phi.1.5',
         'phi.2.1',
         'phi.2.2',
         'phi.2.3',
         'phi.2.4',
         'phi.2.5',
         'bar.1',
         'bar.2',
     ]
     vars_dict = parse_var_dims(x)
     self.assertEqual(len(vars_dict), 3)
     self.assertEqual(vars_dict['foo'], 1)
     self.assertEqual(vars_dict['phi'], (2, 5))
     self.assertEqual(vars_dict['bar'], (2,))
Exemplo n.º 5
0
 def test_parse_scalar_matrix_vec(self):
     x = [
         'foo',
         'phi[1,1]',
         'phi[1,2]',
         'phi[1,3]',
         'phi[1,4]',
         'phi[1,5]',
         'phi[2,1]',
         'phi[2,2]',
         'phi[2,3]',
         'phi[2,4]',
         'phi[2,5]',
         'bar[1]',
         'bar[2]',
     ]
     vars_dict = parse_var_dims(x)
     self.assertEqual(len(vars_dict), 3)
     self.assertEqual(vars_dict['foo'], 1)
     self.assertEqual(vars_dict['phi'], (2, 5))
     self.assertEqual(vars_dict['bar'], (2, ))
Exemplo n.º 6
0
 def test_parse_scalars(self):
     x = ['foo', 'foo1']
     vars_dict = parse_var_dims(x)
     self.assertEqual(len(vars_dict), 2)
     self.assertEqual(vars_dict['foo'], 1)
     self.assertEqual(vars_dict['foo1'], 1)
Exemplo n.º 7
0
 def test_parse_missing(self):
     with self.assertRaises(ValueError):
         parse_var_dims(None)
Exemplo n.º 8
0
 def test_parse_empty(self):
     x = []
     vars_dict = parse_var_dims(x)
     self.assertEqual(len(vars_dict), 0)