Skip to content
/ xylib Public

library for reading files with x-y data from powder diffraction, spectroscopy, or other experimental methods

License

Notifications You must be signed in to change notification settings

wojdyr/xylib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Aug 7, 2022
199a1ed · Aug 7, 2022
Aug 7, 2022
Apr 27, 2014
Aug 7, 2022
Aug 6, 2020
Jan 8, 2016
Aug 7, 2022
Aug 7, 2022
Sep 8, 2020
Nov 9, 2016
May 2, 2022
Apr 22, 2010
Nov 10, 2020
Dec 15, 2016
Jul 5, 2017
Aug 6, 2022
Jul 4, 2017
Apr 24, 2010
Aug 7, 2022
Nov 10, 2020
Jul 6, 2017
Nov 10, 2020
Apr 22, 2010
Dec 17, 2016
Sep 12, 2016
Nov 9, 2016
Aug 14, 2016

Repository files navigation

xylib

xylib is a portable library for reading files that contain x-y data from powder diffraction, spectroscopy and other experimental methods.

It comes with two programs that can convert supported formats to plain text: command-line xyconv and graphical xyconvert.

Supported formats:

  • plain text, delimiter-separated values (e.g. CSV)
  • Crystallographic Information File for Powder Diffraction (pdCIF)
  • Siemens/Bruker UXD
  • Siemens/Bruker RAW ver. 1/2/3/4
  • Philips UDF
  • Philips PC-APD RD raw scan V3/V5
  • PANalytical XRDML
  • Rigaku DAT
  • Sietronics Sieray CPI
  • DBWS/DMPLOT data file
  • Canberra CNF (from Genie-2000 software; aka CAM format)
  • Canberra AccuSpec MCA
  • XFIT/Koalariet XDD
  • RIET7/LHPM/CSRIET/ILL_D1A5/PSI_DMC DAT
  • Vamas ISO14976 (only experiment modes: SEM or MAPSV or MAPSVDP are supported; only REGULAR scan_mode is supported)
  • Princeton Instruments WinSpec SPE (only 1-D data is supported)
  • χPLOT CHI
  • Ron Unwin's Spectra XPS format (VGX-900 compatible)
  • Freiberg Instruments XSYG (from lexsyg)
  • Bruker SPC/PAR

Examples of supported files are collected in sample-urls.

LIBRARY

The library is written in C++11 and has C bindings.

R bindings: rxylib (CRAN) by Sebastian Kreutzer.

Python bindings: pip-installable, generated by SWIG, details below.

Other languages (suggestions): you may access C API through FFI (here is an example), or extend xylib.i to wrap the C++ interface using SWIG.

The API is documented in the xylib/xylib.h file. Adding new formats -- in README.dev.

Licence: LGPL 2+

xylib is used by:

xyconv

Converts a file from one of the supported formats to plain text:

xyconv myfile.bin plain.txt

It has a few options, see xyconv -h for details.

xyConvert

web/xyconvert-linux.png

The GUI is designed for quick converting of many files at once.

DOWNLOAD

Binary packages:

Source:

To compile the source code you need:

  • C++ compiler (all popular ones are tested: GCC, Clang, MSVC, icc)
  • Boost libraries >= 1.46.1 (only headers).
  • optionally, zlib and bzlib libraries (for reading compressed files)
  • optionally, wxWidgets 3.0 (for xyconvert - GUI converter)

Two build systems are provided: either use CMake or, on Unix, ./configure && make. To skip building the GUI use option -D GUI=OFF for CMake or --without-gui for configure. If you are using git, autoreconf -i is needed before ./configure.

Python bindings require SWIG, Boost headers and a C++ compiler. It may be enough to just type:

pip install xylib-py --user

If the Boost headers cannot be found, run pip with options --global-option=build_ext --global-option=-I/path/to/boost_1_60_0. See the xyconv.py file for usage examples.

AUTHORS

CONTACT

Feel free to send e-mail to the authors, or to the fityk-dev mailing list.

CREDITS

  • Google - the library was started as Google Summer of Code 2007 project by Peng ZHANG, mentored by Marcin Wojdyr from Fityk organization.
  • Michael Richardson provided VAMAS specification and sample files.
  • David Hovis provided a WinSpec file format specification and sample files.
  • Pablo Bianucci provided his code for reading WinSpec format and sample files.
  • Martijn Fransen provided very useful specifications of Philips formats.
  • Vincent Favre-Nicolin provided PSI_DMC and ILL_D1A5 samples; reading his ObjCryst library was also helpful.
  • Janos Vegh sent us his VAMAS reading routines (long time ago, before this project started).
  • Andreas Breslau added Bruker V3 (RAW1.01) support.
  • Bjørn Tore Lønstad provided Bruker RAW V3 format specification and samples.
  • Hector Zhao patched VAMAS code.
  • Jim Fitzgerald (author of FitzPeaks) provided code for reading Canberra (Genie) CNF files.
  • Matthias Richter added Ron Unwin's Spectra XPS format and SpecsLab2 xy format.
  • Johannes Friedrich added xsyg (lexsyg) format.
  • Sebastian Kreutzer added Bruker SPC binary format.

HISTORY

  • 1.6 (2020-09-08)
    • added XSYG format from Freiberg Instruments' lexsyg (Johannes Friedrich)
    • added Bruker SPC binary format (Sebastian Kreutzer)
    • added PANalytical XRDML
  • 1.5 (2016-12-17)
    • improved CNF reading (thanks to Jim and Miha)
    • changes to reading SpecsLab2 xy
    • support text files with lines terminated by CR only
    • more robust reading of CSV files
  • 1.4 (2015-03-31)
    • included xyConvert (GUI converter)
    • support filenames with non-ascii characters
  • 1.3 (2014-01-24)
    • bug fixes only
  • 1.2 (2013-08-01)
    • added SpecsLab2 xy format (Matthias Richter)
  • 1.1 (2012-11-05)
    • added XPS format from Ron Unwin's Spectra program (Matthias Richter)
    • fixed bug in reading energy calibration from Canberra formats
  • 1.0 (2012-07-25)
    • added option decimal-comma for text format
    • fixed bug in CSV format
  • 0.9 (2012-05-20)
    • added CSV format, or more acurately: delimiter-separated values format. Supports popular delimiters (TAB ,;|:/), quoting (") and escape character (\). Non-numeric fields are read as NaNs.
    • added Canberra CNF format
  • 0.8 (2011-01-18)
    • fixed a couple of bugs in pdCIF implementation
  • 0.7 (2010-10-09)
    • added χPLOT (CHIPLOT) format (extension .chi)
    • fixed bug in reading VAMAS files with transmission data (Hector Zhao)
  • 0.6 (2010-04-29)
    • fixed reading of Bruker v3 files
    • changes in API, added C API
  • 0.5 (2010-01-04)
    • added support for compressed files *.gz (requires zlib) and *.bz2 (bzlib)
  • 0.4 (2009-06-11)
    • added file caching (for details see xylib/cache.h)
    • changes to parsing text files in which numeric data is mixed with text
  • 0.3 (2008-06-03)
    • added Bruker binary RAW1.01 format
    • fixed bug in reading one-column ascii files
  • 0.2 (2008-03-09)
    • initial public release