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 Calculates new phases for oscillators in the network in line with current step.
  
  @param[in] solution (solve_type): Type solver of the differential equation.
  @param[in] t (double): Time of simulation.
  @param[in] step (double): Step of solution at the end of which states of oscillators should be calculated.
  @param[in] int_step (double): Step differentiation that is used for solving differential equation.
  
  @return (list) New states (phases) for oscillators.
docstr_tok: ["!","@","brief","Calculates","new","phases","for","oscillators","in","the","network","in","line","with","current","step",".","@","param","[","in","]","solution","(","solve_type",")",":","Type","solver","of","the","differential","equation",".","@","param","[","in","]","t","(","double",")",":","Time","of","simulation",".","@","param","[","in","]","step","(","double",")",":","Step","of","solution","at","the","end","of","which","states","of","oscillators","should","be","calculated",".","@","param","[","in","]","int_step","(","double",")",":","Step","differentiation","that","is","used","for","solving","differential","equation",".","@","return","(","list",")","New","states","(","phases",")","for","oscillators","."]
code: def _calculate_phases(self, solution, t, step, int_step):
      """!
      @brief Calculates new phases for oscillators in the network in line with current step.
  
      @param[in] solution (solve_type): Type solver of the differential equation.
      @param[in] t (double): Time of simulation.
      @param[in] step (double): Step of solution at the end of which states of oscillators should be calculated.
      @param[in] int_step (double): Step differentiation that is used for solving differential equation.
  
      @return (list) New states (phases) for oscillators.
  
      """
  
      next_phases = [0.0] * self._num_osc
      # new oscillator _phases
  
      for index in range(0, self._num_osc, 1):
          if solution == solve_type.FAST:
              result = self._phases[index] + self._phase_kuramoto(
                  self._phases[index], 0, index
              )
              next_phases[index] = self._phase_normalization(result)
  
          elif (solution == solve_type.RK4) or (
              solution == solve_type.RKF45
          ):
              result = odeint(
                  self._phase_kuramoto,
                  self._phases[index],
                  numpy.arange(t - step, t, int_step),
                  (index,),
              )
              next_phases[index] = self._phase_normalization(
                  result[len(result) - 1][0]
              )
  
          else:
              raise NameError(
                  "Solver '" + str(solution) + "' is not supported"
              )
  
      return next_phases
  
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 9 for calling the sync_network obj's underlying member method code with example usage: obj._calculate_phases(solution, t, step, int_step) and returns: next_phases