Skip to content

obs i.e., axis=0 column joining + anndata.concat is underspecified #2374

@ilan-gold

Description

@ilan-gold
import pandas as pd, anndata as ad, numpy as np
adatas = [
    ad.AnnData(
        X=np.ones((1, 2)),
        obs=pd.DataFrame({"1": ["a"], "2": ["b"]}),
        var=pd.DataFrame(index=["1", "2"]),
    ),
    ad.AnnData(
        X=np.ones((1, 2)),
        obs=pd.DataFrame({"1": ["a"], "3": ["b"]}),
        var=pd.DataFrame(index=["1", "3"]),
    ),
]
ad.concat(adatas, join="outer").obs.columns # ["1", "2", "3"]
ad.concat(adatas, join="outer").var_names # ["1", "2", "3"]
ad.concat(adatas, join="inner").obs.columns # ["1"]
ad.concat(adatas, join="inner").var_names # ["1"]

See

if are_any_annotations_dataframes:
annotations_in_memory = (
to_memory(a) if isinstance(a, Dataset2D) else a for a in annotations
)
concat_annot = pd.concat(
unify_dtypes(annotations_in_memory),
join=join,
ignore_index=True,
)
concat_annot.index = concat_indices
else:
concat_annot = concat_dataset2d_on_annot_axis(
annotations,
join,
force_lazy=force_lazy,
concat_indices=concat_indices,
)

which takes the same parameter as the off axis

alt_indices = merge_indices(
[axis_indices(a, axis=alt_axis) for a in adatas], join=join
)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions