code: def clients(self, protocol=None, groups=None):
      
  
      groups = self.__group_replace_eval_by_genuine__(groups)
      groups = self.check_parameters_for_validity(groups, "group", self.client_types())
      # List of the clients
      q = self.query(Client)
      if groups:
        q = q.filter(Client.stype.in_(groups))
      q = q.order_by(Client.id)
      return list(q)
docs: Returns a list of :py:class:`.Client` for the specific query by the user.
  
      Keyword Parameters:
  
      protocol
        Ignored.
  
      groups
        The groups (types) to which the clients belong either from ('Genuine', 'Impostor')
        Note that 'eval' is an alias for 'Genuine'.
        If no groups are specified, then both clients are impostors are listed.
  
      Returns: A list containing all the clients which have the given properties.