def Write_out(self, filename=None, overwrite="ask"): """ Writes the treated data to a file """ if filename is None: if self["H"] == "0.0" or self["symmetrize"] is False: filename = self["filename"].replace(".dat", "-treated.dat") else: filename = self["filename"].replace(".dat", "-sym-treated.dat") else: filename = os.path.abspath(filename) parameters1 = ["sample", "date", "mount", "probe", "H"] parameters2 = ["w", "t", "L"] measures = ["T_av", "T0", "Tp", "Tm", "dTx", "kxx", "dTy", "kxy"] columns = ["T_av(K)", "T0(K)", "T+(K)", "T-(K)", "dTx(K)", "kxx(W/Km)", "dTy(K)", "kxy(W/Km)"] if self["H"] == "0.0": measures = measures[0:6] columns = columns[0:6] else: pass columns = "\t".join(columns) comments1 = "\n".join(["%s\t=\t%s" % (i, self[i]) for i in parameters1]) comments2 = "\n".join(["%s\t=\t%1.3e" % (i, self[i]) for i in parameters2]) header = comments1+"\n"+comments2+"\n"+columns data = np.array([self[i] for i in measures]).T U.write_to_file(filename, data, header, overwrite=overwrite)
def Current(self, _min, _max, deg=5, T_max=100, N=100, *args, **kwargs): """ Used to compute the optimal current function for the sample. Parameters: ------------------------------------------------------------------------ _min, _max: int or float The min/max of dT/T in percentages deg: int The degree of the polynomial fit T_max: int or float T0 max for the plot N: int Number of points in the plot """ directory = os.path.split(self["filename"])[0] rnge = "%1.0f%s_to_%1.0f%s.dat" % (_min, "%", _max, "%") name = "_".join([self["sample"].replace(" ", "_"), "dTovT", rnge]) datafile = os.path.join(directory, name) n = self["T_av"].shape[0] dT_T = np.linspace(_min/100, _max/100, n) alpha = self["w"]*self["t"]/self["L"] I = np.sqrt(self["kxx"]*alpha*self["T_av"]*dT_T/5000) coeff_I = np.polyfit(self["T0"], I, deg) poly_func = np.poly1d(coeff_I) T0 = np.linspace(0, T_max, N) I_fit = poly_func(T0) self["T0_fit"] = T0 self["I_fit"] = I_fit*1000 self["coeff_I"] = coeff_I self.measures += ["T0_fit", "I_fit"] # Looks for show as kwarg try: show = kwargs["show"] if type(show) is not bool: if show is not None: raise TypeError("show must be of type bool or None") else: kwargs.pop("show") else: kwargs.pop("show") except KeyError: show = True try: filename = kwargs["filename"] kwargs.pop("filename") except KeyError: filename = None label = r"$\Delta$ T / T from %1.2f%s to %1.2f%s" % ( _min, "%", _max, "%") fig, ax = self.Plot("I_fit", x_axis="T0_fit", show=None, parameters=[]) plt.figtext(1-0.005, 0.005, label, fontsize=14, va="baseline", ha="right") if show is True: plt.show() elif show is False: plt.close() else: pass if filename is not None: filename = os.path.abspath(filename) U.save_to_pdf(filename, fig) else: pass try: write = kwargs["write"] kwargs.pop("write") except KeyError: write = True if write is True: degrees = np.array([i for i in range(coeff_I.shape[0])]) data = np.array([degrees, coeff_I[::-1]]).T header = "Current function coefficients\norder\tcoeff" U.write_to_file(datafile, data, header, fmt=["%i", "%,18e"]) else: pass return