code: def experimentVaryingSynapseSampling(expParams,
                                       sampleSizeDistalList,
                                       sampleSizeProximalList):
    
    numRpts = 20
    df = None
    args = []
    for sampleSizeProximal in sampleSizeProximalList:
      for sampleSizeDistal in sampleSizeDistalList:
  
        for rpt in range(numRpts):
          l4Params = getL4Params()
          l2Params = getL2Params()
          l2Params["sampleSizeProximal"] = sampleSizeProximal
          l2Params["minThresholdProximal"] = sampleSizeProximal
          l2Params["sampleSizeDistal"] = sampleSizeDistal
          l2Params["activationThresholdDistal"] = sampleSizeDistal
  
          args.append(
            {
              "numObjects": expParams['numObjects'],
              "numLocations": expParams['numLocations'],
              "numFeatures": expParams['numFeatures'],
              "numColumns": expParams['numColumns'],
              "trialNum": rpt,
              "l4Params": l4Params,
              "l2Params": l2Params,
              "profile": True,
              "objectSeed": rpt,
            }
          )
  
    pool = Pool(processes=expParams['numWorkers'])
    result = pool.map(runExperiment, args)
  
    #
    #       if df is None:
    #         df = pd.DataFrame.from_dict(result, orient='index')
    #       else:
    #         df = pd.concat([df, pd.DataFrame.from_dict(result, orient='index')], axis=1)
    #
    # df = df.transpose()
    return result
docs: Test multi-column convergence with varying amount of proximal/distal sampling
  
    :return: