docs: def check_HDF5_arrays(hdf5_file, N, convergence_iter):
      """Check that the HDF5 data structure of file handle 'hdf5_file' 
          has all the required nodes organizing the various two-dimensional 
          arrays required for Affinity Propagation clustering 
          ('Responsibility' matrix, 'Availability', etc.).
      
      Parameters
      ----------
      hdf5_file : string or file handle
          Name of the Hierarchical Data Format under consideration.
          
      N : int
          The number of samples in the data-set that will undergo Affinity Propagation
          clustering.
      
      convergence_iter : int
          Number of iterations with no change in the number of estimated clusters 
          that stops the convergence.
      """
      
      Worker.hdf5_lock.acquire()
  
      with tables.open_file(hdf5_file, 'r+') as fileh:
          if not hasattr(fileh.root, 'aff_prop_group'):
              fileh.create_group(fileh.root, "aff_prop_group")
  
          atom = tables.Float32Atom()
          filters = None
          #filters = tables.Filters(5, 'blosc')
              
          for feature in ('availabilities', 'responsibilities',
                              'similarities', 'temporaries'):
              if not hasattr(fileh.root.aff_prop_group, feature):
                  fileh.create_carray(fileh.root.aff_prop_group, feature, 
                           atom, (N, N), "Matrix of {0} for affinity "
                           "propagation clustering".format(feature), 
                           filters = filters)
  
          if not hasattr(fileh.root.aff_prop_group, 'parallel_updates'):
              fileh.create_carray(fileh.root.aff_prop_group,
                       'parallel_updates', atom, (N, convergence_iter), 
                       "Matrix of parallel updates for affinity propagation "
                       "clustering", filters = filters)
                       
      Worker.hdf5_lock.release()