def convert_to_measurement(self, dataArray): data = dataArray.data param = ScanningParam() param.filename = dataArray.info['filename'] if dataArray.info['data_info'][0]['Name'] != 'Z': raise UnhandledFileError, \ 'currently only topography is supported.' else: param.type = 'topo' n = dataArray.info['channel'] if 0 == (n % 2): param.direction = 'Forward' elif 1 == (n % 2): if 'both' == dataArray.info['data_info'][n // 2 * 2 - 1]['Direction']: param.direction = 'Backward' else: param.direction = 'Forward' param.current = float(dataArray.info['z-controller']['Setpoint'].split(\ ' ')[0]) param.vgap = dataArray.info['bias'] # BUG will not work for multichannel files: unit = dataArray.info['data_info'][0]['Unit'] # For convenience scale units if param.type == 'topo' and unit == 'm': unit = u'nm' data = data * 1e9 param.unit = unit param.creation_date = dataArray.info['rec_date'] param.comment = dataArray.info['comment'] axis1 = AxisParam() axis2 = AxisParam() axis3 = AxisParam() if param.type in ('topo', ): axis1.length = dataArray.info['scan_pixels'][0] axis1.unit = 'nm' axis1.increment = dataArray.info['scan_range'][ 0] / axis1.length * 1e9 axis1.start = 0 # dataArray.info['scan_offset'][0] in meter axis2.length = dataArray.info['scan_pixels'][1] axis2.unit = 'nm' axis2.increment = dataArray.info['scan_range'][ 1] / axis2.length * 1e9 axis2.start = 0 param.axis1 = axis1 param.axis2 = axis2 print dataArray.info['scan_pixels'] print dataArray.info['scan_range'] return Measurement(data, param)
def convert_to_measurement(self, dataArray): data = dataArray.data param = ScanningParam() param.filename = dataArray.info["filename"] if dataArray.info["data_info"][0]["Name"] != "Z": raise UnhandledFileError, "currently only topography is supported." else: param.type = "topo" n = dataArray.info["channel"] if 0 == (n % 2): param.direction = "Forward" elif 1 == (n % 2): if "both" == dataArray.info["data_info"][n // 2 * 2 - 1]["Direction"]: param.direction = "Backward" else: param.direction = "Forward" param.current = float(dataArray.info["z-controller"]["Setpoint"].split(" ")[0]) param.vgap = dataArray.info["bias"] # BUG will not work for multichannel files: unit = dataArray.info["data_info"][0]["Unit"] # For convenience scale units if param.type == "topo" and unit == "m": unit = u"nm" data = data * 1e9 param.unit = unit param.creation_date = dataArray.info["rec_date"] param.comment = dataArray.info["comment"] axis1 = AxisParam() axis2 = AxisParam() axis3 = AxisParam() if param.type in ("topo",): axis1.length = dataArray.info["scan_pixels"][0] axis1.unit = "nm" axis1.increment = dataArray.info["scan_range"][0] / axis1.length * 1e9 axis1.start = 0 # dataArray.info['scan_offset'][0] in meter axis2.length = dataArray.info["scan_pixels"][1] axis2.unit = "nm" axis2.increment = dataArray.info["scan_range"][1] / axis2.length * 1e9 axis2.start = 0 param.axis1 = axis1 param.axis2 = axis2 print dataArray.info["scan_pixels"] print dataArray.info["scan_range"] return Measurement(data, param)
def convert_to_measurement(self, dataArray): data = dataArray.data param = ScanningParam() param.filename = dataArray.info['filename'] param.type = dataArray.info['type'] param.direction = dataArray.info['direction'] param.current = dataArray.info['current'] param.vgap = dataArray.info['vgap'] unit = dataArray.info['unit'] # For convenience scale units if param.type == 'topo' and unit == 'm': unit = u'nm' data = data * 1e9 elif param.type == 'ivcurve' and unit == 'A': unit = u'nA' data = data * 1e9 elif param.type == 'ivmap' and unit == 'A': unit = u'nA' data = data * 1e9 param.unit = unit param.creation_date = dataArray.info['date'] param.comment = dataArray.info['comment'] axis1 = AxisParam() axis2 = AxisParam() axis3 = AxisParam() if param.type in ('topo','ivmap'): axis1.length = dataArray.info['xres'] axis1.unit = dataArray.info['unitxy'] #axis1.length_physical = dataArray.info['xreal'] axis1.increment = dataArray.info['xinc'] axis1.start = 0 axis2.length = dataArray.info['yres'] axis2.unit = dataArray.info['unitxy'] #axis2.length_physical = dataArray.info['yreal'] axis2.increment = dataArray.info['yinc'] axis2.start = 0 param.axis1 = axis1 param.axis2 = axis2 if param.type in ('ivcurve','ivmap'): if param.type == 'ivcurve': axisv = axis1 param.axis1 = axisv else: axisv = axis3 param.axis3 = axisv axisv.unit = dataArray.info['unitv'] coef = 1 # For convenience scale units if axisv.unit == 'V': axisv.unit = 'mV' coef = 1e3 axisv.length = dataArray.info['vres'] #axisv.length_physical = dataArray.info['vreal'] * coef axisv.increment = dataArray.info['vinc'] * coef axisv.start = dataArray.info['vstart'] * coef return Measurement(data, param)
def convert_to_measurement(self, dataArray): data = dataArray.data param = ScanningParam() param.filename = dataArray.info["filename"] param.type = dataArray.info["type"] param.direction = dataArray.info["direction"] param.current = dataArray.info["current"] param.vgap = dataArray.info["vgap"] unit = dataArray.info["unit"] # For convenience scale units if param.type == "topo" and unit == "m": unit = u"nm" data = data * 1e9 elif param.type == "ivcurve" and unit == "A": unit = u"nA" data = data * 1e9 elif param.type == "ivmap" and unit == "A": unit = u"nA" data = data * 1e9 param.unit = unit param.creation_date = dataArray.info["date"] param.comment = dataArray.info["comment"] axis1 = AxisParam() axis2 = AxisParam() axis3 = AxisParam() if param.type in ("topo", "ivmap"): axis1.length = dataArray.info["xres"] axis1.unit = dataArray.info["unitxy"] # axis1.length_physical = dataArray.info['xreal'] axis1.increment = dataArray.info["xinc"] axis1.start = 0 axis2.length = dataArray.info["yres"] axis2.unit = dataArray.info["unitxy"] # axis2.length_physical = dataArray.info['yreal'] axis2.increment = dataArray.info["yinc"] axis2.start = 0 param.axis1 = axis1 param.axis2 = axis2 if param.type in ("ivcurve", "ivmap"): if param.type == "ivcurve": axisv = axis1 param.axis1 = axisv else: axisv = axis3 param.axis3 = axisv axisv.unit = dataArray.info["unitv"] coef = 1 # For convenience scale units if axisv.unit == "V": axisv.unit = "mV" coef = 1e3 axisv.length = dataArray.info["vres"] # axisv.length_physical = dataArray.info['vreal'] * coef axisv.increment = dataArray.info["vinc"] * coef axisv.start = dataArray.info["vstart"] * coef return Measurement(data, param)