@@ -56,20 +56,29 @@ def __init__(
5656 )
5757 self ._stdout_files , self ._profile_files = [], []
5858 self ._csv_files , self ._diagnostic_files = [], []
59+ self ._config_files = []
5960
6061 # per-process output files
6162 if one_process_per_chain and chains > 1 :
6263 self ._stdout_files = [
6364 self .gen_file_name (".txt" , extra = "stdout" , id = id )
6465 for id in self ._chain_ids
6566 ]
67+ self ._config_files = [
68+ os .path .join (
69+ self ._outdir , f"{ self ._base_outfile } _{ id } _config.json"
70+ )
71+ for id in self ._chain_ids
72+ ]
73+
6674 if args .save_profile :
6775 self ._profile_files = [
6876 self .gen_file_name (".csv" , extra = "profile" , id = id )
6977 for id in self ._chain_ids
7078 ]
7179 else :
7280 self ._stdout_files = [self .gen_file_name (".txt" , extra = "stdout" )]
81+ self ._config_files = [self .gen_file_name (".json" , extra = "config" )]
7382 if args .save_profile :
7483 self ._profile_files = [
7584 self .gen_file_name (".csv" , extra = "profile" )
@@ -93,25 +102,21 @@ def __init__(
93102 ]
94103
95104 def __repr__ (self ) -> str :
96- repr = 'RunSet: chains={}, chain_ids={}, num_processes={}' .format (
97- self ._chains , self ._chain_ids , self ._num_procs
98- )
99- repr = '{}\n cmd (chain 1):\n \t {}' .format (repr , self .cmd (0 ))
100- repr = '{}\n retcodes={}' .format (repr , self ._retcodes )
101- repr = f'{ repr } \n per-chain output files (showing chain 1 only):'
102- repr = '{}\n csv_file:\n \t {}' .format (repr , self ._csv_files [0 ])
105+ lines = [
106+ f"RunSet: chains={ self ._chains } , chain_ids={ self ._chain_ids } , "
107+ f"num_processes={ self ._num_procs } " ,
108+ f" cmd (chain 1):\n \t { self .cmd (0 )} " ,
109+ f" retcodes={ self ._retcodes } " ,
110+ " per-chain output files (showing chain 1 only):" ,
111+ f" csv_file:\n \t { self ._csv_files [0 ] if self ._csv_files else '' } " ,
112+ ]
103113 if self ._args .save_latent_dynamics :
104- repr = '{}\n diagnostics_file:\n \t {}' .format (
105- repr , self ._diagnostic_files [0 ]
106- )
114+ lines .append (f" diagnostics_file:\n \t { self ._diagnostic_files [0 ]} " )
107115 if self ._args .save_profile :
108- repr = '{}\n profile_file:\n \t {}' .format (
109- repr , self ._profile_files [0 ]
110- )
111- repr = '{}\n console_msgs (if any):\n \t {}' .format (
112- repr , self ._stdout_files [0 ]
113- )
114- return repr
116+ lines .append (f" profile_file:\n \t { self ._profile_files [0 ]} " )
117+ lines .append (f" console_msgs (if any):\n \t { self ._stdout_files [0 ]} " )
118+ lines .append (f" config_files:\n \t { self ._config_files [0 ]} " )
119+ return '\n ' .join (lines )
115120
116121 @property
117122 def model (self ) -> str :
@@ -196,6 +201,13 @@ def stdout_files(self) -> list[str]:
196201 """
197202 return self ._stdout_files
198203
204+ @property
205+ def config_files (self ) -> list [str ]:
206+ """
207+ List of paths to CmdStan config json files.
208+ """
209+ return self ._config_files
210+
199211 def _check_retcodes (self ) -> bool :
200212 """Returns ``True`` when all chains have retcode 0."""
201213 return all (retcode == 0 for retcode in self ._retcodes )
0 commit comments