code: def hash_vector(self, v, querying=False):
          
  
          bucket_keys = []
  
          if querying:
              # If we are querying, use the permuted indexes to get bucket keys
              for child_hash in self.child_hashes:
                  lshash = child_hash['hash']
                  # Make sure the permuted index for this hash is existing
                  if not lshash.hash_name in self.permutation.permutedIndexs:
                      raise AttributeError('Permuted index is not existing for hash with name %s' % lshash.hash_name)
  
                  # Get regular bucket keys from hash
                  for bucket_key in lshash.hash_vector(v, querying):
                      #print 'Regular bucket key %s' % bucket_key
                      # Get neighbour keys from permuted index
                      neighbour_keys = self.permutation.get_neighbour_keys(lshash.hash_name,bucket_key)
                      # Add them to result, but prefix with hash name
                      for n in neighbour_keys:
                          bucket_keys.append(lshash.hash_name+'_'+n)
  
          else:
              # If we are indexing (storing) just use child hashes without permuted index
              for child_hash in self.child_hashes:
                  lshash = child_hash['hash']
  
                  # Get regular bucket keys from hash
                  for bucket_key in lshash.hash_vector(v, querying):
                      # Register bucket key in child hash dict
                      child_hash['bucket_keys'][bucket_key] = bucket_key
                      # Append bucket key to result prefixed with child hash name
                      bucket_keys.append(lshash.hash_name+'_'+bucket_key)
  
          # Return all the bucket keys
          return bucket_keys
docs: Hashes the vector and returns the bucket key as string.