new_contents: def aop_h5refl2array(refl_filename):
      """read in NEON AOP reflectance hdf5 file, convert to a cleaned reflectance 
      array and return associated metadata (spatial information and band center 
      wavelengths)
             
      Parameters
      ----------
          refl_filename : string
              reflectance hdf5 file name, including full or relative path
  
      Returns 
      --------
      reflArray : ndarray
          array of reflectance values
      metadata: dictionary 
          associated metadata containing
              bad_band_window1 (tuple)
              bad_band_window2 (tuple)
              bands: # of bands (float)
              data ignore value: value corresponding to no data (float)
              epsg: coordinate system code (float)
              map info: coordinate system, datum & ellipsoid, pixel dimensions, and origin coordinates (string)
              reflectance scale factor: factor by which reflectance is scaled (float)
              wavelength: center wavelengths of bands (float)
              wavelength unit: 'm' (string)
      --------
      NOTE: This function applies to the NEON hdf5 format implemented in 2016, and should be used for
      data acquired 2016 and after. Data in earlier NEON hdf5 format (collected prior to 2016) is 
      expected to be re-processed after the 2018 flight season. 
      --------
      Example Execution:
      --------
      sercRefl, sercRefl_metadata = h5refl2array('NEON_D02_SERC_DP3_368000_4306000_reflectance.h5') """
      
      import h5py
      
      #Read in reflectance hdf5 file 
      hdf5_file = h5py.File(refl_filename,'r')
      
      #Get the site name
      file_attrs_string = str(list(hdf5_file.items()))
      file_attrs_string_split = file_attrs_string.split("'")
      sitename = file_attrs_string_split[1]
      
      #Extract the reflectance & wavelength datasets
      refl = hdf5_file[sitename]['Reflectance']
      
      reflData = refl['Reflectance_Data']
      reflRaw = refl['Reflectance_Data'].value
      
      #Create dictionary containing relevant metadata information
      metadata = {}
      metadata['map info'] = refl['Metadata']['Coordinate_System']['Map_Info'].value
      metadata['wavelength'] = refl['Metadata']['Spectral_Data']['Wavelength'].value
  
      #Extract no data value & scale factor
      metadata['data ignore value'] = float(reflData.attrs['Data_Ignore_Value'])
      metadata['reflectance scale factor'] = float(reflData.attrs['Scale_Factor'])
      #metadata['interleave'] = reflData.attrs['Interleave']
      
      #Apply no data value
      reflClean = reflRaw.astype(float)
      arr_size = reflClean.shape
      if metadata['data ignore value'] in reflRaw:
          print('% No Data: ',np.round(np.count_nonzero(reflClean==metadata['data ignore value'])*100/(arr_size[0]*arr_size[1]*arr_size[2]),1))
          nodata_ind = np.where(reflClean==metadata['data ignore value'])
          reflClean[nodata_ind]=np.nan 
      
      #Apply scale factor
      reflArray = reflClean/metadata['reflectance scale factor']
      
      #Extract spatial extent from attributes
      metadata['spatial extent'] = reflData.attrs['Spatial_Extent_meters']
      
      #Extract bad band windows
      metadata['bad band window1'] = (refl.attrs['Band_Window_1_Nanometers'])
      metadata['bad band window2'] = (refl.attrs['Band_Window_2_Nanometers'])
      
      #Extract projection information
      #metadata['projection'] = refl['Metadata']['Coordinate_System']['Proj4'].value
      metadata['epsg'] = int(refl['Metadata']['Coordinate_System']['EPSG Code'].value)
      
      #Extract map information: spatial extent & resolution (pixel size)
      mapInfo = refl['Metadata']['Coordinate_System']['Map_Info'].value
      
      hdf5_file.close        
      
      return reflArray, metadata
  
subject: Add Bridget function code to extra