Workspaces and large files

Where your analysis lives, how to send it to someone, and how CytoWeave stays fast with very large samples.

What a workspace holds

Every edit can be undone (⌘Z) and redone (⇧⌘Z), including what an AI agent did.

The library

Workspaces save themselves as you work, to the library, a folder in your user configuration directory:

SystemLibrary
macOS~/Library/Application Support/CytoWeave
Linux~/.config/CytoWeave (or $XDG_CONFIG_HOME/CytoWeave)
Windows%AppData%\CytoWeave

The dot beside the workspace name shows its state: green when saved, amber while changes wait to be saved, red if saving failed (point at it for the reason). ⌘S saves at once. The status bar shows where the library is; --data-dir moves it.

The library keeps each FCS file once, under its SHA-256 checksum, and workspaces refer to files by checksum. A workspace therefore keeps working when the original files are moved, renamed or deleted, and adding the same file twice stores it once.

The workspace menu (click the workspace name) has New workspace, Open… (⇧⌘O, every saved workspace with its sample count and date), Rename… and Save now. Deleted workspaces go to the library's trash folder rather than disappearing.

CytoWeave opens on the start page with a new, empty workspace. Its recent workspaces list the ones saved, the one you had open last marked Last opened: click it to go on where you left off. Files named on the command line (cytoweave *.fcs) open in that new workspace rather than in the last one.

With --no-library, workspaces are kept in the browser's own storage instead.

Exporting and sharing

Workspace → Export writes:

ExportFor
Workspace file (.cwz)The analysis without the data, for a colleague who has the same FCS files
Workspace with FCS files (ACS archive)Everything, in an Archival Cytometry Standard container: to send to a colleague, or to archive with a paper
Gates as Gating-ML 2.0Other tools that read Gating-ML 2.0, such as FlowKit. See Gating-ML.
Population memberships (CLR)…Classification results: a column per population or cluster for every event
FlowJo workspace (.wsp)…FlowJo users, with or without the FCS files; see Exporting to FlowJo
De-identified FCS files…Sharing data outside your institution: the files without identifying keywords, as a ZIP or with the workspace in an ACS archive (below)
Events: concatenated FCS, downsampled, AnnData…A population's events in several samples, for tools that analyze them together: one concatenated FCS file, one FCS file per sample, or an AnnData file for scanpy and R (below)
Tables as an Excel workbookEvery table, with sheets describing the columns, samples and gating; see Excel and Prism

Events for other tools

The Export events dialog: samples chosen from a list with buttons for the samples and each group, the population, every event or a number per sample with a seed, the format AnnData, X as arcsinh with cofactor 150, and the channels of XThe Export events dialog: samples chosen from a list with buttons for the samples and each group, the population, every event or a number per sample with a seed, the format AnnData, X as arcsinh with cofactor 150, and the channels of X
Lymphocytes of every sample, 5,000 each, as an AnnData file.

Workspace → Export → Events… (or Export events of several samples… in a population's menu) writes a population's events in the samples you choose:

The validation suite reads the files back: every event of a concatenated file is its source's, each population counts the same per SampleID as in its sample, and anndata (0.10 and 0.13), h5py and pyfive read the AnnData files' values exactly as CytoWeave computes them.

De-identified files

FCS files carry more than events: operator and specimen fields, patient identifiers some instruments record, free-text comments, the original file name, acquisition dates, instrument serial numbers and many vendor keywords. Workspace → Export → De-identified FCS files… writes copies that keep only the keywords needed to read and analyze the data: parameter names, markers, ranges, voltages and amplification, compensation, the instrument model, the time step and index-sort wells. Everything else is removed, and the dialog shows what it removes from the current sample.

The population menu's Export events as de-identified FCS… does the same for one population, and the FlowJo export can de-identify the workspace and its files.

The population menu exports one population's events as FCS (raw values and the original keywords) or CSV, and tables export as CSV. Opening a .cwz or ACS file restores the workspace.

Large files

Samples of ten million events open in seconds and stay responsive:

Memory is the limit. Plan on about 4 bytes per event per parameter of every loaded sample, plus as much again for the compensated channels in use: ten million events with 21 parameters is 0.8 GB, about 1.5 GB in use. Samples load when first shown (Load every sample in the sample list loads them all), and the least recently used are dropped beyond 1.6 GB, or 3 GB on computers with 8 GB of memory or more. The status bar shows how much is loaded.

Measured. On a ten-million-event, 801 MB file, reading takes 0.75 s, moving the top gate 0.43 s, and a statistics table of 14 channels of 6.7 million events 0.78 s; acquisition QC runs in about 70 s with the window responsive throughout. See performance.

Where to go next