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
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").
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.