def get_ipr_dtype_list(endianess='<', version=333):
    """
    Get the data type list for an IPR image description file.
    Further information about the file format is available `here
    <https://github.com/hyperspy/hyperspy/files/29507/ImageIPR.pdf>`__.

    Table of header tags:
        -  version: 2 byte unsigned short; *Current version number: 334*
        -  imageType: 2 byte unsigned short; *0=empty; 1=electron; 2=xmap; 3=disk; 4=overlay*
        -  label: 8 byte char array; *Image label*
        -  sMin: 2 byte unsigned short; *Min collected signal*
        -  sMax: 2 byte unsigned short; *Max collected signal*
        -  color: 2 byte unsigned short; *color: 0=gray; 1=R; 2=G; 3=B; 4=Y; 5=M; 6=C; 8=overlay*
        -  presetMode: 2 byte unsigned short; *0=clock; 1=live*
        -  presetTime: 4 byte unsigned long; *Dwell time for x-ray (millisec)*
        -  dataType: 2 byte unsigned short; *0=ROI;  1=Net intensity; 2=K ratio; 3=Wt%;  4=Mthin2*
        -  timeConstantOld: 2 byte unsigned short; *Amplifier pulse processing time [usec]*
        -  reserved1: 2 byte short; *Not used*
        -  roiStartChan: 2 byte unsigned short; *ROI starting channel*
        -  roiEndChan: 2 byte unsigned short; *ROI ending channel*
        -  userMin: 2 byte short; *User Defined Min signal range*
        -  userMax: 2 byte short; *User Defined Max signal range*
        -  iADC: 2 byte unsigned short; *Electron detector number: 1; 2; 3; 4*
        -  reserved2: 2 byte short; *Not used*
        -  iBits: 2 byte unsigned short; *conversion type: 8; 12 (not used)*
        -  nReads: 2 byte unsigned short; *No. of reads per point*
        -  nFrames: 2 byte unsigned short; *No. of frames averaged (not used)*
        -  fDwell: 4 byte float; *Dwell time (not used)*
        -  accV: 2 byte unsigned short; *V_acc in units of 100V*
        -  tilt: 2 byte short; *Sample tilt [deg]*
        -  takeoff: 2 byte short; *Takeoff angle [deg]*
        -  mag: 4 byte unsigned long; *Magnification*
        -  wd: 2 byte unsigned short; *Working distance [mm]*
        -  mppX: 4 byte float; *Microns per pixel in X direction*
        -  mppY: 4 byte float; *Microns per pixel in Y direction*
        -  nTextLines: 2 byte unsigned short; *No. of comment lines *
        -  charText: (4 x 32) byte character array; *Comment text*
        -  reserved3: 4 byte float; *Not used*
        -  nOverlayElements: 2 byte unsigned short; *No. of overlay elements*
        -  overlayColors: 16 array of 2 byte unsigned short; *Overlay colors*

        # These two are specific to V334 of the file format, and are omitted
        # for compatibility with V333 of the IPR format
        -  timeConstantNew: 4 byte float; *Amplifier time constant [usec]*
        -  reserved4: 2 array of 4 byte float; *Not used*


    Parameters
    ----------
    endianess : char
        byte-order used to read the data
    version : float
        version of .ipr file to read (only 333 and 334 have been tested)
        Default is 333 to be as backwards-compatible as possible, but the
        file version can be read from the file anyway, so this parameter
        should always be set programmatically

    Returns
    -------
    dtype_list : list
        List of the data tags and data types that will be used by numpy to
        read an IPR file.
    """
    end = endianess
    dtype_list = [('version', end + 'u2'), ('imageType', end + 'u2'), (
        'label', end + 'a8'), ('sMin', end + 'u2'), ('sMax', end + 'u2'), (
        'color', end + 'u2'), ('presetMode', end + 'u2'), ('presetTime', 
        end + 'u4'), ('dataType', end + 'u2'), ('timeConstantOld', end +
        'u2'), ('reserved1', end + 'i2'), ('roiStartChan', end + 'u2'), (
        'roiEndChan', end + 'u2'), ('userMin', end + 'i2'), ('userMax', end +
        'i2'), ('iADC', end + 'u2'), ('reserved2', end + 'i2'), ('iBits', 
        end + 'u2'), ('nReads', end + 'u2'), ('nFrames', end + 'u2'), (
        'fDwell', end + 'f4'), ('accV', end + 'u2'), ('tilt', end + 'i2'),
        ('takeoff', end + 'i2'), ('mag', end + 'u4'), ('wd', end + 'u2'), (
        'mppX', end + 'f4'), ('mppY', end + 'f4'), ('nTextLines', end +
        'u2'), ('charText', end + '4a32'), ('reserved3', end + '4f4'), (
        'nOverlayElements', end + 'u2'), ('overlayColors', end + '16u2')]
    if version >= 334:
        dtype_list.extend([('timeConstantNew', end + 'f4'), ('reserved4', 
            end + '2f4')])
    return dtype_list
