Igor Pro 5 New Feature Details

Below are the details of Igor Pro 5 relative to Igor Pro 4.


System Requirements

On Macintosh, Igor Pro 5 runs on Mac OS 9.1 and later, including Mac OS X. On Mac OS 9.1, it requires CarbonLib 1.6 or later. CarbonLib is available from Apple Computer. Igor Pro 5 does not run on Macintosh 68K machines.On Windows, Igor Pro 5 runs under Windows 98, Windows 2000, Windows ME, and Windows XP but not Windows 95 or NT 4.

Version Compatibility

Igor Pro 5 can read files created by all earlier versions of Igor.

If you don't use features new in Igor Pro 5, then experiment files that it writes are readable by earlier versions (except that to read Windows files on Macintosh you need Igor Pro 3.1 or later).

Once you use features added in Igor Pro 5 and save an experiment file, that file may cause errors if you try to read it in an earlier version of Igor. Just in case you need to go back to an earlier version of Igor, it is a good idea to make backup copies of all your Igor files.

Some Igor Pro features are not supported in Mac OS X. See Not Supported On Mac OS X .

Some obsolete features of earlier versions of Igor Pro are no longer supported. See Features Removed From Igor Pro 5 .

Some behaviors have changed slightly in Igor Pro 5. These changes may affect some existing Igor experiments. See Behavior Changes In Igor Pro 5 for details.

Updating Your Igor Preferences

On Mac OS 9 and Mac OS X, Igor will automatically create a new "Igor5 Preferences" file based on your "Igor4 Preferences" file.

On Windows, Igor Pro 4 stored preference files in the folder containing the Igor.exe file. However Igor Pro 5 stores them in:

C:\Documents and Settings\<user>\Application Data\WaveMetrics\Igor Pro 5\

where <user> is the name of the current user. Igor Pro 5 creates this folder the first time it runs. The Application Data folder may be hidden by Windows XP and later unless you configure it to show hidden files and folders. If you want to carry your Igor Pro 4 preferences over to Igor Pro 5, you need to do the following:

Quit Igor Pro 5 if you are running it.

Find your Igor Pro 5 preferences folder, if it exist and delete the "Igor5 Preferences.ipr" and "Igor5 Preferences.ipr.igr" files.

Copy the "Igor4 Preferences.ipr" and "Igor4 Preferences.ipr.igr" files from your Igor Pro 4 folder into your Igor Pro 5 folder (the folder containing Igor.exe).

Restart Igor Pro 5. It will now create new "Igor5 Preferences" files in the Igor Pro 5 preferences folder based on your "Igor4 Preferences" files.

You can now delete the "Igor4 Preferences" files that you copied to your Igor Pro 5 folder.

User-Interface Changes

In earlier versions of Igor, if you opened a procedure window and selected a menu item added by an Igor procedure file, Igor did not execute the selected procedure but instead displayed the procedure's code. This programmer shortcut feature confused new users so it was removed. Now to see the procedure code you must open any procedure window, press the option (Macintosh) or Alt (Windows) key, and then select the menu item added by an Igor procedure file. Igor will display the procedure code. If the active window is not a procedure window or if the option or Alt key is not pressed, Igor will execute the procedure.

On Macintosh, pressing F1, F2, F3 or F4 used to be equivalent to pressing cmd-Z, cmd-X, cmd-C or cmd-V. This feature has been removed because you can now use a function key to invoke a procedure.

On Macintosh, the Find Selection keyboard equivalent now defaults to command-control-H, and now command-H hides Igor on Mac OS X.

The Igor 4 keyboard equivalent of command-H can be restored by checking the "Use command-H for "Find Selection" checkbox in the Miscellaneous Settings Dialog's Misc category. When you do that, hiding Igor on Mac OS X requires selecting "Hide Igor" with the mouse.

The mouse wheel is now supported on Mac OS X.

The Open File and Save File dialogs on Windows are now resizable.

Some menus and popup menus relating to controls in panels and graphs are now available only when in draw mode. This is to better separate the user and programmer/layout tasks. You can temporarily enter draw mode by holding down the command and option keys (Macintosh) or the Ctrl+Alt keys (WIndows) before clicking the Graph or Panel menu.

Guide To Igor Pro 5 Improvements

Here are the Igor Pro 5 improvements discussed in this file.

Mac OS X Support

Windows Support

Dialog Improvements

Graphing Improvements

Table Improvements

Page Layout Improvements

Notebook Improvements

Procedure Window Improvements

Data Browser Improvements

Drawing Improvements

Control Improvements

Analysis Improvements

Matrix Improvements

Curve Fitting Improvements

Image Processing Improvements

3D Analysis Improvements

Data Import And Export Improvements

Graphics Import Improvements

Graphics Export Improvements

File Command Improvements

Programming Improvements

Miscellaneous Improvements

New And Improved Example Experiments

New And Improved WaveMetrics Procedure Files

XOP Toolkit Improvements

New Operations And Functions

Mac OS X Support

Not Supported On Mac OS X

The VDT XOP does not yet work on Mac OS X. Because Apple does not support the Mac OS serial port calls on Mac OS X, VDT will require a major rewrite.

The MLLoadWave XOP, which loads Matlab data into Igor, can not load data from Matlab 5 or later files on Mac OS X. As far as we know, The Mathworks (makers of Matlab) does not provide Mac OS X-compatible versions of the libraries that are required to read Matlab files.

Windows Support

Multiple Monitors

Igor supports multiple monitors on Windows. The main changes involve GetWindow and IgorInfo. IgorInfo now returns information about the multiple monitors (or "screens") just like it always has for Macintosh. GetWindow kwFrameInner wsize and GetWindow kwFrameOuter wsize return the screen coordinates of the inside or outside of Igor's application frame.

Features Removed From Igor Pro 5

The TDLoadWave XOP, which shipped on Macintosh only and has been obsolete for years, is not supported in Igor Pro 5. If you rely on the TDLoadWave operation, use LoadWave/G or LoadWave/D instead. If you rely on the TDSaveWave operation, use the Save/J operation instead.

The CGLoadWave XOP, which shipped on Macintosh only and loaded Cricket Graph files into Igor, is not supported in Igor Pro 5. If you rely on the CGLoadWave operation, you will need to use Igor Pro 4 to load Cricket Graph files.

The FileXOP 2.0 XOP, which shipped on Macintosh only and has been obsolete for years, is not supported in Igor Pro 5. If you rely on FileXOP 2.0, see File Command Improvements for alternative solutions.

Behavior Changes In Igor Pro 5

On Macintosh, contextual menus can be summoned with either the command key or the control key (but not both). Sometime around Igor 6 we may discontinue using the command key for contextual menus.

On Windows, Igor 4 and earlier experiments opened with Igor 5 will reposition panels moved up about 6 pixels.

Correlate/C returns different results than Igor 2, 3, or 4. Setting the global variable root:V_oldCorrelationScaling to a non-zero value restores the old (but broken) rotation and scaling.

In earlier versions of Igor, some XOP file loaders accepted partial paths without a leading colon or backslash. In Igor Pro 5 XOPs, a file path without a leading colon or backslash is treated as a full path, not a partial path.

SetWindow returning a value of 2 for the copy menu item message is no longer handled specially by Igor 5. In Igor 4 it invoked the Export Graphics dialog. The SetWindow example shows the new way of doing this.

Default font and marker sizes in graphs are now calculated based on the graph size even when special width and height modes are used. Previously when a special width or height mode was used, the font size was set to 10 and the marker size was set to 3. If you have graphs that depend on the old behavior, you can use the ModifyGraph dialog to force these values.

Dialog Improvements

Many Igor dialogs have been extensively modified.

Dialogs are now "data folder-aware": waves, variables, and strings can be selected from any of the data folders, regardless of the current data folder.

IMPORTANT: As shipped, only the current data folder is visible. To turn on the hierarchical data folder view, click on the menu button in the lower left corner of the wave list and select Show Data Folders. When you make this selection, it is changed for all open Wave Browsers, and the setting is stored in preferences so it will persist when you open Igor next. It is likely that most users don't need this view. See Dialog Wave Browser for more information.

Many dialogs are resizeable, allowing you to make more room for wave lists and such.

Many analysis dialogs are more powerful and offer graphing and destination options. In the past, Igor's operations usually overwrote source data with operation results. The operation dialogs now provide a section where you can choose various options for the operation results, including making a new wave for the results.

As a convenience, most operation dialogs now have a section allowing you to choose a simple display option for the results. It will make a simple graph or table of the result, a stacked graph of input and results, or append the result to the top graph or table.

The new Control Properties dialog works with all controls except charts and custom controls. For those controls supported by the dialog, virtually all control parameters can be set in the dialog.

The New Graph dialog has been upgraded to support the new ability to graph a portion of a wave.

The FFT dialog has been upgraded to support new FFT features.

Graphing Improvements

Formal release of Gizmo, an OpenGL compiler for producing 3D graphs of surfaces, paths, scatter plots, isosurfaces, and voxelgrams.

You can use File->Save Graph Copy or the SaveGraphCopy operation to save a graph and its waves in a packed experiment.

Many additional color tables have been added.

Added 6 new markers.

Added a way to make the outline ("stroke") color of markers different from the fill color.

Display/VERT plots data vertically. Similar to SwapXY but on trace by trace basis. Also used with AppendToGraph.

The Display, AppendToGraph and ReplaceWave operations have been extended to allow the specification of a subrange of a wave. This is mainly to allow the display of columns of a matrix. Error bar waves and property as f(z) waves my also be subranged. These new features are supported in the relevant dialogs.You can now specify that an axis be drawn on top of traces rather than underneath using the axisOnTop keyword with the ModifyGraph operation.

You can now specify the position of a free axis as fraction of the distance across the plot area using kwFraction as the axis name in the ModifyGraph freePos operation. This mode is supported by the Modify Axis dialog.

Speaking of free axes, you can now create axes that can exist without any traces or images. (Existing free axes can be freely positioned but still need a trace or image in order to exist and from which to get scaling and units info.)

The ModifyGraph operation now supports a new keyword, expand, that allows a graph to be magnified or shrunk. Expansion is useful when you are working with an actual size graph whose window is too small to show all of the tool palette or the cursor info panel. Fractional expansion (i.e., shrinkage) is useful when working with an actual size graph whose window is too large to fit on the screen. You can set the expansion using the contextual popup menu for the graph.

In addition to placing Tags on traces and images, you can now place a Tag on an axis. The syntax of the operation is the same as trace or image tags but with the name of the desired axis replacing the trace or image name. Axis tags can be used as multi-line axis labels.

The SavePICT operation can now take a /RES flag to specify an explicit resolution for image formats. This contrasts with the old /B flag that only provided integer multiples of the screen resolution.

Normally, the tick mark color of an axis is the same as the axis color. You can now specify an explicit color using ModifyGraph tickRGB[(axName)]=(r,g,b)

You can now cause the default font and marker sizes to be dependent on a specified percentage of the graph size using ModifyGraph gfRelSize= pct. This overrides Igor's built-in table-based method. Along the same lines, you can now specify font sizes in annotations so they are a percentage of the current size using the new \Zrddd escape code.

You can now restrict the length of grid lines to a subrange of normal using ModifyGraph's new gridEnab keyword.

Subgraphs and tables can be embedded in graph windows.

Using the contextual menu for a trace in a graph, you can now choose an item labeled "Duplicate Trace." This will insert an exact duplcate of the selected trace. This can be useful for special effects such as a shadow or to create a background for the gaps in dashed lines.

Table Improvements

Implemented live scrolling on Macintosh. (Scrolling was always live on Windows.)

You can use File->Save Table Copy or the SaveTableCopy operation to save a table and its waves in a packed experiment or to a tab-delimited or comma-separated values text file.

Tables now support Find and Replace for cell values. Choose Edit->Find or Edit->Replace.

Tables can be embedded in graph, page layout and panel windows.

The ModifyTable operation can now be used in user functions. It has new keywords for setting the table's top/left cell and for setting the table selection.

A new function, TableInfo, returns various pieces of information about tables.

Page Layout Improvements

Implemented live scrolling on Macintosh. (Scrolling was always live on Windows.)

Added a contextual menu (cmd-click on Macintosh, right-click on Windows) which allows you to activate, kill and recreate graph and table windows from the page layout window. Also allows you to scale picture objects.

Graphs and tables can be embedded in Page Layouts and manipulated just as if they were freestanding graph or table windows. Graph objects can be converted to embedded graphs (and vise versa) using a contextual menu. Subgraphs can be easily aligned using guides.

Notebook Improvements

Implemented live scrolling on Macintosh. (Scrolling was always live on Windows.)

The File->Save Notebook menu command can now be summoned by pressing Shift-Cmd-S (Macintosh) or Ctrl-Shift-S (Windows)

Handling of fonts in RTF import is slightly improved. The main impact is that some Japanese fonts that previously were not recognized will now be recognized. Also, if a Japanese font is not available and if the file being imported uses the \fcharset control, another Japanese font will be substituted.

Procedure Window Improvements

Implemented live scrolling on Macintosh. (Scrolling was always live on Windows.

On Windows, minimized procedure windows stay minimized when you save and re-open an experiment.

The File->Save Procedure menu command can now be summoned by pressing shift-command-S (Macintosh) or Ctrl+Shift+S (Windows).

Data Browser Improvements

New Save Copy button to save waves, variables, strings and data folders copy as an Igor experiment file.

Now supports scrolling the data tree by typing the names of objects when the data tree has the keyboard focusNew mode that displays the histogram of a wave in the plot pane.

Now supports sorting by name of data objects in a browsed experiment.

New GetBrowserLine function

New keyword SaveExpandedFolders.

On the Macintosh the contextual menu is now activated by Control-click.

Selection modes have been enhanced with range selection now enabled through shift-selecting.

Drawing Improvements

You can now create cubic Bezier curves using the DrawBezier operation or draw them interactively using the Draw Bezier popup menu obtained by clicking and holding on the polygon tool in the draw tools palette.

You can now create circular arcs using the DrawArc operation or draw them interactively using the Draw Arc popup menu obtained by clicking and holding on the oval tool in the draw tools palette.

Control Improvements

You may now reserve room for controls on all four sides of a graph, not just the top.

The various control-specific dialogs have been replaced by a Control Properties Dialog. Unlike the older dialogs, the new Control Properties Dialog supports more of the controls (all except Chart and CustomControl), and all of their control parameters.

Button controls can be colorized and can use custom pictures. Checkbox controls can use custom pictures.

Added the ModifyControl and ModifyControlList operations. See New Control Panel Operations And Functions for a complete list.

ControlNameList takes an optional match string argument.

Contextual menus when clicking a control allow easy location of control procedures, custom pictures, and modification of the control.

A new PopupContextualMenu operation has been added.

On Windows 98 and later, PopupMenu controls no longer display a dialog for long lists: menu scrolling is used instead.

New live keyword for SetVariable allows continuous updates. Regardless of the live setting, the SetVariable's variable will be changed as the value is being incremented and dependencies will fire. This is a non-backwards compatible change but is unlikely to cause problems.

With the exception of popup menus, user controls no longer block events (such as background tasks) while the mouse is held down in the control. Previously, clicking in a button or the up/down incrementers of a SetVariable control would prevent a background task from running until the mouse was released.

You can now cause user-defined buttons and checkboxes to draw using an image you provide. The image can be either a global PICT (as imported via the Picture dialog (Misc menu) or a Proc Picture.

You can now store arbitrary data with each control using the new userdata keyword common to all control commands. The syntax for setting the userdata is:

userdata=<string>

userdata+=<string>

where += appends to existing data.

Control procs (as set by the proc keyword) can now be (optionally) written using a new style using a more efficient method utilizing structures.

In addition to the standard controls such as Button, SetVariable, PopMenu and the rest, an advanced programmer can now create controls with custom appearance and behavior.

The title text for Buttons, CustomControls and CheckBoxes can be multi-line and use the same escape sequences for fancy text as annotations.

The mode keyword for the ListBox control can now accept new modes (9 and 10) that provide different shift selection action.

Graphs and Tables can now be used as sub-windows in Panel windows. Panels can now be used as sub-windows in Graph windows and Graph windows can now reserve space on all four sides for panels.

Analysis Improvements

New Operations And Functions

Reverse: reverses data along a specified dimension. Does NOT accept text waves.

Extract: Extracts data from src where a provided expression evaluates to true and stores sequentially into dest. This is the closest Igor analog to the where operation in Matlab or IDL.

Concatenate: Combines data from src waves and concatenates onto a dest wave.

PCA: Principal Component Analysis (Factor Analysis)

Integrate1D: Numerical integration of user function in 1D with extensions to higher dimensions.

PrimeFactors: Calculates the prime factors of the input number.

gcd: Calculates the greatest common divisor of two numbers.

equalWaves: Tests if two waves are equal.

norm: Calculates the sum of the squares of the elements of the wave.

dspPeriodogram: Calculates the periodogram of a wave with optional pre-windowing.

dspDetrend: Removes from the input data a polynomial fit of specified order.

chebyshev: Computes the Chebyshev polynomial.

Gauss: Computes a normalized Gaussian in 1-4 dimensions.

ZernikeR: Computes the Zernike radial polynomials.

DWT: Discrete Wavelet Transform. This operation replaces the Wavelet XOP.

CWT: Continuous Wavelet Transform for 1D signals.

WignerTransform: to transform real or complex 1D waves.

HilbertTransform :Computes the Hilbert transform via an FFT.

ImageUnwrapPhase: Unwrap 2D phase information.

The operation waveTransform is designed to speed up simple operations on waves. Features include flipping, indexing, shifting, complex conjugation, conversion to squared magnitude, sgn as well as conversions between crystallographic and cartesian coordinate systems.

The following functions are now built in: Hermite, HermiteGaussian, FresnelCos, FresnelSin, Dawson, ei, expInt, LegendreA, AiryA, AiryAD, AiryB, AiryBD, SphericalBessJ, SphericalBessJD, SphericalBessY, and SphericalBessYD. The SpecialFuncs XOP, which previously implemented these functions, is no longer needed and should be removed from the Igor Extensions folder. The new versions of some of these functions include additional, optional parameters that affect the accuracy of the result.

KMeans is a new operation for cluster analysis.

Enhanced Operations And Functions

WaveStats has two additional flags: one to handle various cases of complex waves and one that allows you to limit the processing to calculating the average and finding the minimum and maximum.

The Optimize operation now has an option to use Simulated Annealing as the optimization method.

FFT has new flags that allow you to pre-multiply the input by a window function and select the choice of output.

IFFT has a new /DEST=waveName flag.

Differentiate and Integrate are now multi-dimensional aware, can accept integer waves, can accept an x-wave, can specify an optional destination (rather than just overwrite) and provides a choice of algorithms.

The area, areaXY, faverage, faverageXY, mean and sum functions no longer require the x1 and x2 parameters which now default to -inf and inf, respectively.

IntegrateODE offers two new integrations methods, including one optimized for stiff systems. There is now a "free-run" option that gives output at the largest step size possible.

Matrix Improvements

New Operations And Functions

Added MatrixOP to speed up and de-obfuscate matrix equations syntax.

Added MatrixInverse for calculating direct and pseudo matrix inverse.

Added to MatrixTranspose /H flag for Hermetian Transpose.

Added MatrixCorr to calculate correlation, covariance and degree of correlation matrices.

Curve Fitting Improvements

User fit functions are no longer called to calculate derivatives for held coefficients. This can speed up fits with held coefficients if function execution is slow.

Image Processing Improvements

All IP operations that support /O flag now preserve, where appropriate, the units and the wave note of the input wave.

ImageTransform:

Added Catmull-Clark B-Splines subdivision of 3D surfaces.

Added new keyword "Shading"

Added new keywords "sumAllRows" and "sumAllCols"

Added new keyword "shrinkRect

Added new keyword "invert"

Added new keyword "scalePlanes"

Added new keywords "xProjection", "yProjection" and "zProjection"

Added new keyword "matchPlanes"

Added new keyword "stackImages"

Added new keyword "CMYK2RGB"

Added new keyword "rgb2I123"

Added new keyword "selectColor"

Added new modes to "getPlane" with the flag /PTYP=planeType for orthogonal planes.

Added new keyword "putCol"

Added new keyword "putRow"

Added new keyword "averageImage"

Added new keyword "flipRows"

Added new keyword "flipCols"

Added new keyword "flipPlanes"

Added new keyword "indexWave"

Added /Z flag

ImageInterpolate:

Added Spline interpolation of various orders

Added Kriging interpolation

Added Voronoi interpolation

(see also Interp3D() and Interpolate3D)

ImageRegistration: New operation to register an image relative to reference.

ImageLoad: now reads CMYK TIFF files into a 4 layer 3D wave.

ImageSave: now saves in bytes, words (16 bits) and floats (32) per sample.

ImageStats: added an option to to operate on selected layer of 3D wave.

ImageStats: added an option to to operate on scaled range of data.

ImageAnalyzeParticles: now performs 3D particle analysis.

ImageSeedFill: now supports 3D seed fill on waves of arbitrary type.

ImageSeedFill: now supports fuzzy adaptive and fuzzy logic modes.

ImageThreshold: now supports 3D waves (except for method 3).

ImageHistogram: now supports 3D waves (using /S flag to distinguish from RGB images).

ImageBoundaryToMask: now supports an automatic seed fill to the boundary.

ImageMorphology: now supports 3D waves in erosion, dilation, opening and closing.

ImageLineProfile: added /P=plane specification for profiling 3D waves.

3D Analysis Improvements

Added option to ImageStats to operate on selected layer of 3D wave.

ImageAnalyzeParticles now performs 3D particle analysis.

ImageMorphology now supports 3D waves for erosion, dilation, opening and closing.

ImageSeedFill now supports 3D waves.

MatrixFilter now supports 3D waves for: gauss3d, avg3d, point3d, min3d, max3d, median3d.

MatrixConvolve now supports 3D waves.

ImageLineProfile /P=plane specification for profiling 3D waves.

ImageHistModification now supports 3D waves except in adaptive mode.

ImageHistogram now supports 3D waves either as full 3D or selected plane at a time.

ImageTransform has additional utilities for 3D waves that include: xProjection, yProjection, zProjection, scalePlanes, stackImages and averageImage in addition to the implementation of Catmull-Clark B-Splines subdivision of 3D surfaces.

Interpolate3D allows you to interpolate sparse (ungridded) 3D data.

Interp3d has a new optional parameter which allows you to perform the interpolation when the source is sparse (ungridded).

Data Import And Export Improvements

SaveData - Saves waves, variables and data folders to a packed experiment file or to a file-system folder.

You can use File->Save Graph Copy or the SaveGraphCopy operation to save a graph and its waves in a packed experiment.

You can use File->Save Table Copy or the SaveTableCopy operation to save a table and its waves in a packed experiment or to a tab-delimited or comma-separated values text file.

You can now merge Igor experiments.

ImageLoad now reads CMYK TIFF files into a 4 layer 3D wave.

New Save Copy... button in the Data Browser.

Setting bit 1 of the LoadWave operation's /V flag's loadFlags parameter can be used to tell LoadWave to treat leading spaces in the line containing column labels as a blank name. Use this if you have a space-delimited file whose column label line and data lines start with one or more spaces.

SavePICT has a /WIN= flag, to explictly name the window that is saved.

The following external operations can now be directly used from user functions:

GBLoadWave

MLLoadWave (not supported on Mac OS X)

NILoadWave

XLLoadWave

JCAMPLoadWave

GISLoadWave

The XLLoadWave has a new flag, /J, that allows you to determine what worksheets exist in a workbook and what rows and columns are defined in each worksheet.

There is a slight change to MLLoadWave that will affect you if you use its output variables V1_Flag through V4_Flag.

ImageSave and ImageLoad can now take a type (/T flag) of rpng to save and load raw data using the PNG format. Because PNG is a lossless format, raw PNG can be used to archive data.

ImageSave can now save stacked TIFF files and supports saving single precision float output.

Graphics Import Improvements

You can now import JPEG and TIFF graphics files and use them as cross-platform images just like the PNG format. You can also import EPS files and use them in graphics that will be exported in EPS format or will be printed on a PostScript printer. EPS graphics are cross-platform.

ImageLoad can now take a type (/T flag) of rpng to load raw data using the PNG format. The other PNG load using /T=png goes through QuickTime and may lose information.

Graphics Export Improvements

See discussion of EPS import above.

EPS export now uses a better method for patterned fills that is compatible with Adobe Illustrator and also creates higher quality results for hash line fills. Image graphs now use more efficient Postscript code and, by including /C=2 in the SavePICT operation, CMYK color can be used. You can now include non-eps pictures in a graphic destined for EPS export (will be imaged as a bitmap) All of this requires PostScript level 2 but if your printer is really old, you can use /PLL=1 to force level 1.

You can now export a graph, table or page layout using Igor's native JPEG support (rather than needing QuickTime) by specifying /E=-6 with the SavePICT operation.

You can now export a graph, table or page layout using Igor's native TIFF support (rather than needing QuickTime) by specifying /E=-7 with the SavePICT operation. By including /C=2, you can force CMYK color mode.

ImageSave can now take a type (/T flag) of rpng to save raw data using the PNG format. The other PNG save using /T=png goes through QuickTime and may lose information.

Changed the way line graphs are printed and exported to eliminate problems with dashed lines on certain printers or when a trace has way too many points (i.e., was oversampled). Previously, when an oversampled trace using a dash pattern was printed or exported, the dashes could merge together to create a solid line. On Macintosh, a side effect of this change may be that the quality of dashed lines may not be as good as it was previously.

File Command Improvements

New file- and string-related commands and functions have been added:

CopyFile, CopyFolder, CreateAliasShortcut, DeleteFile, DeleteFolder, GetFileFolderInfo, SetFileFolderInfo, MoveFile, MoveFolder and ParseFilePath.

Programming Improvements

You can now define keyboard equivalent keystrokes for user-defined menus that include function keys, and the shift and option/Alt keys.

It is now possible to create a user-defined menu item which does not store any text in the history area when executed. This is useful for menu commands that are executed over and over through a keyboard equivalent.

It is now possible to add user-defined items to the graph marquee menu and the layout marquee menu using menu definitions in the procedure window. The old technique, using the GraphMarquee and LayoutMarquee procedure subtype keywords is still supported, but the new method is recommended because it provides greater flexibility.

Increased the maximum number of user-defined submenus from 50 to 200.

The use of fixed-named "hook functions" is now discouraged. Use the SetIgorHook operation instead: it allows multiple differently-named hook functions to be called in succession, avoiding name conflicts when more than one procedure file wants to handle or be notified of the "hookable" Igor events such as menu selection, file opening, experiment saving, Igor startup and quitting.

You can intercept and handle built-in Igor menus (not user-defined menus) using a user-defined IgorMenuHook function. You can also intercept and handle built-in Igor menus for a specific window by handling SetWindow's enablemenu and menu hook events: enablemenu is a new event.

Window hooks can now intercept command-clicks (Macintosh) or right-clicks (Windows) and prevent Igor from displaying the usual contextual menus. The window hook can provide it's own contextual menu by using the new PopupContextualMenu operation.

Some WaveMetrics-supplied external operations can now be invoked directly from a user function without using the Execute operation. The updated XOPs are:

GBLoadWave

GISLoadWave

Interpolate2 - Replaces the Interpolate operation and uses slightly new syntax.

MLLoadWave - Not supported on Mac OS X.

NIGPIB2 - Replaces NIGPIB XOP and uses new syntax.

VDT2 - Replaces VDT XOP and uses new syntax. Not supported on OS X.

NILoadWave

XLLoadWave

The ExecuteScriptText operation now takes a /W flag that allows you to tell it to wait until the script is finished. This works on Windows only. It is not needed and is a NOP on Macintosh.

The Debugger can now view and change wave values and structures and has a new Expressions Evaluator.

You can now use statically defined Functions and Pictures in inherently global objects such as control panels using the new #pragma ModuleName=name

You can now define named image pictures in procedure files. These pictures, termed Proc Pictures, are binary PNG or JPEG images encoded as printable ASCII. They are intended for programmers that need images as part of the user interface for a procedure package. They can be used with the DrawPICT operation and with the new picture keyword in certain controls.

You can now define user functions with optional parameters by following the required (normal) parameters with a list of optional names in square brackets.

In user functions, you can now better handle exceptions such as aborts and errors using the new try-catch-endtry flow control construct. See also AbortOnRTE and AbortOnValue.

You can now define and use structures in procedure files. These structures can be used only in user-defined functions and their behavior is defined almost entirely at compile time. Run time or interactive definition and use of structures is not currently supported but will be considered for the future. Structures are now supported by Print, FBinRead, and FBinWrite. printf can accept numeric and string fields in structures.

StructPut and StructGet are used to save and restore structure variables in user functions.

Similarly, you can store user data with each window (including subwindows) using the new userdata keyword with SetWindow. The syntax for setting is:

SetWindow <window spec>,userdata= <string>

Window Hooks can now be (optionally) written using a new style that uses structures to provide greater functionality, easier programming and allows for multiple hook functions each called in sequence.

The Date2Secs function can now return the offset from local time to UTC time. In other words, you can use it to figure out what time zone you are in.

Miscellaneous Improvements

The Pictures dialog can now place a copy of a picture in a formatted notebook.

On Windows, pasting plain text into Igor is now more flexible. Previously Igor required that plain text use CRLF terminators because this is what the Windows documentation specifies. To accomodate certain programs that do not use the specified format, Igor now also accepts CR or LF terminators.

On Windows, Igor can now act as an Automation Server.

On Windows, previously each help file (e.g., "Using Igor.ihf") needed a companion file (e.g., "Using Igor.ihf.igr") which stored information generated by compiling the help file. On Macintosh, this information was stored in the file's resource fork. Help files compiled by Igor Pro 5 now store this information in the data fork. Consequently, the companion .igr file is not needed on Windows once the help file has been compiled using Igor Pro 5. Also, help files compiled in Igor Pro 5 can be exchanged between Macintosh and Windows without recompilation. Igor Pro 5 still works with old help files.

The Help Topics tab of the Help Browser now has a "Sort Topics" checkbox. Previously topics were always sorted. Viewing unsorted shows you topics in the order in which they appear in the help files.

Igor Pro 5 stores Igor's preferences file in a different location from previous versions. See Preferences for details. The main upshot of this is that each user account on a Windows machine will have a separate preferences file. This has always been the case on Macintosh.

The PlaySound operation is now double buffered and a PlaySound/A will return immediately even if one previous sound is still playing. The transition between sounds should be seamless on the Mac but may entail a slight delay on Windows. PlaySound can now play multi-channel sounds using multiple 1D waves rather than requiring a single multi-column wave.

The Print command no longer complains about strings that are too long. It now prints long strings by breaking them into pieces. A new /LEN flag controls the break length.

You can now create movies with 16 bit and stereo sound by providing an appropriate wave to the AddMovieAudio operation.

You can now lock a wave to prevent its being modified, moved or deleted.

New And Improved Example Experiments

Check out these new and improved example experiments in your Igor Pro Folder:

  • Wavelet Demo 2.0.pxp
  • CWT Demo.pxp
  • ImageUnwrapPhase Demo.pxp
  • Wigner Demo.pxp
  • KalmanFilterExample.pxp
  • PrintSettings Tests.pxp
  • Multi-peak fit.pxp (version 1.4)

New And Improved WaveMetrics Procedure Files

Here are the WaveMetrics procedure files added or enhanced in Igor Pro 5.

ImageStats Panel adds a panel for getting statistics on an ROI or a full image.

Gizmo Procedures folder includes:

  • All Gizmo Procedures.ipf
  • Gizmo3DBarChart.ipf
  • GizmoLabels.ipf
  • GizmoMovie.ipf
  • GizmoRotation.ipf
  • GizmoUtils.ipf

New version of ImageRotate.ipf where buttons were added to the panel to support new rotations/flipping options.

Added procedure file SlideShow.ipf which provides utilities for displaying a slide show of image files contained in a disk folder.

Added the CallMicrosoftWord.ipf file. It provides utility routines that allow you to generate and execute script files that send commands and data from Igor to Microsoft Word. This relies on Windows Script Host which is available on Microsoft Windows only.

Added new version Multi-peak fitting 1.4.ipf. See the Multi-peak fit example experiment for details. Also, added new fit types to the Peak Functions.ipf file and replaced three XOP files with a new MultiPeakFit.xop file that contains all the previous XFUNCs and adds new ExpGauss and ExpConvExp functions.

New file Varimax.ipf that adds a procedure to calculate Varimax rotation of vectors in a 2D wave.

Udpated Technical Notes

Igor Tech Note TN019, "Tek 2440 via GPIB", has been updated to use the new NIGPIB2 XOP instead of the old NIGPIB XOP.

IP Tutorial has been updated for the new IP features.

XOP Toolkit Improvements

All of the XOP features described in this section require Igor Pro 5 or later and version 5 or later of the Igor XOP Toolkit.

The process for creating an external operation has been simplified.

It is now possible to create external operations that can be compiled into user functions.

An external function can now have pass-by-reference parameters as well as the normal pass-by-value parameters. Pass-by-reference parameters are supported for numeric and string parameters only.

An XOP can now call a user function or an external function. This is an advanced feature that most XOP programmers will not need.

On Mac OS X, you can now create a Mach-O XOP using either CodeWarrior or Apple's Project Builder. CodeWarrior is still strongly recommended as the development system of choice.

New Operations And Functions

New Table Operations And Functions

TableInfo : a function that returns a string containing keyword information about a table.

New Control Panel Operations And Functions

New Programming Operations And Functions

New Analysis Operations And Functions

Interp2D is now a built in function. The MDInterpolator XOP remains available for backwards compatibility only.

New Matrix Operations And Functions

New Image Processing Operations And Functions

New 3D Analysis Operations And Functions

Interpolate3D : an operation that uses pre-computed triangulation to
calculate interpolated values for irregularly sampled data.

Interp3d : function that returns the interpolated value for a 3D wave.

New Miscellaneous Operations And Functions