Add lines to analyze.calib_plot().
[calibcant.git] / README
1 Scripts and python modules to calibrate AFM cantilevers via the
2 "Thermal tune" method:
3   1/2 k_B T = 1/2 K x^2
4 The analysis uses the expected power spectral density (PSD) of a
5 damped simple harmonic oscillator to filter out noise from the
6 measured PSD.
7
8 == Dependencies ==
9
10 linfit (depends in turn on scipy.stats.linregress)
11
12 *** Command line interface ***
13
14 ** bumps **
15
16 Create a two-column ascii data file for fitting bumps with (for example)
17  $ int16s_to_ascii_array ~/rsrch/data/z_piezo_calib/20080116/20080116090005_bump_surface_Z_piezo_output \
18                          ~/rsrch/data/z_piezo_calib/20080116/20080116090005_bump_surface_Deflection_input > d
19
20 Then fit slope with
21  $ python calibcant_bump_analyze.py -c d  > stdout 2> stderr
22  $ cat stdout
23  0.00958650972452
24  $ cat stderr
25  not cutting
26
27
28 ** vibs **
29
30 Create a two-column ascii data file for fitting bumps with (for example)
31  $ cd ~/src/comedi_simult_AIO
32  $ cmd -c0 -n1 -F200000 -N2097152 > vib.raw   # 2097152 = 2^21 points ~= 10 seconds of data
33  $ unitary_avg_fft_from_raw.py vib.raw
34 Creates vib.raw.psd, with frequency in Hz in the first column, and amplitude in Volts^2/Hz in the second column.
35 Then get the variance with
36  $ cd ~/src/calibrate_cantilever
37  $ python psd_filter_analyze.py -s9 -tmedian -g ~/src/comedi_simult_AIO/vib.raw 2> check.gp
38  <Lorentzian-fit-variance>
39 You can check the validity of the fit with
40  $ gnuplot check.gp -
41 And adjust the min and max of the fitted frequency range as neccessary
42  $ python psd_filter_analyze.py -s9 -tmedian -m1000 -M8500 -g ~/src/comedi_simult_AIO/vib.raw 2> check.gp
43  <new Lorentzian-fit-variance>
44 Until the fit looks reasonable.
45
46
47 ** calibrating **
48
49 Once you've assembled a few slopes, vibs, and Ts, put it all together to calculate k with
50  $ python calibcant_analyze.py -vC 0.02,0.03,0.025 22.5,22.1 6e-9,5.5e-9  > stdout 2> stderr
51  $ cat stdout
52  456.069575483
53  $ cat stderr
54  Variable (units)              : mean +/- std. dev. (relative error)
55  Cantilever k (pN/nm)          : 456.07 +/- 146.671 (0.321599)
56  photoSensitivity**2 (V/nm)**2 : 0.000641667 +/- 0.000204464 (0.318645)
57  T (K)                         : 295.45 +/- 0.2 (0.000676933)
58  1/Vphoto**2 (1/V)**2          : 1.74242e+08 +/- 7.57576e+06 (0.0434783)