class_docstr: !
  @brief Provides services to calculate order parameter and local order parameter that are used
          for synchronization level estimation.
docstr: !
  @brief Calculates level of global synchronization (order parameter) for input phases.
  @details This parameter is tend 1.0 when the oscillatory network close to global synchronization and it tend to 0.0 when 
            desynchronization is observed in the network.
  
  @param[in] oscillator_phases (list): List of oscillator phases that are used for level of global synchronization.
  
  @return (double) Level of global synchronization (order parameter).
  
  @see calculate_order_parameter()
docstr_tok: ["!","@","brief","Calculates","level","of","global","synchronization","(","order","parameter",")","for","input","phases",".","@","details","This","parameter","is","tend","1.0","when","the","oscillatory","network","close","to","global","synchronization","and","it","tend","to","0.0","when","desynchronization","is","observed","in","the","network",".","@","param","[","in","]","oscillator_phases","(","list",")",":","List","of","oscillator","phases","that","are","used","for","level","of","global","synchronization",".","@","return","(","double",")","Level","of","global","synchronization","(","order","parameter",")",".","@","see","calculate_order_parameter","(",")"]
code: def calculate_sync_order(oscillator_phases):
      """!
      @brief Calculates level of global synchronization (order parameter) for input phases.
      @details This parameter is tend 1.0 when the oscillatory network close to global synchronization and it tend to 0.0 when
                desynchronization is observed in the network.
  
      @param[in] oscillator_phases (list): List of oscillator phases that are used for level of global synchronization.
  
      @return (double) Level of global synchronization (order parameter).
  
      @see calculate_order_parameter()
  
      """
  
      exp_amount = 0.0
      average_phase = 0.0
  
      for phase in oscillator_phases:
          exp_amount += math.expm1(abs(1j * phase))
          average_phase += phase
  
      exp_amount /= len(oscillator_phases)
      average_phase = math.expm1(
          abs(1j * (average_phase / len(oscillator_phases)))
      )
  
      return abs(average_phase) / abs(exp_amount)
  
imports: import math
  import numpy
  import random
  import matplotlib.pyplot
  import matplotlib.animation
  import pyclustering.core.sync_wrapper
  from pyclustering.core.wrapper import ccore_library
  from scipy.integrate import odeint
  from pyclustering.nnet import network, conn_represent, conn_type, initial_type, solve_type
  from pyclustering.utils import pi, draw_dynamics, draw_dynamics_set, set_ax_param
label_desc: Use image node_id 1 for calling the order_estimator obj's underlying member method code with example usage: obj.calculate_sync_order(oscillator_phases) and returns: unknown