Introduction to the menu interface

About this chapter

This chapter is intended to provide a broad overview of the capabilities found within FELIX. The program has evolved in response to a changing and growing NMR data-processing environment, and we therefore strongly recommend that you review this chapter after installing the software.


FELIX is an interactive program for processing, displaying, and analyzing data acquired on nuclear magnetic resonance spectrometers. To enhance the program's utility without compromising its flexibility, FELIX includes two separate user interfaces.

This guide focuses on the interactive menu-driven interface. Advanced users should consult the FELIX Command Language Reference Guide for more in-depth information about FELIX capabilities.

The software license

Each software release is distributed with FLEXlm license management. Please see the MSI Products System Guide for more detailed information.

The program modules

FELIX contains four modules. Each module is enabled through license control. The program currently has menu interfaces for analyzing 1D, 2D, and ND data, for assigning resonances and peaks, and for correlating NMR data and molecular structures (the 1D/2D, ND, Assign, and Model modules, respectively). Not all users are licensed to access every module. If the ND module is enabled, then you can process and analyze 3D and 4D data, and the corresponding commands are accessible through the menu interface. If the Model module is enabled, then the Model pulldown can be found on the menubar. Similarly, if the Assign module is enabled, then the Assign pulldown can be found on the menubar.

Getting started

We assume that before reading this section you have successfully installed FELIX on your computer and are ready to begin. To start the program, enter at the computer's system prompt:

 > felixX

Completing a session

To exit FELIX and return to your operating system, select the File/Exit menu item. If changes have been made to the FELIX database (which contains spectrum information such as cross peaks, baseline points, etc.), a dialog box appears asking you whether you want to Save or Discard the changes before exiting. You may also select the Return button to continue working in FELIX. If no changes have been made to the database during the current session, you may exit FELIX without supplying confirmation.

The initialization macro

At startup, FELIX tries to execute a macro called init.mac to initialize the program. A macro is an ASCII file of FELIX commands that are executed one after the other. The init.mac macro is used to define the size of the graphics display window and the layout of the FELIX graphics frames, as well as to start the menu interface.

FELIX first looks for the init.mac file is in your current directory (the directory in which you started FELIX). If it does not find the file there, FELIX next searches the directory defined by the symbols macpf* in the .felixrc99 file, which resides in your home directory (denoted on UNIX systems as $HOME). The search goes through a path hierarchy: first the macpfx and then the macpf1,...macpfn directories are searched. The third and final place where FELIX looks is the directory defined by the SYSTEM path defined in the .felixrc99 file. This is the path where FELIX is usually installed.

Once it finds the macro, FELIX executes it and displays the menu interface. If FELIX cannot find the init.mac file, then it does not display the menu interface and instead starts in command mode.

FELIX can execute any initialization macro you choose, if you include the macro name on the UNIX command line with which you start FELIX. This gives you complete control of the name and location of the FELIX initialization macro and thus allows multiple FELIX startup behaviors from a single directory.

For example, the following command line starts FELIX and tells it to run the macro called my_init.mac:

 > felixX my_init.mac

The pathname for the startup macro must follow standard UNIX rules. The FELIX file prefixes have no effect on this form of specifying the name of the FELIX initialization macro.

When a startup macro name is given on the command line, the standard search for an init.mac file, as described above, is bypassed. Please see Appendix B, FELIX startup, for more information on the init.mac file.

Some FELIX initialization options

FELIX allows you to modify the operating environment by setting several reserved symbols in the initialization macro. The first symbol, blkwht, switches the black and white entries in the color map: when blkwht is set to 1, the background of the graphical interface is white. The symbol colcur allows you to change the cursor color from red to any color for which a color index exists. For example, if you set colcur to 3 the cursor turns green. See pennum in the Symbol Reference appendix of the FELIX Command Language Reference for a list of the default color indices. The symbol objmem sets a ceiling for the amount of memory that FELIX can use to store graphics objects. By setting objmem to a value (in bytes) below the available free system memory, you can prevent FELIX from exhausting the available memory (and consequently crashing) when it makes a graphics object. Instead, when FELIX reaches the ceiling, it closes the object and warns you.

FELIX reads these options only when it starts. You must restart FELIX if you change these options while FELIX is running.


FELIX provides several different types of workspaces for processing and analyzing data. These workspaces can be classified as follows:

The 1D workspace (work) is the most important workspace, since most of the commands issued within FELIX directly operate on data in this space. The second type of workspace (buffers) is used when you want to save data for later analysis. For example, if you want to compare two 1D spectra acquired at different temperatures, additional data-storage areas (buffers) are useful. You can also store apodization functions (windows) in the buffers. It is faster to calculate the window function once and save it in a buffer than it is to recalculate the function every time it is used. For a more detailed description of work and buffers and their most common uses, see the Processing, visualization, and analysis interface (1D/2D/ND) chapter.

The third (matrix) type of work space is used to process multidimensional data - data containing more than one time or frequency dimension. Data in the matrix work space may be displayed and analyzed using FELIX commands and menus similar to those used when analyzing 1D data. For a complete discussion of multidimensional matrix manipulation and transformation, see the Processing, visualization, and analysis interface (1D/2D/ND) chapter.

Memory allocation

FELIX lets you define the size of the 1D workspace and the number of 1D buffers. Before working with experimental data, you first should configure the program's memory for your specific application. The default memory allocation is set in the init.mac macro that executes automatically at program startup. The allocation can be changed by selecting the Preference/Memory menu item.

If you try to exceed the allocated workspace size at any point during your data workup or if you try to access nonallocated buffers, an error message appears. In some instances (like reading a large data file), the program automatically prompts you to reconfigure the software's memory. In other instances (storing data to a non-configured buffer), you must reconfigure your memory by selecting the Preference/Memory menu item.

When memory is reallocated, all information that is stored in the 1D buffers is lost. In addition, if a matrix is currently open, it is automatically closed before memory reconfiguration.

You cannot define the size of the matrix workspace, since it is determined by the size of the matrix when you select the File/Open menu item. A very large matrix requires more memory for the matrix workspace.

Sometimes you may receive the message "Not enough memory" when you open a matrix or perform certain actions that need temporary memory (e.g., Linear Predict or Optimize Peaks). If this happens, reconfigure the memory allocation to use a smaller 1D workspace and fewer 1D buffers. To see the current memory allocation, select the Preference/Memory menu item.

File directories and prefix definitions

FELIX allows you to define pathnames or prefixes for each filetype. This makes it possible for each type of file to reside in a separate directory or even on a different device. For example, you might have 50 macro files, 10 data files, and 2 matrix files. If these files were stored in the same directory, it would be difficult to locate the pair of matrix files among the many macro and data files. It is better to organize the macro files in a single macro directory and the matrix and data files in a different directory.

Prefixes can be viewed or changed by selecting the Preference/Directories menu item. Within the control panel that appears, the current prefixes are shown. To change these, activate the appropriate entry box and enter the new prefix. Selecting OK saves the changes; selecting Cancel quits the control panel without making any changes.

The menu interface

FELIX contains an interactive menu system for data processing, displays, and spectrum analysis. By default, the menu interface automatically appears when the program starts. The purpose of the menu interface is to simplify NMR data analysis and speed repetitive processing tasks. The menus provided contain most of the functions needed for processing and analyzing 1-, 2-, 3-, and 4-dimensional data.

In this guide we refer to the various menu items as follows:

Dialog boxes

Control panels are a basic component of the FELIX menu system and are used for communicating text and numbers to FELIX. Any activity that requires information from you opens up a control panel and waits for you to provide it. Control panels contain several types of information-entry controls:

1.   The entry box is where you can type text or numbers that the program needs; for example, you may enter filenames, plot scale factors, etc. Entry boxes have a type of integer, real, or character, which defines how FELIX interprets the characters entered into the box.

2.   Toggles are used to select one of a set number of options.The current option is shown in the toggle. To change the option, you can click anywhere within the toggle. Clicking several times scrolls through all the options in a circular fashion. Toggles are usually used where the unseen selections are very specific and intuitively obvious.

3.   Switches, or radio buttons, are similar to toggles in that they are used to choose one of a small set of options. Radio buttons are used where choosing between alternative selections is not directly obvious. To select a radio button item, simply click the open circle. The activation and selection of a radio button item is indicated by the placement of a contrasting circle within the radio button.

4.   Popups are similar to toggles, except that selecting a popup shows all valid choices at once, whereas a toggle shows only one choice at a time. Drag the cursor to the desired choice and release the mouse button to select that choice.

5.   List boxes consist of a rectangular area that contains a vertical list of choices with up and down scrolling arrows on the right side. Clicking one choice in the list highlights and selects that choice. Clicking and holding either scroll arrow scrolls the list of choices, allowing you to see all available choices. Double-clicking a choice in a list box selects that choice and exits the control panel as if you had selected OK.

6.   Buttons are used to exit control panels. When you select the Cancel button, the control panel is removed and the program does not update any parameters you may have entered. Selecting OK updates the program parameters with the current values in the control panel and removes the control panel. In some instances, choices other than Cancel and OK are available. The actions of these other buttons should be self-explanatory.

Some keys on the keyboard have special meaning when a control panel is open. Pressing the <Esc> key is the same as selecting the Cancel button, and pressing <Enter> is the same as selecting OK. The arrow keys can be used to navigate between entry boxes: the up and down arrow keys change the active entry box, and the right and left arrow keys move the cursor within the active entry box. The <Tab> key also changes the active entry box.

Pointer types

While in menu mode, you will see several types of pointers (cursors). Each has a specific purpose and expects a certain action from you. The standard arrow pointer indicates that the menu interface is waiting for a click to select a menu item. The menu items that are currently active are highlighted as the arrow moves over them. The arrow pointer is also used within control panels.

The second type of pointer is a full-window crosshair cursor. This pointer covers the entire FELIX graphics window and indicates that a single position (or data-point value) is needed. For example, this pointer appears when you are selecting single cross peaks.

The third type of pointer is a very small crosshair (called a spot pointer). When the spot pointer appears, it indicates that the program is waiting for a push-drag-release action of the mouse for dragging out a rubber band box. Spot pointers are used to define data regions for expanding spectrum displays and for manually adding cross peaks to multidimensional spectra. When the spot pointer is present, you must be careful not to simply click and release the left mouse button without dragging out an area, since this might define the beginning and end point as the same value.

A fourth type of pointer is a half-crosshair, either vertical or horizontal. This pointer is used when only one dimension of information is wanted and a full crosshair might be confusing. One use of the horizontal half-crosshair is for setting the 1D peak-picking threshold. One use of the vertical half-crosshair is for loading a 1D column from a 2D matrix.

Command mode and operation-system mode

The menu interface makes it easy to switch between menu mode, command mode, and operating-system mode. Often you may want to carry out a simple operation that is not easily accomplished from where you are in the menu interface.

To access the FELIX command interface from within the menu interface, press the <Tab> key to select command mode or simply start typing in the text window (the parent window from which you started FELIX). You may then process and analyze your data using FELIX command statements. You can return to menu mode by simply clicking any menu item or again pressing the <Tab> key.

Please see the FCL Reference Guide for further information on running FELIX in command mode.

Graphics frame layouts

FELIX can display and work with several graphics frames within the program graphics window. This feature lets you work with multiple spectra or display regions simultaneously. To change the layout of the graphics frame, select the Preference/Frame Layout menu item. FELIX displays several pre-defined frame layouts that you can choose from. In addition, you can also create a new graphics frame by selecting the Add New button. Graphics frames can be closed, moved, resized, and maximized using the tools on the frame header.

When new frames are opened, they automatically become current (or active). The current frame is identified by a highlighted border.

Other graphics frame features

You can switch between FELIX frames by clicking anywhere in a frame's header bar. The newly selected frame is brought to the front and the picture is updated. If you just want to select the frame without moving it to the front, you can click anywhere in the frame to make the frame active.

Click the left mouse on the menu portion of the frame. This shows a menu containing the options shown in the figure above.

To move a frame, click and hold anywhere in the middle of the frame's header. A red box appears that lets you move the frame around in the FELIX graphics window. Releasing the mouse button places the frame at the new position.

To resize a frame, click anywhere on an edge of the frame and hold down the left mouse button. A red box appears that lets you adjust the position of the edge selected. If you select a corner of the frame, then you can resize the frame along both edges connected to that corner.

To iconify a frame, click the button with the round dot in the upper-right corner. To return the frame to its original size and position, double-click the icon.

To close a frame, simply double click the close frame widget (the button in the upper-left corner of the frame). This activates the frame that was last active before the newly closed frame. Be careful not to close all the frames, otherwise the program defaults to an uncharacterized state, unable to draw or send text to the screen.

Frames may also be maximized to fill the entire FELIX graphics screen. To maximize a frame, select the maximize widget (the button with the square shape in the upper-right- corner). This expands the corners of the current frame to fill the entire region of the FELIX window. To return the frame to normal size, select the maximize widget once again.

When creating and resizing your own frames, remember that graphics frames should not be placed on top of the text window.


FELIX macros are the most powerful and innovative feature of this NMR processing software. A collection of FELIX macros is responsible for generating the entire menu interface. A macro is simply a file, which you can create, that contains a list of FELIX commands, which are executed in sequence. These macros can utilize symbols and expressions, so that you can define specific procedures applicable to your needs. In addition to being able to perform any FELIX command, macros can also contain flow-control statements to define loops, conditional and unconditional branching, and interaction with the user. Further descriptions of macros and their functions are found in the FCL Reference Guide.

The database

FELIX contains a sophisticated database for storing spectrum information. Database files are identified by the .dba extension. By default, when FELIX starts, a database called file.dba is built and opened. Throughout your session, spectrum information such as baseline points, integral segments, cross-peak lists, and volume lists are stored in the database.

For transient processing applications like simple 1D peak picking, using the same database over and over and rewriting the information is permissible. For more involved applications that require repeated use of the database, we recommend closing the default database (file.dba) and building a new one with an appropriate name. This helps prevent you from inadvertently deleting valuable spectrum information. Activities such as integration, baseline-point picking, and cross-peak picking require a database to be open and cannot be executed without database access.

The database editor

FELIX contains a sophisticated DBA editor that behaves like a spreadsheet. The Edit pulldown contains menu items that allow you to open the database as a spreadsheet. You can then view, search, and modify the contents of the selected database entity.

To move through the various items and elements in the spreadsheet one line at a time, you can select the up or down arrow at the right or drag the right scrollbar, or select the left or right arrow at the bottom or drag the bottom scrollbar. You can page through the spreadsheet display by using the <Page Up> and <Page Down> keys. You can use this feature only if the edit line is inactive in the table (use the <Tab> key to activate and inactivate the edit line).

DBA contents viewer

The DBA contents viewer lets you peruse the database directory and entity structure graphically. Open this viewer by selecting the Edit/Table menu item.

On the left of the resulting control panel are the directories within the database. To view the contents of a database directory, select the desired directory with the mouse, then select the Filter button (you can also double-click the desired directory). On the left, you will see any subdirectories in the directory you selected. On the right, you will see the names of the entities that contain spectrum and other information. To view the contents of an entity, select that entity and select OK (or you can double-click the entity). Selecting this option activates the DBA editor (see above) and provides you with a mechanism for viewing the contents of the selected entity. You may move up one directory by selecting ".." in the control panel and clicking the Filter button (or by double-clicking ".."), To quit the graphical entity viewer, select Cancel.

User interface controls

FELIX includes four types of controls that simplify the adjustment of processing and display parameters: buttons, sliders, option menus, and input boxes. They often appear in real-time user interfaces, but they can be invoked from within user-written macros as well. How to interact with each of these controls is described below. Please see the FELIX Command Language Reference Guide for a description of the use of these controls in your own macros.


Buttons are normally used within a real-time display to perform one specific task. A typical button might be one that resets symbol values to their default state or one that quits the interface. To apply the function described by the button, simply click the button. The function of any button should be adequately defined by the button label, which is displayed as text on the button face.


Sliders are used within a real-time display to interactively vary the values of parameters. When the slider is moved, the display is updated to reflect the change of value. To move the slider, drag it with the mouse. When the cursor moves onto a slider, the value shown in the slider changes to the parameter's current value. To adjust the slider value, simply move the slider. As you move the slider, the symbol value changes and the display is updated. You can also move quickly between a range of values within a slider by clicking anywhere on the slider. The actual function of any slider should be adequately defined by the slider name.

Entry boxes

entry boxes are provided so that you can perform an operation using a value typed in the entry box.

Option menus

A special Option menu (popup menu) is provided that allows you to perform an operation whenever the value of this menu changes.