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 __init__(self, filename=None, **kwargs): """ Used to initialize a Measurement object Parameters: ------------------------------------------------------------------------ filename : str The path to the file containing the data to be read and stored. Can be relative or absolute. Useful kwargs: ------------------------------------------------------------------------ H, w, t, L : int or float The value of the magnetic field used during the experiment and the geometric parameters of the sample. Note that kwargs are case sensitive and are used to populate the parameters attribute of the object sample : str The name of the sample. """ self.measures = [] self.parameters = [] if filename is not None: filename = os.path.abspath(filename) data = U.read_file_treated(filename) header = U.read_header(filename) for key, value in data.items(): self[key] = value self.measures.append(key) self["H"] = U.find_H(filename, header) self["date"] = U.find_date(filename, header) self["mount"] = U.find_mount(filename, header) self["sample"] = U.find_sample(filename, header) self["probe"] = U.find_probe(filename, header) self.parameters += ["H", "date", "mount", "sample", "probe"] for key, value in kwargs.items(): self[key] = value if key not in self.parameters: self.parameters.append(key) if hasattr(self, "__sample") is False: setattr(self, "__sample", "unknown") else: pass if hasattr(self, "__H") is False: setattr(self, "__H", "unknown") else: pass self.__add_measure() return