code: def runSharedFeatures(noiseLevel=None, profile=False):
    
    exp = L4L2Experiment(
      "shared_features",
      enableLateralSP=True,
      enableFeedForwardSP=True
    )
  
    pairs = createThreeObjects()
    objects = createObjectMachine(
      machineType="simple",
      numInputBits=20,
      sensorInputSize=1024,
      externalInputSize=1024
    )
    for object in pairs:
      objects.addObject(object)
  
    exp.learnObjects(objects.provideObjectsToLearn())
    if profile:
      exp.printProfile()
  
    inferConfig = {
      "numSteps": 10,
      "noiseLevel": noiseLevel,
      "pairs": {
        0: zip(range(10), range(10))
      }
    }
  
    exp.infer(objects.provideObjectToInfer(inferConfig), objectName=0)
    if profile:
      exp.printProfile()
  
    exp.plotInferenceStats(
      fields=["L2 Representation",
              "Overlap L2 with object",
              "L4 Representation"],
    )
docs: Runs a simple experiment where three objects share a number of location,
    feature pairs.
  
    Parameters:
    ----------------------------
    @param    noiseLevel (float)
              Noise level to add to the locations and features during inference
  
    @param    profile (bool)
              If True, the network will be profiled after learning and inference