1 # Copyright (C) 2008-2010 Massimo Sandal <devicerandom@gmail.com>
2 # W. Trevor King <wking@drexel.edu>
4 # This file is part of Hooke.
6 # Hooke is free software: you can redistribute it and/or modify it
7 # under the terms of the GNU Lesser General Public License as
8 # published by the Free Software Foundation, either version 3 of the
9 # License, or (at your option) any later version.
11 # Hooke is distributed in the hope that it will be useful, but WITHOUT
12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
14 # Public License for more details.
16 # You should have received a copy of the GNU Lesser General Public
17 # License along with Hooke. If not, see
18 # <http://www.gnu.org/licenses/>.
20 """Library for interpreting Hemingway force spectroscopy files.
26 from .. import curve as curve
27 from ..util.util import Closing as Closing
28 from . import Driver as Driver
31 class HemingwayDriver (Driver):
32 """Handle Hemingway force spectroscopy files.
35 super(HemingwayDriver, self).__init__(name='hemingway')
37 def is_me(self, path):
38 if os.path.isdir(path):
41 with Closing(file(path, 'r')) as f:
43 headlines.append(f.readline())
44 return (headlines[0].startswith('#Hemingway')
45 and headlines[1].startswith('#Experiment: FClamp'))
47 def read(self, path, info=None):
49 with Closing(file(path, 'r')) as f:
51 line = f.readline().strip()
54 fields = line.split(':', 1)
56 file_info[fields[0]] = fields[1]
57 data = numpy.loadtxt(f, dtype=numpy.float)
64 ret.info['columns'] = [
65 'time (s)', # first data column in file just increasing index
71 ret.info['name'] = 'force clamp'
72 # assume 1 ms timestep
73 ret[:,0] = numpy.arange(0, 1e-3*data.shape[0], 1e-3, dtype=ret.dtype)
75 return ([ret,], file_info)