<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def runSharedFeatures(noiseLevel=None, profile=False):
 """ 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 """

  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"],
  )