# turn velocity inputs on
    if o.velON:
        ei_net.setVelocityCurrentInput_e()

    # animal position inputs (constant)
    pos = ConstPosInputs(0 + x_off[trial_idx], 0 + y_off[trial_idx])

    # place cells
    if o.pcON:
        # activate place cells (including start place cells))
        ei_net.setPlaceCells()
    # start place cells
    if o.spcON:
        # activate start place cells only
        ei_net.setStartPlaceCells(pos)

    # border cells
    if o.bcON:
        # create the border cells - "crosshair"
        arena_borders = [
            ((0.0 + x_off[trial_idx], 90.0), (0.0 + x_off[trial_idx], -90.0)),
            ((-90.0, 0.0 + y_off[trial_idx]), (90.0, 0.0 + y_off[trial_idx]))
        ]
        ei_net.create_border_cells(borders=arena_borders,
                                   N_per_border=o.bcNum,
                                   posIn=pos)
        # connect border cells according to chosen method
        if o.bcConnMethod == "line":
            ei_net.connect_border_cells_line_method(o.bc_conn_weight)
        elif o.bcConnMethod == "place":
    ei_net = BasicGridCellNetwork(
        o,
        simulationOpts=None,
        nrec_spikes=(nrec_spikes_e, nrec_spikes_i),
        stateRecParams=(stateMonParams, stateMonParams),
        rec_spikes_probabilistic=o.rec_spikes_probabilistic)

    if o.velON and not o.constantPosition:
        ei_net.setVelocityCurrentInput_e()
    if o.pcON:
        # This also sets the start PCs
        posIn = ConstPosInputs(0, 0) if o.constantPosition else None
        ei_net.setPlaceCells(posIn=posIn)
    else:
        # Here the start PCs must be set explicitly
        ei_net.setStartPlaceCells(ConstPosInputs(0, 0))
    if o.ipc_ON:
        if o.constantPosition:
            raise RuntimeError("Place cells connected to I cells cannot be "
                               "used when the constantPosition parameter is "
                               "ON.")
        ei_net.setIPlaceCells()

    d['net_params'] = ei_net.getNetParams()  # Common settings will stay
    d.flush()

    try:
        ei_net.simulate(o.time, printTime=o.printTime)
    except NESTError as e:
        print("Simulation interrupted. Message: {0}".format(str(e)))
        print("Trying to save the simulated data if possible...")
    d['invalidated'] = 1
    ei_net = BasicGridCellNetwork(o, simulationOpts=None,
                                  nrec_spikes=(nrec_spikes_e, nrec_spikes_i),
                                  stateRecParams=(stateMonParams,
                                                  stateMonParams),
                                  rec_spikes_probabilistic=o.rec_spikes_probabilistic)

    if o.velON and not o.constantPosition:
        ei_net.setVelocityCurrentInput_e()
    if o.pcON:
        # This also sets the start PCs
        posIn = ConstPosInputs(0, 0) if o.constantPosition else None
        ei_net.setPlaceCells(posIn=posIn)
    else:
        # Here the start PCs must be set explicitly
        ei_net.setStartPlaceCells(ConstPosInputs(0, 0))
    if o.ipc_ON:
        if o.constantPosition:
            raise RuntimeError("Place cells connected to I cells cannot be "
                               "used when the constantPosition parameter is "
                               "ON.")
        ei_net.setIPlaceCells()

    d['net_params'] = ei_net.getNetParams()  # Common settings will stay
    d.flush()

    try:
        ei_net.simulate(o.time, printTime=o.printTime)
    except NESTError as e:
        print("Simulation interrupted. Message: {0}".format(str(e)))
        print("Trying to save the simulated data if possible...")