class_docstr: !
  @brief Model of phase oscillatory network for pattern recognition that is based on the Kuramoto model.
  @details The model uses second-order and third-order modes of the Fourier components.
  
  Example:
  @code
      # Network size should be equal to size of pattern for learning.
      net = syncpr(size_network, 0.3, 0.3);
      
      # Train network using list of patterns (input images).
      net.train(image_samples);
      
      # Recognize image using 10 steps during 10 seconds of simulation.
      sync_output_dynamic = net.simulate(10, 10, pattern, solve_type.RK4, True);
      
      # Display output dynamic.
      syncpr_visualizer.show_output_dynamic(sync_output_dynamic);
      
      # Display evolution of recognition of the pattern.
      syncpr_visualizer.show_pattern(sync_output_dynamic, image_height, image_width);
  
  @endcode
class_docstr_tok: ["!","@","brief","Model","of","phase","oscillatory","network","for","pattern","recognition","that","is","based","on","the","Kuramoto","model",".","@","details","The","model","uses","second-order","and","third-order","modes","of","the","Fourier","components",".","Example",":","@","code","#","Network","size","should","be","equal","to","size","of","pattern","for","learning",".","net","=","syncpr","(","size_network",",","0.3",",","0.3",")",";","#","Train","network","using","list","of","patterns","(","input","images",")",".","net.train","(","image_samples",")",";","#","Recognize","image","using","10","steps","during","10","seconds","of","simulation",".","sync_output_dynamic","=","net.simulate","(","10",",","10",",","pattern",",","solve_type.RK4",",","True",")",";","#","Display","output","dynamic",".","syncpr_visualizer.show_output_dynamic","(","sync_output_dynamic",")",";","#","Display","evolution","of","recognition","of","the","pattern",".","syncpr_visualizer.show_pattern","(","sync_output_dynamic",",","image_height",",","image_width",")",";","@","endcode"]
docstr: !
  @brief Calculates function of the memorized pattern without any pattern validation.
  
  @param[in] pattern (list): Pattern for recognition represented by list of features that are equal to [-1; 1].
  
  @return (double) Order of memory for the specified pattern.
          
docstr_tok: ["!","@","brief","Calculates","function","of","the","memorized","pattern","without","any","pattern","validation",".","@","param","[","in","]","pattern","(","list",")",":","Pattern","for","recognition","represented","by","list","of","features","that","are","equal","to","[","-1",";","1","]",".","@","return","(","double",")","Order","of","memory","for","the","specified","pattern","."]
code: def __calculate_memory_order(self, pattern):
      """!
      @brief Calculates function of the memorized pattern without any pattern validation.
  
      @param[in] pattern (list): Pattern for recognition represented by list of features that are equal to [-1; 1].
  
      @return (double) Order of memory for the specified pattern.
  
      """
  
      memory_order = 0.0
      for index in range(len(self)):
          memory_order += pattern[index] * cmath.exp(
              1j * self._phases[index]
          )
  
      memory_order /= len(self)
      return abs(memory_order)
  
imports: import math
  import cmath
  import numpy
  from pyclustering.nnet import solve_type, initial_type, conn_type, conn_represent
  from pyclustering.nnet.sync import sync_network, sync_dynamic, sync_visualizer
  import pyclustering.core.syncpr_wrapper
  from pyclustering.core.wrapper import ccore_library
  from PIL import Image
  import matplotlib.pyplot
  import matplotlib.animation
label_desc: Use image node_id 9 for calling the syncpr obj's underlying member method code with example usage: obj.__calculate_memory_order(pattern) and returns: abs