Ultra-Small-Angle X-ray Scattering Facility


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)
  •     Mass Fractal Aggregate - 3D Monte Carlo shape reconstruction. April2019 BETA and later.
  •    Two Phase Solid - 3D visualization of two phase system, ported from SAXSMorph. April2019 BETA and later. 
  •    Hermans Orientation Parameter. See e.g., Macromolecules 2004, 37, 5327-5336, formula 1. 

    Support tools

  •     Data plotting tools - 2D, 3D, can create movies of plots.
  •     Merging of two overlapping data sets (SAXS curves from different distances 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, Plotting 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 answered there, if someone already asked them.

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. Next course will be in May 2018 as satellite to APS users meeting, see here, to request to be put on waiting list for next workshops send e-mail to Connie.

Current version :  2.68 released 12/7/2018

Current beta version : 2.69 beta (2) released May2019

How to install:

Igor 7 or 8

Download link 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...
Test data for
Youtube channel
Github depository

Size Distribution tool test data

and other tools, browse the depository 

User form factors for Modeling in Irena Github depository Github location with available User Form Factors for use in Modeling package. Download the ones you need.
If you develop one and can share, please, send it to author to be included here... 


Older versions, no development anymore:

Igor 6   Upgrade Igor Pro to higher version. Igor 6 and compatible Irena/Nika versions  are obsolete by now. 
Igor 6.37 32bit

Universal Installer,


Dropbox copies, if APS links do not work:

Universal Installer,



Due to changes to APS IT safety requirements, automatic download of the distribution file will not work. You need to download the IgorCode.zip file and install "Using local depository" method.   

For Igor 6.37; Installs/uninstalls Irena (+Nika, Indra, and 32 bit versions of xop)
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.If you get "HDF5OpenFile" error, see here


zip files


Dropbox link:


Link folders to proper locations, contact me if you need help. 

Obtaining help:

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

2.68  12/7/2018

  • Igor 8 OSX XOPs now available. version 2.0 of 64-bit xops. 
  • Removed link to pdf manual, does not exist anymore. 
  • Control procedures - increases speed about twice of generating the menu strings. 
  • ASCII SAS data import - improve importing of slit smeared data. 
  • Unified fit - add left axis units which match units inside the Intensity wave note. 
  • Size distribution, Guinier-Porod, Analytical models, SASDiffraction - add left axis units which match units inside the Intensity wave note. 
  • Size distribution - add new parameters introduced in version 2.67 to wave note and arrange their saving and recovery. Somehow this was forgotten during the original work. 
  • Plotting - remove CanSAS data type. Not used... 
  • Plotting tool - changed the mirror size axis to show 2pi/Q and modified label to "Diameter/dimension 2pi/q [A]" 
  • Modified "Configure GUI..." menu name and added warning on name shortening. Should generate dialog when names are too long and users are not using Igor 8 with long names enabled. Only once per Igor experiment.  
  • Evaluate Size distributions - fixed failure with data from Modeling (II) when user used Pop1 as non-size distribution and used Size distribution in higher Pops. GUI and parameter readout failed at that situation. Checked (and fixed) for data from Modeling package - using Number of Volume distribution and using Radius or Diameter. Previously problem was with Number density of particles and Specific surface area = all worked well only for Diameters. Needed to add hooks for Radius conversion as needed... 
  • Nexus export - fixed Nexus export to output files compatible with SasView (beta version for now). Should work with both desmeared and slit smeared data now. 
  • Merge data - added more functionality, ability to shift in Q data 1 as well as 2, and modified graph for WAXS and SAXS display. Completely reworked optimization routines to make all more robust and easier to fix. Removed lots of ugly repetitive code. 

2.67  7/7/2018

  • Igor 8.0 tested. 
  • Size distribution - added power law slope to Background so one can subtract also low-q power law slope. Added buttons to perform power law fit and background fit. Added option to fit the parameters when data are added to the tool.
  • Nexus exporter - changed to use 1/angstrom for Q as sasView below 4.1.2 (probably below 4.3 at least) cannot convert Q units on import. 
  • Nexus Importer - fixed and modified to be able to import NXcanSAS files from DAWN and Mantid. 
  • Unified fit - modified how the limits and steps are handled when user set value to 0. Fixed Uncertainty analysis in Unified fit which seems to have failed on Igor 8. 
  • Created depository for user contributed form factors on Github: https://github.com/jilavsky/SAXS_IgorCode/tree/master/User%20form%20fac…

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/2017

  • 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



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.