some new features
This commit is contained in:
@ -0,0 +1,53 @@
|
||||
"""Container for metadata parsed from the output of a CmdStan run"""
|
||||
|
||||
import copy
|
||||
from typing import Any, Dict
|
||||
|
||||
import stanio
|
||||
|
||||
|
||||
class InferenceMetadata:
|
||||
"""
|
||||
CmdStan configuration and contents of output file parsed out of
|
||||
the Stan CSV file header comments and column headers.
|
||||
Assumes valid CSV files.
|
||||
"""
|
||||
|
||||
def __init__(self, config: Dict[str, Any]) -> None:
|
||||
"""Initialize object from CSV headers"""
|
||||
self._cmdstan_config = config
|
||||
vars = stanio.parse_header(config['raw_header'])
|
||||
|
||||
self._method_vars = {
|
||||
k: v for (k, v) in vars.items() if k.endswith('__')
|
||||
}
|
||||
self._stan_vars = {
|
||||
k: v for (k, v) in vars.items() if not k.endswith('__')
|
||||
}
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return 'Metadata:\n{}\n'.format(self._cmdstan_config)
|
||||
|
||||
@property
|
||||
def cmdstan_config(self) -> Dict[str, Any]:
|
||||
"""
|
||||
Returns a dictionary containing a set of name, value pairs
|
||||
parsed out of the Stan CSV file header. These include the
|
||||
command configuration and the CSV file header row information.
|
||||
Uses deepcopy for immutability.
|
||||
"""
|
||||
return copy.deepcopy(self._cmdstan_config)
|
||||
|
||||
@property
|
||||
def method_vars(self) -> Dict[str, stanio.Variable]:
|
||||
"""
|
||||
Method variable names always end in `__`, e.g. `lp__`.
|
||||
"""
|
||||
return self._method_vars
|
||||
|
||||
@property
|
||||
def stan_vars(self) -> Dict[str, stanio.Variable]:
|
||||
"""
|
||||
These are the user-defined variables in the Stan program.
|
||||
"""
|
||||
return self._stan_vars
|
||||
Reference in New Issue
Block a user