docs: def _get_factor(self, belief_prop, evidence):
          """
          Extracts the required factor from the junction tree.
  
          Parameters:
          ----------
          belief_prop: Belief Propagation
              Belief Propagation which needs to be updated.
  
          evidence: dict
              a dict key, value pair as {var: state_of_var_observed}
          """
          final_factor = factor_product(*belief_prop.junction_tree.get_factors())
          if evidence:
              for var in evidence:
                  if var in final_factor.scope():
                      final_factor.reduce([(var, evidence[var])])
          return final_factor