Error concatenating scRNA with visium dataset
Closed this issue · 0 comments
Rafael-Silva-Oliveira commented
Please make sure these conditions are met
- I have checked that this issue has not already been reported.
- I have confirmed this bug exists on the latest version of anndata.
- (optional) I have confirmed this bug exists on the master branch of anndata.
Report
Hey
I'm trying to concatenate two datasets, visiumHD and scRNA (annotated). However, when I try concatenate, it gives the error below.
adata visium has the following structure with source
as visium:
AnnData object with n_obs × n_vars = 152048 × 18085
obs: 'X', 'Y', 'source'
var: 'gene_ids', 'feature_types', 'genome'
uns: 'spatial'
obsm: 'spatial'
adata rna has this structure with source as rna:
AnnData object with n_obs × n_vars = 1786 × 33567
obs: 'cell_type', 'source'
var: 'gene_ids', 'feature_types', 'genome', 'gene_names'
obsm: 'X_scarches_emb'
Code:
adata_cm = adata_visium.concatenate(adata_rna, join="inner", batch_key="domain_id")
Traceback:
ValueError Traceback (most recent call last)
[~\AppData\Local\Temp\ipykernel_29820\61572441.py](Local/Temp/ipykernel_29820/61572441.py) in <module>
----> 1 adata_cm = adata_seqfish.concatenate(adata_rna, join="inner", batch_key="domain_id")
[lib/site-packages/anndata/_core/anndata.py) in concatenate(self, join, batch_key, batch_categories, uns_merge, index_unique, fill_value, *adatas)
1777 fill_value=fill_value,
1778 index_unique=index_unique,
-> 1779 pairwise=False,
1780 )
1781
[lib/site-packages/anndata/_core/merge.py) in concat(adatas, axis, join, merge, uns_merge, label, keys, index_unique, fill_value, pairwise)
937 index_unique=index_unique,
938 fill_value=fill_value,
--> 939 axis=axis,
940 )
941 elif any(has_raw):
[lib/site-packages/anndata/_core/merge.py) in concat(adatas, axis, join, merge, uns_merge, label, keys, index_unique, fill_value, pairwise)
865 # Annotation for other axis
866 alt_annot = merge_dataframes(
--> 867 [getattr(a, alt_dim) for a in adatas], alt_indices, merge
868 )
869
[clib/site-packages/anndata/_core/merge.py) in merge_dataframes(dfs, new_index, merge_strategy)
553 dfs: Iterable[pd.DataFrame], new_index, merge_strategy=merge_unique
554 ) -> pd.DataFrame:
--> 555 dfs = [df.reindex(index=new_index) for df in dfs]
556 # New dataframe with all shared data
557 new_df = pd.DataFrame(merge_strategy(dfs), index=new_index)
[lib/site-packages/anndata/_core/merge.py) in <listcomp>(.0)
553 dfs: Iterable[pd.DataFrame], new_index, merge_strategy=merge_unique
554 ) -> pd.DataFrame:
--> 555 dfs = [df.reindex(index=new_index) for df in dfs]
556 # New dataframe with all shared data
557 new_df = pd.DataFrame(merge_strategy(dfs), index=new_index)
[lib/site-packages/pandas/util/_decorators.py) in wrapper(*args, **kwargs)
322 @wraps(func)
323 def wrapper(*args, **kwargs) -> Callable[..., Any]:
--> 324 return func(*args, **kwargs)
325
326 kind = inspect.Parameter.POSITIONAL_OR_KEYWORD
[lib/site-packages/pandas/core/frame.py) in reindex(self, *args, **kwargs)
4770 kwargs.pop("axis", None)
4771 kwargs.pop("labels", None)
-> 4772 return super().reindex(**kwargs)
4773
4774 @deprecate_nonkeyword_arguments(version=None, allowed_args=["self", "labels"])
[lib/site-packages/pandas/core/generic.py) in reindex(self, *args, **kwargs)
4817 # perform the reindex on the axes
4818 return self._reindex_axes(
-> 4819 axes, level, limit, tolerance, method, fill_value, copy
4820 ).__finalize__(self, method="reindex")
4821
[lib/site-packages/pandas/core/frame.py) in _reindex_axes(self, axes, level, limit, tolerance, method, fill_value, copy)
4596 if index is not None:
4597 frame = frame._reindex_index(
-> 4598 index, method, copy, level, fill_value, limit, tolerance
4599 )
4600
[lib/site-packages/pandas/core/frame.py) in _reindex_index(self, new_index, method, copy, level, fill_value, limit, tolerance)
4618 copy=copy,
4619 fill_value=fill_value,
-> 4620 allow_dups=False,
4621 )
4622
[lib/site-packages/pandas/core/generic.py) in _reindex_with_indexers(self, reindexers, fill_value, copy, allow_dups)
4887 fill_value=fill_value,
4888 allow_dups=allow_dups,
-> 4889 copy=copy,
4890 )
4891 # If we've made a copy once, no need to make another one
[lib/site-packages/pandas/core/internals/managers.py) in reindex_indexer(self, new_axis, indexer, axis, fill_value, allow_dups, copy, consolidate, only_slice)
668 # some axes don't allow reindexing with dups
669 if not allow_dups:
--> 670 self.axes[axis]._validate_can_reindex(indexer)
671
672 if axis >= self.ndim:
[lib/site-packages/pandas/core/indexes/base.py) in _validate_can_reindex(self, indexer)
3783 # trying to reindex on an axis with duplicates
3784 if not self._index_as_unique and len(indexer):
-> 3785 raise ValueError("cannot reindex from a duplicate axis")
3786
3787 def reindex(
ValueError: cannot reindex from a duplicate axis
Versions
-----
anndata 0.8.0
matplotlib 3.5.3
numpy 1.21.0
pandas 1.3.5
scanpy 1.9.0
session_info 1.0.0
sklearn 0.24.0
spann 0.0.0
torch 1.10.0+cpu
-----
PIL 9.5.0
backcall 0.2.0
colorama 0.4.6
constants NA
cycler 0.10.0
cython_runtime NA
dateutil 2.9.0
debugpy 1.6.3
decorator 5.1.1
entrypoints 0.4
h5py 3.8.0
highs_wrapper NA
importlib_metadata NA
ipykernel 6.16.2
jedi 0.19.1
joblib 1.3.2
kiwisolver 1.4.5
llvmlite 0.39.1
matplotlib_inline 0.1.7
mpl_toolkits NA
natsort 8.4.0
nt NA
ntsecuritycon NA
numba 0.56.4
packaging 23.2
parso 0.8.4
pickleshare 0.7.5
pkg_resources NA
prompt_toolkit 3.0.42
psutil 5.9.3
pydev_ipython NA
pydevconsole NA
pydevd 2.8.0
pydevd_file_utils NA
pydevd_plugins NA
pydevd_tracing NA
pygments 2.17.2
pyparsing 3.1.2
pythoncom NA
pytz 2024.1
pywintypes NA
scipy 1.6.0
setuptools 69.0.3
six 1.16.0
storemagic NA
tornado 6.2
tqdm 4.66.2
traitlets 5.9.0
typing_extensions NA
vscode NA
wcwidth 0.2.10
win32api NA
win32com NA
win32security NA
zipp NA
zmq 24.0.1
-----
IPython 7.33.0
jupyter_client 7.4.9
jupyter_core 4.11.1