def METHOD_NAME(filename):
    '''Load an f32 file that has already been processed by the official matlab
    file converter.  That matlab data is saved to an m-file, which is then
    converted to a numpy '.npz' file.  This numpy file is the file actually
    loaded.  This function converts it to a neo block and returns the block.
    This block can be compared to the block produced by BrainwareF32IO to
    make sure BrainwareF32IO is working properly
    block = proc_f32(filename)
    filename: The file name of the numpy file to load.  It should end with
    '*_f32_py?.npz'. This will be converted to a neo 'file_origin' property
    with the value '*.f32', so the filename to compare should fit that pattern.
    'py?' should be 'py2' for the python 2 version of the numpy file or 'py3'
    for the python 3 version of the numpy file.
    example: filename = 'file1_f32_py2.npz'
             f32 file name = 'file1.f32'
    '''
    filenameorig = os.path.basename(filename[:-12] + '.f32')
    # create the objects to store other objects
    block = Block(file_origin=filenameorig)
    gr = Group(file_origin=filenameorig)
    block.groups.append(gr)
    try:
        with np.load(filename, allow_pickle=True) as f32obj:
            f32file = list(f32obj.items())[0][1].flatten()
    except OSError as exc:
        if 'as a pickle' in exc.message:
            block.check_relationships()
            return block
        else:
            raise
    sweeplengths = [res[0, 0].tolist() for res in f32file['sweeplength']]
    stims = [res.flatten().tolist() for res in f32file['stim']]
    sweeps = [res['spikes'].flatten() for res in f32file['sweep'] if res.size]
    fullf32 = zip(sweeplengths, stims, sweeps)
    for sweeplength, stim, sweep in fullf32:
        for trainpts in sweep:
            if trainpts.size:
                trainpts = trainpts.flatten().astype('float32')
            else:
                trainpts = []
            paramnames = ['Param%s' % i for i in range(len(stim))]
            params = dict(zip(paramnames, stim))
            train = SpikeTrain(trainpts, units=pq.ms,
                               t_start=0, t_stop=sweeplength,
                               file_origin=filenameorig)
            segment = Segment(file_origin=filenameorig, **params)
            segment.spiketrains = [train]
            gr.spiketrains.append(train)
            block.segments.append(segment)
    block.check_relationships()
    return block