Implementated module to read file of common types arising in multiphase chemistry group experiments. Status: in progres.
This commit is contained in:
58
g5505_file_reader.py
Normal file
58
g5505_file_reader.py
Normal file
@ -0,0 +1,58 @@
|
||||
import numpy as np
|
||||
import pandas as np
|
||||
import matplotlib.pyplot as plt
|
||||
import plotly.express as px
|
||||
import plotly.graph_objects as go
|
||||
from plotly.subplots import make_subplots
|
||||
from igor2.binarywave import load as loadibw
|
||||
|
||||
|
||||
def read_xps_ibw_file_as_dict(filename):
|
||||
|
||||
""" Reads ibw files from multiphase chemistry group, which contain xps spectra and acquisition settings."""
|
||||
|
||||
file_obj = loadibw(filename)
|
||||
|
||||
required_keys = ['wData','data_units','dimension_units','note']
|
||||
if sum([item in required_keys for item in file_obj['wave'].keys()]) < len(required_keys):
|
||||
raise ValueError('This is not a valid xps ibw file. It does not satisfy minimum adimissibility criteria.')
|
||||
|
||||
file_dict = {}
|
||||
file_dict['name'] = filename
|
||||
file_dict['data'] = file_obj['wave']['wData']
|
||||
file_dict['data_units'] = file_obj['wave']['data_units']
|
||||
file_dict['shape'] = file_dict['data'].shape
|
||||
file_dict['dtype'] = type(file_dict['data'])
|
||||
|
||||
# Convert notes of bytes class to string class and split string into a list of elements separated by '\r'.
|
||||
notes_list = file_obj['wave']['note'].decode("utf-8").split('\r')
|
||||
exclude_list = ['Excitation Energy']
|
||||
for item in notes_list:
|
||||
if '=' in item:
|
||||
key, value = tuple(item.split('='))
|
||||
# TODO: check if value can be converted into a numeric type. Now all values are string type
|
||||
if not key in exclude_list:
|
||||
file_dict[key] = value
|
||||
|
||||
# TODO: talk to thorsten to see if there is an easier way to access the below attributes
|
||||
dimension_labels = file_obj['wave']['dimension_units'].decode("utf-8").split(']')
|
||||
file_dict['dimension_units'] = [item+']' for item in dimension_labels[0:len(dimension_labels)-1]]
|
||||
|
||||
|
||||
return file_dict
|
||||
|
||||
def main():
|
||||
|
||||
inputfile_dir = '\\\\fs101\\5505\\People\\Juan\\TypicalBeamTime'
|
||||
|
||||
file_dict = read_xps_ibw_file_as_dict(inputfile_dir+'\\SES\\0069069_N1s_495eV.ibw')
|
||||
|
||||
for key in file_dict.keys():
|
||||
print(key,file_dict[key])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
main()
|
||||
|
||||
print(':)')
|
Reference in New Issue
Block a user