You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Assemble MAE/MASE reads with new2(check = FALSE); guard with validObject tests
readParquet() now builds multi_assay_experiment and
multi_assay_spatial_experiment objects directly via S4Vectors::new2(check =
FALSE) instead of the MultiAssayExperiment() / MultiAssaySpatialExperiment()
constructors. Those constructors re-derive sample-name set equality at
construction time with a locale-collation sort over the full, cell-grain
sampleMap, which dominates read time on large products (tens of millions of
sampleMap rows -- a cell-resolved spatial atlas took ~22 min to read, over 60%
of it in that redundant sort). The datapackage already carries writeParquet()'s
write-time integrity guarantee (a DuckDB anti-join proving every sampleMap
'primary' is a subjects rowname), so the constructor-time re-check is redundant;
the assembled object still passes validObject(). The direct assembly also skips
harmonization, so unreferenced colData rows are retained rather than dropped on
read (write with subset_subjects_to_referenced upstream to avoid them).
Because the read path no longer runs constructor-time validity, the MAE/MASE
round-trip tests now assert validObject() on every readParquet() result -- in
the two MAE round-trips, the MASE datapackage-schema round-trip, and the two
spatial fixture helpers (makeLazySpatialMASE, .lazyPointsMASE) covering every
spatial-query test. This closes the gap that would otherwise let a
structurally-invalid readParquet()-assembled object through.
0 commit comments