docs: def setup(self, steps=None, drop_na=False, **kwargs):
          ''' Set up the sequence of steps for analysis.
  
          Args:
              steps (list): Optional list of steps to set up. Each element
                  must be either an int giving the index of the step in the
                  JSON config block list, or a str giving the (unique) name of
                  the step, as specified in the JSON config. Steps that do not
                  match either index or name will be skipped.
              drop_na (bool): Boolean indicating whether or not to automatically
                  drop events that have a n/a amplitude when reading in data
                  from event files.
          '''
  
          # In the beginning, there was nothing
          input_nodes = None
  
          # Use inputs from model, and update with kwargs
          selectors = self.model.get('input', {}).copy()
          selectors.update(kwargs)
  
          for i, b in enumerate(self.steps):
  
              # Skip any steps whose names or indexes don't match block list
              if steps is not None and i not in steps and b.name not in steps:
                  continue
  
              b.setup(input_nodes, drop_na=drop_na, **selectors)
              input_nodes = b.output_nodes