Data
File formats
What each window reads and writes. Every intermediate result is a MATLAB .mat file that the next window loads.
Recordings
| Format | Window | What is needed |
|---|---|---|
| LabChart (ADInstruments) .mat or text export | Extract LDF | MATLAB export: data (all channels concatenated), datastart, dataend; optional samplerate (1000 Hz assumed when missing), titles, unittext, comments; several blocks with their channel rates and units. Text export (.txt) with its comments. The flow and stimulus channels are found from their names; a file with 8 or more unnamed channels keeps the old convention (stimulus on channel 6, LDF on channel 8). |
| BIOPAC AcqKnowledge exports (.mat, text) | Extract LDF | Its MATLAB export (data, isi, labels, units) or its text export. Files saved in AcqKnowledge's own format are not read: save the recording as a MATLAB .mat or a text file in AcqKnowledge first |
| CED Spike2 (.mat export) | Extract LDF | One struct per channel with title, interval, values; event channels with times |
| EDF, EDF+, BDF (.edf, .bdf) | Extract LDF, EEG Analysis | The channels in their physical units, EDF+ annotations (onset, duration, text), discontinuous EDF+D recordings (records placed at their times) and BioSemi's 24-bit BDF with its Status trigger word. In Extract LDF the annotations can be the stimulus; in EEG Analysis they and the BioSemi trigger codes are the events. |
| Delimited tables (.txt, .csv, .tsv) | Extract LDF | PeriSoft, moorVMS-PC, spreadsheets: a header row with the channel names (optionally a units row), a time column in s, ms or clock time; comma, semicolon or tab separated, decimal point or comma. Without a time column the window asks for the sampling rate. |
| Laser speckle images (.mat, multi-frame TIFF, video) | Laser speckle | See Laser speckle files |
| TDT tank / block folder | Extract Ephys | Streams Whis (stimulus) and xRAW (raw); read with the TDT MATLAB SDK (TDTbin2mat) |
| Intan RHD2000 (.rhd)[22] | Extract Ephys | File format 1.0–3.x, traditional single-file layout; amplifier channels at 0.195 µV per bit; digital and ADC inputs as stimulus candidates. The notch-filter setting in the header is shown but not applied. |
| Open Ephys binary[23] | Extract Ephys | Recording folder (or a folder above it) with structure.oebin and continuous.dat (GUI 0.5 or later); samples × bit_volts; ADC channels and TTL lines as stimulus candidates; AUX channels skipped |
| NWB 2.x (.nwb)[21] | Extract Ephys | An ElectricalSeries in /acquisition or /processing (the first one; data × conversion); stimulus TimeSeries and trial / interval tables aligned to the series start |
| SpikeGLX (.bin + .meta) | Extract Ephys | Neuropixels 1.0 / 2.0 imec (AP or LF) and nidq; sync and digital bits as stimulus candidates |
| Blackrock NSx (.ns1–.ns6) | Extract Ephys | NSx 2.1–3.0, with the .nev of the same name for the digital input |
| Neuralynx (folder of .ncs) | Extract Ephys | Continuous channels, with the TTLs of Events.nev |
| Intan RHS2000 (.rhs) | Extract Ephys | Traditional single-file format; digital and analog inputs and the stimulation current as stimulus candidates |
| Open Ephys legacy (.continuous folder) | Extract Ephys | <processor>_CH<n>.continuous files (GUI before 0.6) and all_channels.events |
| EEGLAB .set, FieldTrip .mat, BrainVision .vhdr, EDF / BDF, XDF, EEG-BIDS, plain .mat | EEG Analysis | See EEG files |
| Electrode positions files | EEG Analysis (Electrode layout…) | See Electrode positions |
| Image stacks (.mat, TIFF, video) | ROI Analysis | See Image stacks |
| Still images (TIFF, PNG / JPG, .mat) and regions (ImageJ / Fiji, QuPath) | Histology / culture | See Histology |
Extract Ephys also recognizes the format from the file's extension, folder contents or first bytes, and the methods text names it. The readers added in versions 0.6.0 and 0.7.0 were checked during development against other software: see Validation.
LDF files
| File | Written by | Variables |
|---|---|---|
| Cropped LDF | Extract LDF | stim, LDF, t (s, 0 at the crop start), Fs (Hz), and the names flowName, flowUnits, stimName |
| LDF trials | LDF Processing; Batch (LDF); Laser speckle (Save trials…) | segmentedLDF (trials × samples), segmentedTime (s, 0 = onset), Fs; from Laser speckle also onsetTimes, roiName, units (the trials are the % change of one ROI) |
Walkthrough: the LDF demo in each format
The LDF demo recording, written as a LabChart text export, a PeriSoft-style table, a Spike2 export and an EDF+ file by core/demo/demoLDFFormats.m, loaded in Extract LDF.
Laser speckle files
Read by the Laser speckle window (more on the window). Raw speckle images from the camera, speckle contrast images, or the perfusion / flux images a commercial system exports; the type is judged from the images when the file does not say.
| Format | What is read |
|---|---|
| .mat | The images in frames or stack (H × W × N; any numeric type); optional t (s per frame) or fps, exposureMs, dark (counts), stim (one value per frame, or a faster trace over the same time), roiMasks (H × W × K logical) with roiNames, and kind ('raw speckle', 'contrast' or 'perfusion') |
| Multi-frame TIFF, video (.avi, .mp4) | Raw camera frames or exported perfusion / flux images; the frame interval is read from ImageJ TIFFs, the frame rate from the video (avoid compressed videos for raw speckle) |
| Commercial imaging systems | Their own files are not read: export TIFF, video or MATLAB from the system's software and choose Perfusion / flux images |
| File | Written by | Content |
|---|---|---|
| Flow (.csv) | Laser speckle (Export results…) | Time_s, then per ROI FlowChange_pct_<ROI> and FlowIndex_<ROI> |
| Results (.mat) | Laser speckle (Export results…) | results: maps (flowMean, K2Mean, responseMap), t, roiFlow, roiRel, trials, trialMean / trialSD, response, peak, peakTime, onsets, checks, ROI masks and names, settings |
| Trials (.mat) | Laser speckle (Save trials…) | The LDF trial format (above) |
LFP and MUA files
| File | Written by | Variables |
|---|---|---|
| LFP | Extract Ephys (Save LFP…) | lfp_data (channels × samples), lfp_channels, lfp_fs, t_lfp, stim_data, stim_fs, t_stim, and lfp_spacing_um when Electrode spacing (µm) is filled in |
| MUA | Extract Ephys (Save MUA…) | mua_data, mua_channels, mua_fs, t_mua, stim_data, stim_fs, t_stim, filterParams |
| ERP / CSD export | LFP Analysis | <file>_ERP.mat: t, y (ERP averaged over channels), erp_avg, erp_std, erp_channels, erp_params, n_epochs, onset_times, lfp_fs, source_file; with a CSD csd, csd_channel_order, csd_spacing_um, csd_method, csd_unit, csd_params, csd_depth_um (and csd_grid / csd_grid_depth_um, csd_kcsd) |
| Spike sorting | MUA Analysis | <file>_ch<N>_spikes.mat (Save results…): SpikeResults (spike times, cluster IDs, waveforms), SpikeSortParams, clusterQuality, info (including info.clusterEdits) |
EEG files
One file per participant, all with the same channels and trial times. The EEG Analysis window reads what each file says was already done to the data and lists it in its Overview tab; nothing in the file is run. More on the EEG window.
| Format | What is read |
|---|---|
| EEGLAB .set (numbers inside, or in a .fdt file next to it) | Trials or a continuous recording with events, channel names and positions, reference, and the EEGLAB history (filters, re-reference, ICA, rejected trials, interpolated channels) |
| FieldTrip .mat (raw or timelock data) | Trials with trialinfo, channel names, electrode positions (elec) and the cfg.previous history |
| BrainVision .vhdr + .vmrk + .eeg (Brain Products Recorder or Analyzer, exports from EEGLAB / MNE) | Continuous recordings with their markers (S 1, R 2, …) or segments exported from Analyzer (the condition of each segment is its marker at time 0); 16-bit, 32-bit integer or float data, multiplexed or vectorised; channel units and resolutions; positions; the amplifier filters used when recording |
| EDF / EDF+ / BDF (.edf, .bdf) | Continuous recordings; the channels in V / mV / µV at the common rate are the EEG (the EEG prefix of EDF+ names is dropped); EDF+ annotations and BioSemi Status trigger codes (Code 1, …) are the events; discontinuous EDF+D records placed at their times; the recording filters are noted |
| XDF (.xdf, LabRecorder / Lab Streaming Layer) | Every stream with its time stamps (full or deduced) and clock offsets; the stream of type EEG is the EEG and the marker streams are the events |
EEG-BIDS (the sub-…_eeg file of a BIDS dataset) | The data file (.edf, .bdf, .vhdr or .set) with its sidecar files: only the EEG channels of channels.tsv (status bad marks channels bad), the events of events.tsv (trial_type or value as the event name), the positions of electrodes.tsv with coordsystem.json (only from there, in one frame), and the reference and line frequency of eeg.json |
| Plain .mat | The numbers (channels × samples, or with trials in any order) and a sampling rate; a form asks what each variable is. Values in volts are converted to µV |
| File | Written by | Variables |
|---|---|---|
| EEG measures (.csv) | EEG Analysis (Export results…) | Participant, Condition, Value_uV, Latency_ms (peak only), Trials, PeakAtEdge |
| EEG results (.mat) | EEG Analysis (Export results…) | results: ERPs of every participant and the grand average, settings, measures, statistics, time–frequency (timeFrequency per participant, grandTimeFrequency) |
Electrode positions
Read by Electrode layout… → Positions file… in EEG Analysis (more on electrode layouts). Every format is read into one orientation (x = right ear, y = nose, z = up) with the fiducials (nasion, left and right ear points) kept apart, and matched to the channels by name.
| Format | What is read |
|---|---|
| EEGLAB .loc / .locs, .ced, .xyz | Polar positions (.loc / .locs), the channel table (.ced) and Cartesian positions (.xyz); EEGLAB's axes (x = nose, y = left ear) are turned |
| BESA .elp, .sfp | Spherical angles (.elp) and Cartesian positions (.sfp) |
| ASA / FieldTrip / MNE .elc | Cartesian positions with their unit |
| EGI .sfp | HydroCel nets, in cm |
| BrainVision .bvef | Brain Products electrode files |
| EasyCap and BioSemi coordinate lists | .txt with the columns Site Theta Phi |
| Tables (.csv, .tsv, .txt) | A name column and x / y / z, theta / phi, theta / radius, or ap / ml in mm from bregma (rodents) |
BIDS *_electrodes.tsv | With its coordsystem.json, when next to it, for the units and axes |
Polhemus digitizer .elp files are refused with a hint: export them as .sfp or .elc. The angles and positions were checked during development against MNE-Python read_custom_montage (Validation).
Image stacks
In
.matwithstackorframes(H × W × N grayscale or H × W × 3 × N RGB; otherwise the first variable is used)- Optional in the .mat:
timeVecort(one time per frame),roiMask(logical H × W) orroiMasks(H × W × K, optionalroiNames), used as the first ROIs - Multi-frame TIFF: RGB frames are converted to grayscale (mean of the colour channels). The frame interval, pixel size and channels are read from ImageJ, OME-TIFF and ScanImage files (one channel and the first slice are used); otherwise time = frame index
- Video (
.avi,.mp4): grey frames and the frame rate of the file - Files saved by microscope software in its own layout are not read: export the recording as a multi-frame TIFF (or a video) with that software first
Out
- .csv:
Time_splus one column per measure and ROI (<measure>_<ROI name>, e.g.DFF_Cell_1; measures Intensity, Movement, DFF), orDiameter_px(+Diameter_standard_px,Replacedwhen robust); for a kymograph, a matrix (first row = time) - .mat: struct
resultswith the series (one row per ROI),roiMasks/roiNames,roiMask(ROI 1),lineStart/lineEnd,motionCorrectionandshifts, and the preprocessing and diameter settings
TIFF metadata
One reading of what microscope and slide software writes into TIFFs is used by Histology, ROI Analysis and Laser speckle: ImageJ hyperstacks (channels, slices, frames, frame interval, z spacing), OME-TIFF (DimensionOrder, sizes, physical pixel size with units, time increment, plane times, channel names), ScanImage (saved channels, frame rate, field of view in µm, slices with flyback frames, frame timestamps) and Aperio .svs (MPP, magnification). Multi-channel TIFFs open on one channel and the first slice.
Histology images and regions
| Format | What is read |
|---|---|
| TIFF (.tif / .tiff) | Every page is a channel (one RGB page: its colours); the pixel size is read from ImageJ (also µm), OME-TIFF, Aperio .svs or the resolution tags when present |
| PNG, JPG, BMP | The colour channels (a grey image is one channel); type the pixel size |
| .mat | images (H × W × C × N) or image (H × W × C); optional channelNames, imageNames, pixelSizeUm |
| ImageJ / Fiji regions (.roi, RoiSet.zip) | Import regions…: polygon, freehand, traced, rectangle and oval regions with their names (a single .roi or the ROI Manager's RoiSet.zip) |
| QuPath regions (GeoJSON) | Import regions…: annotations exported as GeoJSON (Polygon and MultiPolygon), with their names or classifications |
Imported regions are placed in the pixels of image 1; lines and points are skipped. Outputs: Histology and culture.
Result files
| File | Written by | Content |
|---|---|---|
| Feature table (.csv / .mat) | Signal Characterization | One row per series: Series, PeakLatency_s, OnsetDelay_s, FWHM_s, AUCpos, AUCneg, RiseTime_s, DecayTime_s, PeakAmp, Integral; the .mat has data and colNames |
| Group values and report | Signal Characterization (Groups & statistics) | Per-animal values (.csv: Group, Subject, <feature>) plus _report.txt, or the struct results (.mat) |
| Figures | Signal Characterization | PDF, SVG, EPS; PNG or TIFF at 300 / 600 dpi |
| Batch summary | Batch Processing | <name>_summary.csv, <name>_summary.mat (table summary and struct batch), <name>_log.txt |
| Session | Every analysis window | <name>.nasession.mat: variable session (app, versions, OS, date, inputs with MD5, settings, results, notes) |
| Report | Every analysis window | <name>_report.pdf: one A4 page |
NWB export
Export NWB… in Extract Ephys writes the processed LFP in volts to /processing/ecephys/LFP, the stimulus to /stimulus/presentation, and electrodes with the source channel names. With matnwb installed it uses the official schema classes.
Without it, a built-in minimal writer follows the NWB 2.7 layout but is not validated at run time and does not embed the schema; check such files with nwbinspector or pynwb.validate in Python. Subject metadata is not written.
Walkthrough: the demo recording in each format
The demo tank's first 6 s of channels 3–6, written as Intan, Open Ephys and NWB files by core/demo/demoFormats.m, loaded in Extract Ephys.
Not supported
- The Intan "one file per signal type / per channel" layouts (only the traditional single-file .rhd and .rhs).
- Blackrock .ccf.
- Files of acquisition systems not listed above: export the recording from the system's own software to a format that is read (for example NWB, EDF / BDF, a MATLAB file or a text table).
- NWB 1.x and 3-D ElectricalSeries.
- EEG: Neuroscan / ANT .cnt, g.tec, Brainstorm and ERPLAB files (export them as EDF / BDF or BrainVision from the recording software); Polhemus digitizer .elp position files (export them as .sfp or .elc).
- The native files of commercial laser speckle systems: export TIFF, video or MATLAB from their software.
- Files saved by microscope software in its own layout (folders included): export the recording as a multi-frame TIFF (or a video) with that software first.
- Recordings larger than memory: files are read in full.
Several of these are open items in the roadmap.