← Back to Tutorials
Applies to EyeSort 1.0 · Verified 2026-10-07Release notes

Quickstart with Sample Data

Produce and verify a labeled EyeSort 1.0 dataset from the open sample files.

Outcome

In about 30 minutes, you will produce a verified <sample>_processed.set/.fdt, a labeling summary, and an optional eyesort_bins.txt. EyeSort labels fixation events; saccade direction is only a criterion on those fixations.

Before you begin

Use the configuration supplied with the sample. Values shown as placeholders in the Step 2 GUI are not universal experiment settings.

1. Launch and verify EyeSort

Start EEGLAB:

eeglab
which eegplugin_eyesort -all

Open the EyeSort menu.

Expected result: The menu reports EyeSort v1.0 and shows Steps 1–4, BDF generation, event-code conversion, History Scripts, and Help.

Verify in MATLAB: which should return one intended plugin path. Remove duplicate EyeSort paths before continuing.

2. Load the sample dataset

Choose EyeSort → 1. Load EEG Dataset(s). Click Browse Files, select one sample .set file, choose the output directory, and click Confirm.

Expected result: The sample dataset appears in EEGLAB. EyeSort remembers the output directory; it will auto-save there after labeling.

Verify in MATLAB:

EEG.filename
numel(EEG.event)
unique(string({EEG.event.type}))
eyesort_single_output_dir

Confirm that fixation, saccade, trial, condition, and item events are present.

3. Map text interest areas

Choose EyeSort → 2. Setup Interest Areas → Text-Based Sentence Contents and Interest Areas. Use Load Configuration when the sample includes a Step 2 .mat file. Otherwise enter the values documented with the sample, including:

  • the sample IA text file;
  • measured sentence offset and pixels per character;
  • ordered region names;
  • condition-label, condition-code, and item-code columns;
  • trial and optional stimulus-window triggers;
  • condition and item trigger lists;
  • fixation/saccade event types and X fields.

Save a named copy of the configuration. Optionally choose Save Intermediate Dataset(s), then click Confirm.

Expected result: EyeSort reports trigger and assignment counts. EEG.eyesort_processed becomes true. An optional intermediate is named <sample>_eyesort_ia.set/.fdt.

Verify in MATLAB:

assert(EEG.eyesort_processed)
EEG.region_names
d = EEG.eyesort_step2_diagnostics;
[d.fixation_events_seen d.fixations_assigned_to_region]
d.missing_text_file_keys

The mapped-fixation count should be positive, and missing keys should match only intentionally unused rows.

4. Inspect the mapping

Choose EyeSort → 2. Setup Interest Areas → Inspect Parsed Regions. Compare several rows with the sample stimulus text. Check spaces, region order, and pixel boundaries. Export the table if you want a QC record.

Expected result: Each condition–item row shows the intended literal text and plausible [start, end] boundaries for every region.

Verify in MATLAB:

mapped = find(~cellfun(@isempty, {EEG.event.current_region}));
EEG.event(mapped(1))

Inspect current_region, current_word, current_word_text, region_pass_number, fixation_in_pass, and is_last_in_pass. If the mapping is wrong, correct Step 2 before continuing.

5. Queue and apply fixation labels

Choose EyeSort → 4. Eye-Tracking Event Labeling. Load the sample label queue if supplied. Otherwise create a broad first label:

  1. enter a descriptive label name;
  2. choose Numeric code (CCRRLL);
  3. select one region known to contain sample fixations;
  4. leave optional filters unchecked for the first validation label;
  5. click Add Label to Queue.

Save the full queue, then click Apply All & Finish. If a conflict dialog appears, review the existing and proposed labels before choosing replace or keep.

Expected result: At least one fixation matches. EyeSort automatically writes <sample>_processed.set/.fdt and eyesort_labeling_summary_NNN.csv to the Step 1 output directory. There is no separate save command.

Verify in MATLAB:

labeled = ~cellfun(@isempty, {EEG.event.eyesort_full_code});
assert(nnz(labeled) > 0)
unique({EEG.event(labeled).eyesort_full_code})
unique({EEG.event(labeled).bdf_label_description})
EEG.eyesort_last_label_diagnostics

Spot-check that original_type preserves the incoming fixation marker and that bdf_full_description is readable.

6. Reload the saved output

Use the actual base filename shown in the output directory:

EEG = pop_loadset('filename', 'SAMPLE_processed.set', ...
                  'filepath', '/path/to/output');
assert(EEG.eyesort_processed)
labeled = ~cellfun(@isempty, {EEG.event.eyesort_full_code});
T = table({EEG.event(labeled).original_type}', ...
          {EEG.event(labeled).eyesort_full_code}', ...
          {EEG.event(labeled).bdf_full_description}', ...
          'VariableNames', {'Original','CanonicalCode','Description'});
T(1:min(10,height(T)), :)

Expected result: The reloaded file contains canonical codes, original types, descriptions, and all Step 2 behavioral metadata.

7. Generate and verify the optional BDF

Choose EyeSort → Generate BINLISTER BDF File and save the default eyesort_bins.txt.

Expected result: The file contains one or more BINLISTER bins. Codes with the same condition description and label description may be joined in one expression.

Verify in MATLAB:

assert(isfile(fullfile('/path/to/output', 'eyesort_bins.txt')))
type(fullfile('/path/to/output', 'eyesort_bins.txt'))

Before running BINLISTER, keep or restore numeric event types:

EEG = pop_convert_event_codes(EEG, 'numeric');

Preserve the run

Choose EyeSort → History Scripts → Save processing history script. Keep the generated .m file with its text-IA config, label queue, and localized IA-file sidecars.

For your own data, next read prepare inputs, the single-dataset guide, and reporting guidance.