Metadata & Sample Table
Annotate samples, import metadata, split filenames, sort and filter rows, and export TSV files.
3. The Metadata Table
Every loaded file becomes one row in Table of Loaded FCS Samples. Each row has a checkbox; only checked rows are included the next time you plot. The filename column is read-only (shown without its .fcs extension); every other column is editable.
Editing annotations
Click into any annotation cell to type a value directly — strain, replicate, arrest status, timepoint, or whatever custom columns you've configured (see below). Edits are stored immediately and are included if you save a session or export the table.
Use the add-column icon in the table title bar to create a blank editable metadata column by hand. Use the metadata import icon to load a CSV or TSV metadata file. The file must include a filename-like column such as Filename, Sample Name, or FCS File; PhaseFinder matches those values to the currently loaded FCS filenames and ignores metadata rows for files that are not loaded.
CSV/TSV source headers must be unique after trimming and case normalization. An import with duplicate headers is rejected before changing the table, and the error identifies both source column numbers.
Sorting & filtering
- Sort: click a column header's label to toggle ascending/descending, or click one of the small ▲ / ▼ arrows to jump straight to that direction. The Timepoint column sorts numerically even though it's stored as text.
- Filter: click the pill under a column header to open a checklist of that column's distinct values; check one or more values to show only matching rows. Clear the checkboxes to show all rows again.
- Filtering hides and deselects: a row hidden by a filter is automatically unchecked, so what's plotted always matches "visible ∩ checked". Removing the filter does not automatically re-check the row.
- The header checkbox selects or deselects every currently visible row (it shows an indeterminate dash when only some visible rows are checked).
Filename metadata wizard
Rather than guessing annotation values, PhaseFinder lets you derive metadata columns directly from each filename. The wizard opens automatically about a second after your first files load (only once per browser tab); you can reopen it any time via the filename-metadata icon in the table's title bar (it's disabled until at least one file is loaded).
The wizard works left to right through the filename. Each split step extracts one piece from the current remaining text; the text after that split becomes the input to the next step. The file extension is already stripped before the first rule runs.
- Delimiter — splits at the first occurrence of a fixed character or string, e.g.
_. - Fixed width — splits at a character position. Enter one or more comma/space-separated break positions, or type a column width into the small box and click Set to convert it into a break position automatically.
- Regex — splits using a JavaScript regular expression. If the pattern has a capture group, the captured text becomes the column value (useful for pulling a token out of the middle of a name); otherwise everything before the match becomes the value.
Every step (and the final Remainder, i.e. whatever text is left after all steps) gets its own column name and a Hide checkbox to exclude it from the table entirely. Use Add Step to add another split, or the step's Remove button to delete it (at least one step must remain). The Preview panel shows how the first 20 loaded filenames would split with the current configuration, updating live as you edit.
In the example above, a filename like EDS2026-03-06_800bN t20__E2E101.0001.fcs is parsed into:
| Step | Rule | Captured text | Remainder sent to next step | Shown? |
|---|---|---|---|---|
| Split 1 | Delimiter _ | EDS2026-03-06 | 800bN t20__E2E101.0001 | Hidden |
| Split 2 | Regex (\d{2,3}) | 800 | bN t20__E2E101.0001 | Strain |
| Split 3 | Fixed width 1 | b | N t20__E2E101.0001 | Replicate |
| Split 4 | Fixed width 1 | N | t20__E2E101.0001 | Nocodazole Arrest |
| Split 5 | Fixed width 2 | t | 20__E2E101.0001 | Hidden |
| Split 6 | Delimiter _ | 20 | _E2E101.0001 | Timepoint |
| Remainder | After all rules | _E2E101.0001 | Hidden |
That leaves the visible columns Filename, Strain, Replicate, Nocodazole Arrest, and Timepoint. The hidden pieces are still used while parsing, but they do not become metadata table columns.
Regex quick primer
Regex is useful when the next value is identified by a pattern rather than a fixed separator. Parentheses create a capture group; if a regex step has a capture group, PhaseFinder uses the captured text as that column's value.
| Pattern | Useful when |
|---|---|
(\d{2,3}) | Capture a 2- or 3-digit strain number. |
^([A-Za-z]) | Capture the next single letter at the start of the remaining text, such as a replicate or arrest flag. |
t(\d+) | Capture one or more digits after t, often used for timepoints like t20. |
_(\d+) | Capture digits that appear after an underscore. |
- Apply commits the configured columns, replacing whatever custom columns exist. Values already typed for a column are kept if that column's field key is unchanged; values for genuinely new columns are filled in from the split.
- Filename Only clears all custom columns, leaving just the read-only Filename column.
- Cancel (or the Esc key) discards any unsaved edits in the wizard.
The last-applied split configuration is remembered in your browser (not tied to any one set of files) and is reapplied automatically to files you load later, and is also captured when you save a session.
Exporting to TSV
The export icon in the table's title bar exports exactly the currently visible rows as a tab-separated .tsv file. Active filters are respected, so the exported file matches the rows you are looking at in the table.
The TSV includes the filename, every visible metadata column created by the wizard or typed by hand, and any summary-statistics columns currently shown. This makes the export useful as an analysis-ready metadata sheet after you have annotated samples and calculated channel statistics.
Spreadsheet safety: export leaves PhaseFinder's stored values unchanged, but prefixes string cells whose first non-control character is =, +, -, or @ with an apostrophe so spreadsheet software treats them as text. Genuine numeric negative values remain numeric. The protection targets ASCII formula syntax; visually similar Unicode characters are exported unchanged because they are not spreadsheet operators.
Help Center
Open PhaseFinder