code: def _calculatePredictedCells(self, activeBasalSegments, activeApicalSegments):
      
  
      cellsForBasalSegments = self.basalConnections.mapSegmentsToCells(
        activeBasalSegments)
      cellsForApicalSegments = self.apicalConnections.mapSegmentsToCells(
        activeApicalSegments)
  
      fullyDepolarizedCells = np.intersect1d(cellsForBasalSegments,
                                             cellsForApicalSegments)
      partlyDepolarizedCells = np.setdiff1d(cellsForBasalSegments,
                                            fullyDepolarizedCells)
  
      inhibitedMask = np.in1d(partlyDepolarizedCells / self.cellsPerColumn,
                              fullyDepolarizedCells / self.cellsPerColumn)
      predictedCells = np.append(fullyDepolarizedCells,
                                 partlyDepolarizedCells[~inhibitedMask])
  
      if self.useApicalTiebreak == False:
          predictedCells = cellsForBasalSegments
  
      return predictedCells
docs: Calculate the predicted cells, given the set of active segments.
  
      An active basal segment is enough to predict a cell.
      An active apical segment is *not* enough to predict a cell.
  
      When a cell has both types of segments active, other cells in its minicolumn
      must also have both types of segments to be considered predictive.
  
      @param activeBasalSegments (numpy array)
      @param activeApicalSegments (numpy array)
  
      @return (numpy array)