code: def _read_output(path):
      """Read CmdStan output csv file.
  
      Parameters
      ----------
      path : str
  
      Returns
      -------
      Dict[str, Any]
      """
      # Read data
      columns, data, comments = _read_output_file(path)
  
      pconf = _process_configuration(comments)
  
      # split dataframe to warmup and draws
      saved_warmup = (
          int(pconf.get("save_warmup", 0))
          * int(pconf.get("num_warmup", 0))
          // int(pconf.get("thin", 1))
      )
  
      data_warmup = data[:saved_warmup]
      data = data[saved_warmup:]
  
      # Split data to sample_stats and sample
      sample_stats_columns = {
          col: idx for col, idx in columns.items() if col.endswith("__")
      }
      sample_columns = {
          col: idx
          for col, idx in columns.items()
          if col not in sample_stats_columns
      }
  
      return {
          "sample": data,
          "sample_warmup": data_warmup,
          "sample_columns": sample_columns,
          "sample_stats_columns": sample_stats_columns,
          "configuration_info": pconf,
      }
  
imports: import logging
  import os
  import re
  from collections import defaultdict
  from glob import glob
  from pathlib import Path
  from typing import Dict, List, Optional, Union
  import numpy
  from ..None import utils
  from ..rcparams import rcParams
  from .base import CoordSpec, DimSpec, dict_to_dataset, infer_stan_dtypes, requires
  from .inference_data import InferenceData
label_desc: Use image node_id 4 for calling a global function with example usage: _read_output(path) and returns: dict