def write_fid_lowmem(filename, dic, data, torder='f', repack=False,
                     overwrite=False):
    # convert 1D data to 2D
    if data.ndim == 1:
        data = data.reshape((1, data.shape[0]))

    t2i = torder2t2i(torder)

    # verify data and dic shapes
    if data.shape[-1] != (dic["np"] // 2):
        warn("data and np size mismatch")
        if correct:
            dic['np'] = int(data.shape[1] * 2)
    nblocks = int(reduce(lambda x, y: x * y, data.shape[:-1]))
    if nblocks != dic["nblocks"]:
        warn("data and block size mismatch")
        if correct:
            dic['nblocks'] = nblocks

    # open file for writing
    f = fileiobase.open_towrite(filename, overwrite=overwrite)

    if repack:
        dic = repack_fileheader(dic)

    # write the fileheader to file
    put_fileheader(f, dic2fileheader(dic))

    # determind data type
    dt = find_dtype(dic)

    if "blockheader" in dic and len(dic["blockheader"]) == dic["nblocks"]:
        for ntrace in range(nblocks):
            if repack:
                bh = dic2blockheader(repack_blockheader(dic["blockheader"][0]))
            else:
                bh = dic2blockheader(dic["blockheader"][0])

            tup = t2i(data.shape[:-1], ntrace)
            trace = np.array(interleave_data(data[tup]), dtype=dt)
            put_block(f, trace, dic["nbheaders"], bh)

    else:   # create a generic blockheader
        bh = dic2blockheader(make_blockheader(dic, 1))
        for ntrace in range(nblocks):
            bh[2] = int(ntrace + 1)
            tup = t2i(data.shape[:-1], ntrace)
            trace = np.array(interleave_data(data[tup]), dtype=dt)
            put_block(f, trace, dic["nbheaders"], bh)
    f.close()
    return


#####################
# get/put functions #
#####################
Constructs new :class:`AnalogSignal` from data.
dataset/ETHPy150Open jjhelmus/nmrglue/nmrglue/fileio/varian.py/write_fid_lowmem--crossover with--dataset/ETHPy150Open NeuralEnsemble/python-neo/neo/core/analogsignal.py/AnalogSignal.__new__