code: def get_activations_causal(self):
          ccs = self.tree.findall("CC/[type='ONT::CAUSE']")
          for cc in ccs:
              factor = cc.find("arg/[@role=':FACTOR']")
              outcome = cc.find("arg/[@role=':OUTCOME']")
              if factor is None or outcome is None:
                  continue
              factor_id = factor.attrib.get('id')
              factor_term = self.tree.find("TERM/[@id='%s']" % factor_id)
              outcome_id = outcome.attrib.get('id')
              outcome_event = self.tree.find("EVENT/[@id='%s']" % outcome_id)
              if factor_term is None or outcome_event is None:
                  continue
              factor_term_type = factor_term.find('type')
              if factor_term_type is None or \
                 factor_term_type.text not in molecule_types:
                  continue
              factor_agent = self._get_agent_by_id(factor_id, None)
              if factor_agent is None:
                  continue
              outcome_event_type = outcome_event.find('type')
              if outcome_event_type is None:
                  continue
              ev = self._get_evidence(cc)
              ev.epistemics['direct'] = False
              location = self._get_event_location(outcome_event)
              if outcome_event_type.text in ['ONT::ACTIVATE', 'ONT::ACTIVITY',
                                             'ONT::DEACTIVATE']:
                  if outcome_event_type.text in ['ONT::ACTIVATE',
                                                 'ONT::DEACTIVATE']:
                      agent_tag = outcome_event.find(".//*[@role=':AFFECTED']")
                  elif outcome_event_type.text == 'ONT::ACTIVITY':
                      agent_tag = outcome_event.find(".//*[@role=':AGENT']")
                  if agent_tag is None or agent_tag.attrib.get('id') is None:
                      continue
                  outcome_agent = self._get_agent_by_id(agent_tag.attrib['id'],
                                                        outcome_id)
                  if outcome_agent is None:
                      continue
                  if outcome_event_type.text == 'ONT::DEACTIVATE':
                      is_activation = False
                  else:
                      is_activation = True
                  for a1, a2 in _agent_list_product((factor_agent,
                                                     outcome_agent)):
                      if is_activation:
                          st = Activation(a1, a2, evidence=[deepcopy(ev)])
                      else:
                          st = Inhibition(a1, a2, evidence=[deepcopy(ev)])
                      _stmt_location_to_agents(st, location)
                      self.statements.append(st)