Teichlab / cellphonedb

MIT License
338 stars 105 forks source link

TypeError: memoryview: a bytes-like object is required, not 'list' #315

Closed brianpenghe closed 3 years ago

brianpenghe commented 3 years ago

I was running the dotplot algorithm but got this error:

cellphonedb plot dot_plot --means-path=./out/means.txt --pvalues-path=./out/pvalues.txt --output-path=./out/ --output-name=dot_plotC0.pdf --verbose --rows=C0_rows.txt --columns=C0_columns.txt

/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/sklearn/utils/deprecation.py:144: FutureWarning: The 
sklearn.cluster.k_means_ module is  deprecated in version 0.22 and will be removed in version 0.24. The correspondi
ng classes / functions should instead be imported from sklearn.cluster. Anything that cannot be imported from sklea
rn.cluster is now part of the private API.
  warnings.warn(message, FutureWarning)
/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/click/core.py:535: DtypeWarning: Columns (4,5) have m
ixed types.Specify dtype option on import or set low_memory=False.
  return callback(*args, **kwargs)
[ ][APP][29/05/21-13:26:21][ERROR] Unexpected error
Traceback (most recent call last):
  File "/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/rpy2/rinterface_lib/sexp.py", line 361, in fr
om_object
    mv = memoryview(obj)
TypeError: memoryview: a bytes-like object is required, not 'list'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/cellphonedb/src/api_endpoints/terminal_api/pl
ot_terminal_api_endpoints/plot_terminal_commands.py", line 38, in dot_plot
    columns=columns)
  File "/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/cellphonedb/src/plotters/r_plotter.py", line 
38, in wrapper
    return f(*args, **kwargs, robjects=robjects, r_runtime_error=RRuntimeError)
  File "/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/cellphonedb/src/plotters/r_plotter.py", line 
117, in dot_plot
    n_rows, selected_rows = selected_items(rows, n_rows)
  File "/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/cellphonedb/src/plotters/r_plotter.py", line 
38, in wrapper
    return f(*args, **kwargs, robjects=robjects, r_runtime_error=RRuntimeError)
  File "/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/cellphonedb/src/plotters/r_plotter.py", line 
155, in selected_items
    selected = StrVector(names)
  File "/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/rpy2/robjects/vectors.py", line 379, in __ini
t__
    super().__init__(obj)
  File "/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/rpy2/rinterface_lib/sexp.py", line 288, in __
init__

    super().__init__(type(self).from_object(obj).__sexp__)  
  File "/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/rpy2/rinterface_lib/sexp.py", line 365, in from_object
    res = cls.from_iterable(obj)
  File "/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/rpy2/rinterface_lib/conversion.py", line 28, in _
    cdata = function(*args, **kwargs)
  File "/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/rpy2/rinterface_lib/sexp.py", line 314, in from_iterable
    cast_in)
  File "/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/rpy2/rinterface_lib/sexp.py", line 239, in _populate_r_vector
    set_elt(r_vector, i, cast_value(v))
  File "/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/rpy2/rinterface_lib/sexp.py", line 424, in _as_charsxp_cdata
    return conversion._str_to_charsxp(x)
  File "/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/rpy2/rinterface_lib/conversion.py", line 120, in _str_to_charsxp
    cchar = _str_to_cchar(val)
  File "/home/ubuntu/miniconda3/envs/cpdb/lib/python3.7/site-packages/rpy2/rinterface_lib/conversion.py", line 99, in _str_to_cchar
    b = s.encode(encoding)
AttributeError: 'int' object has no attribute 'encode'

Any ideas?

brianpenghe commented 3 years ago

Solved the problem. I used the column indices instead of column names.