def compute(self, sensorToBodyByColumn, sensorToSpecificObjectByColumn):
    votesByCell = np.zeros(self.cellCount, dtype="int")
    self.activeSegmentsByColumn = []
    for (connections,
         activeSensorToBodyCells,
         activeSensorToSpecificObjectCells) in zip(self.connectionsByColumn,
                                                   sensorToBodyByColumn,
                                                   sensorToSpecificObjectByColumn):
      overlaps = connections.computeActivity({
        "sensorToBody": activeSensorToBodyCells,
        "sensorToSpecificObject": activeSensorToSpecificObjectCells,
      })
      activeSegments = np.where(overlaps >= 2)[0]
      votes = connections.mapSegmentsToCells(activeSegments)
      votes = np.unique(votes)
      votesByCell[votes] += 1
      self.activeSegmentsByColumn.append(activeSegments)
    candidates = np.where(votesByCell == np.max(votesByCell))[0]
    self.activeCells = np.intersect1d(self.activeCells, candidates)
    if self.activeCells.size == 0:
      self.activeCells = candidates
    self.inhibitedCells = np.setdiff1d(np.where(votesByCell > 0)[0],
                                       self.activeCells)