docs: def constructConditionalPDF(
      gb, rs: np.ndarray, e: Tuple[str, str, Dict]
  ) -> gaussian_kde:
      """ Construct a conditional probability density function for a particular
      AnalysisGraph edge. """
  
      adjective_response_dict = {}
      all_θs = []
  
      # Setting σ_X and σ_Y that are in Eq. 1.21 of the model document.
      # This assumes that the real-valued variables representing the abstract
      # concepts are on the order of 1.0.
      # TODO Make this more general.
  
      σ_X = σ_Y = 0.1
  
      for stmt in e[2]["InfluenceStatements"]:
          for ev in stmt.evidence:
              # To account for discrepancy between Hume and Eidos extractions
              if ev.annotations.get("subj_adjectives") is not None:
                  for subj_adjective in ev.annotations["subj_adjectives"]:
                      if (
                          subj_adjective in gb.groups
                          and subj_adjective not in adjective_response_dict
                      ):
                          adjective_response_dict[subj_adjective] = get_respdevs(
                              gb.get_group(subj_adjective)
                          )
                      rs_subj = stmt.subj_delta[
                          "polarity"
                      ] * adjective_response_dict.get(subj_adjective, rs)
  
                      for obj_adjective in ev.annotations["obj_adjectives"]:
                          if (
                              obj_adjective in gb.groups
                              and obj_adjective not in adjective_response_dict
                          ):
                              adjective_response_dict[
                                  obj_adjective
                              ] = get_respdevs(gb.get_group(obj_adjective))
  
                          rs_obj = stmt.obj_delta[
                              "polarity"
                          ] * adjective_response_dict.get(obj_adjective, rs)
  
                          xs1, ys1 = np.meshgrid(rs_subj, rs_obj, indexing="xy")
                          θs = np.arctan2(σ_Y * ys1.flatten(), xs1.flatten())
                          all_θs.append(θs)
  
              # Prior
              xs1, ys1 = np.meshgrid(
                  stmt.subj_delta["polarity"] * rs,
                  stmt.obj_delta["polarity"] * rs,
                  indexing="xy",
              )
              # TODO - make the setting of σ_X and σ_Y more automated
              θs = np.arctan2(σ_Y * ys1.flatten(), σ_X * xs1.flatten())
  
      # all_θs.append(θs)
      # return gaussian_kde(np.concatenate(all_θs))
  
      if len(all_θs) == 0:
          all_θs.append(θs)
          return gaussian_kde(all_θs)
      else:
          return gaussian_kde(np.concatenate(all_θs))