Platform: Seq-Scope (--platform seqscope)¶
Built-in profile for Seq-Scope. The usual input is a MEX triple (barcodes.tsv.gz, features.tsv.gz, matrix.mtx.gz) in the Seq-Scope dialect: the barcode file carries the spatial coordinates, and the feature file and matrix carry five count columns per entry instead of one. sge_convert --platform seqscope (via spatula convert-sge) reads that dialect; this profile wires it into the end-to-end run. A raw per-molecule TSV can be ingested instead with --raw-transcript.
Seq-Scope has no cell segmentation, so the run is pixel-level throughout: ingest → FICTURE → packaging (+ histology). No cell analysis stage is planned or expected.
Expected inputs¶
--in-dir is the MEX directory itself — there is no standard parent layout to search:
File in --in-dir |
Contents |
|---|---|
barcodes.tsv.gz |
barcode, index, …, X (col 6), Y (col 7), counts — coordinates in nanometers |
features.tsv.gz |
gene_id, gene_name, index, counts |
matrix.mtx.gz |
MatrixMarket with 5 count columns: gn, gt, spl, unspl, ambig |
Alternatively, --raw-transcript / a raw_transcript column names a raw per-molecule TSV (header #lane tile X Y gene_id gene gn gt spl unspl ambig, coordinates in nanometers), which sge_convert ingests through its CSV route (--in-csv) instead of the MEX; --in-dir is then not needed. An already-ingested transcript can be given with --in-transcript.
Histology has no standard filename, so it is always given explicitly with --image (see Images).
Defaults: ingest with --units-per-um 1000 (nm → µm), --icols-mtx 2 (the gene-exon count), --sge-visual; FICTURE width=12, n_factor=24,48,96, single-molecule mode; packaging with --use-pmpoint --bin-count 500.
1. Single sample¶
1 2 3 4 5 | |
The sample id defaults to rep1, so the packaged directory is OUT/cartl/<OUT basename>-rep1/; override with --id.
From the raw per-molecule TSV instead:
1 2 3 | |
2. Multi-sample (sample sheet)¶
Each row's in_dir is that sample's MEX directory (or give raw_transcript). Images come from a separate --images TSV keyed by sample:
samples.tsv
1 2 3 | |
images.tsv
1 2 3 | |
1 2 | |
Hosting without FICTURE¶
Seq-Scope datasets are often published without factor analysis. Add --no-ficture to any of the commands above:
1 2 | |
Only FICTURE's tiling step runs; the packaged output carries the transcript points, the SGE raster basemap, and the histology, with no factor layers. Nothing about this is Seq-Scope specific — it works on every platform. See FICTURE mode.
Hexagon-binned 10x MEX files¶
To also get the hexagon-binned counts as 10x MEX directories (for Seurat/Scanpy-style downstream analysis), add --segment-10x, optionally with the widths to export:
1 2 | |
For a wide hexagon (roughly --width above 40), also raise the tiling size — punkst rejects a tile under 20× the hexagon side length and recommends 50–100× — e.g. --width 100 --tile-size 5000 (config: "tile_size": 5000). Each sample and width yields OUT/fic/samples/<id>/<id>.hex_<width>.mex/ with barcodes.tsv.gz (hexagon centers as x:y, µm), features.tsv.gz, and matrix.mtx.gz. These are converted from the same hexagon files FICTURE trains on (after --min-ct-per-unit-hexagon, default 50), so they match the factor analysis exactly; without --segment-width-10x every --width is exported. Works together with a full FICTURE run too. Config equivalent: "segment_10x": true or { "widths": "12,24" }.
Coordinates and count columns¶
Barcode X/Y are in nanometers, so the profile's ingest.extra_flags pass --units-per-um 1000 to sge_convert. Columns 6 and 7 of barcodes.tsv.gz are read as X and Y (the sge_convert defaults --icol-bcd-x 6 --icol-bcd-y 7).
The matrix's five count columns are, in order, gn, gt, spl, unspl, ambig. The profile selects column 2 (--icols-mtx 2), the gene-exon count, and names it count in the output.
These settings live in ingest.extra_flags, which come last on the sge_convert command line, so --units-per-um on the CLI (or ingest.units_per_um) has no effect here — the profile's --units-per-um 1000 takes precedence. To change any of them, replace the list in a --config (a list is replaced whole, so restate every flag you want to keep):
1 | |
To quantify on a different count column — e.g. total gene counts (gn) — set --icols-mtx 1 the same way.
On the raw-TSV route (--raw-transcript), --icols-mtx does not apply: the count column defaults to gn (sge_convert's Seq-Scope TSV preset), so pass --colname-transcript-count gt to count the gene-exon column, as the MEX route does.
Barcodes whose features do not match the feature file are dropped by sge_drop_mismatches after conversion (the sge_convert default for this platform).
Images¶
Seq-Scope histology is typically an H&E TIF that has already been georeferenced — it carries its own geotransform, aligned to the transcript frame, but usually no CRS. The profile therefore sets image_defaults.georeferenced = true: the corner coordinates are kept as they are and only the CRS is assigned:
1 2 | |
No bounds are synthesized, so --um-per-pixel / --georef-plain do not apply. If a particular image is not already georeferenced, opt it out per image and state its scale instead:
1 | |
Single-channel modalities (e.g. type=dapi) are colorized through import_image on the usual path and are not covered by georeferenced; give them a scale with um_per_pixel.