1 # Copyright (C) 2010-2012 W. Trevor King <wking@tremily.us>
3 # This file is part of Hooke.
5 # Hooke is free software: you can redistribute it and/or modify it under the
6 # terms of the GNU Lesser General Public License as published by the Free
7 # Software Foundation, either version 3 of the License, or (at your option) any
10 # Hooke is distributed in the hope that it will be useful, but WITHOUT ANY
11 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12 # A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
15 # You should have received a copy of the GNU Lesser General Public License
16 # along with Hooke. If not, see <http://www.gnu.org/licenses/>.
18 """Library for interpreting Hemingway force spectroscopy files.
24 from .. import curve as curve
25 from ..util.util import Closing as Closing
26 from . import Driver as Driver
29 class HemingwayDriver (Driver):
30 """Handle Hemingway force spectroscopy files.
33 super(HemingwayDriver, self).__init__(name='hemingway')
35 def is_me(self, path):
36 if os.path.isdir(path):
39 with Closing(file(path, 'r')) as f:
41 headlines.append(f.readline())
42 return (headlines[0].startswith('#Hemingway')
43 and headlines[1].startswith('#Experiment: FClamp'))
45 def read(self, path, info=None):
47 with Closing(file(path, 'r')) as f:
49 line = f.readline().strip()
52 fields = line.split(':', 1)
54 file_info[fields[0]] = fields[1]
55 data = numpy.loadtxt(f, dtype=numpy.float)
62 ret.info['columns'] = [
63 'time (s)', # first data column in file just increasing index
69 ret.info['name'] = 'force clamp'
70 # assume 1 ms timestep
71 ret[:,0] = numpy.arange(0, 1e-3*data.shape[0], 1e-3, dtype=ret.dtype)
73 return ([ret,], file_info)