def _adaptSynapses(self, inputVector, activeColumns):
inputIndices = numpy.where(inputVector > <NUM_LIT:0>)[<NUM_LIT:0>]<EOL>permChanges = numpy.zeros(self._numInputs, dtype=realDType)<EOL>permChanges.fill(-<NUM_LIT:1> * self._synPermInactiveDec)<EOL>permChanges[inputIndices] = self._synPermActiveInc<EOL>for columnIndex in activeColumns:<EOL><INDENT>perm = self._permanences[columnIndex]<EOL>maskPotential = numpy.where(self._potentialPools[columnIndex] > <NUM_LIT:0>)[<NUM_LIT:0>]<EOL>perm[maskPotential] += permChanges[maskPotential]<EOL>self._updatePermanencesForColumn(perm, columnIndex, raisePerm=True)<EOL><DEDENT>
The primary method in charge of learning. Adapts the permanence values of
the synapses based on the input vector, and the chosen columns after
inhibition round. Permanence values are increased for synapses connected to
input bits that are turned on, and decreased for synapses connected to
inputs bits that are turned off.

Parameters:
----------------------------
:param inputVector:
                A numpy array of 0's and 1's that comprises the input to
                the spatial pooler. There exists an entry in the array
                for every input bit.
:param activeColumns:
                An array containing the indices of the columns that
                survived inhibition.