def norm_group(pos, _, **kargs): """Takes the drain current for each file in group and builds an analysis file and works out the mean drain""" if "signal" in kargs: signal = kargs["signal"] else: signal = "fluo" lfit = kargs["lfit"] rfit = kargs["rfit"] posfile = Data() posfile.metadata = pos[0].metadata posfile = posfile & pos[0].column(0) posfile.column_headers = ["Energy"] for f in pos: print(str(f["run"]) + str(f.find_col(signal))) posfile = posfile & f.column(signal) posfile.add_column(lambda r: np.mean(r[1:]), "mean drain") ec = posfile.find_col("Energy") md = posfile.find_col("mean drain") linearfit = scipy.poly1d( posfile.polyfit(ec, md, 1, lambda x, y: lfit[0] <= x <= lfit[1])) posfile.add_column(lambda r: r[md] - linearfit(r[ec]), "minus linear") highend = posfile.mean("minus", lambda r: rfit[0] <= r[ec] <= rfit[1]) ml = posfile.find_col("minus linear") posfile.add_column(lambda r: r[ml] / highend, "normalised") if "group_key" in kargs: posfile[kargs["group_key"]] = pos.key return posfile
def norm_group(pos,_,**kargs): """Takes the drain current for each file in group and builds an analysis file and works out the mean drain""" if "signal" in kargs: signal=kargs["signal"] else: signal="fluo" lfit=kargs["lfit"] rfit=kargs["rfit"] posfile=Data() posfile.metadata=pos[0].metadata posfile=posfile&pos[0].column(0) posfile.column_headers=['Energy'] for f in pos: print(str(f["run"])+str(f.find_col(signal))) posfile=posfile&f.column(signal) posfile.add_column(lambda r:np.mean(r[1:]),"mean drain") ec=posfile.find_col('Energy') md=posfile.find_col('mean drain') linearfit=scipy.poly1d(posfile.polyfit(ec,md,1,lambda x,y:lfit[0]<=x<=lfit[1])) posfile.add_column(lambda r:r[md]-linearfit(r[ec]),'minus linear') highend=posfile.mean('minus',lambda r:rfit[0]<=r[ec]<=rfit[1]) ml=posfile.find_col('minus linear') posfile.add_column(lambda r:r[ml]/highend,"normalised") if "group_key" in kargs: posfile[kargs["group_key"]]=pos.key return posfile
"""Decompose Example""" # pylint: disable=invalid-name from Stoner import Data from Stoner.tools import format_val from numpy import linspace, reshape, array x = linspace(-10, 10, 201) y = 0.3 * x**3 - 6 * x**2 + 11 * x - 20 d = Data(x, y, setas="xy", column_headers=["X", "Y"]) d.decompose() d.setas = "xyyy" coeffs = d.polyfit(polynomial_order=3) str_coeffs = [format_val(c, mode="eng", places=1) for c in coeffs.ravel()] str_coeffs = reshape(array(str_coeffs), coeffs.shape) d.plot() d.text( -6, -800, "Coefficients\n{}".format(str_coeffs), fontdict={"size": "x-small"}, ) d.ylabel = "Data" d.title = "Decompose Example" d.tight_layout()
from Stoner import Data import Stoner.Fit as SF from numpy import linspace from numpy.random import normal import matplotlib.pyplot as plt # Make some data x = linspace(-10, 10, 101) y = SF.quadratic(x + normal(size=len(x), scale=0.1), 4, -2, 11) * normal( size=len(x), scale=0.05, loc=1.0 ) s = y * 0.05 d = Data(x, y, s, setas="xye", column_headers=["X", "Y"]) d.plot(fmt="r.") d.polyfit(result=True, header="Polyfit") d.setas = "x..y" d.plot(fmt="m-", label="Polyfit") d.text( -9, 450, "Polynominal co-efficients\n{}".format(d["2nd-order polyfit coefficients"]), fontdict={"size": "x-small", "color": "magenta"}, ) d.setas = "xy" d.curve_fit(SF.quadratic, result=True, header="Curve-fit") d.setas = "x...y" d.plot(fmt="b-", label="curve-fit") d.annotate_fit( SF.quadratic,
"""Example of Quadratic Fit.""" from Stoner import Data import Stoner.Fit as SF from numpy import linspace from numpy.random import normal import matplotlib.pyplot as plt # Make some data x = linspace(-10, 10, 101) y = SF.quadratic(x + normal(size=len(x), scale=0.1), 4, -2, 11) * normal( size=len(x), scale=0.05, loc=1.0) s = y * 0.05 d = Data(x, y, s, setas="xye", column_headers=["X", "Y"]) d.plot(fmt="r.") d.polyfit(result=True, header="Polyfit") d.setas = "x..y" d.plot(fmt="m-", label="Polyfit") d.text( -9, 450, "Polynominal co-efficients\n{}".format( d["2nd-order polyfit coefficients"]), fontdict={ "size": "x-small", "color": "magenta" }, ) d.setas = "xy" d.curve_fit(SF.quadratic, result=True, header="Curve-fit")
"""Decompose Example""" from Stoner import Data from Stoner.tools import format_val from numpy import linspace, reshape, array x = linspace(-10, 10, 201) y = 0.3 * x ** 3 - 6 * x ** 2 + 11 * x - 20 d = Data(x, y, setas="xy", column_headers=["X", "Y"]) d.decompose() d.setas = "xyyy" coeffs = d.polyfit(polynomial_order=3) str_coeffs = [format_val(c, mode="eng") for c in coeffs.ravel()] str_coeffs = reshape(array(str_coeffs), coeffs.shape) d.plot() d.text(-6, -800, "Coefficients\n{}".format(str_coeffs), fontdict={"size": "x-small"}) d.ylabel = "Data" d.title = "Decompose Example" d.tight_layout()