Data analysis at NSLS II beamlines

For instance at HXN, users usually create a directory under /data/users/2017Q1/ All the experimental data and fitting results will be saved in the created folder.

Load fluorescence data from database

At your working directory, first go to pyxrf environment, then type ipython.

source activate pyxrf
ipython

Next users need to import important functions from pyxrf by typing

from pyxrf.api import *

If you only load data from one run into a file, then use

make_hdf(1000, fname='scan_1000.h5')

Note: the first argument of function ”make_hdf” is the runID (i.e., 1000), the second is the hdf filename to be saved. It may take several minutes to load 200by200 dataset. When loading process is done, you will see ‘scan_1000.h5’ is created in your working directory. Use pyxrf to load that data and work on it.

Warning: Data can’t be created if data file already exists. You need to remove the old file first. You can also ignore fname keyword, then the default file name is used.

If multiple files need to be loaded

make_hdf(1000, 1100)

Note: the first argument is the starting run ID, the second argument is the ending run ID. This function will automatically transform all the fluorescence data within the run number range. If you want to define a prefix name, you can do make_hdf(1000, 1100, prefix='abc_'). The default prefix name is scan2D_.

Warning: Data can’t be created if data file already exists. You need to remove the old file first.

Pixel fitting from command line

The parameter json file needs to be defined first. This can be created from PyXRF GUI when you do summed spectrum fitting.

fit_pixel_data_and_save(wd, fname, param_file_name=param_file)

wd is the working directory. fname is the hdf file. param_file is the parameter json file. You can easily write for loop to fit multiple data.

Please also refer to jupyter notebook example https://github.com/NSLS-II/PyXRF/blob/master/examples/Batch_mode_fit.ipynb

PyXRF configuration at beamlines

A json was created to define beamline name at /etc/pyxrf/pyxrf.json .

From file https://github.com/NSLS-II/PyXRF/blob/master/pyxrf/model/load_data_from_db.py , pyxrf will search which beamline the machine is at, then connects to databroker accordingly. For instance, if it is hxn machine, pyxrf will read hxn database information from https://github.com/NSLS-II/PyXRF/blob/master/pyxrf/db_config/hxn_db_config.py, where databroker is defined and handlers are registered.

In order to add new beamlines, the similar step should be followed to connect to database for that beamline.

How to add more beamlines to use PyXRF

After adding configuration file for new beamline, we need to work on how to transfer data from databroker into the format PyXRF can take. The only file we need to work on is PyXRF/pyxrf/model/load_data_from_db.py.

For instance, in order to transfer fluorescence data at HXN beamline to PyXRF format, you first need to write a function of map_data2D_hxn in file load_data_from_db.py. Then in function of fetch_data_from_db, you simply add map_data2D_hxn for hxn beamline. Please refer to source code to see how it works.

Those functions on data IO should be moved to https://github.com/NSLS-II/suitcase-pyxrf later.