def get(protocol, subset, classes=CLASSES, variables=VARIABLES):
  '''Returns the data subset given a particular protocol


  Parameters

    protocol (string): one of the valid protocols supported by this interface

    subset (string): one of 'train' or 'test'

    classes (list of string): a list of strings containing the names of the
      classes from which you want to have the data from

    variables (list of strings): a list of strings containg the names of the
      variables (features) you want to have data from


  Returns:

    data (numpy.ndarray): The data for all the classes and variables nicely
      packed into one numpy 3D array. One depth represents the data for one
      class, one row is one example, one column a given feature.

  '''

  retval = split_data(bob.db.iris.data(), subset, PROTOCOLS[protocol])

  # filter variables (features)
  varindex = [VARIABLES.index(k) for k in variables]

  # filter class names and variable indexes at the same time
  retval = dict([(k, retval[k][:,varindex]) for k in classes])

  # squash the data
  return numpy.array([retval[k] for k in classes])
Returns the data subset given a particular protocol


  Parameters

    protocol (string): one of the valid protocols supported by this interface

    subset (string): one of 'train' or 'test'

    classes (list of string): a list of strings containing the names of the
      classes from which you want to have the data from

    variables (list of strings): a list of strings containg the names of the
      variables (features) you want to have data from


  Returns:

    data (numpy.ndarray): The data for all the classes and variables nicely
      packed into one numpy 3D array. One depth represents the data for one
      class, one row is one example, one column a given feature.