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.
25 from .. import curve as curve
26 from .. import experiment as experiment
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):
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 # assume 1 ms timestep
70 ret[:,0] = numpy.arange(0, 1e-3*data.shape[0], 1e-3, dtype=ret.dtype)
72 file_info['filetype'] = self.name
73 file_info['experiment'] = experiment.ForceClamp
74 return ([ret,], file_info)