def read_surfrad(filename, map_variables=True):
if filename.startswith('<STR_LIT>'):<EOL><INDENT>req = Request(filename)<EOL>response = urlopen(req)<EOL>file_buffer = io.StringIO(response.read().decode(errors='<STR_LIT:ignore>'))<EOL><DEDENT>else:<EOL><INDENT>file_buffer = open(filename, '<STR_LIT:r>')<EOL><DEDENT>station = file_buffer.readline()<EOL>file_metadata = file_buffer.readline()<EOL>metadata_list = file_metadata.split()<EOL>metadata = {}<EOL>metadata['<STR_LIT:name>'] = station.strip()<EOL>metadata['<STR_LIT>'] = float(metadata_list[<NUM_LIT:0>])<EOL>metadata['<STR_LIT>'] = float(metadata_list[<NUM_LIT:1>])<EOL>metadata['<STR_LIT>'] = float(metadata_list[<NUM_LIT:2>])<EOL>metadata['<STR_LIT>'] = int(metadata_list[-<NUM_LIT:1>])<EOL>metadata['<STR_LIT>'] = '<STR_LIT>'<EOL>data = pd.read_csv(file_buffer, delim_whitespace=True,<EOL>header=None, names=SURFRAD_COLUMNS)<EOL>file_buffer.close()<EOL>data = format_index(data)<EOL>missing = data == -<NUM_LIT><EOL>data = data.where(~missing, np.NaN)<EOL>if map_variables:<EOL><INDENT>data.rename(columns=VARIABLE_MAP, inplace=True)<EOL><DEDENT>return data, metadata<EOL>
Read in a daily NOAA SURFRAD[1] file.

    Parameters
    ----------
    filename: str
        Filepath or url.
    map_variables: bool
        When true, renames columns of the Dataframe to pvlib variable names
        where applicable. See variable SURFRAD_COLUMNS.

    Returns
    -------
    Tuple of the form (data, metadata).

    data: Dataframe
        Dataframe with the fields found below.
    metadata: dict
        Site metadata included in the file.

    Notes
    -----
    Metadata dictionary includes the following fields:

    ===============  ======  ===============
    Key              Format  Description
    ===============  ======  ===============
    station          String  site name
    latitude         Float   site latitude
    longitude        Float   site longitude
    elevation        Int     site elevation
    surfrad_version  Int     surfrad version
    tz               String  Timezone (UTC)
    ===============  ======  ===============

    Dataframe includes the following fields:

    =======================  ======  ==========================================
    raw, mapped              Format  Description
    =======================  ======  ==========================================
    **Mapped field names are returned when the map_variables argument is True**
    ---------------------------------------------------------------------------
    year                     int     year as 4 digit int
    jday                     int     day of year 1-365(or 366)
    month                    int     month (1-12)
    day                      int     day of month(1-31)
    hour                     int     hour (0-23)
    minute                   int     minute (0-59)
    dt                       float   decimal time i.e. 23.5 = 2330
    zen, solar_zenith        float   solar zenith angle (deg)
    **Fields below have associated qc flags labeled <field>_flag.**
    ---------------------------------------------------------------------------
    dw_solar, ghi            float   downwelling global solar(W/m^2)
    uw_solar                 float   updownwelling global solar(W/m^2)
    direct_n, dni            float   direct normal solar (W/m^2)
    diffuse, dhi             float   downwelling diffuse solar (W/m^2)
    dw_ir                    float   downwelling thermal infrared (W/m^2)
    dw_casetemp              float   downwelling IR case temp (K)
    dw_dometemp              float   downwelling IR dome temp (K)
    uw_ir                    float   upwelling thermal infrared (W/m^2)
    uw_casetemp              float   upwelling IR case temp (K)
    uw_dometemp              float   upwelling IR case temp (K)
    uvb                      float   global uvb (miliWatts/m^2)
    par                      float   photosynthetically active radiation(W/m^2)
    netsolar                 float   net solar (dw_solar - uw_solar) (W/m^2)
    netir                    float   net infrared (dw_ir - uw_ir) (W/m^2)
    totalnet                 float   net radiation (netsolar+netir) (W/m^2)
    temp, temp_air           float   10-meter air temperature (?C)
    rh, relative_humidity    float   relative humidity (%)
    windspd, wind_speed      float   wind speed (m/s)
    winddir, wind_direction  float   wind direction (deg, clockwise from north)
    pressure                 float   station pressure (mb)
    =======================  ======  ==========================================

    See README files located in the station directories in the SURFRAD
    data archives[2] for details on SURFRAD daily data files.

    References
    ----------
    [1] NOAA Earth System Research Laboratory Surface Radiation Budget Network
        `SURFRAD Homepage <https://www.esrl.noaa.gov/gmd/grad/surfrad/>`_
    [2] NOAA SURFRAD Data Archive
        `SURFRAD Archive <ftp://aftp.cmdl.noaa.gov/data/radiation/surfrad/>`_