--- title: Software design output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Software design} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "" ) ``` `{anndataR}` is designed to offer the combined functionality of the following packages: * [theislab/zellkonverter](https://github.com/theislab/zellkonverter): Convert AnnData files to/from `SingleCellExperiment` objects. * [mtmorgan/h5ad](https://github.com/mtmorgan/h5ad/): Read/write `*.h5ad` files natively using `rhdf5`. * [dynverse/anndata](https://github.com/dynverse/anndata): An R implementation of the AnnData data structures, uses `reticulate` to read/write `*.h5ad` files. Ideally, this package will be a complete replacement for all of these packages, and will be the go-to package for working with AnnData files in R. ## Desired feature list * Provide an `R6` class to work with AnnData objects in R (either in-memory or on-disk). * Read/write `*.h5ad` files natively * Convert to/from `SingleCellExperiment` objects * Convert to/from `Seurat` objects ## Class diagram Here is a diagram of the main R6 classes provided by the package: ![](diagrams/class_diagram.svg) Notation: - `X: Matrix` - variable `X` is of type `Matrix` - `*X: Matrix` - variable `X` is abstract - `to_SingleCellExperiment(): SingleCellExperiment` - function `to_SingleCellExperiment` returns object of type `SingleCellExperiment` - `*to_SingleCellExperiment()` - function `to_SingleCellExperiment` is abstract