Interactive data analysis with iPython
Many users are familiar with matlab, which is not supported by the LCLS offline group. This is a description of how you can use interactive python to analyze your data in a very similar way.
Many thanks to the XPP crew, Henrik Lemke in particular, for providing guidance, code examples (in matlab) and feedback in writing the python scripts presented here.
The components
- ipython
... an interactive python shell
External links:
- matplotlib pyplot / pylab
... an open-source plotting tool
- numpy
... numeric python
External links:
The Matlab-like tools / library provided by PCDS
- matlab.py
... a module implementing in python some of the tools written by Henrik/XPP for matlab
Starting iPython[ofte@psana0XXX myrelease]$ ipython Python 2.4.3 (#1, Nov 3 2010, 12:52:40) Type "copyright", "credits" or "license" for more information. IPython 0.9.1 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object'. ?object also works, ?? prints more.
Loading the library. Normally 'import matlab' would be recommended, but if you do 'from matlab import *', all the functions defined in this module gets loaded in the current namespace, and you can see them in your workspace. This might be easier for interactive work.In [1]: from matlab import * Pretend this is matlab
who
gives you a short list of workspace contentsIn [2]: who H5getobjnames ScanInput ScanOutput filtvec findmovingmotor getSTDMEANfrac_from_startpoint get_filter get_limits get_limits_automatic get_limits_channelhist get_limits_correlation get_limits_corrfrac h5py np plt rdXPPdata runexpNO2fina scan scaninput
whos
gives you a longer list of workspace contentsIn [3]: whos Variable Type Data/Info -------------------------------------------------------- H5getobjnames function <function H5getobjnames at 0x2b57de8> ScanInput type <class 'matlab.ScanInput'> ScanOutput type <class 'matlab.ScanOutput'> filtvec function <function filtvec at 0x2b57f50> findmovingmotor function <function findmovingmotor at 0x2b57d70> getSTDMEANfrac_from_startpoint function <function getSTDMEANfrac_<...>_startpoint at 0x2b581b8> get_filter function <function get_filter at 0x2b57ed8> get_limits function <function get_limits at 0x2b58050> get_limits_automatic function <function get_limits_automatic at 0x2b58230> get_limits_channelhist function <function get_limits_channelhist at 0x2b582a8> get_limits_correlation function <function get_limits_correlation at 0x2b580c8> get_limits_corrfrac function <function get_limits_corrfrac at 0x2b58140> h5py module <module 'h5py' from '/reg<...>ython/h5py/__init__.pyc'> np module <module 'numpy' from '/re<...>thon/numpy/__init__.pyc'> plt module <module 'matplotlib.pyplo<...>n/matplotlib/pyplot.pyc'> rdXPPdata function <function rdXPPdata at 0x2b57c80> runexpNO2fina function <function runexpNO2fina at 0x2b57e60> scan ScanOutput <matlab.ScanOutput object at 0x2b60536bee90> scaninput ScanInput <matlab.ScanInput object at 0x2b60536b4e90>
Examples
1) Select limits from graphical input and plot filtered IPIMB
Overview
Content Tools