Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

localconverter error #61

Open
le-ander opened this issue Feb 16, 2021 · 1 comment
Open

localconverter error #61

le-ander opened this issue Feb 16, 2021 · 1 comment

Comments

@le-ander
Copy link
Member

le-ander commented Feb 16, 2021

Hi Phil!

I just tried to convert my jupyter anndata2ri usage to a normal python script (i.e. using localconverter rather than ipython cell magics). I am, however, hitting an unexpected error.

So this works fine:

import anndata2ri
anndata2ri.activate()
%load_ext rpy2.ipython
%%R -o sce
library(Seurat)
load("tissue.rdata")
new_obj = CreateSeuratObject(counts = tissue@raw.data)
new_obj@meta.data = tissue@meta.data
sce <- as.SingleCellExperiment(new_obj)

sce in my python namespace is a now a neat AnnData object, as expected.
However trying to do the same with locaconverter gives me an error:

import anndata2ri
from rpy2.robjects import r
from rpy2.robjects.conversion import localconverter

with localconverter(anndata2ri.converter):
    adata = r('''
library(Seurat)
load("tissue.rdata")
new_obj = CreateSeuratObject(counts = tissue@raw.data)
new_obj@meta.data = tissue@meta.data
as.SingleCellExperiment(new_obj)
''')
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-2-fc7a6d222ec5> in <module>
      4 
      5 with localconverter(anndata2ri.converter):
----> 6     adata = r('''
      7 library(Seurat)
      8 load("/storage/groups/ml01/datasets/projects/20200101_Various_SfairaDataRepository_leander.dony/raw/d10_1038_s41586_019_1631_3/tissue.rdata")

/opt/python/lib/python3.8/site-packages/rpy2/robjects/__init__.py in __call__(self, string)
    436     def __call__(self, string):
    437         p = rinterface.parse(string)
--> 438         res = self.eval(p)
    439         return conversion.rpy2py(res)
    440 

/opt/python/lib/python3.8/site-packages/rpy2/robjects/__init__.py in __getattribute__(self, attr)
    411 
    412         try:
--> 413             return self.__getitem__(attr)
    414         except LookupError:
    415             raise AttributeError(orig_ae)

/opt/python/lib/python3.8/site-packages/rpy2/robjects/__init__.py in __getitem__(self, item)
    417     def __getitem__(self, item):
    418         res = _globalenv.find(item)
--> 419         res = conversion.rpy2py(res)
    420         if hasattr(res, '__rname__'):
    421             res.__rname__ = item

/opt/python/lib/python3.8/functools.py in wrapper(*args, **kw)
    873                             '1 positional argument')
    874 
--> 875         return dispatch(args[0].__class__)(*args, **kw)
    876 
    877     funcname = getattr(func, '__name__', 'singledispatch function')

/opt/python/lib/python3.8/site-packages/rpy2/robjects/conversion.py in _rpy2py(obj)
    198     non-rpy2) objects.
    199     """
--> 200     raise NotImplementedError(
    201         "Conversion 'rpy2py' not defined for objects of type '%s'" %
    202         str(type(obj))

NotImplementedError: Conversion 'rpy2py' not defined for objects of type '<class 'rpy2.rinterface.SexpClosure'>'
@le-ander
Copy link
Member Author

This is anndata2ri 1.0.6 and rpy2 3.4.2

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

No branches or pull requests

1 participant