Ultra-Small-Angle X-ray Scattering Facility

X-ray science division, beamline 9ID-C


Irena package for analysis of small-angle scattering data

Irena is data manipulations and analysis toolbox for small-angle scattering (SAXS, SANS, USAXS, USANS) data. It is mostly useable for analysis of data in materials science, chemistry, polymers, metallurgy, physics, and other systems of typically solid or liquid samples. It addresses complex systems with size distributions, hierarchical structures, diffraction peaks, etc. Irena also contains simple X-ray and neutron reflectivity tool, for more complex systems use Motofit. All of these packages are written for Igor Pro from Wavemetrics, Inc. Irena is typically NOT used for analysis of data from most bio-SAXS experiments, there you most likely need program ATSAS.

Current version contains main tools:

  •     Unified fit
  •     Modeling - Direct modeling of SAS from up to 10 populations on up to 10 data sets at once. Selection of form factors and structure factors, Unified fit, Mass or Surface Fractal, and Diffraction peaks.
  •     Size distribution using Maximum Entropy, Total Non-Negative Least Squares and Regularization methods
  •     Guinier-Porod model
  •     Fractal model (combination of mass and surface fractals)
  •     Debye-Bueche, Ciccariello-Benedetti, and Treubner-Streus models
  •     X-ray and Neutron reflectivity using Parrat's recursive method
  •     Small-angle diffraction tool (up to 6 diffraction peaks)
  •     Pair distance distribution function (PDDF, P(r), see GNOM from D. Svergun for more details)
  •     Powder diffraction peak fitting tool (WAXS)

    Support tools

  •     Data plotting tools - 2D, 3D, can create movies of plots.
  •     Merging of two overlappind data sets (SAXS curves from differnet distacnes etc.).
  •     Scattering contrast calculator, including anomalous effects using Croman-Liberman code
  •     Data import tool - imports data from ASCII & XML (CanSAS XML) files
  •     Data export tool - exports data to ASCII files
  •     Data manipulation tools - subtract, scale, multiply, etc. - change data as needed.
  •     Desmearing using Lake method
  •     Data "mining" tool
  •     Scripting tool - scripts Unified fit, Modeling II, Ploting tool, and Size distribution to run automatically on multiple data sets

For more detailed description, please see here: http://saxs-igorcodedocs.readthedocs.io/en/stable/Irena/Introduction.html

On-line manual : We now have on-line manual, you can open it in you web browser and read it here: http://saxs-igorcodedocs.readthedocs.io/

Wiki : There is now wiki for Irena and Nika packages on our Github depository. Check it up - questions of general importance may be asnwered there, if someone already asked them.

Discussion forum for users (in testing mode): Gitter

Mailing group for Irena users: If you want to be informed about Irena updates and possibly have place to inquire about SAXS/SANS analysis problems, visit the page: http://www.aps.anl.gov/mailman/listinfo/irena_users where you can join this group.

Workshops on using Irena & Nika packages... since 2012 we organize at the APS ~ three sessions per year workshops on use of Irena and Nika packages. To request to be put on waiting list for next workshops send e-mail to Connie.

Current version :  2.66 released 1/27/2018 

How to install:

Igor 7   Instructions
Installer GithubInstaller Check Youtube channel for instructions.

Uses Github to distribute Irena, Nika, and Indra. Most likely what you want!
Clone & link Github depository Clone the Github depository to your computer and link folders from your clone to proper Igor locations. If you need help, let me know.

NOTE: Github depository "master" version should be considered development version and while I try to submit to Github only working versions, the code is "beta" version only...
Igor 6    
Igor 6.37 32bit

Universal Installer,


For Igor 6.37; Installs/updates/uninstalls Irena (+Nika, Indra, and 32 bit versions of xop), uses APS depository

Irena version 2.63 is the last version which is Igor 6 compatible and is now obsolete.

NOTE: 64bit version of Igor is NOT supported, use 32bit version.
Igor 5    
zip files Irena_v2.16.zip Link folders to proper locations, contacxt me if you need help. 

Obtaining help:

New for this version........:

2.66 1/27/2018

  • Converted all procedure files to UTF8 to prevent text encoding issues.
  • Fixed Case spelling of USAXS Error data to SMR_Error and DSM_Error
  • Plotting tool I - added control which enforces maximum number of items in legend (default=30). If more waves are in graph, legend gets decimated by necessary integer(2, 3, 4,...). First and last are always included. This presents selection of data names when too many data sets are used.
  • MergeData - added ability to fit-extrapolate data 1 at high q end and added possibility to fit arbitrary combination of merging parameters. Lots of changes. More capable and more complicated.
  • Unified Fit - added button "Copy/Swap level" which will move content of existing level to another level.
  • Checked that - with reduced functionality - code will work without Github distributed xops.
  • Tested and fixed for Igor 8 beta version.

2.65 11/05/2017

  • Promoted required minimum version to 7.05 due to bug in Igor prior of this version.
  • Panels now restore prior size and position. This is set when you drag lower-left corner to scale them up. Data stored on the user computer and size is limited to 50% width and 90% height of current screen size. Hold down any modifier key and size will be reset to original default state.
  • Merge two data sets - added option of sorting qrs names by xyz_string, needed for Nika. Added SMR and DSM data to USAXS.
  • Modeling - added calculation of Rg for size distributions. Requested by Dale Schaefer.
  • Unified fit - changes to two phase systems requested by Dale. Added ability to handle multiple levels at the same time where possible…
  • Data merging tool - modified Optimize code to prevent failures, hopefully improved fitting capabilities.
  • WAXS - Added option to import free AMS diffraction data (http://rruff.geo.arizona.edu/AMS/result.php) - this database contains d, hkl, intensities for minerals.
  • All packages - internal changes and improvements resulting in less and cleaner code.
  • Removed pdf manual from distribution. It is obsolete, use on-line version and if needed, download pdf from the on-line source.
  • Added Update Message to CheckForUpdate code. If present, it will display a message for users.

2.64, 5/1/2017

  • Made Igor 7 compatible ONLY. Thanks to GeneralProcedures changes will not work on Igor 6.
  • Added buttons with links to web based manual pages to each tool.
  • Version check - using Github now.
  • Smearing/Desmearing data support - increased smearing speed about 3x
  • Unified Fit - Modified to handle Slit smeared data which do not extend beyond slit length. Same logic as in Modeling II - extend temporary data to 3*slit length and then truncate.
  • Data merging - added name modifier string and defaulted to new folder name even for QRS name systems.
  • Size distribution - removed limitation that Qmax > 3*slit length for slit smeared data. Optimized speed (2x improvement)
  • Size distribution - fixed bug introduced in MaximumEntropy
  • Fixed more slow debugging calls, few more packages see improvement in speed now.
  • Completely removed Modeling I - about 2k lines of code. Moved code where needed and removed about 3 ipf files from loading.

2/63, 5/1/2071

  • Version 2.62 updated with on line manuals, for Igor 6 only.


  • Updated manual
  • Modified Nexus support, added new library to use it.
  • Moved some common functions to IN2G_GeneralProcedures
  • Fix to QRS names which failed on names containing string "spec" in the name.
  • Added checkbox for slit smeared/desmeared USAXS data in Merge 2 data sets tool.
  • Small-angle diffraction - when user selects "oversample" the parameters for peaks (d, q, width) are now calculated at 5x higher resolution than measured Q points.
  • Desmearing - propagate dQ and if does not exist, create dQ based on points distance.
  • Pair Distance Distribution - changed Matrix solving method since the one used was deprecated by Igor 7.
  • Plotting tool - added ability to add top 2pi/Q linked axis. Using Transform axis package from Igor Pro. Added few new styles and modified existing settings. Fixed Gizmo for Igor 7 which stopped working due to Gizmo function syntax changes.
  • WAXS - removed LaueGo capability and added import of PDF-4+ xml files. Fixed help file.
  • Modeling II - if you hold any modifier key (shift/ctrl/opt/alt…) while clicking on parameters change arrows, the step for next step is set 10x smaller. This enables making small changes to the values. Just keep holding the modifier key, first step is still large, subsequent are small.
  • Size distribution - fixed Regularization for Igor 7, modified trust ranges which were using wrong logic. Now large size is estimated 2pi/Q while small size pi/Q.
  • Fixed slow down caused by debugging messages function

2.61 6/28/2016

  • Due to some new features used, requires Igor 6.34 or higher
  • ASCII import - added ability to slit smear the data on import. Redistributed controls on the Import panel.
  • ASCII import non SAS data - first version of Import non-SAS data tool. No manual yet.
  • Fixed panel scaling and added better package preferences management.
  • Added package for handling files outside Igor to make it easier to write tools working with external files directly. Should not be visible to users.

2.60 3/5/2016

  • Added Panel scaling to most large panels
  • Modified GUI package preferences handling. It was reseting the GUI choices, wrong logic.
  • Data merging tool - fix problem with liberal names.
  • Added multi-package loader (Irena+Nika)

2.59 2/1/2016

  • Igor 7 compatibility release
  • Unified fit - GUI behavior improvements and minor bug fixes.
  • WAXS-Powder diffraction tool - version 1 of Powder diffraction tool for users. Still work in progress, but usable for testing by users.
  • Modified check for updates macro to use http once, if it fails use ftp, if that fails also then bail out and give error. Should be much easier for users who are on systems without net connectivity.


This set of macros is currently being developed for use on any SAS data. Their use by anyone for open science is free of charge. If you want to use them for proprietary work, please contact me, the author, Jan Ilavsky, for permission. There are no warrantees with respect to functionality of these macros, please, verify all results by independent methods.