def create_detops(header, DMS=False, read_mode=None, nint=None, ngroup=None,
    detector=None, wind_mode=None, xpix=None, ypix=None, x0=None, y0=None,
    nff=None):
    """Detector class from header
    
    Create a detector class based on header settings.
    Can override settings with a variety of keyword arguments.
    
    Parameters
    ----------
    header : obj
        Header from NIRCam FITS file
    DMS : bool
        Is header format from Data Management Systems? Otherwises, ISIM-like.
    
    Keyword Args
    ------------
    read_mode : str
        NIRCam Ramp Readout mode such as 'RAPID', 'BRIGHT1', etc.
    nint : int
        Number of integrations (ramps).
    ngroup : int
        Number of groups in a integration.
    detector : int, str
        NIRCam detector ID (481-490) or SCA ID (A1-B5).
    wind_mode : str
        Window mode type 'FULL', 'STRIPE', 'WINDOW'.
    xpix : int
        Size of window in x-pixels for frame time calculation.
    ypix : int
        Size of window in y-pixels for frame time calculation.
    x0 : int
        Lower-left x-coord position of detector window.
    y0 : int
        Lower-left y-coord position of detector window.
    nff : int
        Number of fast row resets.

    """
    detector = header['SCA_ID'] if detector is None else detector
    xpix = header['SUBSIZE1'] if DMS else header['NAXIS1'
        ] if xpix is None else xpix
    ypix = header['SUBSIZE2'] if DMS else header['NAXIS2'
        ] if ypix is None else ypix
    if x0 is None:
        x1 = header['SUBSTRT1'] if DMS else header['COLCORNR']
        x0 = x1 - 1
    if y0 is None:
        y1 = header['SUBSTRT2'] if DMS else header['ROWCORNR']
        y0 = y1 - 1
    if wind_mode is None:
        if DMS:
            if 'FULL' in header['SUBARRAY']:
                wind_mode = 'FULL'
            elif 'GRISM' in header['SUBARRAY']:
                wind_mode = 'STRIPE'
            else:
                wind_mode = 'WINDOW'
        elif not header['SUBARRAY']:
            wind_mode = 'FULL'
        elif 'DISABLE' in header['HWINMODE']:
            wind_mode = 'STRIPE'
        else:
            wind_mode = 'WINDOW'
    if DMS:
        hnames = ['READPATT', 'NINTS', 'NGROUPS']
    else:
        hnames = ['READOUT', 'NINT', 'NGROUP']
    read_mode = header[hnames[0]] if read_mode is None else read_mode
    nint = header[hnames[1]] if nint is None else nint
    ngroup = header[hnames[2]] if ngroup is None else ngroup
    ma_args = {'read_mode': read_mode, 'nint': nint, 'ngroup': ngroup}
    from pynrc.pynrc_core import DetectorOps
    return DetectorOps(detector, wind_mode, xpix, ypix, x0, y0, nff, **ma_args)
