def test_parse_empty(self): x = [] sampler_vars = parse_sampler_vars(x) self.assertEqual(len(sampler_vars), 0) stan_vars_dims, stan_vars_cols = parse_stan_vars(x) self.assertEqual(len(stan_vars_dims), 0) self.assertEqual(len(stan_vars_cols), 0)
def test_parse_scalars(self): x = ['lp__', 'foo'] dims_map, cols_map = parse_stan_vars(x) self.assertEqual(len(dims_map), 1) self.assertEqual(dims_map['foo'], ()) self.assertEqual(len(cols_map), 1) self.assertEqual(cols_map['foo'], (1,)) dims_map = {} cols_map = {} x = ['lp__', 'foo1', 'foo2'] dims_map, cols_map = parse_stan_vars(x) self.assertEqual(len(dims_map), 2) self.assertEqual(dims_map['foo1'], ()) self.assertEqual(dims_map['foo2'], ()) self.assertEqual(len(cols_map), 2) self.assertEqual(cols_map['foo1'], (1,)) self.assertEqual(cols_map['foo2'], (2,))
def __init__(self, config: Dict) -> None: """Initialize object from CSV headers""" self._cmdstan_config = config self._sampler_vars_cols = parse_sampler_vars( names=config['column_names']) stan_vars_dims, stan_vars_cols = parse_stan_vars( names=config['column_names']) self._stan_vars_dims = stan_vars_dims self._stan_vars_cols = stan_vars_cols
def test_parse_containers(self): # demonstrates flaw in shortcut to get container dims x = [ 'lp__', 'accept_stat__', 'foo', 'phi[1]', 'phi[2]', 'phi[3]', 'phi[10]', 'bar', ] dims_map, cols_map = parse_stan_vars(x) self.assertEqual(len(dims_map), 3) self.assertEqual(dims_map['foo'], ()) self.assertEqual(dims_map['phi'], (10,)) # sic self.assertEqual(dims_map['bar'], ()) self.assertEqual(len(cols_map), 3) self.assertEqual(cols_map['foo'], (2,)) self.assertEqual( cols_map['phi'], ( 3, 4, 5, 6, ), ) self.assertEqual(cols_map['bar'], (7,)) x = [ 'lp__', 'accept_stat__', 'foo', 'phi[1]', 'phi[2]', 'phi[3]', 'phi[10,10]', 'bar', ] dims_map = {} cols_map = {} dims_map, cols_map = parse_stan_vars(x) self.assertEqual(len(dims_map), 3) self.assertEqual( dims_map['phi'], ( 10, 10, ), ) self.assertEqual(len(cols_map), 3) self.assertEqual( cols_map['phi'], ( 3, 4, 5, 6, ), ) x = [ 'lp__', 'accept_stat__', 'foo', 'phi[10,10,10]', ] dims_map = {} cols_map = {} dims_map, cols_map = parse_stan_vars(x) self.assertEqual(len(dims_map), 2) self.assertEqual( dims_map['phi'], ( 10, 10, 10, ), ) self.assertEqual(len(cols_map), 2) self.assertEqual(cols_map['phi'], (3,))
def test_parse_missing(self): with self.assertRaises(ValueError): parse_sampler_vars(None) with self.assertRaises(ValueError): parse_stan_vars(None)