From 8dd827989f1a41ebf7322e63f807b72727bf6114 Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Mon, 16 Aug 2010 22:17:26 -0400 Subject: [PATCH] Use 'simple' conversion handler to process 'file'-type JPK conversions. Michael Haggerty at JPK pointed out that the information from the external file was already stored in the curve file. He also confirmed that my interpretation of the external calibration file format was correct, although that no longer matters now that I've just removed the 'file'-specific conversion code. --- hooke/driver/jpk.py | 43 ++++++++++--------------------------------- 1 file changed, 10 insertions(+), 33 deletions(-) diff --git a/hooke/driver/jpk.py b/hooke/driver/jpk.py index bc13761..30fabdf 100644 --- a/hooke/driver/jpk.py +++ b/hooke/driver/jpk.py @@ -208,40 +208,17 @@ class JPKDriver (Driver): # the previous conversion first. segment = self._zip_scale_channel( segment, channel, conversion_info['base-calibration-slot'], - info, path) + path=path, info=info) if conversion_info['type'] == 'file': - key = ('%s_%s_to_%s_calibration_file' - % (channel_name, - conversion_info['base-calibration-slot'], - conversion)) - calib_path = conversion_info['file'] - if key in info: - calib_path = os.path.join(os.path.dirname(path), info[key]) - self.logger().debug( - 'Overriding %s -> %s calibration for %s channel: %s' - % (conversion_info['base-calibration-slot'], - conversion, channel_name, calib_path)) - if os.path.exists(calib_path): - with file(calib_path, 'r') as f: - lines = [x.strip() for x in f.readlines()] - f.close() - calib = { # I've emailed JPK to confirm this file format. - 'title':lines[0], - 'multiplier':float(lines[1]), - 'offset':float(lines[2]), - 'unit':lines[3], - 'note':'\n'.join(lines[4:]), - } - segment[:,channel] = (segment[:,channel] * calib['multiplier'] - + calib['offset']) - segment.info['columns'][channel] = ( - '%s (%s)' % (channel_name, calib['unit'])) - return segment - else: - self.logger().warn( - 'Skipping %s -> %s calibration for %s channel. Calibration file %s not found' - % (conversion_info['base-calibration-slot'], - conversion, channel_name, calib_path)) + # Michael Haggerty at JPK points out that the conversion + # information stored in the external file is reproduced in + # the force curve file. So there is no need to actually + # read `conversion_info['file']`. In fact, the data there + # may have changed with future calibrations, while the + # information stored directly in conversion_info retains + # the calibration information as it was when the experiment + # was performed. + pass # Fall through to 'simple' conversion processing. else: assert conversion_info['type'] == 'simple', conversion_info['type'] assert conversion_info['scaling']['type'] == 'linear', \ -- 2.26.2