Teichlab / celltypist

A tool for semi-automatic cell type classification
https://www.celltypist.org/
MIT License
260 stars 40 forks source link

TypeError: reorder_categories() got an unexpected keyword argument 'inplace' #58

Closed hyjforesight closed 1 year ago

hyjforesight commented 1 year ago

Hello Celltypist, Thanks for developing this amazing package. I was running the tutorial I (https://colab.research.google.com/github/Teichlab/celltypist/blob/main/docs/notebook/celltypist_tutorial.ipynb), but got error message when running

celltypist.dotplot(predictions, use_as_reference = 'cell_type', use_as_prediction = 'majority_voting')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[18], line 1
----> 1 celltypist.dotplot(predictions, use_as_reference = 'cell_type', use_as_prediction = 'majority_voting')

File ~\anaconda3\envs\test2\lib\site-packages\celltypist\plot.py:146, in dotplot(predictions, use_as_reference, use_as_prediction, prediction_order, reference_order, filter_prediction, cmap, vmin, vmax, colorbar_title, dot_min, dot_max, smallest_dot, size_title, swap_axes, title, figsize, show, save, ax, return_fig, **kwds)
    102 """
    103 Generate a dot plot showing CellTypist label transfer. This is a wrapper around the :class:`scanpy.pl.DotPlot` with selected parameters and customized defaults.
    104 
   (...)
    143 If `return_fig` is `True`, returns a :class:`scanpy.pl.DotPlot` object, else if `show` is false, return axes dict.
    144 """
    145 #df x 2
--> 146 dot_size_df, dot_color_df = _get_fraction_prob_df(predictions, use_as_reference, use_as_prediction, None, None)
    147 #reference
    148 reference_order = reference_order if reference_order is not None else dot_size_df.columns

File ~\anaconda3\envs\test2\lib\site-packages\celltypist\plot.py:58, in _get_fraction_prob_df(predictions, use_as_reference, use_as_prediction, prediction_order, reference_order)
     56     sort_df = pd.DataFrame(dict(reference_order = dot_size_df.columns, reference_max_pred = reference_max_pred, reference_max_score = reference_max_score))
     57     sort_df['reference_max_pred'] = sort_df.reference_max_pred.astype('category')
---> 58     sort_df.reference_max_pred.cat.reorder_categories([x for x in dot_size_df.index if x in sort_df.reference_max_pred.cat.categories], inplace = True)
     59     reference_order = sort_df.sort_values(by=['reference_max_pred', 'reference_max_score'], ascending = [True, False]).reference_order.values
     60 else:

File ~\anaconda3\envs\test2\lib\site-packages\pandas\core\accessor.py:112, in PandasDelegate._add_delegate_accessors.<locals>._create_delegator_method.<locals>.f(self, *args, **kwargs)
    111 def f(self, *args, **kwargs):
--> 112     return self._delegate_method(name, *args, **kwargs)

File ~\anaconda3\envs\test2\lib\site-packages\pandas\core\arrays\categorical.py:2475, in CategoricalAccessor._delegate_method(self, name, *args, **kwargs)
   2472 from pandas import Series
   2474 method = getattr(self._parent, name)
-> 2475 res = method(*args, **kwargs)
   2476 if res is not None:
   2477     return Series(res, index=self._index, name=self._name)

TypeError: reorder_categories() got an unexpected keyword argument 'inplace'

Could you please help me with this issue?

Thanks! Best, Yuanjian

ChuanXu1 commented 1 year ago

@hyjforesight, this is a pandas version issue that removed inplace argument from most categories methods. You can downgrade to pandas < 2.0.0 as a temporary solution.

hyjforesight commented 1 year ago

hello @ChuanXu1, thanks for the response. I close this issue.