squidpy icon indicating copy to clipboard operation
squidpy copied to clipboard

CosMx FOVs being skipped

Open jamesboot opened this issue 1 year ago • 2 comments

Description

When loading CosMx data from FOVs are skipped because they "do not exist in CellComposite folder" or "do not exist in CellLabels folder", however the FOVs do exist in these folders... Not sure what the issue is here, why these FOVs are being skipped or how to fix, any help would be great!

...

Minimal reproducible example

adata2 = sq.read.nanostring(
    path=sample_dir,
    counts_file=counts_file,
    meta_file=meta_file,
    fov_file=fov_file
)

Traceback

WARNING: FOV `197` does not exist in CellComposite folder, skipping it.
WARNING: FOV `570` does not exist in CellComposite folder, skipping it.
WARNING: FOV `558` does not exist in CellComposite folder, skipping it.
WARNING: FOV `646` does not exist in CellComposite folder, skipping it.
WARNING: FOV `642` does not exist in CellComposite folder, skipping it.
WARNING: FOV `271` does not exist in CellComposite folder, skipping it.
WARNING: FOV `176` does not exist in CellComposite folder, skipping it.
WARNING: FOV `614` does not exist in CellComposite folder, skipping it.
WARNING: FOV `272` does not exist in CellComposite folder, skipping it.
WARNING: FOV `496` does not exist in CellComposite folder, skipping it.
WARNING: FOV `267` does not exist in CellComposite folder, skipping it.
WARNING: FOV `297` does not exist in CellComposite folder, skipping it.
WARNING: FOV `568` does not exist in CellComposite folder, skipping it.
WARNING: FOV `447` does not exist in CellComposite folder, skipping it.
WARNING: FOV `367` does not exist in CellComposite folder, skipping it.
WARNING: FOV `98` does not exist in CellComposite folder, skipping it.
WARNING: FOV `421` does not exist in CellComposite folder, skipping it.
WARNING: FOV `564` does not exist in CellComposite folder, skipping it.
WARNING: FOV `563` does not exist in CellComposite folder, skipping it.
WARNING: FOV `559` does not exist in CellComposite folder, skipping it.
WARNING: FOV `517` does not exist in CellComposite folder, skipping it.
WARNING: FOV `222` does not exist in CellComposite folder, skipping it.
WARNING: FOV `707` does not exist in CellComposite folder, skipping it.
WARNING: FOV `683` does not exist in CellComposite folder, skipping it.
WARNING: FOV `292` does not exist in CellComposite folder, skipping it.
WARNING: FOV `192` does not exist in CellComposite folder, skipping it.
WARNING: FOV `739` does not exist in CellComposite folder, skipping it.
WARNING: FOV `562` does not exist in CellComposite folder, skipping it.
WARNING: FOV `607` does not exist in CellComposite folder, skipping it.
WARNING: FOV `247` does not exist in CellComposite folder, skipping it.
WARNING: FOV `743` does not exist in CellComposite folder, skipping it.
WARNING: FOV `491` does not exist in CellComposite folder, skipping it.
WARNING: FOV `607` does not exist in CellLabels folder, skipping it.
WARNING: FOV `568` does not exist in CellLabels folder, skipping it.
WARNING: FOV `222` does not exist in CellLabels folder, skipping it.
WARNING: FOV `564` does not exist in CellLabels folder, skipping it.
WARNING: FOV `562` does not exist in CellLabels folder, skipping it.
WARNING: FOV `98` does not exist in CellLabels folder, skipping it.
WARNING: FOV `496` does not exist in CellLabels folder, skipping it.
WARNING: FOV `367` does not exist in CellLabels folder, skipping it.
WARNING: FOV `558` does not exist in CellLabels folder, skipping it.
WARNING: FOV `421` does not exist in CellLabels folder, skipping it.
WARNING: FOV `646` does not exist in CellLabels folder, skipping it.
WARNING: FOV `272` does not exist in CellLabels folder, skipping it.
WARNING: FOV `642` does not exist in CellLabels folder, skipping it.
WARNING: FOV `614` does not exist in CellLabels folder, skipping it.
WARNING: FOV `297` does not exist in CellLabels folder, skipping it.
WARNING: FOV `197` does not exist in CellLabels folder, skipping it.
WARNING: FOV `271` does not exist in CellLabels folder, skipping it.
WARNING: FOV `739` does not exist in CellLabels folder, skipping it.
WARNING: FOV `491` does not exist in CellLabels folder, skipping it.
WARNING: FOV `743` does not exist in CellLabels folder, skipping it.
WARNING: FOV `192` does not exist in CellLabels folder, skipping it.
WARNING: FOV `292` does not exist in CellLabels folder, skipping it.
WARNING: FOV `176` does not exist in CellLabels folder, skipping it.
WARNING: FOV `570` does not exist in CellLabels folder, skipping it.
WARNING: FOV `267` does not exist in CellLabels folder, skipping it.
WARNING: FOV `563` does not exist in CellLabels folder, skipping it.
WARNING: FOV `707` does not exist in CellLabels folder, skipping it.
WARNING: FOV `447` does not exist in CellLabels folder, skipping it.
WARNING: FOV `247` does not exist in CellLabels folder, skipping it.
WARNING: FOV `559` does not exist in CellLabels folder, skipping it.
WARNING: FOV `683` does not exist in CellLabels folder, skipping it.
WARNING: FOV `517` does not exist in CellLabels folder, skipping it.
WARNING: FOV `98` does not exist, skipping it.
WARNING: FOV `176` does not exist, skipping it.
WARNING: FOV `192` does not exist, skipping it.
WARNING: FOV `197` does not exist, skipping it.
WARNING: FOV `222` does not exist, skipping it.
WARNING: FOV `247` does not exist, skipping it.
WARNING: FOV `267` does not exist, skipping it.
WARNING: FOV `271` does not exist, skipping it.
WARNING: FOV `272` does not exist, skipping it.
WARNING: FOV `292` does not exist, skipping it.
WARNING: FOV `297` does not exist, skipping it.
WARNING: FOV `367` does not exist, skipping it.
WARNING: FOV `421` does not exist, skipping it.
WARNING: FOV `447` does not exist, skipping it.
WARNING: FOV `491` does not exist, skipping it.
WARNING: FOV `496` does not exist, skipping it.
WARNING: FOV `517` does not exist, skipping it.
WARNING: FOV `558` does not exist, skipping it.
WARNING: FOV `559` does not exist, skipping it.
WARNING: FOV `562` does not exist, skipping it.
WARNING: FOV `563` does not exist, skipping it.
WARNING: FOV `564` does not exist, skipping it.
WARNING: FOV `568` does not exist, skipping it.
WARNING: FOV `570` does not exist, skipping it.
WARNING: FOV `607` does not exist, skipping it.
WARNING: FOV `614` does not exist, skipping it.
WARNING: FOV `642` does not exist, skipping it.
WARNING: FOV `646` does not exist, skipping it.
WARNING: FOV `683` does not exist, skipping it.
WARNING: FOV `707` does not exist, skipping it.
WARNING: FOV `739` does not exist, skipping it.
WARNING: FOV `743` does not exist, skipping it.
AnnData object with n_obs × n_vars = 521946 × 1165
    obs: 'fov', 'Area', 'AspectRatio', 'Width', 'Height', 'Mean.PanCK', 'Max.PanCK', 'Mean.CD68', 'Max.CD68', 'Mean.Membrane', 'Max.Membrane', 'Mean.CD45', 'Max.CD45', 'Mean.DAPI', 'Max.DAPI', 'cell_id', 'assay_type', 'version', 'Run_Tissue_name', 'Panel', 'slide_ID', 'unassignedTranscripts', 'nCount_RNA', 'nFeature_RNA', 'nCount_negprobes', 'nFeature_negprobes', 'nCount_falsecode', 'nFeature_falsecode', 'Area.um2', 'CenterX_global_px', 'CenterY_global_px', 'cell', 'cell_ID'
    uns: 'spatial'
    obsm: 'spatial', 'spatial_fov'

Versions

scanpy==1.10.3 anndata==0.10.9 umap==0.5.6 numpy==1.26.4 scipy==1.14.1 pandas==2.2.3 scikit-learn==1.5.2 statsmodels==0.14.3 igraph==0.11.6 pynndescent==0.5.13 squidpy==1.6.1

...

jamesboot avatar Oct 02 '24 10:10 jamesboot

UPDATE

Attempted to load the data using spatialdata-io function cosmx() and had some errors, turned out to be due to empty FOVs in the dataset. From what I can tell these were the same FOVs being skipped above.

Linking the issue here: https://github.com/scverse/spatialdata-io/issues/213

jamesboot avatar Nov 05 '24 15:11 jamesboot

Hello,

I encountered the same issue and found that it was due to the FOVs not being present in the count matrix (i.e., the exprMat_file.csv file). However, I would argue that even if an FOV has no detected probes, the FOV image should still be loaded. With that in mind, I was wondering whether it might make sense to impute the count matrix with placeholder values (e.g., zeros or None) for the missing FOVs - so that the image loading logic remains consistent regardless of expression data availability?

Thanks!

hl-xue avatar Oct 22 '25 13:10 hl-xue