← LeaderboardThe Skill Leaderboard

bioconductor-gdsfmt

Provides a high-level R interface to CoreArray Genomic Data Structure (GDS) data files. GDS is portable across platforms with hierarchical structure to store multiple scalable array-oriented data sets with metadata information. It is suited

Published by bioMate-AI ↗bioMate-AI/biomate-bioconductor-kb

Try your first task

bioconductor-gdsfmt

Start a fresh conversation. Replace the highlighted placeholders.

Use bioconductor-gdsfmt to process [GDS file] for [analysis goal], reading large data in bounded subsets where needed and ensuring the file handle is closed after use.

Required inputs

  • [GDS file]
  • [analysis goal]

User-approved starter prompt based on a pinned source version; check current skill requirements before running. Task evidence ↗

SKILL.md

name: bioconductor-gdsfmtdescription: Provides a high-level R interface to CoreArray Genomic Data Structure (GDS) data files. GDS is portable across platforms with hierarchical structure to store multiple scalable array-oriented data sets with metadata information. It is suitedwhen_to_use: "Use when: Storing and managing large-scale array-oriented datasets that are much larger than available random-access memory using createfn.gds.; Writing and compressing low-bit integer data (e.g., 2-bit integers for genotypes) using add.gdsn with storage=\"bit2\".; Applying user-defined functions marginally across rows or columns of massive matrices using apply.gdsn.; Reading specific subsets of compressed da. Not for: For small datasets that easily fit in memory; use standard R matrix or data.frame objects because GDS file creation adds unnecessary overhead.; For purely sparse matrix operations without disk-backing; use the Matrix package directly (e.g., dgCMatrix"user-invocable: false

gdsfmt

When to Use

  • Storing and managing large-scale array-oriented datasets that are much larger than available random-access memory using createfn.gds.
  • Writing and compressing low-bit integer data (e.g., 2-bit integers for genotypes) using add.gdsn with storage="bit2".
  • Applying user-defined functions marginally across rows or columns of massive matrices using apply.gdsn.
  • Reading specific subsets of compressed data efficiently using read.gdsn or readex.gdsn.

When NOT to Use

  • For small datasets that easily fit in memory; use standard R matrix or data.frame objects because GDS file creation adds unnecessary overhead.
  • For purely sparse matrix operations without disk-backing; use the Matrix package directly (e.g., dgCMatrix), though gdsfmt can store them.

Data Requirements

  • Hierarchical structure containing multidimensional arrays, character arrays, or metadata.
  • Supports various storage types: integer, floating-point number, character, logical, factor, and packed real numbers.

Key Parameters

  • val (NULL): The R variable or data (e.g., matrix, vector) passed to add.gdsn to write to the GDS node.
  • storage ("int"): Storage type in add.gdsn (e.g., "int", "bit2", "float", "packedreal16", "sp.int").
  • compress (""): Compression algorithm specified in add.gdsn (e.g., "ZIP", "LZ4", "LZMA", "ZIP_ra").
  • start (1): Vector specifying the starting position for subset reading/writing in read.gdsn or write.gdsn.
  • count (-1): Vector specifying the size of the dimension to read/write in read.gdsn or write.gdsn (-1 means the full size of that dimension).
  • margin (1): Indicates applying a function row-by-row (1) or column-by-column (2) in apply.gdsn.

Best Practices

  • Always close the GDS file using closefn.gds to ensure data integrity and release the file handle.
  • When the dataset is larger than system memory, pre-define the dimension size in add.gdsn using valdim and write data in chunks using write.gdsn.
  • If a compression algorithm is specified in add.gdsn, use append.gdsn instead of write.gdsn because data must be compressed sequentially.
  • Use digest.gdsn to create hash function digests (e.g., md5) to verify data integrity.

Common Pitfalls

  • Corrupted or locked files: Failing to close a GDS file after writing. Fix: Always call closefn.gds when finished with the file handle.
  • Writing to compressed nodes incorrectly: Attempting to use write.gdsn on a node created with compress="ZIP". Fix: Call append.gdsn instead, as compressed data must be written sequentially, followed by readmode.gdsn.
  • Memory exhaustion: Trying to load a massive GDS node entirely into memory with read.gdsn. Fix: Specify start and count arguments in read.gdsn or use readex.gdsn to read only a subset of the data.

Alternatives

  • HDF5Array: For standard HDF5-backed array storage, because it integrates deeply with the DelayedArray ecosystem.
  • rhdf5: For general-purpose HDF5 file manipulation, whereas gdsfmt is specifically tailored with genomic-specific compression (like 2-bit).
  • bigmemory: For shared-memory matrix representations without hierarchical node structures.

Citations

  • Zheng X, et al. (2012). "A high-performance computing toolset for relatedness and principal component analysis of SNP data." Bioinformatics.

References

  • Homepage: bioconductor.org/packages/gdsfmt
  • Vignette: vignette_0_727c94f6.txt

Run this on BioMate

This skill is the knowledge layer — when, why, and how to use gdsfmt. To run this analysis on your own data with managed compute, automated QC, and reproducible outputs, use BioMate — free to start.

▶ Open gdsfmt on BioMate →