Ticket #6863: Calibration_ImportInformation.py

File Calibration_ImportInformation.py, 2.3 KB (added by Wenduo Zhou, 7 years ago)
Line 
1######################################################################
2# Import a calibration information file and construct a dictionary
3######################################################################
4
5def importCalibrationInformation(calfilename):
6    """ Import calibration information file
7
8    Return:
9     1. ID of the bank to refine
10     2. Calibration Information Dictionary
11    """
12    try:
13        calfile = open(calfilename, "r")
14        filelines = calfile.readlines()
15        calfile.close()
16    except IOError:
17        print "Calibration information file %s is not readable or accessible. " % (calfilename)
18        raise NotImplementedError("Calibration information file %s is not readable or accessible. " % (calfilename))
19
20    caldict = {}
21
22    bankid = -1
23    for rawline in filelines:
24        line = rawline.strip()
25
26        if len(line) == 0:
27            # Empty line
28            continue
29        elif line[0] == "#":
30            # Comment line
31            continue
32        else:
33            # Information line
34            terms = line.split("=")
35
36            if len(terms) != 2:
37                # Type of line not defined
38                print "Bad line: %s" % (line)
39            else:
40                # Well defined
41                parname = terms[0].strip()
42                valuestr = terms[1].strip()
43
44                if parname.lower() == "bank" and valuestr.lower() != "general":
45                    # Starting of a new bank
46                    bankid = int(valuestr)
47                    caldict[bankid] = {}
48                elif parname.lower() == "bank":
49                    # Skip information
50                    continue
51                else:
52                    # Regular Parameter = Value
53                    if bankid < 0:
54                        caldict[parname] = valuestr
55                    else:
56                        caldict[bankid][parname] = valuestr
57                    # ENDIFELSE
58                # ENDIFELSE
59            # ENDIFELSE
60        # ENNDIFELSE
61    # ENDFOR
62
63    return (int(caldict["WORKING_BANKID"]), caldict)
64
65if __name__=="__main__":
66        filename = "/home/wzz/Projects/MantidTests/LeBailFit/FinalExam/Calibration_Information.txt"
67        wkbankid, caldict = importCalibrationInformation(filename)
68        print wkbankid
69        print caldict.keys()
70        print caldict[1].keys()
71        print caldict[1].values()
72