
    %gt(                     *   d Z ddlZddlZddlmZmZmZmZmZ ddl	m
Z
mZmZmZmZmZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z# g dZ$	 	 ddee%ee%   ejL                  df   dee%   deeee#eedf   fdZ'y)z0Container objects for results of CmdStan run(s).    N)AnyDictListOptionalUnion)CmdStanArgsLaplaceArgsOptimizeArgsPathfinderArgsSamplerArgsVariationalArgs)check_sampler_csv
get_loggerscan_config   )	CmdStanGQ)CmdStanLaplace)CmdStanMCMC)InferenceMetadata)
CmdStanMLE)CmdStanPathfinder)RunSet)	CmdStanVB)r   r   r   r   r   r   r   r   pathmethodreturnc                 t   | t        d      ||dvrt        dj                  |            g }t        | t              r| }nt        | t              rd| v rt
        j                  j                  |       }|d   bt
        j                  j                  |d         r"t
        j                  j                  |d         st        dj                  | |d               t        j                  |       }n=t        | t        t
        j                  f      rt
        j                  j                  |       rt
        j                  j                  |       rpt        j                  |       D ]W  }t
        j                  j                  |      d   d	k(  s)|j                  t
        j                  j                  | |             Y nnt
        j                  j                  |       r|j                  t	        |              n4t        d
j                  |             t        d
j                  |             t!        |      dk(  rt        dj                  |             |D ]`  }t
        j                  j                  |      r&t
        j                  j                  |      d   d	k(  rHt        dj                  |             i }	 t#        |d   d      5 }t%        ||d       ddd       d|vsd|vrt        dj                  |d               |&||d   k7  rt        dj                  ||d               	 |d   dk(  rt!        |      }t-        |d   |d   |d   |d         }		 t/        |d   |d   |d   |d   |d          t1        |d   |d   t3        |      D 
cg c]  }
|
dz   	 c}
|	      }t5        ||      }||_        t3        t!        |j8                              D ]  }|j;                  |d        t=        |      }|j?                          |S |d   dk(  rd |vrt        d!j                  |d               tA        |d    |d"   |jC                  d#d      $      }t1        |d   |d   d|      }t5        |%      }||_        t3        t!        |j8                              D ]  }|j;                  |d        tE        |      S |d   d&k(  rd |vrt        d'j                  |d               tG        |d    |d(   |d)   |d*   |d+   |d,   |d-   |d.   /      }t1        |d   |d   d|      }t5        |%      }||_        t3        t!        |j8                              D ]  }|j;                  |d        tI        |      S |d   d0k(  rtK        |d1   |d2   |d#   3      }t1        |d   |d   d|      }t5        |%      }||_        t3        t!        |j8                              D ]  }|j;                  |d        tM        |d1   d4      }tO        ||5      S |d   d6k(  r{tQ        |d7   |d8   9      }t1        |d   |d   d|      }t5        |%      }||_        t3        t!        |j8                              D ]  }|j;                  |d        tS        |      S tU               jW                  d:|d          y# 1 sw Y   xY w# t&        t(        t*        f$ r#}t        dj                  |d               |d}~ww xY w# t         $ r_ 	 t/        |d   d|d   |d   |d   |d          t-        |d   |d   |d   |d   d      }	n# t         $ r}t        d      |d}~ww xY wY w xY wc c}
w # t&        t(        t*        f$ r)}t        d;j                  t	        |                  |d}~ww xY w)<a  
    Instantiate a CmdStan object from a the Stan CSV files from a CmdStan run.
    CSV files are specified from either a list of Stan CSV files or a single
    filepath which can be either a directory name, a Stan CSV filename, or
    a pathname pattern (i.e., a Python glob).  The optional argument 'method'
    checks that the CSV files were produced by that method.
    Stan CSV files from CmdStan methods 'sample', 'optimize', and 'variational'
    result in objects of class CmdStanMCMC, CmdStanMLE, and CmdStanVB,
    respectively.

    :param path: directory path
    :param method: method name (optional)

    :return: either a CmdStanMCMC, CmdStanMLE, or CmdStanVB object
    Nz$Must specify path to Stan CSV files.)sampleoptimizevariationallaplace
pathfinderzKBad method argument {}, must be one of: "sample", "optimize", "variational"*r   z5Invalid path specification, {}  unknown directory: {}r   z.csvzInvalid path specification: {}z"No CSV files found in directory {}z1Bad CSV file path spec, includes non-csv file: {}rzCannot read CSV file: {}modelr   zFile {} is not a Stan CSV file.zMExpecting Stan CSV output files from method {},  found outputs from method {}r   num_samples
num_warmupthinsave_warmup)iter_samplingiter_warmupr(   r)   T)is_fixed_paramr*   r+   r(   r)   )r*   r+   r(   r)   fixed_paramz)Invalid or corrupt Stan CSV output file, )
model_name	model_exe	chain_idsmethod_args)argschainsr   	algorithmz.Cannot find optimization algorithm in file {}.save_iterationsjacobian)r4   r5   r6   )r2   r    z-Cannot find variational algorithm in file {}.itergrad_sampleselbo_samplesetatol_rel_obj	eval_elbooutput_samples)r4   r7   r8   r9   r:   r;   r<   r=   r!   modedraws)r>   r?   r6   )r   )r>   r"   	num_draws	num_paths)r@   rA   z2Unable to process CSV output files from method %s.z/An error occurred processing the CSV files:
	{}),
ValueErrorformat
isinstanceliststrosr   splitexistsisdirglobPathLikelistdirsplitextappendjoinlenopenr   IOErrorOSErrorPermissionErrorr   r   r   ranger   
_csv_files	_retcodes_set_retcoder   r?   r
   getr   r   r   r	   from_csvr   r   r   r   info)r   r   csvfilessplitsfileconfig_dictfder3   sampler_argsxcmdstan_argsrunsetifitoptimize_argsvariational_argslaplace_argsr>   pathfinder_argss                       W/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/cmdstanpy/stanfit/__init__.pyr[   r[   &   s   * |?@@f -  228&.
 	

 H$	D#	3$;t$!9 GGNN6!9-"''--q	2J --3VD&)-D  99T?	D3,	-77>>$BGGMM$$7

4( >77##D)!,6OOBGGLLt$<=> WW^^D!OOCI&=DDTJKK9@@FGG
8}=DDTJKK t$)9)9$)?)Bf)L--3VD\  #%KP(1+s# 	,rK+	, k!X[%@:AA(1+NOOfH(==,,2FH--
 	
Tx H,]F&)-8'5 ('6	L!QK"-m"< +L 9$V, +M :: '&w/%g.*/-8Q1q58(	L f=F (F3v//01 *##Aq)*f%CIIKJ"j0+- ##)6(1+#6  )%k2 +,= >$Q7M
 '&w/%g.)	L .F (F3v//01 *##Aq)*f%%"m3+- ##)6(1+#6   /%k2 ((8(8&'6%k2*+;<	  '&w/%g.,	L .F (F3v//01 *##Aq)*V$$"i/& (!'*$Z0L
 '&w/%g.(	L .F (F3v//01 *##Aq)*'F#! D "&t44"l2,%k2%k2O '&w/%g.+	L .F (F3v//01 *##Aq)*$V,,LDX& {	, 	,Wo. P3::8A;GHaOP:  % '+&1-&@$/$=(0$/$> $/&1-&@$/$=(0$/$>$($L " $C !2 9L Wo. ?FFs1vN
	s   [ [[ 5.]: $\
 ]: ]5)A.]: B4]: B;]: 	B]: "B]: %]: [[ \$\\
	]2<]]2	]+]&&]++]2.]: 1]22]: :^7$^22^7)NN)(__doc__rK   rG   typingr   r   r   r   r   cmdstanpy.cmdstan_argsr   r	   r
   r   r   r   cmdstanpy.utilsr   r   r   gqr   r!   r   mcmcr   metadatar   mler   r"   r   rf   r   vbr   __all__rF   rL   r[        rm   <module>rz      s    6  	 3 3  G F  #  '  )  	 6: g
T#YT1
2gSMg Y(9>4Ogry   