IGOR
The built-in procedural programming language of Igor Pro, WaveMetrics' scientific data-analysis and graphing environment, designed to script and extend analysis of multidimensional 'wave' datasets.
Created by Larry Hutchinson (WaveMetrics, Inc.)
IGOR is the built-in procedural programming language of Igor Pro, the scientific data-analysis, numerical-computing, and graphing environment developed by WaveMetrics, Inc. Rather than being a standalone, general-purpose language, IGOR exists to script, automate, and extend Igor Pro itself: users write procedures in text windows that call the program’s hundreds of built-in operations and functions, manipulate its signature wave data structures, build custom user interfaces, and package complete analysis workflows. It is one of those long-lived, domain-specific languages that quietly underpins a great deal of working science.
History & Origins
The story of the IGOR language is inseparable from the company that created it. WaveMetrics was founded in 1987 in Lake Oswego, Oregon, by Larry Hutchinson and Howard Rodstein. Hutchinson had been working on a Macintosh program for time-series analysis that he called Igor — a nod to the dutiful laboratory assistant of horror-film lore, cast here as the scientist’s tireless helper. After demonstrating early versions in 1987, WaveMetrics shipped Igor 1.0 in early January 1989.
From the outset, Igor was more than a charting tool. It paired interactive data analysis with an embedded command line and procedure language, so that the same operations a user invoked by hand could be assembled into reusable scripts. Around 1994 the product was renamed Igor Pro, signaling a broadened scope that grew to include curve fitting, image processing, signal processing, and statistics — all programmable through the same language.
From Macintosh roots to cross-platform
Igor began life as a Macintosh application. Windows support was added in the years that followed, and by the time of Igor Pro 7 (released in July 2016) the program offered full 32-bit and 64-bit builds on both macOS and Windows from a substantially rewritten codebase. In a notable reversal, Igor Pro 10 (released October 15, 2025) became a Windows-only product; WaveMetrics cited the cost of porting its optimized numeric libraries to Apple’s ARM-based processors, and designated Igor Pro 9.05 as the final release supporting macOS.
Design Philosophy
IGOR is, by WaveMetrics’ own description, a structured procedural language with the standard modern flow-control constructs — conditionals, loops, and user-defined functions and macros. Its design goals are pragmatic rather than theoretical:
- Accessible to scientists, not just programmers. The documentation explicitly positions the language as easier to learn than lower-level languages such as Fortran or C, so that researchers can become productive without a formal software-engineering background.
- Interactive, incremental development. Because commands can be executed one at a time from the command line and procedures tested piece by piece, users can build and debug routines incrementally inside the same environment where their data lives.
- Data-centric. The language is organized around Igor Pro’s core abstraction — the wave — rather than around general data structures, keeping scientific datasets front and center.
- Extensible to the metal. When the built-in language is not enough, Igor Pro supports external operations and functions (XOPs) written in C/C++, allowing data acquisition, hardware control, and performance-critical code to be bolted on.
Key Features
Waves: the central data structure
The defining concept of Igor Pro — and the thing IGOR code spends most of its time manipulating — is the wave. A wave is a numeric, text, or reference array of up to four dimensions (from a one-dimensional vector to a four-dimensional tensor) that also carries metadata such as physical units and scaling. Because a wave can store its own X-scaling, graphing a dataset often needs no separate axis array at all.
A C-flavored procedure language
IGOR procedures are written in procedure windows and use a C-like syntax with explicitly declared variables. A simple user-defined function illustrates the style:
| |
Here Wave, Variable, and String introduce the language’s principal declared types, alongside structures (Struct) for grouping related data. Functions can call any of the program’s built-in operations (commands like Display or CurveFit) and functions (value-returning calls such as numpnts above).
Beyond computation
The modern language reaches well past number crunching. It includes regular-expression support, file I/O, network communication over FTP/HTTP, and the ability to construct graphical user interfaces — control panels, buttons, and dialogs — entirely from procedure code. Igor Pro 10 adds built-in Python integration, letting the two ecosystems exchange data and call into one another.
Evolution
The language matured alongside the application across its major versions:
| Version | Year | Notable advance |
|---|---|---|
| Igor 1.0 | 1989 | First release; waves and an embedded procedure language (Macintosh) |
| Igor Pro | ~1994 | Renamed; broadened analysis and programming capabilities |
| Igor Pro 6 | 2007 | Multithreading across processor cores |
| Igor Pro 7 | 2016 | Cross-platform 32-/64-bit (macOS and Windows), high-DPI graphics |
| Igor Pro 8 | 2018 | NetCDF support, filter-design laboratory |
| Igor Pro 9 | 2021 | Dozens of new operations and functions |
| Igor Pro 10 | 2025 | Windows-only; built-in Python integration |
A significant business milestone came in September 2022, when WaveMetrics became a division of Sutter Instrument, a maker of scientific instrumentation, ensuring continuity of the product and its language.
Current Relevance
IGOR remains an actively developed, commercially supported language — an unusual status for a domain-specific scripting language that first appeared in 1989. Its community is concentrated in the physical and life sciences: electrophysiology and neuroscience, X-ray and neutron scattering, photoelectron spectroscopy, physics, and chemistry, among others. In several of these fields, large bodies of community and institutional code — packages from Argonne National Laboratory and NIST, and projects like NeuroMatic — are written in the IGOR language, giving it real staying power within its niches.
The trade-off is that IGOR is tied to a proprietary, paid environment and cannot be run outside Igor Pro, which limits its reach compared with open-source scientific languages such as Python, R, or Julia. The recent move to a Windows-only release in version 10 further narrows the platforms on which the language runs.
Why It Matters
IGOR is a clear example of an application-embedded language that became a serious tool in its own right. By giving working scientists a programmable, structured language wrapped around an intuitive data model — the wave — and an interactive analysis environment, WaveMetrics let researchers move fluidly from clicking through an analysis to scripting and automating it. Decades of published figures, instrument-control software, and shared analysis libraries written in IGOR attest to a quiet but durable influence on how experimental data gets reduced, modeled, and visualized.
Timeline
Notable Uses & Legacy
Argonne National Laboratory
Researchers at Argonne's Advanced Photon Source developed widely used Igor Pro packages such as Nika and Irena for reducing and analyzing small- and ultra-small-angle X-ray scattering (SAXS/USAXS) data.
Neuroscience and electrophysiology
Igor Pro is a long-standing tool in patch-clamp and electrophysiology labs; the open-source NeuroMatic package, written in the Igor language, provides acquisition and analysis routines for neuronal recordings.
Photoelectron spectroscopy and ARPES
Igor Pro is reportedly a common analysis platform in the photoelectron-spectroscopy and angle-resolved photoemission (ARPES) community, where researchers and synchrotron beamlines have distributed Igor-based macros for reducing and analyzing spectra.
Neutron and X-ray scattering facilities
The NIST Center for Neutron Research has, for roughly two decades, distributed a widely used Igor Pro-based package for reducing and analyzing small-angle (SANS), very-small-angle, and ultra-small-angle neutron scattering data.
Scientific publication graphics
Igor Pro is widely valued for producing publication-quality plots, and its procedure language lets researchers automate figure generation directly from analyzed datasets.