code: def load_asdf(asdf_obj, data_key='sci', wcs_key='wcs', header_key='meta'):
      
      asdf_keys = asdf_obj.keys()
  
      if wcs_key in asdf_keys:
          wcs = asdf_obj[wcs_key]
      else:
          wcs = None
  
      if header_key in asdf_keys:
          ahdr = asdf_obj[header_key]
      else:
          ahdr = {}
  
      # TODO: What about non-image ASDF data, such as table?
      if data_key in asdf_keys:
          data = np.asarray(asdf_obj[data_key])
      else:
          data = None
  
      return data, wcs, ahdr
docs: Load from an ASDF object.
  
      Parameters
      ----------
      asdf_obj : obj
          ASDF or ASDF-in-FITS object.
  
      data_key, wcs_key, header_key : str
          Key values to specify where to find data, WCS, and header
          in ASDF.
  
      Returns
      -------
      data : ndarray or `None`
          Image data, if found.
  
      wcs : obj or `None`
          GWCS object or models, if found.
  
      ahdr : dict
          Header containing metadata.