@@ -299,23 +299,42 @@ function summarystats(
299299 _chains = Chains (chains, _clean_sections (chains, sections))
300300
301301 # Calculate MCSE and ESS/R-hat separately.
302- mcse_df = MCMCDiagnosticTools. mcse (
303- _chains; sections = nothing , autocov_method = autocov_method, maxlag = maxlag,
304- )
305- ess_rhat_rank_df = MCMCDiagnosticTools. ess_rhat (
306- _chains; sections = nothing , autocov_method = autocov_method, maxlag = maxlag, kind= :rank
307- )
308- ess_tail_df = MCMCDiagnosticTools. ess (
309- _chains; sections = nothing , autocov_method = autocov_method, maxlag = maxlag, kind= :tail
310- )
311- nt_additional = (
312- mcse= mcse_df. nt. mcse,
313- ess_bulk= ess_rhat_rank_df. nt. ess,
314- ess_tail= ess_tail_df. nt. ess,
315- rhat= ess_rhat_rank_df. nt. rhat,
316- ess_per_sec= ess_rhat_rank_df. nt. ess_per_sec,
317- )
318- additional_df = ChainDataFrame (" Additional" , nt_additional)
302+ nt_additional = NamedTuple ()
303+ try
304+ mcse_df = MCMCDiagnosticTools. mcse (
305+ _chains; sections = nothing , autocov_method = autocov_method, maxlag = maxlag,
306+ )
307+ nt_additional = merge (nt_additional, (; mcse= mcse_df. nt. mcse))
308+ catch e
309+ @warn " MCSE calculation failed: $e "
310+ end
311+
312+ try
313+ ess_tail_df = MCMCDiagnosticTools. ess (
314+ _chains; sections = nothing , autocov_method = autocov_method, maxlag = maxlag, kind= :tail
315+ )
316+ nt_additional = merge (nt_additional, (ess_tail= ess_tail_df. nt. ess,))
317+ catch e
318+ @warn " Tail ESS calculation failed: $e "
319+ end
320+
321+ try
322+ ess_rhat_rank_df = MCMCDiagnosticTools. ess_rhat (
323+ _chains; sections = nothing , autocov_method = autocov_method, maxlag = maxlag, kind= :rank
324+ )
325+ nt_ess_rhat_rank = (
326+ ess_bulk= ess_rhat_rank_df. nt. ess,
327+ rhat= ess_rhat_rank_df. nt. rhat,
328+ ess_per_sec= ess_rhat_rank_df. nt. ess_per_sec
329+ )
330+ nt_additional = merge (nt_additional, nt_ess_rhat_rank)
331+ catch e
332+ @warn " Bulk ESS/R-hat calculation failed: $e "
333+ end
334+
335+ # Possibly re-order the columns to stay backwards-compatible.
336+ additional_keys = (:mcse , :ess_bulk , :ess_tail , :rhat , :ess_per_sec )
337+ additional_df = ChainDataFrame (" Additional" , (; ((k, nt_additional[k]) for k in additional_keys if k ∈ keys (nt_additional)). .. ))
319338
320339 # Summarize.
321340 summary_df = summarize (
0 commit comments