Source code for plugins.loaders.base_loader

# Copyright 2014 Diamond Light Source Ltd.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""
.. module:: base_loader
   :platform: Unix
   :synopsis: A base class for loader plugins

.. moduleauthor:: Nicola Wadeson <scientificsoftware@diamond.ac.uk>

"""

from savu.plugins.plugin import Plugin

[docs]class BaseLoader(Plugin): def __init__(self, name='BaseLoader'): super(BaseLoader, self).__init__(name) self.hits = [] self.application = None self.reduction_flag = False def _main_setup(self): """ Overwrites the main_setup function in plugin.py as the loader is a special case of plugin that doesn't require setup of in/out_datasets """ data_obj = self.setup() if data_obj and not self.reduction_flag: self.set_data_reduction_params(data_obj)
[docs] def get_experiment(self): return self.exp
[docs] def set_data_reduction_params(self, data_obj): pDict = self.parameters self.data_mapping() data_obj.get_preview().set_preview(pDict['preview'], load=True) # update axis labels #data_obj.amend_axis_label_values() # set previewing for Related datasets #for data in data_obj.related.values(): # find common axes # pass # update axis labels for Related datasets self.reduction_flag = True
[docs] def get_NXapp(self, ltype, nx_file, entry): ''' finds an application definition in a nexus file ''' self.application = ltype nx_file[entry].visititems(self._visit_NXapp) return self.hits
def _visit_NXapp(self, name, obj): if "NX_class" in list(obj.attrs.keys()): if obj.attrs["NX_class"].decode("ascii") in ["NXentry", "NXsubentry"]: if "definition" in list(obj.keys()): if obj["definition"][()].decode("ascii") == self.application: self.hits.append(obj)
[docs] def get_NXdata(self, nx_file, detector_list): nx_file['/'].visititems(self._visit_NXdata) for detector in detector_list: for nxdata in self.nxdata: if detector in list(nxdata.keys()) or detector in \ str(nxdata.name).split('/'): self.hits.append(nxdata) return self.hits
def _visit_NXdata(self, name, obj): if "NX_class" in list(obj.attrs.keys()): if obj.attrs["NX_class"].decode("ascii") in ["NXdata"]: self.hits.append(obj)
[docs] def data_mapping(self): pass