Ultra-Small-Angle X-ray Scattering Facility


Nika package for 2D -> 1D SAS data reduction

Nika is package of Igor Pro macros designed to reduce 2D (area) detector (e.g., CCD) data into 1D "lineouts" for SAXS or WAXS. Nika is written for Igor Pro, Igor Pro 8.04 & 9.x from Wavemetrics, Inc. 

For introduction and description of capabilities, please see here

On-line manual : You can open on line manual in your web browser and read it here

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.

Workshops on using Irena & Nika packages... since 2012 we organize at the APS 1-3 sessions per year workshops on use of Irena and Nika packages. Next course is planned for TBA as satellite meeting to APS users meeting. For details see here. To request to be put on waiting list for next workshops send e-mail to Connie.

Current version :  Nika 1.85 released 7/18/2023
                     July2023 release. 

Current beta version :  Nika 1.84 released 2/15/2023, February2023Beta release

How to install - check for proper Igor Pro version :

Method Link Instructions

Igor 9.x
Igor 8.04 


Igor 8.04 & 9.x 




older GithubInstaller

Check Youtube channel for instructions.
Uses Github to distribute Irena, Nika, and Indra. Most likely what you want!

Clone & link
(expert users)

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...
    Older versions, no development anymore:
Igor 7.08   Upgrade Igor Pro to higher version. Igor 7 is obsolete by now. 
Installer GithubInstaller Update to Igor Pro 7.08.
Use Installer version 1.10 and install
version 1.82 (February2020 release).
Check Youtube channel for instructions. 
 Higher versions than 1.82 are not tested on Igor 7.08 and may not work. 
Igor 6.37  

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

Igor 6.37 32bit

Universal Installer,


Dropbox links if APS 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/updates/uninstalls Nika, Irena, Indra, and 32 bit versions of xop, uses APS depository
Nika version 1.761 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

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

Obtaining help:

BUGs can be expected, please, let me know if something is not right!

Modification history:

1.85 7/16/2023

  • Fix for IP9.02
  • minor improvements. 

1.84 2/15/2023 Beta

  • Removed option for 2D calibrated data input, None available as far as I know. Confusing users. 

1.84 10/10/2021

  • Igor 9 compatible. 
  • Fixed all fixed length wave names (hopefully). Now should use long names if user chooses so in Configuration for all waves and folders. 
  • Fixed edf importer which developed bugs over time due to changes in detector software. 
  • Add new Eiger detector dimensions to Pilatus detector options. 

1.83 - 9/3/2020

  • Require Igor 8.03 or higher. 
  • DataBrowser - Igor 8 - added Buttons to display w1 vs w2 and extract info from USAXS Folder name strings. Same tools are in Igor 9 right click. 
  • Added for every graph right click option to export as jpg and pxp. Also to duplicate graph (which Igor does on ctrl/cmd-D) but with duplicate of all data in the graph. 1D graphs only.   
  • Main panel - change sorting option "_001". This will now look from the end of name for first number. This si to help with NSLS samples names MyName_00001_waxs.ext etc. Will work for normal files Myname_0001.ext also. 
  • Fixed problem with Sector graph sometimes looking weird - apparently ImageLineProfile sometimes makes different point numbers and this needs to be accounted for. 
  • Add Sector graph which accounts for tilts, requested by user. 
  • Fixed/modified Calibrated 2D data canSAS/nexus input, needed by SMI instrument from NSLS-II. 

1.82 - 2/9/2020

  • Many tools - changed code compiler instruction to rtGLobals=3, this is less forgiving compile which prevents more accidental bugs, but may generate new errors in old code. Report as many errors as possible to author, please. 
  • Main code - added Batch processing - this prevents display of images and all graphing updates. Speeds up code by 2-3x in my testing. Added info window when in use and comments in History since else it looks like Nika hangs.  
  • 12ID support fix. Added ability to read all many options how mask can be defined for goldaverage program. 
  • Changed Nika GSAS export file type to xye (was using old GSA). 
  • Modified to accept in Empty/Dark, Mask, Flood, etc. that tiff and tif files are the same. 
  • Allow for Azimuthal line angle negative values. NOTE: if AzAngle<0 ->>> internally equivalent to AzAngle = 180+ AzAngle.

1.81 12/7/2018

  • Igor 8 OSX XOPs now available. Version 2.0 of 64-bit xops. 
  • Added circles on drawing which are in Q steps. Currently 12 log-spaced circles will be added, red color, with labels of Q values. 
  • Fix mailman link, remove non functioning menu item to open pdf manual. Does not exist anymore. 
  • 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.  
  • Fixed GUI bug which was causing hang of Main Panel on Igor 8. Igor 8 bug, but due to coding bad practice. 
  • Fixed solid angle correction bug. It was multiplying by the solid angle instead of dividing by it. 
  • Modified 9ID data reduction to include solid angle correction. 
  • Added support for 12ID-C.
  • Fixed DND-CAT support to use current output model. 

1.80 7/7/2018

  • Igor 8.0 tested. 
  • Fixed NEXUS exporter to save data which are easily compatible with sasView. sasView has serious limitations on what it can accept as input NXcanSAS nexus data. 
  • Removed range selection controls and moved Save data options to its own tab "Save"
  • Added ImageStatistics and control for user for delay between series of images. 
  • Added font type and size control from configuration to be used for CCD image label. 
  • Added ability to fix negative intensities over subtraction. Checkbox on Empty tab and if checked, ~1.5*abs(V_min) is added to ALL points intensities. 

1.79 1/27/2018

  • Converted all procedure files to UTF8 to prevent text encoding issues.
  • Modified main interface to have radio buttons and only one button for action. This makes cleaner interface as some controls can be hidden. Unluckily, panel is now higher by 20 points.
  • Added support for ALS SRoXS soft energy beamline.
  • Improved 9IDC USAXS support.
  • Added more masking options into main panel listbox right click.
  • Checked that - with reduced functionality - code will work without Github distributed xops.
  • Bug fix - changed ki/kout single precision waves to double precision. This caused issues under very small angles when data were unintentionally binned to less points what should have been produced. This is very old bug causing issues at very small Q vectors with short wavelengths and no beamstops. 
  • Tested and fixed for Igor 8 beta version.

1.78 11/05/2017

  • Promoted required minimum version to 7.05 due to bug in Igor prior of this version.
  • Added restore of prior size of panels when user closes and reopens a tool. Data stored in the current Igor experiment. Size limited to 50% width and 90% height. Hold down any modifier key and size will be reset to original default state.
  • Added ColorTable to preferences, Saved every time color table is changed and restored as needed. Should change the Panel GUI and colors of graph, if exists.
  • Modified folder name length - now each segments (_C, sectors, etc) will use longest possible part of the input file name, previously was limited to 17 characters. This allows longest user input names, but different directions may have different length of name allowed as the strings are different length. _C is shortest, in this case the length of name is about 29 characters.
  • Added ability to read multidimensional data from Nexus. Up to 4D data can be read, index 0 is first, index 2 second index, next two indexes are the image points. Standard. 3D data have only index1 (index0=0), 2D data have both indexes=0.
  • 9ID support - will keep the _270_30 sector of SAXS data for use with desmeared USAXS data.
  • Added UserSamplename string to each folder for long names.
  • Changed and streamlined 9IDC support package to have less controls and be more robust. Reads parameters from each file.
  • ASCII exporter - added export of GSAS-II xye data file.
  • 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.

1.77, 5/1/2017

  • Made Igor 7 compatible ONLY. Thanks to GeneralProcedures changes will not work on Igor 6.
  • Version check - using Github now.
  • Added buttons with links to web based manual pages to each tool.
  • Reduced number of characters allowed in name to 18, Ellipse was adding too many characters and was creating errors…

1.76, 5/1/2017

  • Version 1.75 updated with on line manuals, Igor 6 release only.


  • Fixed old bug where Sample Thickness was not converted to cm before use. This means that prior experiments with calibration constants need to have calibration constant also scaled by factor of 10 to compensate. Added warning to Panel version check.
  • Modified Nexus support, added new library to use it. Major revision of Nexus import and export of data.
  • Moved some common functions to IN2G_GeneralProcedures
  • Removed Utility_JZT from distribution, not needed and causing conflict with JZT package.
  • Updated manual.
  • Fixed slow down caused by debugging messages function


Registration/e-mail list: Please, if you are using these macros let me know via e-mail. This will allow me to have some idea who is interested in these macros and how much of my time is worth to invest in further development. Also, please, indicate if you would like to be included on e-mail list I would like to maintain – I can then sent e-mail announcements when a new version is available. I will not misuse the e-mail list in any way…

Quick disclaimer:  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.