Igor Pro Changelog

What's new in Igor Pro 9.00

Aug 31, 2021
  • Igor Pro 9 contains hundreds of improvements, including built-in support for HDF5, 24 new functions and 34 new operations.
  • Some highlights of Igor Pro 9 improvements include:
  • Autosave has been added with user options to control for the frequency and granularity of saving.
  • New built-in HDF5 support: Igor experiments can now be saved as HDF5 files, and you can open and browse multiple HDF5 files and convert the data into Igor native formats. Igor Pro 9 can still read files created by all earlier versions of Igor and defaults to saving packed experiments using the .pxp file format used in previous versions.
  • Igor supports sparse matrices through the new MatrixSparse operation. It uses the Intel Math Kernel Library Sparse BLAS routines and employs the libraries terminology and conventions. A sparse matrix in Igor is represented by a set of three 1D waves which define the non-zero elements of the matrix. Igor supports three sparse matrix representation formats: COO, CSC, and CSR. Sparse matrix operations in include matrix addition, multiplication, and TRSV which solves a system of linear equations.
  • Agglomerative hierarchical cluster analysis has been added with the new HCluster operation.
  • Complex curve fitting has been implemented.
  • Major update of the MultiPeak Fit package. The functions that were previously provided by the PeakFunctions2 XOP are now built-in.
  • The ability to drag waves from the Data Browser onto a graph to make new traces has been enhanced. New active areas allow you to append traces to specific axes and to make new free axes, as well as select a wave as an X wave. Also, it is now possible to drag waves onto graphs and tables from the Waves in Window list of the Window Browser.
  • For those times when a user-defined panel is just a bit too small to read easily or a bit too big to fit your laptop's screen, you can make that panel bigger or smaller using Igor 9's new Panel→Expansion submenu.
  • Box Plots and Violin Plots now support per-dataset properties.
  • Box Plots and Violin Plots now allow you to control the color, marker and marker size of each individual data point.
  • Igor's PDF export now supports transparency and improved font embedding.
  • Improved editing of Polygons and Beziers.
  • The new Presentation Table Procedures package allows you to programmatically create a "presentation table" in a graph, layout or control panel window.
  • Command completion now includes user-defined functions.
  • Faster procedure compile time.
  • Improved text processing performance.
  • Added automatic multithreading in CWT, ImageRegistration, Interp3DPath, norm and ImageFilter.
  • 29 new MatrixOP functions: spliceCols, zapNaNs, zapINFs, addRows, addCols, waveX, waveY, waveZ, waveT, DecimateMinMax, Select, SQ, VarBeams, SumND, KronProd, bitReverseCol, setColsRange, layerStack, maxMagAB, minAB, minMagAB, gammaln, gamma, expIntegralE1, greaterOrEqual, log2, normP, oneNorm, and expm.
  • Added functions vectorization and optimized memory allocation in MatrixOP.

New in Igor Pro 8 (Aug 16, 2021)

  • Long object names, increased from 31 bytes to 256 bytes.
  • Greatly improved the speed of creating and looking up waves by name when there are many similarly-named waves in a data folder.
  • Drawing speed of graph traces on High-DPI displays under some specific circumstances is dramatically improved.
  • Improved speed of displaying notebooks, help windows, and procedure windows.
  • New Window Browser shows all your windows in one place.
  • Filter by type, name, and/or wave to find that one special graph among a sea of great data.
  • The new toolbar provides easier access to frequently used features.
  • The redesigned Procedure Browser allows you to quickly find and filter symbols (functions, macros, etc.).
  • New Box Plot and Violin Plot graph types make it easy to show the distribution of values within a data set.
  • Procedure windows and the command line now suggest options to complete the current command.
  • New Back and Forward buttons in procedure and notebook windows allow you to quickly navigate in these window types.
  • New Short-Time Fourier Transform (STFT) operation.
  • Added seven new dialogs for transformation operations.
  • New built-in Voigt and dblexp_peak curve fitting functions.
  • ODR fitting is now thread safe and has built-in parallelization.
  • Igor Filter Design Laboratory (IFDL), which was previously a separate paid product, is now built into Igor Pro 8. IFDL is a sophisticated and flexible environment for interactive design, evaluation, and application of Finite Impulse Response (FIR) and Infinite Impulse Response (IIR) digital filters.

New in Igor Pro 6.3.6.4 (Nov 15, 2014)

  • Bug Fixes:
  • Macintosh: Added a workaround for Apple breaking FSResolveAliasFile for Finder aliases in OS X 10.10 (Yosemite). This prevented Finder aliases used to activate XOPs from working as well as preventing other uses of Finder aliases.
  • Macintosh: IgorInfo(3) now returns the correct operating system version for OS X 10.10 (Yosemite).
  • Corrected V_Value normalization result for Cos3 and Cos4 methods of the WindowFunction. operation.
  • The Data Browser's Browse Experiment feature works again, fixing a bug introduced in version 6.35.
  • SetAxis axisName, NaN,NaN no longer crashes.
  • Fixed CurveFit bug: if a matrix data wave had a subrange on it, the compiled version didn't properly set the subrange for X waves that had no subrange (and therefore should have gotten the appropriate subrange from the Y matrix).
  • Fixed crash when doing ODR fit to data with NaNs and an explicit destination wave.
  • Fixed multithreading problem in ImageBoundaryToMask.
  • Fixed thread-safeness of StructPut and StructGet with wave[pointNum].
  • If you wrote an Igor text file for a wave that contained a wave note longer than about 400 characters, you got an error when you tried to load the Igor Text file back into Igor. (This bug was introduced in Igor 6.35 and fixed in 6.36.)
  • AreaXY no longer computes slightly incorrect results when the X values are decreasing, fixing a bug introduced in Igor 6.35.
  • XOPs:
  • Added IgorGIS Help.ihf for the IgorGIS XOP (which is currently in beta testing). The help file explains what the IgorGIS XOP is, and how to download and install the XOP:
  • IgorGIS adds the ability to read many GIS ("Geographic Information System") file formats, including ESRI Shapefile and GeoTiff. It also adds the ability to transform between spatial coordinates using widely used GIS spatial reference specification formats.
  • The IgorGIS XOP does not come standard with Igor. Download the IgorGISBeta zipfile from: http://www.wavemetrics.net/Downloads/IgorGIS/IgorGISBeta.zip.

New in Igor Pro 6.3.5.5 (Sep 23, 2014)

  • Bug Fixes:
  • Macintosh: Igor Pro no longer locks up when quitting after using any LAPACK routines such as those used by MatrixEigenV.
  • Procedures:
  • Fixed bugs in WMImageInfo.ipf and WMImageLogColorTable.ipf.

New in Igor Pro 6.3.5.4 (Sep 16, 2014)

  • Bug Fixes:
  • Fixed ListBox bug introduced in Igor 6.35 where a panel with a listbox in it would go blank if you moved any other control while in drawing mode.
  • Fixed Checkbox side positioning bug introduced in Igor 6.35: the Igor 6.34 behavior has been restored.
  • AreaXY and faverageXY now properly return NaN if x1 and x2 are both before or both after the range of X values.

New in Igor Pro 6.3.5.3 (Sep 13, 2014)

  • Changed Behavior:
  • The SeaLandAndFire color table's transition points have been corrected to match the documentation: sea->land at 25% and land->fire at 75% (formerly 26% and 76%).
  • The bug fix for trace f(z) colorindexRGB will slightly shift colors for the usual large color index waves. Small custom color index waves will see proportionally larger shifts (to the correct colors).
  • Executing the selection in a procedure window no longer prints output from the executed command into the procedure window.
  • Macintosh: To improve compatibility with some programs, when you paste plain text into an Igor text window, Igor now replaces linefeeds with carriage returns which Igor uses internally to mean end-of-line.
  • Macintosh: Upgraded the code signing to version 2 for compatibility with Mavericks 10.9.5+ as well as older versions of Mac OS X.
  • Bug Fixes:
  • An experiment saved with active SetIgorHook functions is now recreated properly even when the hook function is not in the main procedure window.
  • Integrate and Differentiate operations: Specifying an existing complex wave as the /D destination for Integrate/C and Differentiate/C no longer fails to compile. (This is useful only when the wave being integrated or differentiated is also complex.)
  • The areaXY function does a better job of dealing with X waves with repeated values and with ignoring NaNs outside of the selected range.
  • Legend symbols for one point in bar charts show the right fill color instead of the bar stroke color. For example Legend "\\s(wave0[4]) style of 5th bar" shows that bar's color when ModifyGraph barStrokeRGB=(0,0,0) // black.
  • Trace colors: fixed incorrect f(z) ModifyGraph zColor cindexRGB colors. (Two off-by-one errors in calculations were difficult to perceive when using larger color index waves, but were obviously wrong with tiny color index waves.)
  • Image Plots: fixed lack of beforeFirstColor and afterLastColor in image plots using color index waves where DimDelta = 1 and DimOffset= 0.
  • The ReplaceString user function works with case-insensitive comparisons even when the searched-for and replacement text is identical (which is useful in converting to or from lower or upper case).
  • coth() with very large num parameter now returns 1 instead of NaN.
  • Windows: NewMovie accepts file names of up to 255 characters. On Macintosh it is still limited to 31 characters because of a limitation in the Apple CreateMovieFile routine.
  • Macintosh: the window title icons/represented file for unpacked experiments and temporary files are more appropriate than before, no longer appear to be disabled. The window title icon for the command window no longer vanishes after Save Experiment As.
  • Macintosh OS X 10 ("Yosemite") pre-release: the dialog command text and the Debugger's info readout no longer get blacked out as the text is repeatedly updated.
  • Procedures
  • The ImageTransformPanel.ipf (part of the Image Processing procedures) no longer limits the getPlane values to 0-2. Added a GetPlaneByDimLabel feature.
  • PieChart.ipf's ModifyPieChart function now works correctly when specifying custom colors.
  • RosePlot.ipf's help file describes how the default colors can be overridden.
  • Waves Average.ipf bugfix: averaging waveforms with reversed x range uses interpolation instead of averaging the wrong points with the point-to-point averaging algorithm.
  • WMImageInfo.ipf: added WM_ImageColorIndexWave().
  • XOPs
  • In XLLoadWave, fixed a possible crash when loading an Excel column label as a wave name if the label contained more than 30 characters and started with a non-standard wave name character.
  • In XLLoadWave, fixed a bogus "The row specified by the /C flag does not exist in the worksheet" error when loading an Excel .xlsx file containing fewer than 3 rows.
  • Fixed a HDF5XOP crash that occured on attempting to load a "scalar" dataset. "Scalar" means that there is just one element and the HDF5 library reports its dimensionality as zero.
  • In AxonTelegraph XOP, fixed a bug that prevented command line arguments from being handled properly when one Igor instance was already running and Igor.exe was called from the system command line without the /I flag.
  • Windows: We have occasionally seen XOPs that enable floating point exceptions. This causes Igor to crash on operations that should return a NaN such as 0/0. As a workaround, Igor now disables floating point exceptions after the first call to each XOP on Windows. If an XOP repeatedly enables floating point exceptions, the XOP programmer will have to deal with it.
  • Macintosh: Fixed parity setting in VDT2. You could set the parity to even or odd but if you ever set it to odd you could not set it to even without restarting Igor.

New in Igor Pro 6.3.4.0 (Dec 4, 2013)

  • New Features:
  • Macintosh: Added a "Use alternate cursors" checkbox to the Miscellaneous Settings dialog's Compatibility tab. Enable this if the crosshair, box with x, circle with plus, or question cursors are hard to see or disappear. The alternate cursors do not rely on inverting colors, which apparently isn't implemented correctly for some computers using Mac OS X 10.8 and later.
  • Added DoIgorMenu "Help", item, where item is one of: "Getting Started", "Igor Help Browser", "Help Topics", "Shortcuts", "Command Help", "Manual", "Support", "Show Igor Pro Folder", "Show Igor Pro User Files", "License", "WaveMetrics Home Page", "Support Web Page", "IgorExchange", "About Igor", or "Updates". On Macintosh, item can also be "Igor Tips" to toggle the state of Igor Tips.
  • Windows: The License dialog has a new "Install License for All Users" button to escalate Igor to run as Administrator to install the license activation for all users, whether on the computer or logged in over a network (a "server license"). This is effective only if the current user is also a member of the Administrator group. See Igor License Activation.
  • Macintosh: The title bars of the command window and file-based windows can be command-clicked to reveal their location on disk.
  • Changed Behavior:
  • PrintGraphs can now take /PD as first flag to get print dialog so user can print to file or preview.
  • PopupMenu popvalue and popmatch accept up to 255 character strings (previously the limit was 100 chars).
  • The cursor info panel 2D mover now responds to mouse wheel or pad action in the same direction as dragging the 2D mover.
  • Macintosh: Changed file type checking for experiment files and Igor binary files to give precedence to the file name extension over the Macintosh file type after getting an experiment from a user that had the right extension (.pxp) but the wrong file type (TEXT).
  • Macintosh: There is now a simpler way to make the Matlab libraries available to Igor so that the MLLoadWave XOP can work. If you use MLLoadWave, see Using MLLoadWave on Mac OS X and follow the instructions labeled "Macintosh Method 1".
  • Macintosh - for techies only: To make it easier to use MLLoadWave on Macintosh, Igor now defines the DYLD_LIBRARY_PATH environment variable in its Info.plist file. In the unlikely event that you depend on the DYLD_LIBRARY_PATH environment variable, contact WaveMetrics support for further information.
  • Windows: Added a workaround for the problem some Windows users experienced of a long delay at startup with the message "Checking default printer" in the title bar. During this time Igor is asking Windows for default printer settings. This information is mostly used to determine the size, orientation and margins of the page in a new page layout. Some printer drivers attempt to access the printer when asked for default settings. If the printer is inaccessible (e.g., turned off or not reachable through the network), the system spends a long time searching for it. The workaround is that Igor notices that it has taken a long time and sets a preference which makes Igor use a cached version of the printer settings the next time it launches. To implement this, a new preferences file named "Igor Printing Prefs.txt" is created on Windows only. Once this problem is encountered, Igor will continue to used the cached settings until you change the default printer or tinker with the preference file.
  • Bug Fixes:
  • The Modify Trace Appearance dialog no longer hides marker stroke color when text markers are in use. Also fixed an obscure bug involving making changes to multiple fill modes when then first trace already used that fill mode.
  • The trace contextual menu's Send To Back, etc now properly adjusts the text of legends to maintain the correct trace style just like ReorderTraces did.
  • Tags on images now respect the "hide-if-off-scale" setting.
  • Fixed detection of two-byte characters in text labels.
  • Fixed possible memory corruption when Extract is used on text waves with overwrite.
  • Fixed size when exporting a subgraph, fixed overlapping tick labels when 3 or fewer will fit.
  • When fitting with the built-in poly_XOffset fit function, Igor failed to record the X0 constant in the W_fitConstants wave.
  • Applying Optimize to a univariate function that returns NaN no longer prints the BUG message, "fminbr got a bad tolerance value".
  • If you had a user-defined function called "line" that was not in the format of a user-defined fit function, Igor would hang the first time you tried to open the Curve Fit dialog.
  • SpecialDirPath("Igor Application", 0, 1,0) no longer returns a Macintosh OS-9 formatted path; it now correctly returns a native-formatted path as documented for the flags parameter.
  • Fixed failure to revert captured swapXY preference for Image and Contour plots when reverting Image or Contour preferences in the Capture Graph Prefs dialog.
  • Fixed problem of DoWindow/T not working with hidden window if there were no visible target windows.
  • Fixed problem of WinType("Procedure") returning 8. WinType is supposed to ignore procedure windows and work on target windows only.
  • Fixed failure to handle Windows paths in Execute/P LOADFILE and Execute/P MERGEEXPERIMENT.
  • Fixed rare crash during Merge Experiment if user hook functions are present.
  • Fixed Independent Module bug involving #including procedures that are already opened directly (not via #include) and have the same IndependentModule name as the file #including them.
  • Windows: The Object Status dialog can now correctly distinguish between identically named objects in the drop-down list, and no longer closes when the return key is pressed, allowing one to type in an object name as on Macintosh.
  • Procedures:
  • The Delete XY Points procedure detects problematic XY Pairs with differing numbers of points.
  • The Split Axis package now works correctly if you are splitting a category axis.
  • Fixed a bug in HierarchicalListWidget: if you removed the last row, it forgot that the ListWave and SelWave were multi-column waves.
  • The Power Spectral Density procedure sets Variable/G V_ENBW to the "Effective noise bandwidth", and presents longer segment lengths in the PowerSpectralDensity() popup parameter.
  • The Gaussian Filter procedure explicitly labels the frequency graphs with "Hz".
  • The Polar Graphs procedures implement simple radius error bars, and have more programming APIs for modifying basic properties of polar graphs including: WMPolarSetManualRadiusRange, WMPolarGetRadiusRange, WMPolarSetAutoRadiusRange, WMPolarSetZeroAngleWhere, and WMPolarSetAngleDirection.
  • XOPs:
  • Fixed garbling of 64-bit integer data in compound HDF5 datasets.
  • Fixed a bug in the GetString callback that was asymptomatic with XOP Toolkit 5 but symptomatic with XOP Toolkit 6. The GetString callback is used only by ancient non-Operation Handler XOPs.

New in Igor Pro 6.3.2.2 (Jun 10, 2013)

  • Changed Behavior:
  • Size of textboxes in Layouts is now more accurate when exporting at high resolution.
  • Changed PlaySound on Mac to support changing chans or rate even if /A is in effect.
  • Multiline DrawText no longer truncated at first \r character by the dialog.
  • Missing recent files or experiments aren't removed from their lists unless the user approves.
  • Tech Note TN003 was updated to explain that, as of Igor Pro 6.30, Igor no longer writes binary wave files using the version 2 format. It now uses the version 5 format as explained in that tech note.
  • Bug Fixes:
  • Fixed bug where passing a wave to a function with a WAVE/DF input parameter would damage the wave.
  • Prevented bogus P or X used outside of a wave assignment loop warning message when a := expression is defined in a user function. For details, see Wave Dependencies.
  • Fixed draw object resizing when the x axis coordinate is used and the axis is reversed.
  • Fixed very rare phantom line in graphs with magic combination of data and NaN.
  • Prevented crash in the Font Substitution dialog when an installed font's name is longer than 39 characters on Macintosh or 31 characters on Windows. Currently fonts with such long names can't be used in Igor. This will be corrected in a future release.
  • Fixed a potential crash of FuncFit if you use a threadsafe user fit function from the main thread (for instance, from the command line).
  • Removing #pragma hide=1 from a procedure file now properly reverts to (effectively) #pragma hide=0.
  • Fixed a bug in DrawBezier that caused the bezier to not draw correctly.
  • Fixed a crash that occurred if the search expression in the Search Igor Files tab of the Help Browser was longer than about 200 characters.
  • Fixed endless loop that occurred if Histogram /B=4 was passed a wave that contained only NaNs, or that contained just a single non-NaN value.
  • FTPDownload no longer fails when /O is not used or /O=0, the destination file or directory is fully specified, and the destination file or directory does not already exist.
  • ProcedureText no longer limits the length of the macroOrFunctionNameStr parameter to only 31 characters.
  • In the Modify Axis dialog's Range tab, the Expand 5 Percent button now works correctly with a log axis.
  • Fixed a bug that prevented /W flag in NotebookAction, MeasureStyledText and GetMouse from working in independent modules.
  • Fixed normalization in StatsNPMCTest for the case where the input groups do not have the same number of samples.
  • Fixed bug in Optimize: If you called Optimize in a function, the arguments to the /R flag were read in backwards.
  • Fixed a crash in MatrixOp when dividing a matrix by complex number where the imaginary part is zero.
  • Macintosh OS X 10.4 and 10.5: Highlighted marker and line style menu items are now drawn correctly.
  • Procedures:
  • PeakAreasUnipolar.ipf (the procedure file that implements TN020-C UniPolar Peak Areas) works better with negative-going peaks.
  • Scatter Dot Plot.ipf: Fixed a bug which involved creating a graph as a Scatter Dot Plot, deleting it, then creating a new graph that gets the previous SDP graph's name but is not a scatter dot plot. If the Scatter Dot Plot package is still open you run the risk of a Scatter Dot Plot being superimposed on the other graph. Also added a button to remove a Scatter Dot Plot from an existing graph without killing the graph.
  • PieChart.ipf: Added PieChartForProgrammers() and ModifyPieChart() for programmatic creation and modification of simple 2D pie charts. Also made previously static (private) structures and constants public so current pie chart values can be read out.
  • XOPs:
  • Interpolate2 now correctly handles free waves passed as X dest wave in "X from dest" mode (/I=3 flag). Also handles free waves passed as stdDevWave (/SWAV flag).
  • In the VISA XOP, added support for reading the VI_ATTR_USB_RECV_INTR_DATA attribute using the viGetAttributeString function. This permits reading USB interrupt data.

New in Igor Pro 6.31 (Mar 9, 2013)

  • Added a Batch Curve Fitting package.
  • Added the Scatter Dot Plot Panel.
  • Six New functions and operations, including AdoptFiles and GetMouse.
  • Six New example experiments, including Multithreading, Batch Curve Fit, and Scatter Dot Plot demo experiments.
  • Improved the compiler's checking for wave assignments that don't function as expected.
  • Bug Fixes:
  • BinarySearchInterp and Unwrap no longer truncate to integer (this was an Igor 6.30-only bug).
  • BinarySearchInterp is used in 3 WM Procedure files: New Polar Graphs Draw, Image Contrast, and Cross Hair Cursors.
  • Unwrap is used in 5: FilterDialog, Pole and Zero Filter Design, and CmplxToMagPhase, FTMagPhase, and FTMagPhaseThreshold.
  • DrawAction and SetDrawEnv now properly enforce non-liberal group names.
  • Procedures:
  • Batch Curve Fitting package: added the ability to limit fits to a specified point range. The limit applies to all fits in the batch. Per-fit limits continue to use Mask waves.
  • XOPs:
  • Data Browser XOP: on Macintosh and in the IGOR64 version on Windows, the Save Copy button saved unselected as well as selected objects instead of just the selected objects if anything other than a single data folder was selected.

New in Igor Pro 6.21 (Nov 26, 2010)

  • NEW FEATURES:
  • Compound units now supported in log axis tick labels (i.e., when SI units are needed.)
  • Added Igor and IgorRecent keywords to ColorTab2Wave.
  • Windows: Added a rarely-needed option to change file caching behavior. This is almost never needed and should not be used except in very rare circumstances. See FlushFileBuffers.
  • The Histogram dialog Display Results now offers Top Graph as an option.
  • You can now suppress the Fit Progress window using /W=2 with CurveFit, FuncFit and FuncFitMD.
  • CHANGED BEHAVIOR:
  • Changed NewMovie default to flatten as if the /L flag was provided. Must use new /L=0 syntax to not flatten.
  • Changed logic operand ~ to use 53 bits and fixed other logic operations to allow -1 or other negative numbers without overflowing 53 bits.
  • Windows: Speed up saving EPS and Igor PDF with large bitmaps.
  • FindValue/TEXT="" textWave can now find an empty element.
  • ColorScale is much smarter about reserving room for axis labels and tick labels offset from their normal positions. This will affect the position of elements in color scales with tick or axis labels that extend beyond the axes.
  • Changing a SetVariable control that is controlling an internal variable, internal string, or system variable (K0, etc) now marks the experiment as unsaved.
  • Macintosh: Added a partial workaround for some slow printer drivers (e.g., HP Photosmart C7100 Series) which take a long time (e.g., 0.5 seconds) to perform certain Print Manager calls (e.g., PMSessionValidatePageFormat).
  • Macintosh: Made scrolling help and notebook windows containing pictures a bit smoother.
  • BUGS FIXED:
  • Fixed annotation resize bug in layouts.
  • Fixed rare crash involving Duplicate and free wave.
  • Selecting more than one wave in various dialogs works again.
  • Fixed crash involving Draw to Next in graphs. Caused by bug introduced when allowing subranged data to work in this mode.
  • Fixed a crash when using Fill to Next mode in graphs.
  • Resample and the Resample dialog handle large waves without generating spurious errors.
  • XYZ contours properly default to using perturbation again (bug introduced in Igor 6.20B03).
  • Colorscales with only one of First Color at Z= and Last Color at Z= set to manual values now draw with the correct range of colors.
  • The ColorScale dialog popup menus no longer duplicate liberally-named trace names.
  • The debugger's expressions pane no longer substitutes local variables for components of a data folder path.
  • The debugger no longer clips traces in the debugger graph when axes are hidden.
  • Macintosh: Improved the appearance of custom menus such as the color picker menu.
  • Fixed incorrect equation for dblexp_XOffset. An extra set of braces crept in while we weren't looking.
  • The Display Results boxes in various dialogs would let you select Top Table or Top Graph when there were no tables or graphs, resulting in a command execution error when you clicked Do It.
  • The Quick Fit items in the graph contextual menus (right- or control-click on a trace, or in the graph margins) failed to handle the new Poly_XOffset fitting function.
  • Leading spaces are now ignored when pasting numeric text into a numeric wave's cell in a table.
  • Documentation:
  • ModifyContour's equalVoronoiDistances keyword is no longer misspelled in the documentation.
  • Procedures:
  • Added Polar Graph Legend item to the Graph menu. Polar graph menu items disappear if the graph is not a polar graph. See Polar Graphs.
  • The Sonogram.ipf algorithm now defaults to computing shorter FFTs at the start and end of data instead of zero-filling. Zero-filling is still an option; there's a new Zero-fill checkbox in the panel.
  • Fixed some issues with Resize Controls Panel.ipf and Rewrite Control Positions.ipf.
  • Changes to HierarchicalListWidget.ipf: Buggy line in WMHL_AddColorSupport() caused an index-out-of-range error when run under rtGlobals=3; Added foreColor and backColor optional inputs to WMHL_ExtraColumnData(); Changed WMHL_ExtraColumnData() such that unless you specify colors, it leaves the color set by WMHL_AddObject() alone. Fixed bad index to ListWave in WMHL_ExtraColumnData(). WMHL_SetUsersListboxProc() didn't actually work: procedure name was added to structure, but modified structure wasn't written back to the user data in the listbox.
  • Fixed Waves Average.ipf to use point-by-point averaging when all XY pairs use the same X wave.
  • Transform Axis package now has the option of scientific format tick labels. Use the Modify Transform Axis control panel to select the option.
  • Cleaned up some things in the Window Browser package (Misc->Packages->Window Browser). See comments in the file.

New in Igor Pro 6.20 (Sep 15, 2010)

  • NEW FEATURES:
  • Added automatic checking for Updates to Igor. The automatic checks can be disabled.
  • Added FTPDelete and FTPCreateDirectory operations.
  • Added the ability to merge instead of completely overwriting when uploading or downloading a directory with FTPUpload and FTPDownload.
  • Added FetchURL function for fetching data from a web server.
  • Added URLDecode and URLEncode functions for percent-decoding and encoding URL strings.
  • Add pre-defined global symbols, #define MACINTOSH or #define WINDOWS, as appropriate for the kind of Igor application that's running. See Pre-defined Global Symbols.
  • Added the defined(symbolName) function. See Conditional Compilation.
  • LoadPackagePreferences and SavePackagePreferences now set an output variable named V_structSize to the size of the structure passed to those operations. This may be useful in handling structure version changes.
  • Added options to TraceFromPixel that control the region over which traces are searched for. See the DELTAX and DELTAY keywords.
  • Added the IndependentModuleList function which returns the list of independent module names.
  • Added AfterCompiledHook and BeforeDebuggerOpensHook to User-defined Hook Functions.
  • Added Mud and Classification color tables.
  • Added changeableByCommandOnly property to Notebook operation. This is for programmers only and has very limited use.
  • Line fits done with CurveFit now output the coefficient of determination r2 statistic in a variable called V_r2.
  • Added poly_XOffset built-in fitting function. Just like the poly function, but has a constant X offset that can improve numerical stability when fitting with X values far from the origin.
  • CHANGED BEHAVIOR:
  • Now support hex 0x style literals larger than 32 bits. But the value will be stored in a double which has only 53 bits of precision.
  • Changed logic ops (&, | and ^) to use up to the 53 bits available in a double.
  • Changed printf code to print integer formats using 64 bit ints. But since the data is in a double, only 53 bits are precise.
  • Tables can now display up to 53-bit hex and octal values. Previously only 32 bits worked.
  • sscanf operation can now handle up to 53-bit integer conversions. Previously only 32 bits worked.
  • During experiment load on Macintosh, user preferences are used for procedure files and plain text notebooks instead of factory default preferences, as has always been the case on Windows. The upshot is that if you load a Windows experiment on Macintosh, procedure files and plain text notebooks will now be formatted according to user preferences.
  • Intel Macintosh only: Igor now uses Intel's Math Kernel Library for its implementation of the LAPACK linear algebra library instead of the implementation in Apple's Accelerate Framework. We find fewer bugs and better performance with MKL. (Note: we have used the MKL library on Windows for some time).
  • BUGS FIXED:
  • FindLevels now handles incorrect parameters in a threadsafe fashion.
  • Inside an independent module, you can now call a static function in another procedure file using moduleName#staticFunctionName, as long as that other procedure file is in the same independent module. Note: this has always worked in the ProcGlobal "independent module". See The IndependentModule Pragma.
  • Redimension/E=2 now swaps byte order even if no type flags are specified. This was broken in 6.10. This fix also fixes the MDChangeWave2 XOPSupport routine when called solely to swap byte order.
  • Fixed crash in Redimension/E=2 when called to swap bytes in complex wave.
  • Fixed a bug in SavePackagePreferences that caused Igor to report corrupted preferences if you changed your preferences structure to be smaller than it was before.
  • Fixed a bug in the Curve Fit dialog, New/Edit Fit Function code editor: multiple-line fit functions appeared in the code editor as one long line.
  • The Notebook and NotebookAction operations now return an error if you try to change a document open for read only.
  • Fixed crash when a picture in a layout window was overwritten in the Picture Collection.
  • Fixed a bug in MatrixOp that affected the fft() function only when the options flag was set for swapping.
  • DOCUMENTATION:
  • Added Network Communication.ihf help file. See Network Communication.
  • XOPs
  • The Gizmo XOP's Append Annotation menu item now calls the new Append Gizmo Annotation panel.
  • The Interpolate2 XOP can now handle NaNs in the X destination wave when using "X From Dest" mode. For details see Destination X Coordinates from Destination Wave.
  • Procedures:
  • Added GizmoAnnotations.ipf, which provides a panel-based annotation creator for Gizmo windows. These Gizmo annotations are textured quads. The texture is created from a small graph which can contain anything, not just a normal graph annotation. Width and height of the annotations are limited to power of 2 pixels.
  • Fixed another Index Out of Range error in Transform Axis package.
  • In Split Axis package, fixed a bug: if you clicked the Unsplit button when the menu said None Available, it would put up an error alert and break into the debugger.
  • In Split Axis dialog, changed menu updating so that the most recent axis split is offered for unsplitting or marking. That will enhance that chances that a multiply-split axis will be unsplit in the right order (most recent first).
  • Enhanced the Scatter Plot Matrix package to plot either all pairs of waves from a list of 1D waves, or all possible pairs of columns from a matrix wave.

New in Igor Pro 6.1.1 (Aug 28, 2009)

  • NEW FEATURES:
  • Macintosh: Sound input and output now uses core audio and supports hardware with more than two channels, high sampling rates and 32 bit floating point data. See SoundInStatus, SoundInStartChart and PlaySound.
  • Now support WAVE w= ModuleName#waveRefFunc() syntax.
  • Now support external subwindows when the host is a panel window and the host is resized.
  • Added to ImageAnalyzeParticles a new flag (/CIRC) which allows you to control the range of circularity of the detected particles.
  • Added to ImageAnalyzeParticles a new flag (/EBPC) which allows you to exclude particles that have one or more pixels on any of the image boundaries.
  • Added a new function Variance(inWave) that returns the variance of real input waves.
  • The DrawText dialog has 1-degree text rotation combo box.
  • Added /FREE flag to the Extract operation.
  • CHANGED BEHAVIOR:
  • Clicking Stop in the Debugger stops at currently executing macro line instead of the first line of the macro.
  • Limited length of automatically-generated table titles to 40 characters as it was prior to Igor Pro 6.1. Otherwise long table titles mess up the Windows->Table submenu on Windows. Explicitly set titles can still be up to 255 characters.
  • BUGS FIXED:
  • Macintosh: Put in a workaround for a bug in a pre-release version of Mac OS X 10.6 which caused the Igor custom controls in the Print Graph dialog to fail to work.
  • Macintosh: Fixed a problem that caused file reads and writes to fail for files greater than 2 GB.
  • Windows: fixed ValDisplay appearance with frame=5 missing right side of the frame.
  • Prevented crash when KillWaves is used on a free wave.
  • Fixed bug in color as f(z) when the wave has NaN at point 197 and when it has very long stretches of the same color.
  • Fixed doubling up on last point of wave[0,inf] += xx when executed from the command line.
  • sscanf now returns 0 rather than -1 if passed an empty string.
  • Added better error messages for attempts to use function-only flow control statements in macros.
  • FunctionPath now works correctly from an independent module even if SetIgorOption IndependentModuleDev=0 (the default setting).
  • Fixed a crash in ImageRegistration and MatrixSVD/B.
  • Fixed a problem in DSPPeriodogram that returned an error in default mode (no intervals).
  • SetVariable valueBackColor now works on Windows. Now valueBackColor is used even if frame is off, but only if valueBackColor isn't =0. On native Macintosh removed white border and color splash outside the frame.
  • Fixed independent module bug that resulted in changing SetWindow hook=$"" to be imName# when executed in an independent module #pragma independentModule=imName.
  • Macintosh: the appearance of a control placed inside a filled drawing rectangle is no longer marred by little white lines.
  • Fixed SetVariable dialog not accepting row dimension label change for a wave value.
  • Fixed a bug that caused various file-related errors if the name of the boot volume contained accented characters. One manifestation of this is that it prevented Igor from recognizing that it was correctly licensed.
  • Fixed a bug introduced in Igor Pro 6.10B01 that caused errors when loading Igor text files.
  • Fixed a crash if you tried to search help files while in the debugger.
  • Fixed crash in Save operation if a non-existent wave was specified. This crash was introduced in 6.10B05.
  • Fixed error when the Save Waves dialog generated a command that was exactly 400 characters before counting the CR at the end of the command.
  • XOPs:
  • Updated the MLLoadWave XOP so that it will work with Matlab 2009a.
  • Updated Macintosh Data Browser to support horizontal scrolling with two finger trackpad gesture.
  • Procedures:
  • Corrected WMMenus.ipf so that the Window Browser displays its window when you select either Misc->Packages->Window Browser or Windows->Control->Packages->Window Browser.
  • The Split Axis package now does the right thing with axes that participate in Swap XY (either through traces with the /VERT flag or via ModifyGraph swapXY). It also now restores the reversed-ness of reversed axes when un-splitting.
  • Updated Image Particle Panel.ipf.
  • Added optional reporting of background level and ratio of peak height to background in Multipeak Fit 2.
  • Fixed AppendContourToGizmo.ipf so that the contour and surface popup menus work.
  • KBColorizeTraces.ipf revised to improve panel's appearance on Windows (control placements).
  • Examples:
  • Most of the sound input examples were modernized to support the new core audio support on Mac.
  • Added a Visual Studio 2008 version of the IgorClient example Windows Automation client program. This is in "Igor Pro FolderMiscellaneousWindows AutomationAutomation Server Examples.zip".
  • Windows: updated demo experiment for Direct Show XOP (DSXOP).

New in Igor Pro 6.1 (Jun 25, 2009)

  • The principal change in 6.1 is the use of more modern graphics code for drawing graphs, tables and page layouts. On Macintosh this involves the radical change of using Apple's Quartz routines rather than the venerable QuickDraw routines. On Windows just slightly more advanced code is used with a small amount of GDI+ instead of GDI.
  • Rotated text (annotations, tick labels, etc) in one degree increments.
  • New SQL XOP.
  • Notebook subwindows can be embedded in control panels.
  • Igor now also loads extensions, procedures, and help files from a new "Igor Pro User Files" folder, whose location guarantees write access by the user even if they don't have administrator privileges.
  • Improved Multi-peak Fitting and Ternary Plot packages.
  • Macintosh only: PDF export and long file names.

New in Igor Pro 6.05 (Mar 24, 2009)

  • BEHAVIOR CHANGES:
  • Changed wave[val]= expr to round val in user functions (as has been done in macros forever).
  • BUGS FIXED:
  • Fixed rare RemoveFromList crash when removing an item at the end of the list that didn't have a trailing separator.
  • Macintosh: Removed the Mac OS X limitation of 256 simulataneously open files.
  • Fixed a routine that detects leading quotes in double-byte (Japanese) strings. This obscure bug caused rare errors in ExecuteScriptText and in invoking Igor from a batch file on Japanese Windows systems.
  • Fixed bug introduced in 6.02 that caused the Quit button in Load General Text Get Names dialog to malfunction.
  • ModifyGraph zColorMax and zColorMin values are no longer ignored in associated f(z) colorscales.
  • ModifyImage maxRGB and minRGB values are honored even for the very last value or first value in the range. (Previously the very last color of a non-reversed or first color of a reversed color table was replaced with the maxRGB or minRGB color.)
  • Fixed subtle bug in image plot and colorscale color index mapping for last indexed color and after-last-color. This slightly tweaks the displayed colors when a color index wave is used for image plots and f(z) trace colors.
  • Fixed a bug that caused the wrong data to be pasted if the clipboard contained more columns of data than the table selection.
  • Fixed bug in user-defined menus where items defined with a command that invoked the Missing Parameter Dialog would cause the rest of the definition line to be improperly interpreted, usually resulting in an error.
  • LoadData now detects and rejects dot-underscore files (e.g., "._wave0.ibw") created by Apple's SMB software.
  • Fixed bug introduced by fix for /W=$("name1#name2") in interpret mode, which broke the $string1#$string2 syntax.
  • Fixed pcsr when on the cursor was attached to an image plot of complex data.
  • Fixed bug involving DrawRRect and axis coordinate systems.
  • Fixed ThreadReturnValue for complex type,
  • Fixed crash where KillWaves was done in in a datafolder followed by a KillDataFolder of an enclosing data folder.
  • Restore wave lock state on loading from file.
  • Fixed access to V_ vars in ThreadSafe functions.
  • Fixed bug involving DrawRRect and axis coordinate systems.
  • Fixed crash in layout where a draw object is deleted followed by SetDrawLayer/K.
  • Fixed Histogram crash in ThreadSafe function.
  • Editing polygons works with waves containing NaN breaks.
  • Procedures - Added IgorThief.ipf, which adds a user interface to manually trace data from a scanned image of a graph. See WaveMetrics Procedures.
  • Examples - Revised the Trace Graph experiment to use the new IgorThief.ipf procedure.

New in Igor Pro 6.04 (Aug 22, 2008)

  • The GetSelection operation now works with subwindows as well as standalone windows.
  • Macintosh: Igor is no longer brought to the front if user clicks a close box in window created with /K=1 (always kill). This is to avoid the OS dialog saying that Igor wants to be activated.
  • Fixed curve fitting bug that could cause a hang when fitting with a threadsafe user-defined fitting function. The fix may also improve the efficiency of multi-threaded fitting with user-defined fitting functions. See Curve Fitting with Multiple Processors.
  • ImageTransform getPlane and insertPlane no longer leak memory.
  • Fixed rare crash in wave assignment statement involving very large byte waves.
  • Fixed rare crash when negative start used in display subrange.
  • ShowTools/A poly now properly sets poly mode.
  • Completely rewrote some cross-platform code for drawing polygons and waves to fix a hang that occurred only on Windows Vista.
  • Improved DoWindow when used with /W flag. Can now use to test existence of subwindows (had not been setting V_Flag correctly.)
  • Fixed possible crash in waveform arithmetic and assignment when called user function redimensions destination wave in subrange specification or on the right-hand side.
  • Fixed handling of trace instance names in user functions when liberal names include the # character.
  • Fixed ImageGenerateROIMask when a rounded rect was used in an axis coordinate system.
  • Fixed lack of window hook function call when click in a subwindow (see SetWindow).
  • Tags attached to hidden graph traces are now also hidden.
  • Fixed bug and possible crash in ImageInfo when explicit colors are defined.
  • Changed recreation macro generation for controls that use the bodyWidth param to avoid bad positioning for very complex panels.
  • Fixed SetDrawEnv rotate in functions.
  • Fixed function compiler when a function calls two or more functions of the same name in different modules.
  • Fixed recreation macro for arrow markers using _inline_ mode.
  • Fixed AxisInfo SETAXISFLAGS when /A=2.
  • Commands now support /W=$("name1#name2") subwindow syntax in macros and one the command line.
  • The Filter Dialog's high pass filter number of coefficients control works now, and liberally-named waves are no longer missing from the Apply Filter list.
  • Fixed a crash that would occur during startup if the default font is missing, Font Subtitution is enabled, and no substitution for the missing font has already been selected.
  • Fixed a bug that caused LoadWave to load only the first 10,000 columns of a file with more than 10,000 columns when loading as 1D waves.
  • Fixed a bug that could cause highlighting of text to be wrong when you horizontally scrolled text.
  • Fixed a bug in curve fitting: weighting was not taken into account when calculating fit coefficient errors for implicit fits (CurveFit/ODR=3), or for /ODR=2 if there was no Y weighting.
  • Fixed a crash in curve fitting with /ODR=2 if there were NaNs in the X weights.
  • Fixed a bug in curve fitting: when using a mask wave (or weighting wave with zeroes) and held parameters, the check for number of data points was too strict because it didn't take into account the number of held parameters.
  • Fixed problem where LoadWave /B did not set output wave name when loading matrix and when skipping columns using /L. This was due to a bug that I introduced when I previously fixed a similar bug in 6.03A.
  • Fixed bug in WaveMin and WaveMax: a wave with negative X scaling returned NaN if an X range was specified with x1 < x2. Now the order x1 and x2 doesn't matter.
  • Fixed a bug in exterior subwindows that could cause controls to be activated incorrectly. The particular problem was a listbox that scrolled when a row was clicked, if it was in the second exterior subwindow control panel.
  • Fixed a bug in Optimize that prevented the solution from being copied to the output wave.
  • Fixed a bug in the Wave Subrange dialog (used, for instance, to select a part of wave to use for error bars) that caused the dimension label menu to be filled incorrectly.
  • Fixed the File->Save History Copy command. It has done nothing since Igor Pro 4.
  • Fixed a bug: Autoscale only visible data included a point beyond the visible data. See Automatic Axis Ranges.
  • Fixed crash: If you did a fit to data graphed on a log axis, changed to a linear axis and repeated the fit, a crash could occur.
  • Fixed a bug that caused high ASCII characters to be displayed incorrectly if you saved a notebook created on Windows on Macintosh or vice versa.
  • Fixed a crash in the debugger if the breakpoint was placed on the line that contained the Function keyword.
  • In the Save Graphics dialog, clicking the RGB or CMYK radio buttons had the unintended effect of causing the custom size setting to be ignored.
  • Fixed failure to accept a 31 character liberal wave name in Load Igor Text (LoadWave/T).
  • Fixed leak of two small handles when creating a table.
  • Fixed bug that prevented OpenNotebook /M=prompt operation from showing user prompt in some cases.
  • Opaque objects in page layouts are now printed opaquely even when the layout has a non-white background .
  • Macintosh: Help tips for controls in an external control panel are no longer displayed over the parent window.
  • Macintosh: Fixed the command-key equivalent for the Show Column Info Tags item.
  • Macintosh OS X 10.5: put in a work-around for a bug in Apple's implementation of the LAPACK library that caused a crash during curve
  • fitting with constraints.
  • Macintosh: Fixed assignment of numbers larger than 2^31 to unsigned 32 bit integers.
  • Macintosh: Got a report of error -199 when opening a procedure file in OS X 10.5.2 but was unable to reproduce it. This error has to do with accessing the resource fork which holds non-essential information such as the page setup, the window position and the font. This error is now treated as non-fatal so that the procedure file can be opened.
  • Macintosh: Worked around problem in writing notebooks and procedure files to a Windows server from Mac OS X via SMB. The symptom was that the files name would change from, for example, "Notebook0.ifn" to "Notebook0.ifnT0".
  • WMMenus.ipf: changed the way the HDF 5 package is installed.
  • Updated Sonogram.ipf to set the initial graph size properly.
  • KBColorizeTraces.ipf : restored KBColorizeTraces() to lightness, saturation, startingHue parameters only (as per Igor 6.02A and earlier), and added KBColorizeTracesLinearHue() with same parameters, and KBColorizeTracesOptLinear(lightness, saturation, startingHue, [useLinearHue]). Also, it now works correctly if the current data folder isn't root.
  • Revised PopupWaveSelector.ipf
  • Revised WaveSelectorWidget.ipf
  • Revised SQLUtils.ipf
  • Revised HierarchicalListWidget.ipf
  • Revised SQLConstants.ipf
  • Revised Image Line Profile.ipf
  • Revised FilterDialog.ipf
  • New BoxLimitPanel.ipf procedure for easy x,y,z axis limits for Gizmo.
  • XOPs
  • Fixed a bug in the Data Browser Execute Cmd button which would have skipped one wave when the generated command was too long.
  • Macintosh: MLLoadWave is now universal (Intel as well as PowerPC). If you are using the old PPC-only MLLoadWave_OSX XOP (in "More Extensions:File Loaders:PPC Extensions), you should deactivate that XOP by removing its alias from Igor Extensions and activate the new MLLoadWave XOP by adding its alias to Igor Extensions. The old MLLoadWave_OSX XOP will be removed from the distribution as of Igor Pro 6.10. See the MLLoadWave Help file for details on Macintosh configuration requirements for MLLoadWave.
  • Fixed a bug in the Interpolate2 operation where the output data would be skewed when using "X from dest" mode using waveform as both source and destination when X scaling of waves was reversed and the destination wave was shorter than the source.
  • Fixed a bug in Gizmo voxelgram plots where related waves were not marked as waves in use.
  • Gizmo's axis ranges are easier to set, and a new BoxLimitPanel.ipf procedure adds a GUI to make it even easier.
  • Fixed a bug in the NIGPIB2 XOP which prevented the /Q flag from working.
  • Fixed a rare bug that caused empty text cells in a spreadsheet to cause an error in XLLoadWave.
  • Macintosh: Fixed a problem that caused an error if you tried to load a little-endian SDS using the HDF4 Loader.

New in Igor Pro 6.03 Alpha 2 (Jun 12, 2008)

  • Fixed a bug where the cursor did not change to a finger while over the right side of a special action in a notebook or help file.
  • Macintosh: Worked around a bug in Leopard (Mac OS X 10.5) that prevented operation of the scroll bars in ListBox controls, when those scroll bars were located in the control bar area above a graph's plot area.