Skip to content

Commit 47e5810

Browse files
committed
Re-raise stancsv parsing failures to identify file
1 parent 3a9db21 commit 47e5810

File tree

6 files changed

+77
-34
lines changed

6 files changed

+77
-34
lines changed

cmdstanpy/stanfit/gq.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -626,10 +626,16 @@ def _assemble_generated_quantities(self) -> None:
626626
order='F',
627627
)
628628
for chain in range(self.chains):
629-
*_, draws = stancsv.parse_comments_header_and_draws(
630-
self.runset.csv_files[chain]
631-
)
632-
gq_sample[:, chain, :] = stancsv.csv_bytes_list_to_numpy(draws)
629+
csv_file = self.runset.csv_files[chain]
630+
try:
631+
*_, draws = stancsv.parse_comments_header_and_draws(
632+
self.runset.csv_files[chain]
633+
)
634+
gq_sample[:, chain, :] = stancsv.csv_bytes_list_to_numpy(draws)
635+
except Exception as exc:
636+
raise ValueError(
637+
f"An error occurred when parsing Stan csv {csv_file}"
638+
) from exc
633639
self._draws = gq_sample
634640

635641
def _draws_start(self, inc_warmup: bool) -> Tuple[int, int]:

cmdstanpy/stanfit/laplace.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,16 @@ def _assemble_draws(self) -> None:
8686
if self._draws.shape != (0,):
8787
return
8888

89-
*_, draws = stancsv.parse_comments_header_and_draws(
90-
self._runset.csv_files[0]
91-
)
92-
self._draws = stancsv.csv_bytes_list_to_numpy(draws)
89+
csv_file = self._runset.csv_files[0]
90+
try:
91+
*_, draws = stancsv.parse_comments_header_and_draws(
92+
self._runset.csv_files[0]
93+
)
94+
self._draws = stancsv.csv_bytes_list_to_numpy(draws)
95+
except Exception as exc:
96+
raise ValueError(
97+
f"An error occurred when parsing Stan csv {csv_file}"
98+
) from exc
9399

94100
def stan_variable(self, var: str) -> np.ndarray:
95101
"""

cmdstanpy/stanfit/metadata.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,15 @@ def __init__(
3535
def from_csv(
3636
cls, stan_csv: Union[str, os.PathLike, Iterator[bytes]]
3737
) -> 'InferenceMetadata':
38-
comments, header, _ = stancsv.parse_comments_header_and_draws(stan_csv)
39-
return cls(stancsv.construct_config_header_dict(comments, header))
38+
try:
39+
comments, header, _ = stancsv.parse_comments_header_and_draws(
40+
stan_csv
41+
)
42+
return cls(stancsv.construct_config_header_dict(comments, header))
43+
except Exception as exc:
44+
raise ValueError(
45+
f"An error occurred when parsing Stan csv {stan_csv}"
46+
) from exc
4047

4148
def __repr__(self) -> str:
4249
return 'Metadata:\n{}\n'.format(self._cmdstan_config)

cmdstanpy/stanfit/mle.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,24 @@ def __init__(self, runset: RunSet) -> None:
3535
) # make the typechecker happy
3636
self._save_iterations: bool = optimize_args.save_iterations
3737

38-
(
39-
comment_lines,
40-
header,
41-
draws_lines,
42-
) = stancsv.parse_comments_header_and_draws(self.runset.csv_files[0])
43-
self._metadata = InferenceMetadata(
44-
stancsv.construct_config_header_dict(comment_lines, header)
45-
)
46-
all_draws = stancsv.csv_bytes_list_to_numpy(draws_lines)
38+
csv_file = self.runset.csv_files[0]
39+
try:
40+
(
41+
comment_lines,
42+
header,
43+
draws_lines,
44+
) = stancsv.parse_comments_header_and_draws(
45+
self.runset.csv_files[0]
46+
)
47+
self._metadata = InferenceMetadata(
48+
stancsv.construct_config_header_dict(comment_lines, header)
49+
)
50+
all_draws = stancsv.csv_bytes_list_to_numpy(draws_lines)
51+
52+
except Exception as exc:
53+
raise ValueError(
54+
f"An error occurred when parsing Stan csv {csv_file}"
55+
) from exc
4756
self._mle: np.ndarray = all_draws[-1]
4857
if self._save_iterations:
4958
self._all_iters: np.ndarray = all_draws

cmdstanpy/stanfit/pathfinder.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,16 @@ def _assemble_draws(self) -> None:
7878
if self._draws.shape != (0,):
7979
return
8080

81-
*_, draws = stancsv.parse_comments_header_and_draws(
82-
self._runset.csv_files[0]
83-
)
84-
self._draws = stancsv.csv_bytes_list_to_numpy(draws)
81+
csv_file = self._runset.csv_files[0]
82+
try:
83+
*_, draws = stancsv.parse_comments_header_and_draws(
84+
self._runset.csv_files[0]
85+
)
86+
self._draws = stancsv.csv_bytes_list_to_numpy(draws)
87+
except Exception as exc:
88+
raise ValueError(
89+
f"An error occurred when parsing Stan csv {csv_file}"
90+
) from exc
8591

8692
def stan_variable(self, var: str) -> np.ndarray:
8793
"""

cmdstanpy/stanfit/vb.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,27 @@ def __init__(self, runset: RunSet) -> None:
2929
)
3030
self.runset = runset
3131

32-
(
33-
comment_lines,
34-
header,
35-
draw_lines,
36-
) = stancsv.parse_comments_header_and_draws(self.runset.csv_files[0])
37-
38-
self._metadata = InferenceMetadata(
39-
stancsv.construct_config_header_dict(comment_lines, header)
40-
)
41-
self._eta = stancsv.parse_variational_eta(comment_lines)
32+
csv_file = self.runset.csv_files[0]
33+
try:
34+
(
35+
comment_lines,
36+
header,
37+
draw_lines,
38+
) = stancsv.parse_comments_header_and_draws(
39+
self.runset.csv_files[0]
40+
)
4241

43-
draws_np = stancsv.csv_bytes_list_to_numpy(draw_lines)
42+
self._metadata = InferenceMetadata(
43+
stancsv.construct_config_header_dict(comment_lines, header)
44+
)
45+
self._eta = stancsv.parse_variational_eta(comment_lines)
46+
47+
draws_np = stancsv.csv_bytes_list_to_numpy(draw_lines)
48+
49+
except Exception as exc:
50+
raise ValueError(
51+
f"An error occurred when parsing Stan csv {csv_file}"
52+
) from exc
4453
self._variational_mean: np.ndarray = draws_np[0]
4554
self._variational_sample: np.ndarray = draws_np[1:]
4655

0 commit comments

Comments
 (0)