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 local synchorization (local order parameter) for input phases for the specified network.
  @details This parameter is tend 1.0 when the oscillatory network close to local 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 local (partial) synchronization.
  @param[in] oscillatory_network (sync): Instance of oscillatory network whose connections are required for calculation.
  
  @return (double) Level of local synchronization (local order parameter).
docstr_tok: ["!","@","brief","Calculates","level","of","local","synchorization","(","local","order","parameter",")","for","input","phases","for","the","specified","network",".","@","details","This","parameter","is","tend","1.0","when","the","oscillatory","network","close","to","local","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","local","(","partial",")","synchronization",".","@","param","[","in","]","oscillatory_network","(","sync",")",":","Instance","of","oscillatory","network","whose","connections","are","required","for","calculation",".","@","return","(","double",")","Level","of","local","synchronization","(","local","order","parameter",")","."]
code: def calculate_local_sync_order(
      oscillator_phases, oscillatory_network
  ):
      """!
      @brief Calculates level of local synchorization (local order parameter) for input phases for the specified network.
      @details This parameter is tend 1.0 when the oscillatory network close to local 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 local (partial) synchronization.
      @param[in] oscillatory_network (sync): Instance of oscillatory network whose connections are required for calculation.
  
      @return (double) Level of local synchronization (local order parameter).
  
      """
  
      exp_amount = 0.0
      num_neigh = 0.0
  
      for i in range(0, len(oscillatory_network), 1):
          for j in range(0, len(oscillatory_network), 1):
              if oscillatory_network.has_connection(i, j) is True:
                  exp_amount += math.exp(
                      -abs(oscillator_phases[j] - oscillator_phases[i])
                  )
                  num_neigh += 1.0
  
      if num_neigh == 0:
          num_neigh = 1.0
  
      return exp_amount / num_neigh
  
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 2 for calling the order_estimator obj's underlying member method code with example usage: obj.calculate_local_sync_order(oscillator_phases, oscillatory_network) and returns: unknown