# Adata.obs entries for specific layers

**URL:** <https://discourse.scverse.org/t/adata-obs-entries-for-specific-layers/1069>\
**Category:** anndata\
**Created:** [January 19, 2023, 7:29pm UTC](https://discourse.scverse.org/t/adata-obs-entries-for-specific-layers/1069 "2023-01-19T19:29:39Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![mkarikom](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.scverse.org/mkarikom/32/136_2.png) [@mkarikom](https://discourse.scverse.org/u/mkarikom)\
**Post date:** [January 19, 2023, 7:29pm UTC](https://discourse.scverse.org/t/adata-obs-entries-for-specific-layers/1069/1 "2023-01-19T19:29:39Z")

</div>

Does the anndata/scanpy API provide layer-specific masking for `adata.obs`? Alternatively, is there something like `adata.layers['mylayer'].obs`?

---

<div class="post-metadata">

**Author:** ![adamgayoso](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.scverse.org/adamgayoso/32/100_2.png) [@adamgayoso](https://discourse.scverse.org/u/adamgayoso)\
**Post date:** [January 20, 2023, 12:18am UTC](https://discourse.scverse.org/t/adata-obs-entries-for-specific-layers/1069/2 "2023-01-20T00:18:32Z")

</div>

No, but you can use mudata!

---

<div class="post-metadata">

**Author:** ![yotamcons](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.scverse.org/yotamcons/32/300_2.png) [@yotamcons](https://discourse.scverse.org/u/yotamcons)\
**Post date:** [January 26, 2023, 5:26pm UTC](https://discourse.scverse.org/t/adata-obs-entries-for-specific-layers/1069/3 "2023-01-26T17:26:19Z")

</div>

I’d suggest you use the `obsm` attribute of your adata to add a `pd.DataFrame` with what you want. say:

```auto
import numpy, pandas, scanpy
adata = sc.AnnData(np.zeros((1, 1)))
layer_obs = pd.DataFrame([['abc', 1]], columns=['text', 'int'], index=['0'])
adata.obsm['mylayer'] = layer_obs

```
