code: def compute(self,
                activeColumns,
                basalInput,
                apicalInput=(),
                basalGrowthCandidates=None,
                apicalGrowthCandidates=None,
                learn=True):
      
      activeColumns = np.asarray(activeColumns)
      basalInput = np.asarray(basalInput)
      apicalInput = np.asarray(apicalInput)
  
      if basalGrowthCandidates is None:
        basalGrowthCandidates = basalInput
      basalGrowthCandidates = np.asarray(basalGrowthCandidates)
  
      if apicalGrowthCandidates is None:
        apicalGrowthCandidates = apicalInput
      apicalGrowthCandidates = np.asarray(apicalGrowthCandidates)
  
      self.depolarizeCells(basalInput, apicalInput, learn)
      self.activateCells(activeColumns, basalInput, apicalInput,
                         basalGrowthCandidates, apicalGrowthCandidates, learn)
docs: Perform one timestep. Use the basal and apical input to form a set of
      predictions, then activate the specified columns, then learn.
  
      @param activeColumns (numpy array)
      List of active columns
  
      @param basalInput (numpy array)
      List of active input bits for the basal dendrite segments
  
      @param apicalInput (numpy array)
      List of active input bits for the apical dendrite segments
  
      @param basalGrowthCandidates (numpy array or None)
      List of bits that the active cells may grow new basal synapses to.
      If None, the basalInput is assumed to be growth candidates.
  
      @param apicalGrowthCandidates (numpy array or None)
      List of bits that the active cells may grow new apical synapses to
      If None, the apicalInput is assumed to be growth candidates.
  
      @param learn (bool)
      Whether to grow / reinforce / punish synapses