Package: sif-parser
sif_parserA small package to read Andor Technology Multi-Channel files.This package was renamed fromsif_reader.InstallThis package can be installed viapippipinstallsif_parseror if you havegitinstalled in your system, you can also dopipinstallgit+https://www.github.com/fujiisoup/sif_parserBasic usageIt provides the following methods,sif_parser.np_openRead '.sif' file and return as anp.ndarrayfor image and anOrderedDictfor metadata.>>>importsif_parser>>>data,info=sif_parser.np_open('/path/to/file.sif')>>>dataarray([[[887.,881.25,875.65,...,866.05,870.],[905.6,872.7,900.7,...,871.4,866.45],...,[885.6,879.4,873.5,...,883.6,877.],[879.4,873.,880.5,...,881.,867.]]],dtype=float32)>>>infoOrderedDict([('SifVersion',65559),('ExperimentTime',1254330082),('DetectorTemperature',-100.0),...])If your calibration data is included in the file, this will be included asinfo['Calibration_data']orinfo['Calibration_data_for_frame_1'].sif_parser.xr_open('/path/to/file.sif'):This method is only included if thexarrayproject is installed.Read 'sif' file and return as axr.DataArray.
The metadata is stored inxr.DataArray.attrs.
The calibration data and timestamps are stored as coordinates.xarrayis a very useful package to handle multi-dimensional arrays with metadata.
Seexarray projectfor the details.>>>sif_parser.xr_open('testings/examples/image.sif')<xarray.DataArray(Time:1,height:512,width:512)>array([[[887.,881.25,875.65,...,866.05,870.],[905.6,872.7,900.7,...,871.4,866.45],[922.6,883.95,899.,...,864.6,864.8],...,[880.65,857.95,883.55,...,866.,875.55],[885.6,879.4,873.5,...,883.6,877.],[879.4,873.,880.5,...,881.,867.]]],dtype=float32)Coordinates:*Time(Time)float640.0Dimensionswithoutcoordinates:height,widthAttributes:SifVersion:65559ExperimentTime:1254330082DetectorTemperature:-100.0...Utilssif_parser.utils.extract_calibrationTheCalibration_dataentry ofinfocontains coefficients of a cubic
polynomial used to calculate the wavelengths of an image.
To facilitate thissif_parser.utilscontains theextract_calibrationfunction, which returns the wavelength of each pixel.data,info=sif_parser.np_open('path/to/file.sif')wavelengths=sif_parser.utils.extract_calibration(info)sif_parser.utils.parseUsed to parse a .sif file into a 2 column numpy array as wavelengths and counts.importpandasaspdimportsif_parser# parse the 'my_pl.sif' file(data,info)=sif_parser.utils.parse('my_pl.sif')# place data into a pandas Seriesdf=pd.Series(data[:,1],index=data[:,0])CLIInstalls a command line interface (CLI) namedsif_parserthat can be used to
convert .sif files to .csv.Convert all .sif files in the current directory to .csv.sif_parserConvert all .sif files ending inplin the current directly into a single .csv.sif_parser--join*pl.sifUse as a plugin for PILNOTE!!  The current version does not work as a plugin, maybe due to updates in PIL. Contributions are very welcome.See the issue#7We also provide a plugin for PIL,fromPILimportimageimportsif_parser.pluginI=Image.open('/path/to/file.sif')Note that, however, it does not work for multiple-image files.
Contribution is very welcome!
The image mode is'F', 32-bit floating-point greyscale.HistoryThis plugin is originally developed bysoemrawsbased on Marcel Leutenegger's MATLAB script.Current statusAndor has changedsifformat for many times.
Although I have tested this package with as many kinds ofsiffiles as I have
(the test suit is always checking the compatibility, as the badge above shows),
it might be still incompatible with your particularsiffile.If your file cannot be read by this script,
please raise an issue in github.
If you send me your file, I can add your file into the test suit
(I have a private repo in order to keep your sif file private).Contribution is also very welcome.License of original MATLAB scriptCopyright (c) 2006, Marcel Leutenegger
All rights reserved.Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distributionNeither the name of the Ecole Polytechnique Fédérale de Lausanne, Laboratoire d'Optique Biomédicale nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.