scverse / mudata

Multimodal Data (.h5mu) implementation for Python
https://mudata.rtfd.io
BSD 3-Clause "New" or "Revised" License
75 stars 17 forks source link

mudata object is updated after wrong selection of modality #31

Closed bio-la closed 1 year ago

bio-la commented 1 year ago

Hi! I noticed a bug when selecting a subset of genes in all layers of a mudata object created with the axes=-1 convention. The subsetting works fine, but if i try to select one modality in the selected feature subset, it's not working ( i will open a functionality request too) However after this error i can't subset the mudata object again - something gets updated in the object that prevents the normal functionality. minimal example below. thanks!

import scanpy as sc
import mudata as md
from mudata import MuData

import anndata as ad
import numpy as np
import pandas as pd
import warnings 
warnings.simplefilter(action='ignore', category=FutureWarning)

np.random.seed(1979)

import mudatasets as mds
mds.list_datasets()
mds.info('pbmc5k_citeseq')
pbmc5k=mds.load('pbmc5k_citeseq',files=['filtered_feature_bc_matrix.h5'])
pbmc5k
rna_raw = pbmc5k["rna"].copy()
rna_raw.var_names_make_unique()
rna_a = rna_raw[np.sort(np.random.choice(np.arange(300), 300, replace=False)),:].copy()

rna_b = rna_raw[np.sort(np.random.choice(np.arange(700), 500, replace=False)),:].copy()

mdata = MuData({"raw": rna_raw, "preproc_1": rna_a, "preproc_2": rna_b}, axis=-1)
mdata[:,mdata.var_names.str.startswith("MT-")]
mdata[:,mdata.var_names.str.startswith("MT-")]["preproc_1"]
mdata[:,mdata.var_names.str.startswith("MT-")]
gtca commented 1 year ago

I believe this is fixed together with #32 by https://github.com/scverse/mudata/commit/359d198b40c7378dd1ec27c46452550904c3a110.