internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: holoviz/holoviews

Issue:
BoxWhisker doesn't show outliers depending on vdim name
####  Packages
Python 3.9.7
holoviews 1.15.0
jupyterlab 3.4.4
bokeh 2.4.3
datashader 0.14.1

#### Description
The BoxWhisker doesn't seem to show the outliers when there is a space or a bracket in the name of the data.
The y limits are still set as if the outliers are included, but the outliers are not shown.
Only the y-axis name has an influence, the x-axis name can have spaces or brackets without having an effect on the outliers.

#### Example

```
import holoviews as hv
import pandas as pd

df = pd.DataFrame({'data':  [1,2,4,5,2,3,3,2,20,34],
                   'data 2':[1,2,4,5,2,3,3,2,20,34],
                   'data[': [1,2,4,5,2,3,3,2,20,34],
                   'x':     [1,1,1,1,1,1,1,1,1,1]})

(hv.BoxWhisker(df, 'x', 'data', label='data')+
 hv.BoxWhisker(df, 'x', 'data 2', label='data 2')+
 hv.BoxWhisker(df, 'x', 'data[', label='data[')+
 hv.BoxWhisker(df, 'x[', 'data', label='x['))
```

#### Screenshots
![image](https://user-images.githubusercontent.com/111486712/189067127-bc4f3021-2317-4da5-9c5e-1ad542b398b7.png)




Discussion:
Get the following warning when running in a notebook. 
```
... Current lengths: ('data 2', 2), ('data_2', 0), ('index', 2)
... Current lengths: ('data[', 2), ('data_left_square_bracket', 0), ('index', 2)
```

It looks like the name of some of the data is being wrongfully sanitized. 

Resolving patch:
diff --git a/holoviews/plotting/bokeh/stats.py b/holoviews/plotting/bokeh/stats.py
--- a/holoviews/plotting/bokeh/stats.py
+++ b/holoviews/plotting/bokeh/stats.py
@@ -72,6 +72,9 @@ class BoxWhiskerPlot(MultiDistributionMixin, CompositeElementPlot, ColorbarPlot,
     show_legend = param.Boolean(default=False, doc="""
         Whether to show legend for the plot.""")
 
+    outlier_radius = param.Number(default=0.01, doc="""
+        The radius of the circle marker for the outliers.""")
+
     # Deprecated options
 
     color_index = param.ClassSelector(default=None, class_=(str, int),
@@ -191,11 +194,11 @@ def get_data(self, element, ranges, style):
         if self.invert_axes:
             vbar_map = {'y': 'index', 'left': 'top', 'right': 'bottom', 'height': width}
             seg_map = {'y0': 'x0', 'y1': 'x1', 'x0': 'y0', 'x1': 'y1'}
-            out_map = {'y': 'index', 'x': vdim}
+            out_map = {'y': 'index', 'x': vdim, 'radius': self.outlier_radius}
         else:
             vbar_map = {'x': 'index', 'top': 'top', 'bottom': 'bottom', 'width': width}
             seg_map = {'x0': 'x0', 'x1': 'x1', 'y0': 'y0', 'y1': 'y1'}
-            out_map = {'x': 'index', 'y': vdim}
+            out_map = {'x': 'index', 'y': vdim, 'radius': self.outlier_radius}
         vbar2_map = dict(vbar_map)
 
         # Get color values
@@ -206,7 +209,7 @@ def get_data(self, element, ranges, style):
             cdim, cidx = None, None
 
         factors = []
-        vdim = element.vdims[0].name
+        vdim = dimension_sanitizer(element.vdims[0].name)
         for key, g in groups.items():
             # Compute group label
             if element.kdims:


Test patch:
Repository: holoviz/holoviews

Issue:
Bug with hvplot plotly violin plots using 'by' argument
Violin plots on hvplot with the plotly extension do not work properly when using the 'by' argument to make a violin for each category. Instead of one violin per category as expected, only the first letter of each category is used, and violins of categories with the same first letter are stacked. The legend shows only the first letter of each category name instead of the full names.

This can also be seen in the hvplot documentation. For example [the violin plot at the bottom of this page](https://hvplot.holoviz.org/user_guide/Plotting.html), using bokeh, in which each category has its own violin and its full name shown on the x axis and on the legend. This is the expected behaviour.

Compare with [the same plot using the plotly extension](https://hvplot.holoviz.org/user_guide/Plotting_with_Plotly.html), you can see that any categories that share the same first letter are stacked e.g. OO and OH are stacked and are both labelled as O.

Software versions, although I think it doesn't matter since the bug is visible in the documentation as well:
Python 3.12 running on mac os 13.3.1 and on a Linux server
Holoviews 1.18.3

Reproducible code:
```
import numpy as np
import hvplot.pandas
import hvplot.dask

hvplot.extension('plotly')
from hvplot.sample_data import us_crime, airline_flights
flights = airline_flights.to_dask().persist()
bugged_plot = flights.hvplot.violin(y='depdelay', by='carrier', ylim=(-20, 60), height=500)
hvplot.show(bugged_plot)

hvplot.extension('bokeh')
correct_plot = flights.hvplot.violin(y='depdelay', by='carrier', ylim=(-20, 60), height=500)
hvplot.show(correct_plot)
```



Discussion:

Resolving patch:
diff --git a/holoviews/plotting/plotly/stats.py b/holoviews/plotting/plotly/stats.py
--- a/holoviews/plotting/plotly/stats.py
+++ b/holoviews/plotting/plotly/stats.py
@@ -87,6 +87,8 @@ def get_data(self, element, ranges, style, **kwargs):
         axis = 'x' if self.invert_axes else 'y'
         for key, group in groups:
             if element.kdims:
+                if isinstance(key, str):
+                    key = (key,)
                 label = ','.join([d.pprint_value(v) for d, v in zip(element.kdims, key)])
             else:
                 label = key


Test patch:
Repository: akfamily/akshare

Issue:
AKShare 接口问题报告
**遇到任何问题，请先确认您的 AKShare 版本是最新的**
```
pip install akshare --upgrade  # Python 版本需要大于 3.7
```

**描述遇到的问题**
stock_info_sh_name_code的返回缺少部分股票，目前发现的都是st股票，见7.遗漏股票列表。

1. 操作系统版本：windows 10
2. Python 版本：3.8.8
3. AKShare 版本：1.5.90
4. 接口的名称和代码：
df = ak.stock_info_sh_name_code(indicator="主板A股")
df[df['公司代码']=='600078']

5. 接口报错的截图或代码
![image](https://user-images.githubusercontent.com/18640557/169838752-20ce21f1-f3f1-4c59-b3fe-ac6c5eae079b.png)

6. 期望获得的正确结果
返回所有股票列表

7.遗漏股票列表
600078	*ST澄星
600083	*ST博信
600090	*ST济堂
600091	*ST明科
600093	*ST易见
600112	*ST天成
600122	ST宏图
600136	ST明诚
600139	*ST西源
600146	*ST环球
600182	S*ST佳通
600191	*ST华资
600209	*ST罗顿
600221	ST海航
600226	ST瀚叶
600239	ST云城
600241	ST时万
600242	*ST中昌
600260	*ST凯乐
600265	*ST景谷
600275	*ST昌鱼
600289	ST信通
600290	ST华仪
600301	*ST南化
600303	ST曙光
600306	ST商城
600311	*ST荣华
600365	ST通葡
600382	*ST广珠
600385	*ST金泰
600387	ST海越
600388	ST龙净
600393	ST粤泰
600462	ST九有
600515	ST基础
600518	ST康美
600555	*ST海创
600568	ST中珠
600589	ST榕泰
600599	ST熊猫
600601	*ST方科
600608	ST沪科
600615	*ST丰华
600652	*ST游久
600654	*ST中安
600666	*ST瑞德
600671	ST目药
600719	ST热电
600726	*ST华源
600734	*ST实达
600759	ST洲际
600766	*ST园城
600767	*ST运盛
600781	ST辅仁
600804	ST鹏博士
600816	ST安信
600856	*ST中天
600870	*ST厦华
600890	*ST中房
600896	*ST海医
601020	ST华钰
601113	ST华鼎
603007	ST花王
603039	ST泛微
603117	ST万林
603555	ST贵人
603557	ST起步
603603	*ST博天
603729	ST龙韵
688086	*ST紫晶
688309	*ST恒誉


Discussion:
> 4\. stock_info_sh_name_code

返回的数据与目标网站是一致的

Resolving patch:
diff --git a/akshare/stock/stock_info.py b/akshare/stock/stock_info.py
--- a/akshare/stock/stock_info.py
+++ b/akshare/stock/stock_info.py
@@ -138,7 +138,7 @@ def stock_info_sh_name_code(indicator: str = "主板A股") -> pd.DataFrame:
         "CSRC_CODE": "",
         "STOCK_CODE": "",
         "sqlId": "COMMON_SSE_CP_GPJCTPZ_GPLB_GP_L",
-        "COMPANY_STATUS": "2, 4, 5, 7, 8",
+        "COMPANY_STATUS": "2,4,5,7,8",
         "type": "inParams",
         "isPagination": "true",
         "pageHelp.cacheSize": "1",


Test patch:
Repository: akfamily/akshare

Issue:
中国宏观杠杆率数据错误
接口: macro_cnbs
该接口获得的宏观杠杆率数据中，数据列“政府部门“、”中央政府“、”地方政府“的数据不正确，按理应该有 ”政府部门“=”中央政府“+”地方政府“。但是，查询出来的数据并不符合。如查询某行的结果如下：

年份         2022-12
居民部门          61.9
非金融企业部门      160.9
政府部门          21.4
中央政府          29.0
地方政府          50.4
实体经济部门       273.1
金融部门资产方       50.0
金融部门负债方       64.4
Name: 120, dtype: object

该结果中，“地方政府”=“政府部门”+“中央政府”，明显数据不正确


Discussion:

Resolving patch:
diff --git a/akshare/economic/marco_cnbs.py b/akshare/economic/marco_cnbs.py
--- a/akshare/economic/marco_cnbs.py
+++ b/akshare/economic/marco_cnbs.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 # -*- coding:utf-8 -*-
 """
-Date: 2023/3/22 20:22
+Date: 2023/7/17 21:30
 Desc: 国家金融与发展实验室-中国宏观杠杆率数据
 http://114.115.232.154:8080/
 """
@@ -19,19 +19,28 @@ def macro_cnbs() -> pd.DataFrame:
     temp_df = pd.read_excel(
         url, sheet_name="Data", header=0, skiprows=1, engine="openpyxl"
     )
+
     temp_df["Period"] = pd.to_datetime(temp_df["Period"]).dt.strftime("%Y-%m")
     temp_df.dropna(axis=1, inplace=True)
-    temp_df.columns = [
-        "年份",
-        "居民部门",
-        "非金融企业部门",
-        "政府部门",
-        "中央政府",
-        "地方政府",
-        "实体经济部门",
-        "金融部门资产方",
-        "金融部门负债方",
-    ]
+
+    temp_df.rename(
+        columns={
+            'Period': '年份',
+            'Household': '居民部门',
+            'Non-financial corporations': '非金融企业部门',
+            'Central government ': '中央政府',
+            'Local government': '地方政府',
+            'General government': '政府部门',
+            'Non financial sector': '实体经济部门',
+            'Financial sector(asset side)': '金融部门资产方',
+            'Financial sector(liability side)': '金融部门负债方'
+        },
+        inplace=True)
+
+    column_order = ['年份', '居民部门', '非金融企业部门', '政府部门', '中央政府', '地方政府', '实体经济部门',
+                    '金融部门资产方', '金融部门负债方']
+    temp_df = temp_df.reindex(columns=column_order)
+
     temp_df["居民部门"] = pd.to_numeric(temp_df["居民部门"], errors="coerce")
     temp_df["非金融企业部门"] = pd.to_numeric(temp_df["非金融企业部门"], errors="coerce")
     temp_df["政府部门"] = pd.to_numeric(temp_df["政府部门"], errors="coerce")
@@ -40,6 +49,7 @@ def macro_cnbs() -> pd.DataFrame:
     temp_df["实体经济部门"] = pd.to_numeric(temp_df["实体经济部门"], errors="coerce")
     temp_df["金融部门资产方"] = pd.to_numeric(temp_df["金融部门资产方"], errors="coerce")
     temp_df["金融部门负债方"] = pd.to_numeric(temp_df["金融部门负债方"], errors="coerce")
+
     return temp_df
 
 


Test patch:
Repository: akfamily/akshare

Issue:
中国宏观杠杆率数据错误
接口: macro_cnbs
该接口获得的宏观杠杆率数据中，数据列“政府部门“、”中央政府“、”地方政府“的数据不正确，按理应该有 ”政府部门“=”中央政府“+”地方政府“。但是，查询出来的数据并不符合。如查询某行的结果如下：

年份         2022-12
居民部门          61.9
非金融企业部门      160.9
政府部门          21.4
中央政府          29.0
地方政府          50.4
实体经济部门       273.1
金融部门资产方       50.0
金融部门负债方       64.4
Name: 120, dtype: object

该结果中，“地方政府”=“政府部门”+“中央政府”，明显数据不正确


Discussion:

Resolving patch:
diff --git a/akshare/__init__.py b/akshare/__init__.py
--- a/akshare/__init__.py
+++ b/akshare/__init__.py
@@ -2475,9 +2475,10 @@
 1.10.58 fix: fix fund_etf_hist_em interface
 1.10.59 add: add fund_announcement_personnel_em interface
 1.10.60 add: add macro_usa_cpi_yoy interface
+1.10.61 fix: fix macro_cnbs interface
 """
 
-__version__ = "1.10.60"
+__version__ = "1.10.61"
 __author__ = "AKFamily"
 
 import sys
diff --git a/akshare/economic/marco_cnbs.py b/akshare/economic/marco_cnbs.py
--- a/akshare/economic/marco_cnbs.py
+++ b/akshare/economic/marco_cnbs.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 # -*- coding:utf-8 -*-
 """
-Date: 2023/3/22 20:22
+Date: 2023/7/19 18:20
 Desc: 国家金融与发展实验室-中国宏观杠杆率数据
 http://114.115.232.154:8080/
 """
@@ -19,9 +19,26 @@ def macro_cnbs() -> pd.DataFrame:
     temp_df = pd.read_excel(
         url, sheet_name="Data", header=0, skiprows=1, engine="openpyxl"
     )
+
     temp_df["Period"] = pd.to_datetime(temp_df["Period"]).dt.strftime("%Y-%m")
     temp_df.dropna(axis=1, inplace=True)
-    temp_df.columns = [
+
+    temp_df.rename(
+        columns={
+            "Period": "年份",
+            "Household": "居民部门",
+            "Non-financial corporations": "非金融企业部门",
+            "Central government ": "中央政府",
+            "Local government": "地方政府",
+            "General government": "政府部门",
+            "Non financial sector": "实体经济部门",
+            "Financial sector(asset side)": "金融部门资产方",
+            "Financial sector(liability side)": "金融部门负债方",
+        },
+        inplace=True,
+    )
+
+    column_order = [
         "年份",
         "居民部门",
         "非金融企业部门",
@@ -32,6 +49,8 @@ def macro_cnbs() -> pd.DataFrame:
         "金融部门资产方",
         "金融部门负债方",
     ]
+    temp_df = temp_df.reindex(columns=column_order)
+
     temp_df["居民部门"] = pd.to_numeric(temp_df["居民部门"], errors="coerce")
     temp_df["非金融企业部门"] = pd.to_numeric(temp_df["非金融企业部门"], errors="coerce")
     temp_df["政府部门"] = pd.to_numeric(temp_df["政府部门"], errors="coerce")
@@ -40,6 +59,7 @@ def macro_cnbs() -> pd.DataFrame:
     temp_df["实体经济部门"] = pd.to_numeric(temp_df["实体经济部门"], errors="coerce")
     temp_df["金融部门资产方"] = pd.to_numeric(temp_df["金融部门资产方"], errors="coerce")
     temp_df["金融部门负债方"] = pd.to_numeric(temp_df["金融部门负债方"], errors="coerce")
+
     return temp_df
 
 


Test patch:
Repository: scverse/scanpy

Issue:
don’t return dicts
e.g `pp.filter_genes_dispersion` returns a dict with known keys. if you know the keys, this means you should return an object where you can use attribute access instead. usually the pythonic thing to do in this case is to return a namedtuple.

in this case though, we have

```py
>>> {k: v.shape for k, v in filter_result.items()}
{'dispersions': (173351,),
 'dispersions_norm': (173351,),
 'gene_filter': (173351,),
 'means': (173351,)}
```

which is a perfect case for a recarray.


Discussion:

Resolving patch:
diff --git a/scanpy/preprocessing/simple.py b/scanpy/preprocessing/simple.py
--- a/scanpy/preprocessing/simple.py
+++ b/scanpy/preprocessing/simple.py
@@ -145,7 +145,7 @@ def filter_genes_dispersion(data, log=True,
             Dispersions per gene.
         dispersions_norm : np.ndarray of shape n_genes
             Dispersions per gene.
-    If a data matrix is passed, the information is returned as tuple.
+    If a data matrix is passed, the information is returned as np.recarray with the columns:
         gene_filter, means, dispersions, dispersion_norm
     """
     if isinstance(data, AnnData):
@@ -212,10 +212,17 @@ def filter_genes_dispersion(data, log=True,
         gene_filter = np.logical_and.reduce((mean > min_mean, mean < max_mean,
                                              dispersion_norm > min_disp,
                                              dispersion_norm < max_disp))
-    result = {'gene_filter': gene_filter, 'means': df['mean'].values,
-              'dispersions': df['dispersion'].values,
-              'dispersions_norm': df['dispersion_norm'].values}
-    return result
+    return np.rec.fromarrays((
+        gene_filter,
+        df['mean'].values,
+        df['dispersion'].values,
+        df['dispersion_norm'].values,
+    ), dtype=[
+        ('gene_filter', bool),
+        ('means', 'float32'),
+        ('dispersions', 'float32'),
+        ('dispersions_norm', 'float64'),
+    ])
 
 
 def filter_genes_cv_deprecated(X, Ecutoff, cvFilter):


Test patch:
Repository: scverse/scanpy

Issue:
filter_genes_dispersion(adata, n_top_genes=x) retrieves fewer genes if zero-expression genes exist
I was trying to get top 1000 variable genes in 1.3M dataset, but every time I ended up with zero genes after the `sc.pp.filter_genes_dispersion(adata, n_top_genes=1000)` call.

The reason is that `sc.pp.filter_genes_dispersion(adata, n_top_genes=x)` actually returns `x - num_zero_expression_genes` genes instead of x, where num_zero_expression_genes represents number of genes without any expression. 

Here is a small reproducible example:

![image](https://user-images.githubusercontent.com/1140359/38215015-9f3de66e-36c6-11e8-8c96-9c9a6458741d.png)

It's easy to fix with a prior `sc.pp.filter_genes(adata, min_counts=1)` call, but I think filter_genes_dispersion should retrieve n_top_genes, regardless of presence of zero expression genes.


Discussion:

Resolving patch:
diff --git a/scanpy/preprocessing/simple.py b/scanpy/preprocessing/simple.py
--- a/scanpy/preprocessing/simple.py
+++ b/scanpy/preprocessing/simple.py
@@ -349,6 +349,7 @@ def filter_genes_dispersion(data,
         raise ValueError('`flavor` needs to be "seurat" or "cell_ranger"')
     dispersion_norm = df['dispersion_norm'].values.astype('float32')
     if n_top_genes is not None:
+        dispersion_norm = dispersion_norm[~np.isnan(dispersion_norm)]
         dispersion_norm[::-1].sort()  # interestingly, np.argpartition is slightly slower
         disp_cut_off = dispersion_norm[n_top_genes-1]
         gene_subset = df['dispersion_norm'].values >= disp_cut_off


Test patch:
Repository: scverse/scanpy

Issue:
Wrong axis label when using components argument in sc.pl.diffmap
Example:
```python
import scanpy.api as sc
adata = sc.datasets.blobs()

sc.pp.neighbors(adata)
sc.tl.diffmap(adata)
sc.pl.diffmap(adata, components='1,2')
```
gives the output:
![image](https://user-images.githubusercontent.com/7300030/47364845-8c4ef700-d6da-11e8-81f2-47ff0eb6d38e.png)
The axis labels should be DC1 and DC2. If running `sc.pl.diffmap(adata)` the axis labels are correct.


Discussion:

Resolving patch:
diff --git a/scanpy/plotting/tools/scatterplots.py b/scanpy/plotting/tools/scatterplots.py
--- a/scanpy/plotting/tools/scatterplots.py
+++ b/scanpy/plotting/tools/scatterplots.py
@@ -425,6 +425,10 @@ def _get_data_points(adata, basis, projection, components):
             raise ValueError("Given components: '{}' are not valid. Please check. "
                              "A valid example is `components='2,3'`")
 
+        if basis == 'diffmap':
+            # remove the offset added in the case of diffmap, such that
+            # plot_scatter can print the labels correctly.
+            components_list = [[number-1 for number in comp] for comp in components_list]
     else:
         data_points = [adata.obsm['X_' + basis][:, offset:offset+n_dims]]
         components_list = []


Test patch:
Repository: scverse/scanpy

Issue:
Github install error
Tried to install via  `$ pip3 install -e .`  but returned this error:
```
Obtaining file://path/to/scanpy_1.4/scanpy
    Complete output from command python setup.py egg_info:
    /path/to/miniconda3/envs/bio/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
      from ._conv import register_converters as _register_converters
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "path/to/scanpy/setup.py", line 11, in <module>
        from scanpy import __author__, __email__
      File "path/to/scanpy/scanpy/__init__.py", line 26, in <module>
        check_versions()
      File "path/to/scanpy/scanpy/utils.py", line 38, in check_versions
        .format(__version__, anndata.__version__))
    NameError: name '__version__' is not defined

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in path/to/scanpy/
```
The variable `__version__` in line 38 in utils.py is not defined.



Discussion:
In any case, running:  `$ pip install anndata -U --no-deps`  solves the problem, as then the problematic part of utils.py is not run.


Resolving patch:
diff --git a/scanpy/utils.py b/scanpy/utils.py
--- a/scanpy/utils.py
+++ b/scanpy/utils.py
@@ -15,8 +15,7 @@
 from textwrap import dedent
 from pandas.api.types import CategoricalDtype
 
-from . import settings
-from . import logging as logg
+from . import settings, logging as logg
 
 EPS = 1e-15
 
@@ -33,6 +32,7 @@ def check_versions():
     #       use the following hack...
     if anndata.__version__ != '0+unknown':
         if anndata.__version__ < LooseVersion('0.6.10'):
+            from . import __version__
             raise ImportError('Scanpy {} needs anndata version >=0.6.10, not {}.\n'
                               'Run `pip install anndata -U --no-deps`.'
                               .format(__version__, anndata.__version__))


Test patch:
Repository: scverse/scanpy

Issue:
latest version error
Dear developers, 

in an attempt to instal the latest version of scanpy from GitHub (Master branch), I receive the following error:

Traceback (most recent call last):
  File "/home/vladie/PycharmProjects/PY3/RPE_MYCN_10X.py", line 4, in <module>
    import scanpy.external as sce
  File "/usr/local/lib/python3.6/dist-packages/scanpy/__init__.py", line 33, in <module>
    from . import datasets, logging, queries, external
  File "/usr/local/lib/python3.6/dist-packages/scanpy/external/__init__.py", line 1, in <module>
    from . import tl
  File "/usr/local/lib/python3.6/dist-packages/scanpy/external/tl.py", line 4, in <module>
    from ._tools._palantir import palantir
ModuleNotFoundError: No module named 'scanpy.external._tools'

I would like to run palentir through Scanpy, is this already possible ? 
Kind regards,
Vladie0


Discussion:
Looks like the same error hit in #585, as well as https://github.com/theislab/scanpy/pull/493#issuecomment-477674448.

@flying-sheep I haven't been able to reproduce, but maybe we should just throw an `__init__.py` in there, since it fixes this for @fbrundu, before the `v1.4.1` release?

Resolving patch:
diff --git a/scanpy/external/_tools/__init__.py b/scanpy/external/_tools/__init__.py
new file mode 100644


Test patch:
Repository: scverse/scanpy

Issue:
sc.tl.umap error with init_pos="paga"
Hello,

Trying to use sc.tl.umap with initial positions from sc.tl.paga. Seems an error with UMAP from the error log. But it is only called when calling paga positions, UMAP works otherwise.

I do see https://github.com/theislab/scanpy/issues/666, and https://github.com/lmcinnes/umap/pull/262, but I am already running scanpy 1.4.4 and umap 0.3.9 so I don't understand how to solve the issue?

Attached error. Any suggestions? 
Thanks!

<img width="575" alt="Screen Shot 2019-08-05 at 19 02 18" src="https://user-images.githubusercontent.com/20108378/62485139-c560df80-b7b3-11e9-8333-7e511c263a79.png">



Discussion:
I have also got exactly the same error ! 

Resolving patch:
diff --git a/scanpy/tools/_umap.py b/scanpy/tools/_umap.py
--- a/scanpy/tools/_umap.py
+++ b/scanpy/tools/_umap.py
@@ -118,7 +118,7 @@ def umap(
         init_coords = get_init_pos_from_paga(adata, random_state=random_state)
     else:
         init_coords = init_pos  # Let umap handle it
-    if hasattr(init_coords, "dtype") and is_numeric_dtype(init_pos):
+    if hasattr(init_coords, "dtype"):
         init_coords = check_array(init_coords, dtype=np.float32, accept_sparse=False)
 
     random_state = check_random_state(random_state)


Test patch:
diff --git a/scanpy/tests/test_embedding.py b/scanpy/tests/test_embedding.py
--- a/scanpy/tests/test_embedding.py
+++ b/scanpy/tests/test_embedding.py
@@ -12,3 +12,10 @@ def test_umap_init_dtype():
     embed2 = pbmc.obsm["X_umap"].copy()
     assert_array_almost_equal(embed1, embed2)
     assert_array_almost_equal(embed1, embed2)
+
+def test_umap_init_paga():
+    pbmc = sc.datasets.pbmc68k_reduced()
+    pbmc = pbmc[:100, :].copy()
+    sc.tl.paga(pbmc)
+    sc.pl.paga(pbmc, show=False)
+    sc.tl.umap(pbmc, init_pos="paga")
\ No newline at end of file