code: def identify_effect(
      graph: nx.DiGraph,
      action_nodes: Union[str, List[str]],
      outcome_nodes: Union[str, List[str]],
      observed_nodes: Union[str, List[str]],
  ) -> IdentifiedEstimand:
      """Identify the causal effect to be estimated based on a causal graph
  
      :param graph: Causal graph to be analyzed
      :param treatment: name of the treatment
      :param outcome: name of the outcome
      :returns: a probability expression (estimand) for the causal effect if identified, else NULL
      """
      return identify_effect_auto(
          graph,
          action_nodes,
          outcome_nodes,
          observed_nodes,
          EstimandType.NONPARAMETRIC_ATE,
          backdoor_adjustment=BackdoorAdjustment.BACKDOOR_DEFAULT,
          optimize_backdoor=False,
      )
  
file_path: dowhy/dowhy/causal_identifier/identify_effect.py
imports: from typing import List, Protocol, Union
  import networkx
  from dowhy.causal_identifier.auto_identifier import BackdoorAdjustment, EstimandType, identify_effect_auto
  from dowhy.causal_identifier.identified_estimand import IdentifiedEstimand
label_desc: Use image node_id 1 for calling a global function with example usage: identify_effect(graph, action_nodes, outcome_nodes, observed_nodes) and returns: identify_effect_auto