The API of anndata for R is very similar to its Python
counterpart. Check out ?anndata
for a full list of the
functions provided by this package.
AnnData()
stores a data matrix X
together
with annotations of observations obs
(obsm
,
obsp
), variables var
(varm
,
varp
), and unstructured annotations uns
.
Here is an example of how to create an AnnData object with 2 observations and 3 variables.
library(anndata)
ad <- AnnData(
X = matrix(1:6, nrow = 2),
obs = data.frame(group = c("a", "b"), row.names = c("s1", "s2")),
var = data.frame(type = c(1L, 2L, 3L), row.names = c("var1", "var2", "var3")),
layers = list(
spliced = matrix(4:9, nrow = 2),
unspliced = matrix(8:13, nrow = 2)
),
obsm = list(
ones = matrix(rep(1L, 10), nrow = 2),
rand = matrix(rnorm(6), nrow = 2),
zeros = matrix(rep(0L, 10), nrow = 2)
),
varm = list(
ones = matrix(rep(1L, 12), nrow = 3),
rand = matrix(rnorm(6), nrow = 3),
zeros = matrix(rep(0L, 12), nrow = 3)
),
uns = list(
a = 1,
b = data.frame(i = 1:3, j = 4:6, value = runif(3)),
c = list(c.a = 3, c.b = 4)
)
)
ad
You can read the information back out using the $
notation.
Read from h5ad format:
You can use any of the regular R indexing methods to subset the
AnnData
object. This will result in a ‘View’ of the
underlying data without needing to store the same data twice.
The X
attribute can be used as an R matrix:
You can access a different layer matrix as follows:
If you assign an AnnData object to another variable and modify either, both will be modified:
This is standard Python behaviour but not R. In order to have two
separate copies of an AnnData object, use the $copy()
function: