class_docstr: !
  @brief Model of oscillatory network that is based on the Kuramoto model of synchronization.
  
  @details CCORE option can be used to use the pyclustering core - C/C++ shared library for processing that significantly increases performance.
docstr: !
  @brief Constructor of oscillatory network is based on Kuramoto model.
  
  @param[in] num_osc (uint): Number of oscillators in the network.
  @param[in] weight (double): Coupling strength of the links between oscillators.
  @param[in] frequency (double): Multiplier of internal frequency of the oscillators.
  @param[in] type_conn (conn_type): Type of connection between oscillators in the network (all-to-all, grid, bidirectional list, etc.).
  @param[in] representation (conn_represent): Internal representation of connection in the network: matrix or list.
  @param[in] initial_phases (initial_type): Type of initialization of initial phases of oscillators (random, uniformly distributed, etc.).
  @param[in] ccore (bool): If True simulation is performed by CCORE library (C++ implementation of pyclustering).
docstr_tok: ["!","@","brief","Constructor","of","oscillatory","network","is","based","on","Kuramoto","model",".","@","param","[","in","]","num_osc","(","uint",")",":","Number","of","oscillators","in","the","network",".","@","param","[","in","]","weight","(","double",")",":","Coupling","strength","of","the","links","between","oscillators",".","@","param","[","in","]","frequency","(","double",")",":","Multiplier","of","internal","frequency","of","the","oscillators",".","@","param","[","in","]","type_conn","(","conn_type",")",":","Type","of","connection","between","oscillators","in","the","network","(","all-to-all",",","grid",",","bidirectional","list",",","etc.",")",".","@","param","[","in","]","representation","(","conn_represent",")",":","Internal","representation","of","connection","in","the","network",":","matrix","or","list",".","@","param","[","in","]","initial_phases","(","initial_type",")",":","Type","of","initialization","of","initial","phases","of","oscillators","(","random",",","uniformly","distributed",",","etc.",")",".","@","param","[","in","]","ccore","(","bool",")",":","If","True","simulation","is","performed","by","CCORE","library","(","C++","implementation","of","pyclustering",")","."]
code: def __init__(
      self,
      num_osc,
      weight=1,
      frequency=0,
      type_conn=conn_type.ALL_TO_ALL,
      representation=conn_represent.MATRIX,
      initial_phases=initial_type.RANDOM_GAUSSIAN,
      ccore=True,
  ):
      """!
      @brief Constructor of oscillatory network is based on Kuramoto model.
  
      @param[in] num_osc (uint): Number of oscillators in the network.
      @param[in] weight (double): Coupling strength of the links between oscillators.
      @param[in] frequency (double): Multiplier of internal frequency of the oscillators.
      @param[in] type_conn (conn_type): Type of connection between oscillators in the network (all-to-all, grid, bidirectional list, etc.).
      @param[in] representation (conn_represent): Internal representation of connection in the network: matrix or list.
      @param[in] initial_phases (initial_type): Type of initialization of initial phases of oscillators (random, uniformly distributed, etc.).
      @param[in] ccore (bool): If True simulation is performed by CCORE library (C++ implementation of pyclustering).
  
      """
  
      self._ccore_network_pointer = None
      # Pointer to CCORE Sync implementation of the network.
  
      if (ccore is True) and ccore_library.workable():
          self._ccore_network_pointer = wrapper.sync_create_network(
              num_osc, weight, frequency, type_conn, initial_phases
          )
          self._num_osc = num_osc
          self._conn_represent = conn_represent.MATRIX
  
      else:
          super().__init__(num_osc, type_conn, representation)
  
          self._weight = weight
  
          self._phases = list()
          self._freq = list()
  
          random.seed()
          for index in range(0, num_osc, 1):
              if initial_phases == initial_type.RANDOM_GAUSSIAN:
                  self._phases.append(random.random() * 2 * pi)
  
              elif initial_phases == initial_type.EQUIPARTITION:
                  self._phases.append(pi / num_osc * index)
  
              self._freq.append(random.random() * frequency)
  
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 to create a new sync_network object from inherited base classes: network with example: obj = sync_network(num_osc, weight, frequency, type_conn, representation, initial_phases, ccore)