2 # calibcant - tools for thermally calibrating AFM cantilevers
4 # Copyright (C) 2011-2013 W. Trevor King <wking@tremily.us>
6 # This file is part of calibcant.
8 # calibcant is free software: you can redistribute it and/or modify it under
9 # the terms of the GNU General Public License as published by the Free Software
10 # Foundation, either version 3 of the License, or (at your option) any later
13 # calibcant is distributed in the hope that it will be useful, but WITHOUT ANY
14 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15 # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License along with
18 # calibcant. If not, see <http://www.gnu.org/licenses/>.
20 """Load a calibration file and plot everything interesting.
23 from optparse import OptionParser
26 from matplotlib.pyplot import close, get_fignums, figure, show
28 from calibcant.calibrate import load_all
29 from calibcant.analyze import analyze_all
33 usage = '%prog [options] filename'
34 p = OptionParser(usage)
36 p.add_option('-g', '--group', dest='group', default='/',
37 help='HDF5 group containing calibration data (%default).')
38 p.add_option('-b', '--no-bumps', dest='bumps', default=True,
40 help="Don't display bump details.")
41 p.add_option('-v', '--no-vibrations', dest='vibrations', default=True,
43 help="Don't display vibration details.")
44 p.add_option('-s', '--save-figures', dest='save', action='store_true',
45 help="Save plots (instead of displaying them.")
47 options,args = p.parse_args(args)
50 with _h5py.File(filename) as f:
51 if options.group in f:
54 position = g['approach/position'][...]
55 deflection = g['approach/deflection'][...]
57 axes = fig.add_subplot(1, 1, 1)
58 axes.plot(position, deflection)
59 axes.set_title('Stepper approach')
60 axes.set_xlabel('position (steps)')
61 axes.set_ylabel('deflection (bits)')
62 calibrator,data,raw_data = load_all(filename=filename, group=options.group)
65 if not options.vibrations:
66 raw_data['vibration'] = []
67 analyze_all(config=calibrator.config, data=data, raw_data=raw_data,
68 plot=True, dry_run=True)
70 for i in get_fignums():
72 fig.savefig('%i.png' % i, dpi=300)
78 if __name__ == '__main__':
81 sys.exit(main(sys.argv[1:]))