class_docstr: Latent Variables Class
  
  Holds latent variable objects and contains method for latent variable manipulation. Latent variables are 
  referred to as z as shorthand. This is convention in much of the literature.
code: def get_z_priors_names(self):
      priors = self.get_z_priors()
      prior_names = []
      prior_z_names = []
      for prior in priors:
          if isinstance(prior, Normal):
              prior_names.append("Normal")
              prior_z_names.append(
                  "mu0: "
                  + str(np.round(prior.mu0, 4))
                  + ", sigma0: "
                  + str(np.round(prior.sigma0, 4))
              )
          elif isinstance(prior, Laplace):
              prior_names.append("Laplace")
              prior_z_names.append(
                  "loc0: "
                  + str(np.round(prior.loc0, 4))
                  + ", scale0: "
                  + str(np.round(prior.scale0, 4))
              )
          elif isinstance(prior, InverseGamma):
              prior_names.append("Inverse Gamma")
              prior_z_names.append(
                  "alpha: "
                  + str(np.round(prior.alpha, 4))
                  + ", beta: "
                  + str(np.round(prior.beta, 4))
              )
          elif isinstance(prior, Flat):
              prior_names.append("Flat")
              prior_z_names.append("n/a (non-informative)")
          elif isinstance(prior, InverseWishart):
              prior_names.append("InverseWishart")
              prior_z_names.append(
                  "v: "
                  + str(np.round(prior.v, 4))
                  + " and scale matrix"
              )
          elif isinstance(prior, t):
              prior_names.append("t")
              prior_z_names.append(
                  "loc0: "
                  + str(np.round(prior.loc0, 4))
                  + ", scale0: "
                  + str(np.round(prior.scale0, 4))
                  + ", df0: "
                  + str(np.round(prior.df0, 4))
              )
          elif isinstance(prior, Skewt):
              prior_names.append("Skewt")
              prior_z_names.append(
                  "loc0: "
                  + str(np.round(prior.loc0, 4))
                  + ", scale0: "
                  + str(np.round(prior.scale0, 4))
                  + ", df0: "
                  + str(np.round(prior.df0, 4))
                  + ", gamma0: "
                  + str(np.round(prior.gamma0, 4))
              )
          elif isinstance(prior, Cauchy):
              prior_names.append("Cauchy")
              prior_z_names.append(
                  "loc0: "
                  + str(np.round(prior.loc0, 4))
                  + ", scale0: "
                  + str(np.round(prior.scale0, 4))
              )
          elif isinstance(prior, TruncatedNormal):
              prior_names.append("TruncatedNormal")
              prior_z_names.append(
                  "mu0: "
                  + str(np.round(prior.mu0, 4))
                  + ", sigma0: "
                  + str(np.round(prior.sigma0, 4))
              )
          else:
              raise ValueError("Prior distribution not detected!")
      return prior_names, prior_z_names
  
imports: import numpy
  import pandas
  from .covariances import acf
  from .output import TablePrinter
  from .inference import *
  from .families import Normal, t, TruncatedNormal, Cauchy, Skewt, InverseGamma, Flat, InverseWishart, Laplace
label_desc: Use image node_id 8 for calling the LatentVariables obj's underlying member method code with example usage: obj.get_z_priors_names() and returns: prior_names,  prior_z_names