Transfer functions may need additional information before the
        supplied numpy array can be modified in place. For instance,
        transfer functions may have state which needs to be allocated
        in memory with a certain size. In other cases, the transfer
        function may need to know about the coordinate system
        associated with the input data.

def initialize(self,  **kwargs):
        """
        Transfer functions may need additional information before the
        supplied numpy array can be modified in place. For instance,
        transfer functions may have state which needs to be allocated
        in memory with a certain size. In other cases, the transfer
        function may need to know about the coordinate system
        associated with the input data.
        """
        if not set(kwargs.keys()).issuperset(self.init_keys):
            raise Exception("TransferFn needs to be initialized with %s"
                            % ','.join(repr(el) for el in self.init_keys))