read_series_matrix

read_series_matrix(path, *, characteristics=True)

Read a GEO *_series_matrix.txt.gz: metadata and betas in one file.

The characteristics block is parsed into obs. GEO stores it as one row per characteristic with a "key: value" string per sample, and different submitters use different keys for the same thing, so the keys are kept verbatim rather than mapped onto a schema – an age column that silently turned out to be age at diagnosis is worse than no column.