Skip to content

chore!: remove use_highly_variable#4039

Draft
flying-sheep wants to merge 1 commit intomainfrom
pa/no-use-highly-variable
Draft

chore!: remove use_highly_variable#4039
flying-sheep wants to merge 1 commit intomainfrom
pa/no-use-highly-variable

Conversation

@flying-sheep
Copy link
Copy Markdown
Member

  • Closes #
  • Tests included or not required because:

@codecov
Copy link
Copy Markdown

codecov bot commented Apr 7, 2026

❌ 2 Tests Failed:

Tests completed Failed Passed Skipped
1832 2 1830 908
View the top 2 failed test(s) by shortest run time
tests/test_pca.py::test_obsm_mask_error[array]
Stack Traces | 0.004s run time
mask_type = 'array'

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.parametrize(#x1B[33m"#x1B[39;49;00m#x1B[33mmask_type#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, [#x1B[33m"#x1B[39;49;00m#x1B[33mhighly_variable#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33marray#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m])#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_obsm_mask_error#x1B[39;49;00m(mask_type: Literal[#x1B[33m"#x1B[39;49;00m#x1B[33mhighly_variable#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33marray#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m]) -> #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Check that trying to use mask_var with obsm raises an error."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        adata = AnnData(A_list)#x1B[90m#x1B[39;49;00m
        mask_var = (#x1B[90m#x1B[39;49;00m
            _helpers.random_mask(adata.shape[#x1B[94m1#x1B[39;49;00m]) #x1B[94mif#x1B[39;49;00m mask_type == #x1B[33m"#x1B[39;49;00m#x1B[33marray#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m #x1B[94melse#x1B[39;49;00m mask_type#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
        #x1B[94mwith#x1B[39;49;00m pytest.raises(#x1B[90m#x1B[39;49;00m
            #x1B[96mValueError#x1B[39;49;00m, match=#x1B[33mr#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mArgument `mask_var` is incompatible with `obsm`.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        ):#x1B[90m#x1B[39;49;00m
>           sc.pp.pca(adata, mask_var=mask_var, obsm=#x1B[33m"#x1B[39;49;00m#x1B[33mX_pca#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, copy=#x1B[94mTrue#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_pca.py#x1B[0m:436: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[.../scanpy/_utils/random.py#x1B[0m:201: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m func(*args, **kwargs)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../preprocessing/_pca/__init__.py#x1B[0m:239: in pca
    #x1B[0mx = _get_obs_rep(adata_comp, layer=layer, obsm=obsm)#x1B[90m#x1B[39;49;00m
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../scanpy/get/get.py#x1B[0m:434: in _get_obs_rep
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m adata.obsm[obsm]#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../scanpy/B9PcT7QG/hatch-test.few-extras/lib/python3.14.../anndata/_core/aligned_mapping.py#x1B[0m:164: in __getitem__
    #x1B[0m_subset(#x1B[96mself#x1B[39;49;00m.parent_mapping[key], #x1B[96mself#x1B[39;49;00m.subset_idx),#x1B[90m#x1B[39;49;00m
            ^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = AxisArrays with keys: , key = 'X_pca'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__getitem__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, key: #x1B[96mstr#x1B[39;49;00m) -> Value:#x1B[90m#x1B[39;49;00m
>       #x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._data[key]#x1B[90m#x1B[39;49;00m
               ^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       KeyError: 'X_pca'#x1B[0m

#x1B[1m#x1B[31m../../../..../scanpy/B9PcT7QG/hatch-test.few-extras/lib/python3.14.../anndata/_core/aligned_mapping.py#x1B[0m:215: KeyError
tests/test_pca.py::test_obsm_mask_error[highly_variable]
Stack Traces | 0.004s run time
mask_type = 'highly_variable'

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.parametrize(#x1B[33m"#x1B[39;49;00m#x1B[33mmask_type#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, [#x1B[33m"#x1B[39;49;00m#x1B[33mhighly_variable#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33marray#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m])#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_obsm_mask_error#x1B[39;49;00m(mask_type: Literal[#x1B[33m"#x1B[39;49;00m#x1B[33mhighly_variable#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33marray#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m]) -> #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Check that trying to use mask_var with obsm raises an error."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        adata = AnnData(A_list)#x1B[90m#x1B[39;49;00m
        mask_var = (#x1B[90m#x1B[39;49;00m
            _helpers.random_mask(adata.shape[#x1B[94m1#x1B[39;49;00m]) #x1B[94mif#x1B[39;49;00m mask_type == #x1B[33m"#x1B[39;49;00m#x1B[33marray#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m #x1B[94melse#x1B[39;49;00m mask_type#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
        #x1B[94mwith#x1B[39;49;00m pytest.raises(#x1B[90m#x1B[39;49;00m
            #x1B[96mValueError#x1B[39;49;00m, match=#x1B[33mr#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mArgument `mask_var` is incompatible with `obsm`.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        ):#x1B[90m#x1B[39;49;00m
>           sc.pp.pca(adata, mask_var=mask_var, obsm=#x1B[33m"#x1B[39;49;00m#x1B[33mX_pca#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, copy=#x1B[94mTrue#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_pca.py#x1B[0m:436: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[.../scanpy/_utils/random.py#x1B[0m:201: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m func(*args, **kwargs)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../preprocessing/_pca/__init__.py#x1B[0m:230: in pca
    #x1B[0mmask_var_param, mask_var = mask_var, _check_mask(adata, mask_var, #x1B[33m"#x1B[39;49;00m#x1B[33mvar#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

data = AnnData object with n_obs × n_vars = 6 × 5, mask = 'highly_variable'
dim = 'var'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_check_mask#x1B[39;49;00m[M: NDArray[np.bool] | NDArray[np.floating] | pd.Series | #x1B[94mNone#x1B[39;49;00m](#x1B[90m#x1B[39;49;00m
        data: AnnData | np.ndarray | CSBase | DaskArray,#x1B[90m#x1B[39;49;00m
        mask: #x1B[96mstr#x1B[39;49;00m | M,#x1B[90m#x1B[39;49;00m
        dim: Literal[#x1B[33m"#x1B[39;49;00m#x1B[33mobs#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mvar#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m],#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        allow_probabilities: #x1B[96mbool#x1B[39;49;00m = #x1B[94mFalse#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> M:  #x1B[90m# Could also be a series, but should be one or the other#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Validate mask argument.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Params#x1B[39;49;00m
    #x1B[33m    ------#x1B[39;49;00m
    #x1B[33m    data#x1B[39;49;00m
    #x1B[33m        Annotated data matrix or numpy array.#x1B[39;49;00m
    #x1B[33m    mask#x1B[39;49;00m
    #x1B[33m        Mask (or probabilities if `allow_probabilities=True`).#x1B[39;49;00m
    #x1B[33m        Either an appropriatley sized array, or name of a column.#x1B[39;49;00m
    #x1B[33m    dim#x1B[39;49;00m
    #x1B[33m        The dimension being masked.#x1B[39;49;00m
    #x1B[33m    allow_probabilities#x1B[39;49;00m
    #x1B[33m        Whether to allow probabilities as `mask`#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m mask #x1B[95mis#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m mask#x1B[90m#x1B[39;49;00m
        desc = #x1B[33m"#x1B[39;49;00m#x1B[33mmask/probabilities#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m #x1B[94mif#x1B[39;49;00m allow_probabilities #x1B[94melse#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33mmask#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(mask, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(data, AnnData):#x1B[90m#x1B[39;49;00m
                msg = #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mCannot refer to #x1B[39;49;00m#x1B[33m{#x1B[39;49;00mdesc#x1B[33m}#x1B[39;49;00m#x1B[33m with string without providing anndata object as argument#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[94mraise#x1B[39;49;00m #x1B[96mValueError#x1B[39;49;00m(msg)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
            annot: pd.DataFrame = #x1B[96mgetattr#x1B[39;49;00m(data, dim)#x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m mask #x1B[95mnot#x1B[39;49;00m #x1B[95min#x1B[39;49;00m annot.columns:#x1B[90m#x1B[39;49;00m
                msg = (#x1B[90m#x1B[39;49;00m
                    #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mDid not find `adata.#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mdim#x1B[33m}#x1B[39;49;00m#x1B[33m[#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mmask#x1B[33m!r}#x1B[39;49;00m#x1B[33m]`. #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mEither add the #x1B[39;49;00m#x1B[33m{#x1B[39;49;00mdesc#x1B[33m}#x1B[39;49;00m#x1B[33m first to `adata.#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mdim#x1B[33m}#x1B[39;49;00m#x1B[33m`#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mor consider using the #x1B[39;49;00m#x1B[33m{#x1B[39;49;00mdesc#x1B[33m}#x1B[39;49;00m#x1B[33m argument with an array.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                )#x1B[90m#x1B[39;49;00m
>               #x1B[94mraise#x1B[39;49;00m #x1B[96mValueError#x1B[39;49;00m(msg)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE               ValueError: Did not find `adata.var['highly_variable']`. Either add the mask first to `adata.var`or consider using the mask argument with an array.#x1B[0m

#x1B[1m#x1B[.../scanpy/get/get.py#x1B[0m:515: ValueError

#x1B[33mDuring handling of the above exception, another exception occurred:#x1B[0m

mask_type = 'highly_variable'

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.parametrize(#x1B[33m"#x1B[39;49;00m#x1B[33mmask_type#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, [#x1B[33m"#x1B[39;49;00m#x1B[33mhighly_variable#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33marray#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m])#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_obsm_mask_error#x1B[39;49;00m(mask_type: Literal[#x1B[33m"#x1B[39;49;00m#x1B[33mhighly_variable#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33marray#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m]) -> #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Check that trying to use mask_var with obsm raises an error."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        adata = AnnData(A_list)#x1B[90m#x1B[39;49;00m
        mask_var = (#x1B[90m#x1B[39;49;00m
            _helpers.random_mask(adata.shape[#x1B[94m1#x1B[39;49;00m]) #x1B[94mif#x1B[39;49;00m mask_type == #x1B[33m"#x1B[39;49;00m#x1B[33marray#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m #x1B[94melse#x1B[39;49;00m mask_type#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
>       #x1B[94mwith#x1B[39;49;00m pytest.raises(#x1B[90m#x1B[39;49;00m
            #x1B[96mValueError#x1B[39;49;00m, match=#x1B[33mr#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mArgument `mask_var` is incompatible with `obsm`.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        ):#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AssertionError: Regex pattern did not match.#x1B[0m
#x1B[1m#x1B[31mE         Expected regex: 'Argument `mask_var` is incompatible with `obsm`.'#x1B[0m
#x1B[1m#x1B[31mE         Actual message: "Did not find `adata.var['highly_variable']`. Either add the mask first to `adata.var`or consider using the mask argument with an array."#x1B[0m

#x1B[1m#x1B[31mtests/test_pca.py#x1B[0m:433: AssertionError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant