class_docstr: Implementation of the visual foraging environment used for scene construction simulations 
class_docstr_tok: ["Implementation","of","the","visual","foraging","environment","used","for","scene","construction","simulations"]
code: def _construct_likelihood_dist(self):
      A = np.empty(self.n_modalities, dtype=object)
      for g in range(self.n_modalities):
          A[g] = np.zeros([self.n_observations[g]] + self.n_states)
  
      for loc in range(self.n_states[LOCATION_ID]):
          for scene_id in range(self.n_states[SCENE_ID]):
              scene = self.scenes[scene_id]
              feat_loc_ids = np.ravel_multi_index(
                  np.where(scene), scene.shape
              )
              if loc in feat_loc_ids + 1:
                  feat_ids = np.unravel_index(
                      feat_loc_ids[loc == (feat_loc_ids + 1)],
                      scene.shape,
                  )
                  feats = scene[feat_ids]
                  A[SCENE_ID][int(feats), loc, scene_id] = 1.0
              else:
                  A[SCENE_ID][0, loc, scene_id] = 1.0
  
              A[LOCATION_ID][loc, loc, scene_id] = 1.0
      return Categorical(values=A)
  
imports: from pymdp.envs import Env
  from pymdp import utils, maths
  import numpy
  from itertools import permutations, product
label_desc: Use image node_id 13 for calling the VisualForagingEnv obj's underlying member method code with example usage: obj._construct_likelihood_dist() and returns: Categorical