class_docstr: !
  @brief Class represents clustering algorithm SYNC-SOM. SYNC-SOM is bio-inspired algorithm that is based on oscillatory network 
         that uses self-organized feature map as the first layer.
         
  Example:
  @code
      # read sample for clustering
      sample = read_sample(file);
      
      # create oscillatory network for cluster analysis where the first layer has 
      # size 10x10 and connectivity radius for objects 1.0.
      network = syncsom(sample, 10, 10, 1.0);
      
      # simulate network (perform cluster analysis) and collect output dynamic
      (dyn_time, dyn_phase) = network.process(True, 0.998);
      
      # obtain encoded clusters
      encoded_clusters = network.get_som_clusters();
      
      # obtain real clusters
      clusters = network.get_clusters();
      
      # show the first layer of the network
      network.show_som_layer();
      
      # show the second layer of the network
      network.show_sync_layer();
  @endcode
class_docstr_tok: ["!","@","brief","Class","represents","clustering","algorithm","SYNC-SOM",".","SYNC-SOM","is","bio-inspired","algorithm","that","is","based","on","oscillatory","network","that","uses","self-organized","feature","map","as","the","first","layer",".","Example",":","@","code","#","read","sample","for","clustering","sample","=","read_sample","(","file",")",";","#","create","oscillatory","network","for","cluster","analysis","where","the","first","layer","has","#","size","10x10","and","connectivity","radius","for","objects","1.0.","network","=","syncsom","(","sample",",","10",",","10",",","1.0",")",";","#","simulate","network","(","perform","cluster","analysis",")","and","collect","output","dynamic","(","dyn_time",",","dyn_phase",")","=","network.process","(","True",",","0.998",")",";","#","obtain","encoded","clusters","encoded_clusters","=","network.get_som_clusters","(",")",";","#","obtain","real","clusters","clusters","=","network.get_clusters","(",")",";","#","show","the","first","layer","of","the","network","network.show_som_layer","(",")",";","#","show","the","second","layer","of","the","network","network.show_sync_layer","(",")",";","@","endcode"]
docstr: !
  @brief Searches for pair of objects that are encoded by specified neurons and that are connected in line with connectivity radius.
  
  @param[in] oscillator_index1 (uint): Index of the first oscillator in the second layer.
  @param[in] oscillator_index2 (uint): Index of the second oscillator in the second layer.
  
  @return (bool) True - if there is pair of connected objects encoded by specified oscillators.
docstr_tok: ["!","@","brief","Searches","for","pair","of","objects","that","are","encoded","by","specified","neurons","and","that","are","connected","in","line","with","connectivity","radius",".","@","param","[","in","]","oscillator_index1","(","uint",")",":","Index","of","the","first","oscillator","in","the","second","layer",".","@","param","[","in","]","oscillator_index2","(","uint",")",":","Index","of","the","second","oscillator","in","the","second","layer",".","@","return","(","bool",")","True","-","if","there","is","pair","of","connected","objects","encoded","by","specified","oscillators","."]
code: def __has_object_connection(
      self, oscillator_index1, oscillator_index2
  ):
      """!
      @brief Searches for pair of objects that are encoded by specified neurons and that are connected in line with connectivity radius.
  
      @param[in] oscillator_index1 (uint): Index of the first oscillator in the second layer.
      @param[in] oscillator_index2 (uint): Index of the second oscillator in the second layer.
  
      @return (bool) True - if there is pair of connected objects encoded by specified oscillators.
  
      """
      som_neuron_index1 = self._som_osc_table[oscillator_index1]
      som_neuron_index2 = self._som_osc_table[oscillator_index2]
  
      for index_object1 in self._som.capture_objects[som_neuron_index1]:
          for index_object2 in self._som.capture_objects[
              som_neuron_index2
          ]:
              distance = euclidean_distance_square(
                  self._data[index_object1], self._data[index_object2]
              )
              if distance <= self._radius:
                  return True
  
      return False
  
file_path: pyclustering/pyclustering/cluster/syncsom.py
imports: from pyclustering.cluster.encoder import type_encoding
  from pyclustering.cluster.syncnet import syncnet
  from pyclustering.nnet.som import som, type_conn
  from pyclustering.nnet import initial_type
  from pyclustering.utils import euclidean_distance_square
label_desc: Use image node_id 6 for calling the syncsom obj's underlying member method code with example usage: obj.__has_object_connection(oscillator_index1, oscillator_index2) and returns: False, True