def evaluate(self, frame):
    '\n        Evaluate a :py:class:`Selection` for a given :py:class:`Frame`, and\n        return a list of matching atoms, either as a list of index or a list\n        of tuples of indexes.\n        '
    matching = c_uint64()
    self.ffi.chfl_selection_evaluate(self.mut_ptr, frame.ptr, matching)
    matches = np.zeros(matching.value, chfl_match)
    self.ffi.chfl_selection_matches(self.mut_ptr, matches, matching)
    size = self.size
    result = []
    for match in matches:
        assert (match[0] == size)
        atoms = match[1]
        if (size == 1):
            result.append(atoms[0])
        elif (size == 2):
            result.append((atoms[0], atoms[1]))
        elif (size == 3):
            result.append((atoms[0], atoms[1], atoms[2]))
        elif (size == 4):
            result.append((atoms[0], atoms[1], atoms[2], atoms[3]))
    return result
Evaluate a :py:class:`Selection` for a given :py:class:`Frame`, and
return a list of matching atoms, either as a list of index or a list
of tuples of indexes.
def evaluate(self, frame):
    '\n        Evaluate a :py:class:`Selection` for a given :py:class:`Frame`, and\n        return a list of matching atoms, either as a list of index or a list\n        of tuples of indexes.\n        '
    matching = c_uint64()
    self.ffi.chfl_selection_evaluate(self.mut_ptr, frame.ptr, matching)
    matches = np.zeros(matching.value, chfl_match)
    self.ffi.chfl_selection_matches(self.mut_ptr, matches, matching)
    size = self.size
    result = []
    for match in matches:
        assert (match[0] == size)
        atoms = match[1]
        if (size == 1):
            result.append(atoms[0])
        elif (size == 2):
            result.append((atoms[0], atoms[1]))
        elif (size == 3):
            result.append((atoms[0], atoms[1], atoms[2]))
        elif (size == 4):
            result.append((atoms[0], atoms[1], atoms[2], atoms[3]))
    return result