code: def calculateOverlapCurve(sp, inputVectors):
    
    columnNumber = np.prod(sp.getColumnDimensions())
    numInputVector, inputSize = inputVectors.shape
  
    outputColumns = np.zeros((numInputVector, columnNumber), dtype=uintType)
    outputColumnsCorrupted = np.zeros((numInputVector, columnNumber),
                                      dtype=uintType)
  
    noiseLevelList = np.linspace(0, 1.0, 21)
    inputOverlapScore = np.zeros((numInputVector, len(noiseLevelList)))
    outputOverlapScore = np.zeros((numInputVector, len(noiseLevelList)))
    for i in range(numInputVector):
      for j in range(len(noiseLevelList)):
        inputVectorCorrupted = copy.deepcopy(inputVectors[i][:])
        corruptSparseVector(inputVectorCorrupted, noiseLevelList[j])
  
        sp.compute(inputVectors[i][:], False, outputColumns[i][:])
        sp.compute(inputVectorCorrupted, False,
                   outputColumnsCorrupted[i][:])
  
        inputOverlapScore[i][j] = percentOverlap(inputVectors[i][:],
                                                 inputVectorCorrupted)
        outputOverlapScore[i][j] = percentOverlap(outputColumns[i][:],
                                                  outputColumnsCorrupted[i][:])
  
    return noiseLevelList, inputOverlapScore, outputOverlapScore
docs: Evalulate noise robustness of SP for a given set of SDRs
    @param sp a spatial pooler instance
    @param inputVectors list of arrays.
    :return: