def METHOD_NAME(self, filename, vars_to_retrieve=None, vars_as_series=False):
    """Read Aeronet Sun V2 level 2 file
    Parameters
    ----------
    filename : str
        absolute path to filename to read
    vars_to_retrieve : :obj:`list`, optional
        list of str with variable names to read. If None, use
        :attr:`DEFAULT_VARS`
    vars_as_series : bool
        if True, the data columns of all variables in the result dictionary
        are converted into pandas Series objects
    Returns
    -------
    StationData
        dict-like object containing results
    Example
    -------
    >>> import pyaerocom.io.read_aeronet_sunv2
    >>> obj = pyaerocom.io.read_aeronet_sunv2.ReadAeronetSunV2()
    >>> files = obj.get_file_list()
    >>> filedata = obj.read_file(files[0])
    """
    if vars_to_retrieve is None:
        vars_to_retrieve = self.DEFAULT_VARS
    # implemented in base class
    vars_to_read, vars_to_compute = self.check_vars_to_retrieve(vars_to_retrieve)
    # create empty data object (is dictionary with extended functionality)
    data_out = StationData()
    data_out.data_id = self.data_id
    # create empty array for all variables that are supposed to be read
    for var in vars_to_read:
        data_out[var] = []
    # Iterate over the lines of the file
    self.logger.info(f"Reading file {filename}")
    with open(filename) as in_file:
        # added to output
        data_out.head_line = in_file.readline().strip()
        data_out.algorithm = in_file.readline().strip()
        c_dummy = in_file.readline()
        # re.split(r'=|\,',c_dummy)
        i_dummy = iter(re.split(r"=|\,", c_dummy.rstrip()))
        dict_loc = dict(zip(i_dummy, i_dummy))
        data_out["latitude"] = float(dict_loc["lat"])
        data_out["longitude"] = float(dict_loc["long"])
        data_out["altitude"] = float(dict_loc["elev"])
        data_out["station_name"] = dict_loc["Location"]
        data_out["PI"] = dict_loc["PI"]
        data_out["ts_type"] = self.TS_TYPE
        data_out["instrument_name"] = self.INSTRUMENT_NAME
        c_dummy = in_file.readline()
        # data_out.data_header =
        in_file.readline().strip()
        for line in in_file:
            # process line
            dummy_arr = line.split(self.COL_DELIM)
            day, month, year = dummy_arr[self.col_index["date"]].split(":")
            datestring = "-".join([year, month, day])
            datestring = "T".join([datestring, dummy_arr[self.col_index["time"]]])
            # NOTE JGLISS: parsing timezone offset was removed on 22/2/19
            # since it is deprecated in recent numpy versions, for details
            # see https://www.numpy.org/devdocs/reference/arrays.datetime.html#changes-with-numpy-1-11
            # datestring = '+'.join([datestring, '00:00'])
            data_out["dtime"].append(np.datetime64(datestring))
            for var in vars_to_read:
                val = float(dummy_arr[self.col_index[var]])
                if val == self.NAN_VAL:
                    val = np.nan
                data_out[var].append(val)
    data_out["dtime"] = np.asarray(data_out["dtime"])
    for var in vars_to_read:
        data_out[var] = np.asarray(data_out[var])
    data_out = self.compute_additional_vars(data_out, vars_to_compute)
    # TODO: reconsider to skip conversion to Series
    # convert  the vars in vars_to_retrieve to pandas time series
    # and delete the other ones
    if vars_as_series:
        for var in vars_to_read + vars_to_compute:
            if var in vars_to_retrieve:
                data_out[var] = pd.Series(data_out[var], index=data_out["dtime"])
            else:
                del data_out[var]
    return data_out