storing force curves.
"""
+import logging
import os.path
+
import numpy
from .command_stack import CommandStack
self.info = info
self.name = os.path.basename(path)
self.command_stack = CommandStack()
+ self._hooke = None # Hooke instance for Curve.load()
+
+ def __str__(self):
+ return str(self.__unicode__())
+
+ def __unicode__(self):
+ return u'<%s %s>' % (self.__class__.__name__, self.name)
+
+ def __repr__(self):
+ return self.__str__()
+
+ def set_hooke(self, hooke=None):
+ if hooke != None:
+ self._hooke = hooke
def identify(self, drivers):
"""Identify the appropriate :class:`hooke.driver.Driver` for
return
raise NotRecognized(self)
- def load(self, *args, **kwargs):
+ def load(self, hooke=None):
"""Use the driver to read the curve into memory.
Also runs any commands in :attr:`command_stack`. All
arguments are passed through to
:meth:`hooke.command_stack.CommandStack.execute`.
"""
+ self.set_hooke(hooke)
+ log = logging.getLogger('hooke')
+ log.debug('loading curve %s with driver %s' % (self.name, self.driver))
data,info = self.driver.read(self.path, self.info)
self.data = data
for key,value in info.items():
self.info[key] = value
- self.command_stack.execute(*args, **kwargs)
+ if self._hooke != None:
+ self.command_stack.execute(self._hooke)
+ elif len(self.command_stack) > 0:
+ log.warn(
+ 'could not execute command stack for %s without Hooke instance'
+ % self.name)
def unload(self):
"""Release memory intensive :attr:`.data`.
"""
+ log = logging.getLogger('hooke')
+ log.debug('unloading curve %s' % self.name)
self.data = None