Arrow tabular data reading
Skill HolobiomicsLab/asb-skill-collections/collections/metabolomics/v2/skills/arrow-tabular-data-reading
Use when when you have Parquet-encoded tabular data (e.From its SKILL.md
npx -y skills add HolobiomicsLab/asb-skill-collections --skill arrow-tabular-data-readingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 15 stars15 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as CC-BY-4.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
7.1 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
arrow-tabular-data-reading
License: restricted — no clear open-source license detected for the underlying tool; verify licensing before commercial use or redistribution. <!-- asb-license-banner -->
Summary
Read and parse binary tabular data (Parquet files) into structured in-memory columnar representations using Apache Arrow's language bindings. This skill enables efficient, schema-aware loading of mass spectrometry metadata and signal arrays without materializing the entire dataset into memory.
When to use
When you have Parquet-encoded tabular data (e.g., mzPeak spectrum metadata or chromatogram signal tables) that needs to be loaded into R or Python for downstream analysis, and you want to leverage Arrow's zero-copy, columnar memory layout and lazy evaluation to handle large files efficiently.
When NOT to use
- Input is already a native in-memory data frame or table—avoid unnecessary Arrow round-trip conversion.
- You need to write or modify Parquet files—R and Python Arrow implementations support read-only access at this time.
- File is in a non-Parquet format (mzML, raw vendor formats, etc.); use format-specific readers instead.
Inputs
- Parquet file (binary columnar format)
- File path to mzPeak archive component (e.g., spectra_metadata.parquet, spectra_data.parquet, chromatograms_metadata.parquet)
- Optional: Parquet schema or column selection filter
Outputs
- Arrow Table (zero-copy columnar in-memory representation)
- Converted data frame (R data.frame or pandas.DataFrame if row-oriented access needed)
- Structured representation of spectrum or chromatogram metadata and signal arrays with validated schema
How to apply
Load the Arrow library for your language (arrow R package or pyarrow Python package). Open the Parquet file using the library's read function, which automatically infers or respects the Parquet schema. The resulting object is a columnar table (Arrow Table or RecordBatch collection) with named columns corresponding to the Parquet schema fields (e.g., spectrum_index, mz, intensity for spectra_data.parquet in mzPeak archives). Convert to a language-native data frame (R data.frame or Python pandas.DataFrame) only if row-oriented access or further transformation is required. Validate that the loaded table has the expected column names, data types, and row count matching the file's Parquet metadata.
Related tools
- arrow (R package) (Parquet reading and columnar in-memory representation for R; provides zero-copy data access and lazy evaluation) — https://arrow.apache.org/docs/r/
- pyarrow (Python library) (Parquet reading and columnar in-memory representation for Python; integrates with PyData stack) — https://arrow.apache.org/docs/python/index.html
- mobiusklein/mzpeak_prototyping (Reference R implementation demonstrating arrow-based mzPeak file reading workflow) — https://github.com/mobiusklein/mzpeak_prototyping
Examples
library(arrow)
spectra_data <- read_parquet('spectra_data.parquet')
spectra_df <- as.data.frame(spectra_data)
Evaluation signals
- Loaded table schema matches the Parquet file's declared schema (column names, data types, nullability).
- Column count and row count match the Parquet metadata (number of spectra/chromatograms × points per spectrum).
- Expected spectrum fields are present and non-empty (e.g., spectrum_index, mz, intensity for signal tables).
- Data types are appropriate (numeric for m/z and intensity; integer for indices; struct for nested metadata like precursors).
- No unexpected null or missing values in non-nullable columns; null values only in optional grouped fields (e.g., precursor data for spectra without MS/MS).
Limitations
- R and Python Arrow implementations support reading only; writing mzPeak files requires the Rust implementation.
- Arrow's lazy evaluation may defer error detection until data is explicitly materialized; always validate schema before assuming correctness.
- Memory overhead scales with uncompressed Parquet data size; for very large spectra_data.parquet files, consider reading by column or using chunked access rather than loading the entire table.
- Project is work-in-progress with no stability guarantee; API and file format may change.
Evidence
- [readme] There is a separate Python implementation in
python/which is a complete re-implementation for reading mzPeak files using [pyarrow]: "There is a separate Python implementation inpython/which is a complete re-implementation for reading mzPeak files using [pyarrow]" - [readme] There is also an R implementation in
R/, which is also a complete re-implementation using the [arrow] for reading only at this time.: "There is also an R implementation inR/, which is also a complete re-implementation using the [arrow] for reading only at this time." - [other] Use the R read function from the R/ implementation to open a valid mzPeak file. Extract spectrum data and convert to a structured tabular format (data frame). Validate that the output contains expected spectrum fields and rows.: "Use the R read function from the R/ implementation to open a valid mzPeak file. Extract spectrum data and convert to a structured tabular format (data frame). Validate that the output contains"
- [readme] mzPeak is a archive of multiple Parquet files, stored directly in an uncompressed [ZIP] archive. Each Parquet file describes a different facet of the stored mass spectrometry run.: "mzPeak is a archive of multiple Parquet files, stored directly in an uncompressed [ZIP] archive. Each Parquet file describes a different facet of the stored mass"
- [readme] spectra_data.parquet: Spectrum signal data in either profile or centroid mode. May be in point layout or chunked layout: "spectra_data.parquet: Spectrum signal data in either profile or centroid mode. May be in point layout or chunked layout"
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.