def run(path, film_thickness, logger): manager = MeasurementManager(path, Geometry(film_thickness)) # Calculate the resist R from the U/I-Plot for meas in manager.get_all(): x, y = meas.get_measured_values() slope, intercept, std_err = linear_fit(x, y) meas.resist = 1 / slope # Calculate the contact resists for temp in manager.temp_keys: manager.contact_resist_dict[temp] = get_contact_resist( manager.get_by_temp(temp)) # Correct the resists with the contact resist and the geometry for meas in manager.get_all(): temp_key = meas.temp_celcius meas.contact_resist = manager.contact_resist_dict[temp_key] meas.film_resist = get_film_resist(meas, manager.geometry) if meas.film_resist < 0: logger.warning("Negative film resist in {0}".format(meas.name)) # Get activation energy and sigma_0 from an linearized Arrhenius plot for dist in manager.dist_keys: measurements = manager.get_by_dist(dist) film_resists = [meas.film_resist for meas in measurements] temps = array([meas.temp_kelvin for meas in measurements]) actv_energy, sigma_0 = arrhenius_fit(temps, film_resists) manager.arrhenius_dict[dist] = (actv_energy, sigma_0) output = Output(path) output.summary(manager) output.show_summary() output.measurements_raw(manager) output.arrhenius_raw(manager) output.contact_resist_raw(manager) output.film_resist_raw(manager)