Object that implement Graduation criteria to move between different tasks in a protocol.

class autopilot.tasks.graduation.Graduation[source]

Bases: object

Base Graduation object.

All Graduation objects need to populate PARAMS, COLS, and define an update method.


list – list of parameters to be defined

COLS = []

list – list of any data columns that this object should be given.


:param Row: Trial row

class autopilot.tasks.graduation.Accuracy(threshold=0.75, window=500, **kwargs)[source]

Bases: autopilot.tasks.graduation.Graduation

Graduate stage based on percent accuracy over some window of trials.

  • threshold (float) – Accuracy above this threshold triggers graduation
  • window (int) – number of trials to consider in the past.
  • **kwargs – should have ‘correct’ corresponding to the corrects/incorrects of the past.
PARAMS = ['threshold', 'window']
COLS = ['correct']

Get ‘correct’ from the row object. If this trial puts us over the threshold, return True, else False.

Parameters:row (Row) – Trial row
Returns:Did we graduate this time or not?
Return type:bool
class autopilot.tasks.graduation.NTrials(n_trials, current_trial=0, **kwargs)[source]

Bases: autopilot.tasks.graduation.Graduation

Graduate after doing n trials


counter (itertools.count) – Counts the trials.

  • n_trials (int) – Number of trials to graduate after
  • current_trial (int) – If not starting from zero, start from here
  • **kwargs
PARAMS = ['n_trials', 'current_trial']

If we’re past n_trials in this trial, return True, else False.

Parameters:row – ignored
Returns:Did we graduate or not?
Return type:bool
autopilot.tasks.graduation.GRAD_LIST = {'accuracy': <class 'autopilot.tasks.graduation.Accuracy'>, 'n_trials': <class 'autopilot.tasks.graduation.NTrials'>}

Mapping from string reference of graduation type to object.