code: def createL2456Columns(network, networkConfig):
    
  
    # Create each column
    numCorticalColumns = networkConfig["numCorticalColumns"]
    for i in xrange(numCorticalColumns):
      networkConfigCopy = copy.deepcopy(networkConfig)
      randomSeedBase = networkConfigCopy["randomSeedBase"]
      networkConfigCopy["L2Params"]["seed"] = randomSeedBase + i
      networkConfigCopy["L4Params"]["seed"] = randomSeedBase + i
      networkConfigCopy["L5Params"]["seed"] = randomSeedBase + i
      networkConfigCopy["L6Params"]["seed"] = randomSeedBase + i
      networkConfigCopy["L2Params"][
        "numOtherCorticalColumns"] = numCorticalColumns - 1
      networkConfigCopy["L5Params"][
        "numOtherCorticalColumns"] = numCorticalColumns - 1
  
      suffix = "_" + str(i)
      network = _createL2456Column(network, networkConfigCopy, suffix)
  
    # Now connect the L2 columns laterally to every other L2 column, and
    # the same for L5 columns.
    for i in range(networkConfig["numCorticalColumns"]):
      suffixSrc = "_" + str(i)
      for j in range(networkConfig["numCorticalColumns"]):
        if i != j:
          suffixDest = "_" + str(j)
          network.link(
              "L2Column" + suffixSrc, "L2Column" + suffixDest,
              "UniformLink", "",
              srcOutput="feedForwardOutput", destInput="lateralInput")
          network.link(
              "L5Column" + suffixSrc, "L5Column" + suffixDest,
              "UniformLink", "",
              srcOutput="feedForwardOutput", destInput="lateralInput")
  
    enableProfiling(network)
  
    return network
docs: Create a network consisting of multiple L2456 columns as described in
    the file comments above.