def __init__(self, filename=None, w=1e-6, t=1e-6, L=1e-6, sign=1, **kwargs):

        self.parameters = []
        self.measures = []
        self.raw_data = []
        # Check for some specific kwargs and update kwargs
        self["force_kxy"], kwargs = self.__check_force_kxy(**kwargs)
        self["symmetrize"], kwargs = self.__check_symmetrize(**kwargs)
        self["sign"] = self.__check_sign(sign)
        self["gain"], kwargs = self.__check_gain(**kwargs)

        if filename is not None:
            filename = os.path.abspath(filename)
            self["filename"] = filename
            self["filetype"] = self.__check_filetype(filename)

            # Find info
            self.__add_parameters(w, t, L)

            # If the file contains raw data
            if self["filetype"] == "raw":

                # If symmetrize is True
                if self["H"] != "0.0" and self["symmetrize"] is True:
                    filename2 = U.get_symetric_file(filename)
                    raw_data = self.__Symmetrize(filename, filename2)
                elif self["H"] != "0.0" and self["symmetrize"] is False:
                    if filename.find("--") != -1:
                        self["H"] = "-"+self["H"]
                        raw_data = U.read_file_raw(filename)
                    else:
                        raw_data = U.read_file_raw(filename)

                else:
                    raw_data = U.read_file_raw(filename)

                for key, values in raw_data.items():
                    self[key] = values
                    self.raw_data.append(key)

                self.__Analyze(self["gain"])
                self.__add_measure()

            # If the file contains treated data 
            elif self["filetype"] == "treated":
                data = U.read_file_treated(filename)

                for key, values in data.items():
                    self[key] = values
                    self.measures.append(key)
                    self.__add_measure()


        # Remaining kwargs are set as parameters
        for key, value in kwargs.items():
            self[key] = value
            self.parameters.append(key)

        return
    def __Symmetrize(self, filename, filename2):
        anti_sym = ["dTy_0", "dTy_Q"]

        if filename.find("--") != -1:
            filename, filename2 = filename2, filename
        else:
            pass

        data = U.read_file_raw(filename)
        data2 = U.read_file_raw(filename2)

        sym_data = dict()

        for key, values in data.items():
            if key in data2:
                if key in anti_sym:
                    sym_data[key] = 0.5*(data[key]-data2[key])
                else:
                    sym_data[key] = 0.5*(data[key]+data2[key])
            else:
                pass

        return sym_data