source: sasview/src/sas/sascalc/file_converter/bsl_loader.py @ c3f0114

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since c3f0114 was c3f0114, checked in by lewis, 8 years ago

Remove debug statements and tidy up

  • Property mode set to 100644
File size: 3.0 KB
RevLine 
[18e7309]1from sas.sascalc.file_converter.core.bsl_loader import CLoader
[6eaf89ea]2from copy import deepcopy
3import os
[2760662]4import numpy as np
[18e7309]5
6class BSLLoader(CLoader):
7
[2760662]8    # TODO: Change to __init__(self, filename, frame)
9    # and parse n_(pixels/rasters) from header file
[6eaf89ea]10    def __init__(self, filename, frame):
11        header_file = open(filename, 'r')
12        data_info = {}
13        is_valid = True
14        err_msg = ""
[18e7309]15
[6eaf89ea]16        [folder, filename] = os.path.split(filename)
17
18        # First 2 lines are headers
19        header_file.readline()
20        header_file.readline()
21
22        while True:
23            metadata = header_file.readline().strip()
24            metadata = metadata.split()
25            data_filename = header_file.readline().strip()
26
27            if len(metadata) != 10:
28                is_valid = False
29                err_msg = "Invalid header file: {}".format(filename)
30                break
31            # SAS data will be in file Xnn001.mdd
32            if data_filename != filename.replace('0.', '1.'):
33                continue
34            try:
35                data_info = {
36                    'filename': os.path.join(folder, data_filename),
37                    'pixels': int(metadata[0]),
38                    'rasters': int(metadata[1]),
39                    'frames': int(metadata[2]),
40                    'swap_bytes': int(metadata[3])
41                }
42            except:
43                is_valid = False
[c3f0114]44                err_msg = "Invalid metadata in header file for {}"
45                err_msg = err_msg.format(filename.replace('0.', '1.'))
[6eaf89ea]46            break
47
48        if not is_valid:
49            raise Exception(err_msg)
50
51        if data_info['frames'] == 1:
52            # File is actually in OTOKO (1D) format
53            # Number of frames is 2nd indicator,
54            data_info['frames'] = data_info['rasters']
55            data_info['rasters'] = data_info['pixels']
56            data_info['pixels'] = 1
57
58        CLoader.__init__(self, data_info['filename'], frame,
59            data_info['pixels'], data_info['rasters'], data_info['swap_bytes'])
[18e7309]60
[cc03f59]61    def __setattr__(self, name, value):
62        if name == 'filename':
63            return self.set_filename(value)
64        elif name == 'frame':
65            return self.set_frame(value)
66        elif name == 'n_pixels':
67            return self.set_n_pixels(value)
68        elif name == 'n_rasters':
69            return self.set_n_rasters(value)
[6eaf89ea]70        elif name == 'swap_bytes':
71            return self.set_swap_bytes(value)
72        return CLoader.__setattr__(self, name, value)
[2760662]73
74    def __getattr__(self, name):
75        if name == 'filename':
76            return self.get_filename()
77        elif name == 'frame':
78            return self.get_frame()
79        elif name == 'n_pixels':
80            return self.get_n_pixels()
81        elif name == 'n_rasters':
82            return self.get_n_rasters()
[6eaf89ea]83        elif name == 'swap_bytes':
84            return self.get_swap_bytes()
85        return CLoader.__getattr__(self, name)
[2760662]86
87    def create_arr(self):
88        return np.zeros((self.n_rasters, self.n_pixels))
Note: See TracBrowser for help on using the repository browser.