code: def perform_normal_distribution_test(estimate, simulations: List):
      # Get the mean for the simulations
      mean_refute_values = np.mean(simulations)
      # Get the standard deviation for the simulations
      std_dev_refute_values = np.std(simulations)
      # Get the Z Score [(val - mean)/ std_dev ]
      z_score = (
          estimate.value - mean_refute_values
      ) / std_dev_refute_values
  
      if z_score > 0:  # Right Tail
          p_value = 1 - st.norm.cdf(z_score)
      else:  # Left Tail
          p_value = st.norm.cdf(z_score)
  
      return p_value
  
imports: import logging
  import random
  from enum import Enum
  from typing import List, Union
  import numpy
  import scipy.stats
  from dowhy.utils.api import parse_state
label_desc: Use image node_id 3 for calling a global function with example usage: perform_normal_distribution_test(estimate, simulations) and returns: p_value