class_docstr: !
  @brief Performs analysis of output dynamic of the oscillatory network syncnet to extract information about cluster allocation.
class_docstr_tok: ["!","@","brief","Performs","analysis","of","output","dynamic","of","the","oscillatory","network","syncnet","to","extract","information","about","cluster","allocation","."]
docstr: !
  @brief Returns list of clusters in line with state of oscillators (phases).
  
  @param[in] eps (double): Tolerance that defines the maximum difference between phases of oscillators that belong to one cluster.
  @param[in] indexes (list): List of real object indexes and it should be equal to amount of oscillators (in case of 'None' - indexes are in range [0; amount_oscillators]).
  @param[in] iteration (uint): Iteration of simulation that should be used for allocation.
  
  @return (list) List of clusters, for example [ [cluster1], [cluster2], ... ].)
docstr_tok: ["!","@","brief","Returns","list","of","clusters","in","line","with","state","of","oscillators","(","phases",")",".","@","param","[","in","]","eps","(","double",")",":","Tolerance","that","defines","the","maximum","difference","between","phases","of","oscillators","that","belong","to","one","cluster",".","@","param","[","in","]","indexes","(","list",")",":","List","of","real","object","indexes","and","it","should","be","equal","to","amount","of","oscillators","(","in","case","of","'None","'","-","indexes","are","in","range","[","0",";","amount_oscillators","]",")",".","@","param","[","in","]","iteration","(","uint",")",":","Iteration","of","simulation","that","should","be","used","for","allocation",".","@","return","(","list",")","List","of","clusters",",","for","example","[","[","cluster1","]",",","[","cluster2","]",",","...","]",".",")"]
code: def allocate_clusters(self, eps=0.01, indexes=None, iteration=None):
      """!
      @brief Returns list of clusters in line with state of oscillators (phases).
  
      @param[in] eps (double): Tolerance that defines the maximum difference between phases of oscillators that belong to one cluster.
      @param[in] indexes (list): List of real object indexes and it should be equal to amount of oscillators (in case of 'None' - indexes are in range [0; amount_oscillators]).
      @param[in] iteration (uint): Iteration of simulation that should be used for allocation.
  
      @return (list) List of clusters, for example [ [cluster1], [cluster2], ... ].)
  
      """
  
      return self.allocate_sync_ensembles(eps, indexes, iteration)
  
imports: import math
  import matplotlib.pyplot
  import matplotlib.animation
  from pyclustering.cluster.encoder import type_encoding
  from pyclustering.cluster import cluster_visualizer
  from pyclustering.core.syncnet_wrapper import syncnet_create_network, syncnet_process, syncnet_destroy_network, syncnet_analyser_destroy
  from pyclustering.core.sync_wrapper import sync_connectivity_matrix
  from pyclustering.core.wrapper import ccore_library
  from pyclustering.nnet.sync import sync_dynamic, sync_network, sync_visualizer
  from pyclustering.nnet import conn_represent, initial_type, conn_type, solve_type
  from pyclustering.utils import euclidean_distance
label_desc: Use image node_id 3 for calling the syncnet_analyser obj's underlying member method code with example usage: obj.allocate_clusters(eps, indexes, iteration) and returns: self