Skip to content

A flexible and extensible API for annotated 2D matrix data stored in multiple underlying formats.

License

Notifications You must be signed in to change notification settings

single-cell-data/SOMA

Repository files navigation

SOMA

SOMA – for “Stack Of Matrices, Annotated” – is a flexible, extensible, and open-source API enabling access to data in a variety of formats. SOMA is designed to be general-purpose for data that can be modeled as one or more sets of 2D annotated matrices with measurements of features across observations. The driving use case of SOMA is for single-cell data in the form of annotated matrices where observations are frequently cells and features are genes, proteins, or genomic regions.

Motivation

Datasets generated by profiling single cells are rapidly increasing in size and complexity. This has resulted in a need for scalable solutions to accommodate data sizes that no longer fit in memory and flexibility to accommodate the diversity of data being produced.

To address these emerging needs in the single cell ecosystem, the Chan Zuckerberg Initiative in partnership with TileDB is:

  1. Driving the development of SOMA.
  2. Providing its first implementation, TileDB-SOMA which utilizes the TileDB Embedded engine.
  3. Adopting TileDB-SOMA at CZ CELLxGENE Discover to build its Census which provides efficient access and querying to a corpus containing nearly 50 million cells, compiled from 700+ datasets.

The SOMA specification and its TileDB-SOMA implementation provide the following capabilities for single-cell data:

  1. An abstract specification with flexibility for data from multiple modalities (e.g. RNA, spatial, epigenomics)
  2. A format to store and access datasets larger than memory, as compared to the current paradigm of .h5ad/.mtx/.tgz/.RData/.h5Seurat/ etc.
  3. Eliminates in-memory limitations by providing query-ready data management for reading and writing at low latency and cloud scale.
  4. R and python APIs with the flexibility to expand to other languages.

Developer information

Coming soon!

  • R SOMA specification and its implementation through TileDB-SOMA.
  • End-user documentation for both Python and R TileDB-SOMA APIs, including a getting-started guide, notebooks, and API reference.

Issues and contacts

Code of Conduct

This project adheres to CZI's Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to opensource@chanzuckerberg.com.