py2ls 0.2.4__py3-none-any.whl → 0.2.4.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- py2ls/bio.py +272 -0
 - py2ls/data/usages_pd copy.json +1105 -0
 - py2ls/data/usages_pd.json +1413 -52
 - py2ls/fetch_update.py +45 -27
 - py2ls/ips.py +368 -99
 - py2ls/plot.py +143 -75
 - {py2ls-0.2.4.dist-info → py2ls-0.2.4.2.dist-info}/METADATA +1 -1
 - {py2ls-0.2.4.dist-info → py2ls-0.2.4.2.dist-info}/RECORD +9 -7
 - {py2ls-0.2.4.dist-info → py2ls-0.2.4.2.dist-info}/WHEEL +0 -0
 
    
        py2ls/plot.py
    CHANGED
    
    | 
         @@ -10,8 +10,8 @@ from cycler import cycler 
     | 
|
| 
       10 
10 
     | 
    
         
             
            import logging
         
     | 
| 
       11 
11 
     | 
    
         
             
            import os
         
     | 
| 
       12 
12 
     | 
    
         
             
            import re
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
            from .ips import fsave, fload, mkdir, listdir, figsave, strcmp, unique, get_os, ssplit
         
     | 
| 
      
 13 
     | 
    
         
            +
            from typing import Union
         
     | 
| 
      
 14 
     | 
    
         
            +
            from .ips import fsave, fload, mkdir, listdir, figsave, strcmp, unique, get_os, ssplit,plt_font
         
     | 
| 
       15 
15 
     | 
    
         
             
            from .stats import *
         
     | 
| 
       16 
16 
     | 
    
         
             
            from .netfinder import get_soup, fetch
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
         @@ -152,6 +152,36 @@ def heatmap( 
     | 
|
| 
       152 
152 
     | 
    
         
             
                yticklabels=True,  # Show row labels
         
     | 
| 
       153 
153 
     | 
    
         
             
                **kwargs,
         
     | 
| 
       154 
154 
     | 
    
         
             
            ):
         
     | 
| 
      
 155 
     | 
    
         
            +
                """
         
     | 
| 
      
 156 
     | 
    
         
            +
                plot heatmap or clustermap for a given dataset (DataFrame).
         
     | 
| 
      
 157 
     | 
    
         
            +
             
     | 
| 
      
 158 
     | 
    
         
            +
                Parameters:
         
     | 
| 
      
 159 
     | 
    
         
            +
                - data (pd.DataFrame): The input data to visualize.
         
     | 
| 
      
 160 
     | 
    
         
            +
                - ax (matplotlib.Axes, optional): Axis object to plot on. If None and cluster=False, a new axis is created.
         
     | 
| 
      
 161 
     | 
    
         
            +
                - kind (str, default="corr"): Type of heatmap to plot. Options:
         
     | 
| 
      
 162 
     | 
    
         
            +
                    - "corr": Correlation heatmap based on numeric columns.
         
     | 
| 
      
 163 
     | 
    
         
            +
                    - "direct": Direct visualization of the numeric data.
         
     | 
| 
      
 164 
     | 
    
         
            +
                    - "pivot": Creates a heatmap using the `pivot_table` method.
         
     | 
| 
      
 165 
     | 
    
         
            +
                - columns (str or list, default="all"): Columns to include in the heatmap. For pivoting, this specifies the 'columns' argument.
         
     | 
| 
      
 166 
     | 
    
         
            +
                - index (str, optional): For pivot heatmap, sets the 'index' argument.
         
     | 
| 
      
 167 
     | 
    
         
            +
                - values (str, optional): For pivot heatmap, sets the 'values' argument.
         
     | 
| 
      
 168 
     | 
    
         
            +
                - tri (str, default="u"): Specifies whether to show the 'upper' or 'lower' triangle in the heatmap.
         
     | 
| 
      
 169 
     | 
    
         
            +
                - mask (bool, default=True): Whether to mask half of the correlation matrix.
         
     | 
| 
      
 170 
     | 
    
         
            +
                - k (int, default=1): Controls how much of the triangle is masked in correlation heatmaps.
         
     | 
| 
      
 171 
     | 
    
         
            +
                - annot (bool, default=True): If True, writes the data values in each cell.
         
     | 
| 
      
 172 
     | 
    
         
            +
                - cmap (str, default="coolwarm"): The colormap for the heatmap.
         
     | 
| 
      
 173 
     | 
    
         
            +
                - fmt (str, default=".2f"): String formatting code for annotating cells.
         
     | 
| 
      
 174 
     | 
    
         
            +
                - cluster (bool, default=False): If True, a clustermap with hierarchical clustering is plotted.
         
     | 
| 
      
 175 
     | 
    
         
            +
                - inplace (bool, default=False): If True, modifies the original data. Not currently used.
         
     | 
| 
      
 176 
     | 
    
         
            +
                - figsize (tuple, default=(10, 8)): Size of the figure for the heatmap.
         
     | 
| 
      
 177 
     | 
    
         
            +
                - row_cluster (bool, default=True): Perform clustering on rows.
         
     | 
| 
      
 178 
     | 
    
         
            +
                - col_cluster (bool, default=True): Perform clustering on columns.
         
     | 
| 
      
 179 
     | 
    
         
            +
                - dendrogram_ratio (tuple, default=(0.2, 0.1)): Adjust the size of the dendrograms.
         
     | 
| 
      
 180 
     | 
    
         
            +
                - cbar_pos (tuple, default=(0.02, 1, 0.02, 0.1)): Adjust the position of the colorbar.
         
     | 
| 
      
 181 
     | 
    
         
            +
                - xticklabels (bool, default=True): Show or hide the column labels.
         
     | 
| 
      
 182 
     | 
    
         
            +
                - yticklabels (bool, default=True): Show or hide the row labels.
         
     | 
| 
      
 183 
     | 
    
         
            +
                - **kwargs: Additional arguments passed to `sns.heatmap` or `sns.clustermap`.
         
     | 
| 
      
 184 
     | 
    
         
            +
                """
         
     | 
| 
       155 
185 
     | 
    
         
             
                if ax is None and not cluster:
         
     | 
| 
       156 
186 
     | 
    
         
             
                    ax = plt.gca()
         
     | 
| 
       157 
187 
     | 
    
         
             
                # Select numeric columns or specific subset of columns
         
     | 
| 
         @@ -162,7 +192,8 @@ def heatmap( 
     | 
|
| 
       162 
192 
     | 
    
         | 
| 
       163 
193 
     | 
    
         
             
                kinds = ["corr", "direct", "pivot"]
         
     | 
| 
       164 
194 
     | 
    
         
             
                kind = strcmp(kind, kinds)[0]
         
     | 
| 
       165 
     | 
    
         
            -
                 
     | 
| 
      
 195 
     | 
    
         
            +
                print(kind)
         
     | 
| 
      
 196 
     | 
    
         
            +
                if "corr" in kind:  # correlation
         
     | 
| 
       166 
197 
     | 
    
         
             
                    # Compute the correlation matrix
         
     | 
| 
       167 
198 
     | 
    
         
             
                    data4heatmap = df_numeric.corr()
         
     | 
| 
       168 
199 
     | 
    
         
             
                    # Generate mask for the upper triangle if mask is True
         
     | 
| 
         @@ -254,11 +285,26 @@ def heatmap( 
     | 
|
| 
       254 
285 
     | 
    
         
             
                        )
         
     | 
| 
       255 
286 
     | 
    
         
             
                        # Return the Axes object for further customization if needed
         
     | 
| 
       256 
287 
     | 
    
         
             
                        return ax
         
     | 
| 
       257 
     | 
    
         
            -
                elif kind  
     | 
| 
      
 288 
     | 
    
         
            +
                elif "dir" in kind:  # direct
         
     | 
| 
       258 
289 
     | 
    
         
             
                    data4heatmap = df_numeric
         
     | 
| 
       259 
     | 
    
         
            -
                elif kind  
     | 
| 
       260 
     | 
    
         
            -
                     
     | 
| 
       261 
     | 
    
         
            -
             
     | 
| 
      
 290 
     | 
    
         
            +
                elif "pi" in kind:  # pivot
         
     | 
| 
      
 291 
     | 
    
         
            +
                    try:
         
     | 
| 
      
 292 
     | 
    
         
            +
                        print(
         
     | 
| 
      
 293 
     | 
    
         
            +
                            f'pivot: \n\tneed at least 3 param: e.g., index="Task", columns="Model", values="Score"'
         
     | 
| 
      
 294 
     | 
    
         
            +
                        )
         
     | 
| 
      
 295 
     | 
    
         
            +
                        data4heatmap = data.pivot(index=index, columns=columns, values=values)
         
     | 
| 
      
 296 
     | 
    
         
            +
                    except:
         
     | 
| 
      
 297 
     | 
    
         
            +
                        print(
         
     | 
| 
      
 298 
     | 
    
         
            +
                            f'pivot_table: \n\tneed at least 4 param: e.g., index="Task", columns="Model", values="Score",aggfunc="mean"'
         
     | 
| 
      
 299 
     | 
    
         
            +
                        )
         
     | 
| 
      
 300 
     | 
    
         
            +
                        aggfunc = "mean"
         
     | 
| 
      
 301 
     | 
    
         
            +
                        for k_, v_ in kwargs.items():
         
     | 
| 
      
 302 
     | 
    
         
            +
                            if "agg" in k_.lower():
         
     | 
| 
      
 303 
     | 
    
         
            +
                                aggfunc = v_
         
     | 
| 
      
 304 
     | 
    
         
            +
                        kwargs.pop(k_, None)
         
     | 
| 
      
 305 
     | 
    
         
            +
                        data4heatmap = data.pivot_table(
         
     | 
| 
      
 306 
     | 
    
         
            +
                            index=index, columns=columns, values=values, aggfunc=aggfunc
         
     | 
| 
      
 307 
     | 
    
         
            +
                        )
         
     | 
| 
       262 
308 
     | 
    
         
             
                else:
         
     | 
| 
       263 
309 
     | 
    
         
             
                    print(f'"{kind}" is not supported')
         
     | 
| 
       264 
310 
     | 
    
         
             
                # Remove conflicting kwargs
         
     | 
| 
         @@ -1816,8 +1862,10 @@ def figsets(*args, **kwargs): 
     | 
|
| 
       1816 
1862 
     | 
    
         
             
                matplotlib.rc("text", usetex=False)
         
     | 
| 
       1817 
1863 
     | 
    
         | 
| 
       1818 
1864 
     | 
    
         
             
                fig = plt.gcf()
         
     | 
| 
       1819 
     | 
    
         
            -
                fontsize = 11
         
     | 
| 
       1820 
     | 
    
         
            -
                 
     | 
| 
      
 1865 
     | 
    
         
            +
                fontsize = kwargs.get("fontsize",11)
         
     | 
| 
      
 1866 
     | 
    
         
            +
                plt.rcParams["font.size"]=fontsize
         
     | 
| 
      
 1867 
     | 
    
         
            +
                fontname = kwargs.pop("fontname","Arial") 
         
     | 
| 
      
 1868 
     | 
    
         
            +
                fontname=plt_font(fontname) # 显示中文
         
     | 
| 
       1821 
1869 
     | 
    
         
             
                sns_themes = ["white", "whitegrid", "dark", "darkgrid", "ticks"]
         
     | 
| 
       1822 
1870 
     | 
    
         
             
                sns_contexts = ["notebook", "talk", "poster"]  # now available "paper"
         
     | 
| 
       1823 
1871 
     | 
    
         
             
                scienceplots_styles = [
         
     | 
| 
         @@ -1843,6 +1891,7 @@ def figsets(*args, **kwargs): 
     | 
|
| 
       1843 
1891 
     | 
    
         
             
                ]
         
     | 
| 
       1844 
1892 
     | 
    
         | 
| 
       1845 
1893 
     | 
    
         
             
                def set_step_1(ax, key, value):
         
     | 
| 
      
 1894 
     | 
    
         
            +
                    nonlocal fontsize, fontname
         
     | 
| 
       1846 
1895 
     | 
    
         
             
                    if ("fo" in key) and (("size" in key) or ("sz" in key)):
         
     | 
| 
       1847 
1896 
     | 
    
         
             
                        fontsize = value
         
     | 
| 
       1848 
1897 
     | 
    
         
             
                        plt.rcParams.update({"font.size": fontsize})
         
     | 
| 
         @@ -1885,15 +1934,15 @@ def figsets(*args, **kwargs): 
     | 
|
| 
       1885 
1934 
     | 
    
         
             
                        if ("x" in key.lower()) and (
         
     | 
| 
       1886 
1935 
     | 
    
         
             
                            "tic" not in key.lower() and "tk" not in key.lower()
         
     | 
| 
       1887 
1936 
     | 
    
         
             
                        ):
         
     | 
| 
       1888 
     | 
    
         
            -
                            ax.set_xlabel(value, fontname=fontname)
         
     | 
| 
      
 1937 
     | 
    
         
            +
                            ax.set_xlabel(value, fontname=fontname,fontsize=fontsize)
         
     | 
| 
       1889 
1938 
     | 
    
         
             
                        if ("y" in key.lower()) and (
         
     | 
| 
       1890 
1939 
     | 
    
         
             
                            "tic" not in key.lower() and "tk" not in key.lower()
         
     | 
| 
       1891 
1940 
     | 
    
         
             
                        ):
         
     | 
| 
       1892 
     | 
    
         
            -
                            ax.set_ylabel(value, fontname=fontname)
         
     | 
| 
      
 1941 
     | 
    
         
            +
                            ax.set_ylabel(value, fontname=fontname,fontsize=fontsize)
         
     | 
| 
       1893 
1942 
     | 
    
         
             
                        if ("z" in key.lower()) and (
         
     | 
| 
       1894 
1943 
     | 
    
         
             
                            "tic" not in key.lower() and "tk" not in key.lower()
         
     | 
| 
       1895 
1944 
     | 
    
         
             
                        ):
         
     | 
| 
       1896 
     | 
    
         
            -
                            ax.set_zlabel(value, fontname=fontname)
         
     | 
| 
      
 1945 
     | 
    
         
            +
                            ax.set_zlabel(value, fontname=fontname,fontsize=fontsize)
         
     | 
| 
       1897 
1946 
     | 
    
         
             
                    if key == "xlabel" and isinstance(value, dict):
         
     | 
| 
       1898 
1947 
     | 
    
         
             
                        ax.set_xlabel(**value)
         
     | 
| 
       1899 
1948 
     | 
    
         
             
                    if key == "ylabel" and isinstance(value, dict):
         
     | 
| 
         @@ -2096,6 +2145,7 @@ def figsets(*args, **kwargs): 
     | 
|
| 
       2096 
2145 
     | 
    
         
             
                        plt.set_cmap(value)
         
     | 
| 
       2097 
2146 
     | 
    
         | 
| 
       2098 
2147 
     | 
    
         
             
                def set_step_2(ax, key, value):
         
     | 
| 
      
 2148 
     | 
    
         
            +
                    nonlocal fontsize, fontname
         
     | 
| 
       2099 
2149 
     | 
    
         
             
                    if key == "figsize":
         
     | 
| 
       2100 
2150 
     | 
    
         
             
                        pass
         
     | 
| 
       2101 
2151 
     | 
    
         
             
                    if "xlim" in key.lower():
         
     | 
| 
         @@ -2135,9 +2185,9 @@ def figsets(*args, **kwargs): 
     | 
|
| 
       2135 
2185 
     | 
    
         
             
                                ax.grid(visible=False)
         
     | 
| 
       2136 
2186 
     | 
    
         
             
                    if "tit" in key.lower():
         
     | 
| 
       2137 
2187 
     | 
    
         
             
                        if "sup" in key.lower():
         
     | 
| 
       2138 
     | 
    
         
            -
                            plt.suptitle(value)
         
     | 
| 
      
 2188 
     | 
    
         
            +
                            plt.suptitle(value,fontname=fontname,fontsize=fontsize)
         
     | 
| 
       2139 
2189 
     | 
    
         
             
                        else:
         
     | 
| 
       2140 
     | 
    
         
            -
                            ax.set_title(value)
         
     | 
| 
      
 2190 
     | 
    
         
            +
                            ax.set_title(value,fontname=fontname,fontsize=fontsize)
         
     | 
| 
       2141 
2191 
     | 
    
         
             
                    if key.lower() in ["spine", "adjust", "ad", "sp", "spi", "adj", "spines"]:
         
     | 
| 
       2142 
2192 
     | 
    
         
             
                        if isinstance(value, bool) or (value in ["go", "do", "ja", "yes"]):
         
     | 
| 
       2143 
2193 
     | 
    
         
             
                            if value:
         
     | 
| 
         @@ -2873,13 +2923,26 @@ def plot_xy( 
     | 
|
| 
       2873 
2923 
     | 
    
         
             
                x=None,
         
     | 
| 
       2874 
2924 
     | 
    
         
             
                y=None,
         
     | 
| 
       2875 
2925 
     | 
    
         
             
                ax=None,
         
     | 
| 
       2876 
     | 
    
         
            -
                kind: str = None,  # Specify the kind of plot
         
     | 
| 
      
 2926 
     | 
    
         
            +
                kind: Union[str, list] = None,  # Specify the kind of plot
         
     | 
| 
      
 2927 
     | 
    
         
            +
                verbose=False,
         
     | 
| 
      
 2928 
     | 
    
         
            +
                **kwargs,
         
     | 
| 
      
 2929 
     | 
    
         
            +
            ):
         
     | 
| 
      
 2930 
     | 
    
         
            +
                # You can call the original plotxy function if needed
         
     | 
| 
      
 2931 
     | 
    
         
            +
                # or simply replicate the functionality here
         
     | 
| 
      
 2932 
     | 
    
         
            +
                return plotxy(data, x, y, ax, kind, verbose, **kwargs)
         
     | 
| 
      
 2933 
     | 
    
         
            +
             
     | 
| 
      
 2934 
     | 
    
         
            +
             
     | 
| 
      
 2935 
     | 
    
         
            +
            def plotxy(
         
     | 
| 
      
 2936 
     | 
    
         
            +
                data: pd.DataFrame = None,
         
     | 
| 
      
 2937 
     | 
    
         
            +
                x=None,
         
     | 
| 
      
 2938 
     | 
    
         
            +
                y=None,
         
     | 
| 
      
 2939 
     | 
    
         
            +
                ax=None,
         
     | 
| 
      
 2940 
     | 
    
         
            +
                kind: Union[str, list] = None,  # Specify the kind of plot
         
     | 
| 
       2877 
2941 
     | 
    
         
             
                verbose=False,
         
     | 
| 
       2878 
     | 
    
         
            -
                # kws_figsets:dict=None,
         
     | 
| 
       2879 
2942 
     | 
    
         
             
                **kwargs,
         
     | 
| 
       2880 
2943 
     | 
    
         
             
            ):
         
     | 
| 
       2881 
2944 
     | 
    
         
             
                """
         
     | 
| 
       2882 
     | 
    
         
            -
                e.g.,  
     | 
| 
      
 2945 
     | 
    
         
            +
                e.g., plotxy(data=data_log, x="Component_1", y="Component_2", hue="Cluster",kind='scater)
         
     | 
| 
       2883 
2946 
     | 
    
         
             
                Create a variety of plots based on the kind parameter.
         
     | 
| 
       2884 
2947 
     | 
    
         | 
| 
       2885 
2948 
     | 
    
         
             
                Parameters:
         
     | 
| 
         @@ -2942,10 +3005,10 @@ def plot_xy( 
     | 
|
| 
       2942 
3005 
     | 
    
         
             
                        kws_figsets = v_arg
         
     | 
| 
       2943 
3006 
     | 
    
         
             
                        kwargs.pop(k_arg, None)
         
     | 
| 
       2944 
3007 
     | 
    
         
             
                        break
         
     | 
| 
       2945 
     | 
    
         
            -
                 
     | 
| 
      
 3008 
     | 
    
         
            +
                kws_add_text = {}
         
     | 
| 
       2946 
3009 
     | 
    
         
             
                for k_arg, v_arg in kwargs.items():
         
     | 
| 
       2947 
     | 
    
         
            -
                    if "add" in k_arg and  
     | 
| 
       2948 
     | 
    
         
            -
                         
     | 
| 
      
 3010 
     | 
    
         
            +
                    if "add" in k_arg and "text" in k_arg:  # add_text
         
     | 
| 
      
 3011 
     | 
    
         
            +
                        kws_add_text = v_arg
         
     | 
| 
       2949 
3012 
     | 
    
         
             
                        kwargs.pop(k_arg, None)
         
     | 
| 
       2950 
3013 
     | 
    
         
             
                        break
         
     | 
| 
       2951 
3014 
     | 
    
         | 
| 
         @@ -2993,6 +3056,7 @@ def plot_xy( 
     | 
|
| 
       2993 
3056 
     | 
    
         
             
                        ax = stdshade(ax=ax, **kwargs)
         
     | 
| 
       2994 
3057 
     | 
    
         
             
                    elif k == "scatterplot":
         
     | 
| 
       2995 
3058 
     | 
    
         
             
                        kws_scatter = kwargs.pop("kws_scatter", kwargs)
         
     | 
| 
      
 3059 
     | 
    
         
            +
                        hue = kwargs.pop("hue", None)
         
     | 
| 
       2996 
3060 
     | 
    
         
             
                        palette = kws_scatter.pop(
         
     | 
| 
       2997 
3061 
     | 
    
         
             
                            "palette",
         
     | 
| 
       2998 
3062 
     | 
    
         
             
                            (
         
     | 
| 
         @@ -3029,7 +3093,8 @@ def plot_xy( 
     | 
|
| 
       3029 
3093 
     | 
    
         
             
                        ax = sns.rugplot(data=data, x=x, ax=ax, **kws_rug)
         
     | 
| 
       3030 
3094 
     | 
    
         
             
                    elif k == "stripplot":
         
     | 
| 
       3031 
3095 
     | 
    
         
             
                        kws_strip = kwargs.pop("kws_strip", kwargs)
         
     | 
| 
       3032 
     | 
    
         
            -
                         
     | 
| 
      
 3096 
     | 
    
         
            +
                        dodge = kws_strip.pop("dodge", True)
         
     | 
| 
      
 3097 
     | 
    
         
            +
                        ax = sns.stripplot(data=data, x=x, y=y, ax=ax, dodge=dodge, **kws_strip)
         
     | 
| 
       3033 
3098 
     | 
    
         
             
                    elif k == "swarmplot":
         
     | 
| 
       3034 
3099 
     | 
    
         
             
                        kws_swarm = kwargs.pop("kws_swarm", kwargs)
         
     | 
| 
       3035 
3100 
     | 
    
         
             
                        ax = sns.swarmplot(data=data, x=x, y=y, ax=ax, **kws_swarm)
         
     | 
| 
         @@ -3050,6 +3115,8 @@ def plot_xy( 
     | 
|
| 
       3050 
3115 
     | 
    
         
             
                        ax = sns.barplot(data=data, x=x, y=y, ax=ax, **kws_bar)
         
     | 
| 
       3051 
3116 
     | 
    
         
             
                    elif k == "countplot":
         
     | 
| 
       3052 
3117 
     | 
    
         
             
                        kws_count = kwargs.pop("kws_count", kwargs)
         
     | 
| 
      
 3118 
     | 
    
         
            +
                        if not kws_count.get("hue",None):
         
     | 
| 
      
 3119 
     | 
    
         
            +
                            kws_count.pop("palette",None) 
         
     | 
| 
       3053 
3120 
     | 
    
         
             
                        ax = sns.countplot(data=data, x=x, ax=ax, **kws_count)
         
     | 
| 
       3054 
3121 
     | 
    
         
             
                    elif k == "regplot":
         
     | 
| 
       3055 
3122 
     | 
    
         
             
                        kws_reg = kwargs.pop("kws_reg", kwargs)
         
     | 
| 
         @@ -3062,7 +3129,8 @@ def plot_xy( 
     | 
|
| 
       3062 
3129 
     | 
    
         
             
                        ax = sns.lineplot(ax=ax, data=data, x=x, y=y, **kws_line)
         
     | 
| 
       3063 
3130 
     | 
    
         | 
| 
       3064 
3131 
     | 
    
         
             
                    figsets(ax=ax, **kws_figsets)
         
     | 
| 
       3065 
     | 
    
         
            -
                     
     | 
| 
      
 3132 
     | 
    
         
            +
                    print(kws_add_text)
         
     | 
| 
      
 3133 
     | 
    
         
            +
                    add_text(ax=ax, **kws_add_text) if kws_add_text else None
         
     | 
| 
       3066 
3134 
     | 
    
         
             
                    print(k, " ⤵ ")
         
     | 
| 
       3067 
3135 
     | 
    
         
             
                    print(default_settings[k])
         
     | 
| 
       3068 
3136 
     | 
    
         
             
                    print(
         
     | 
| 
         @@ -3077,14 +3145,14 @@ def plot_xy( 
     | 
|
| 
       3077 
3145 
     | 
    
         | 
| 
       3078 
3146 
     | 
    
         | 
| 
       3079 
3147 
     | 
    
         
             
            def volcano(
         
     | 
| 
       3080 
     | 
    
         
            -
                data,
         
     | 
| 
       3081 
     | 
    
         
            -
                x,
         
     | 
| 
       3082 
     | 
    
         
            -
                y,
         
     | 
| 
      
 3148 
     | 
    
         
            +
                data:pd.DataFrame,
         
     | 
| 
      
 3149 
     | 
    
         
            +
                x:str,
         
     | 
| 
      
 3150 
     | 
    
         
            +
                y:str,
         
     | 
| 
       3083 
3151 
     | 
    
         
             
                gene_col=None,
         
     | 
| 
       3084 
3152 
     | 
    
         
             
                top_genes=5,
         
     | 
| 
       3085 
3153 
     | 
    
         
             
                thr_x=np.log2(1.5),
         
     | 
| 
       3086 
3154 
     | 
    
         
             
                thr_y=-np.log10(0.05),
         
     | 
| 
       3087 
     | 
    
         
            -
                colors=("# 
     | 
| 
      
 3155 
     | 
    
         
            +
                colors=("#00BFFF", "#9d9a9a", "#FF3030"),
         
     | 
| 
       3088 
3156 
     | 
    
         
             
                s=20,
         
     | 
| 
       3089 
3157 
     | 
    
         
             
                fill=True,  # plot filled scatter
         
     | 
| 
       3090 
3158 
     | 
    
         
             
                facecolor="none",
         
     | 
| 
         @@ -3094,8 +3162,8 @@ def volcano( 
     | 
|
| 
       3094 
3162 
     | 
    
         
             
                legend=False,
         
     | 
| 
       3095 
3163 
     | 
    
         
             
                ax=None,
         
     | 
| 
       3096 
3164 
     | 
    
         
             
                verbose=False,
         
     | 
| 
       3097 
     | 
    
         
            -
                 
     | 
| 
       3098 
     | 
    
         
            -
                 
     | 
| 
      
 3165 
     | 
    
         
            +
                kws_text=dict(fontsize=10, color="k"),
         
     | 
| 
      
 3166 
     | 
    
         
            +
                kws_arrow=dict(style="-", color="k", lw=0.5),
         
     | 
| 
       3099 
3167 
     | 
    
         
             
                **kwargs,
         
     | 
| 
       3100 
3168 
     | 
    
         
             
            ):
         
     | 
| 
       3101 
3169 
     | 
    
         
             
                """
         
     | 
| 
         @@ -3220,55 +3288,55 @@ def volcano( 
     | 
|
| 
       3220 
3288 
     | 
    
         
             
                        fontname = kws_text.pop("fontname", "Arial")
         
     | 
| 
       3221 
3289 
     | 
    
         
             
                        textcolor = kws_text.pop("color", "k")
         
     | 
| 
       3222 
3290 
     | 
    
         
             
                        fontsize = kws_text.pop("fontsize", 10)
         
     | 
| 
       3223 
     | 
    
         
            -
             
     | 
| 
       3224 
     | 
    
         
            -
             
     | 
| 
       3225 
     | 
    
         
            -
             
     | 
| 
       3226 
     | 
    
         
            -
             
     | 
| 
       3227 
     | 
    
         
            -
             
     | 
| 
       3228 
     | 
    
         
            -
             
     | 
| 
       3229 
     | 
    
         
            -
             
     | 
| 
       3230 
     | 
    
         
            -
             
     | 
| 
       3231 
     | 
    
         
            -
             
     | 
| 
       3232 
     | 
    
         
            -
             
     | 
| 
       3233 
     | 
    
         
            -
             
     | 
| 
       3234 
     | 
    
         
            -
             
     | 
| 
       3235 
     | 
    
         
            -
             
     | 
| 
      
 3291 
     | 
    
         
            +
                        for i in range(sele_gene.shape[0]):
         
     | 
| 
      
 3292 
     | 
    
         
            +
                            if isinstance(textcolor, list):  # be consistant with dots's color
         
     | 
| 
      
 3293 
     | 
    
         
            +
                                textcolor = colors[0] if sele_gene[x].iloc[i] > 0 else colors[1]
         
     | 
| 
      
 3294 
     | 
    
         
            +
                            texts.append(
         
     | 
| 
      
 3295 
     | 
    
         
            +
                                plt.text(
         
     | 
| 
      
 3296 
     | 
    
         
            +
                                    x=sele_gene[x].iloc[i],
         
     | 
| 
      
 3297 
     | 
    
         
            +
                                    y=sele_gene[y].iloc[i],
         
     | 
| 
      
 3298 
     | 
    
         
            +
                                    s=sele_gene[gene_col].iloc[i],
         
     | 
| 
      
 3299 
     | 
    
         
            +
                                    fontdict={
         
     | 
| 
      
 3300 
     | 
    
         
            +
                                        "fontsize": fontsize,
         
     | 
| 
      
 3301 
     | 
    
         
            +
                                        "color": textcolor,
         
     | 
| 
      
 3302 
     | 
    
         
            +
                                        "fontname": fontname,
         
     | 
| 
      
 3303 
     | 
    
         
            +
                                    },
         
     | 
| 
      
 3304 
     | 
    
         
            +
                                )
         
     | 
| 
       3236 
3305 
     | 
    
         
             
                            )
         
     | 
| 
       3237 
     | 
    
         
            -
                        )
         
     | 
| 
       3238 
3306 
     | 
    
         | 
| 
       3239 
     | 
    
         
            -
             
     | 
| 
       3240 
     | 
    
         
            -
             
     | 
| 
       3241 
     | 
    
         
            -
             
     | 
| 
       3242 
     | 
    
         
            -
             
     | 
| 
       3243 
     | 
    
         
            -
             
     | 
| 
       3244 
     | 
    
         
            -
             
     | 
| 
       3245 
     | 
    
         
            -
             
     | 
| 
       3246 
     | 
    
         
            -
             
     | 
| 
       3247 
     | 
    
         
            -
             
     | 
| 
       3248 
     | 
    
         
            -
             
     | 
| 
       3249 
     | 
    
         
            -
             
     | 
| 
       3250 
     | 
    
         
            -
             
     | 
| 
       3251 
     | 
    
         
            -
             
     | 
| 
       3252 
     | 
    
         
            -
             
     | 
| 
       3253 
     | 
    
         
            -
             
     | 
| 
       3254 
     | 
    
         
            -
             
     | 
| 
       3255 
     | 
    
         
            -
             
     | 
| 
       3256 
     | 
    
         
            -
             
     | 
| 
       3257 
     | 
    
         
            -
             
     | 
| 
       3258 
     | 
    
         
            -
             
     | 
| 
       3259 
     | 
    
         
            -
             
     | 
| 
       3260 
     | 
    
         
            -
             
     | 
| 
       3261 
     | 
    
         
            -
             
     | 
| 
       3262 
     | 
    
         
            -
             
     | 
| 
       3263 
     | 
    
         
            -
             
     | 
| 
       3264 
     | 
    
         
            -
             
     | 
| 
       3265 
     | 
    
         
            -
             
     | 
| 
       3266 
     | 
    
         
            -
             
     | 
| 
       3267 
     | 
    
         
            -
             
     | 
| 
       3268 
     | 
    
         
            -
             
     | 
| 
       3269 
     | 
    
         
            -
             
     | 
| 
       3270 
     | 
    
         
            -
             
     | 
| 
       3271 
     | 
    
         
            -
             
     | 
| 
      
 3307 
     | 
    
         
            +
                            arrowstyles = [
         
     | 
| 
      
 3308 
     | 
    
         
            +
                                "-",
         
     | 
| 
      
 3309 
     | 
    
         
            +
                                "->",
         
     | 
| 
      
 3310 
     | 
    
         
            +
                                "-[",
         
     | 
| 
      
 3311 
     | 
    
         
            +
                                "|->",
         
     | 
| 
      
 3312 
     | 
    
         
            +
                                "<-",
         
     | 
| 
      
 3313 
     | 
    
         
            +
                                "<->",
         
     | 
| 
      
 3314 
     | 
    
         
            +
                                "<|-",
         
     | 
| 
      
 3315 
     | 
    
         
            +
                                "<|-|>",
         
     | 
| 
      
 3316 
     | 
    
         
            +
                                "-|>",
         
     | 
| 
      
 3317 
     | 
    
         
            +
                                "-[ ",
         
     | 
| 
      
 3318 
     | 
    
         
            +
                                "fancy",
         
     | 
| 
      
 3319 
     | 
    
         
            +
                                "simple",
         
     | 
| 
      
 3320 
     | 
    
         
            +
                                "wedge",
         
     | 
| 
      
 3321 
     | 
    
         
            +
                            ]
         
     | 
| 
      
 3322 
     | 
    
         
            +
                            arrowstyle = kws_arrow.pop("style", "-")
         
     | 
| 
      
 3323 
     | 
    
         
            +
                            arrowcolor = kws_arrow.pop("color", "0.5")
         
     | 
| 
      
 3324 
     | 
    
         
            +
                            arrowlinewidth = kws_arrow.pop("lw", 0.5)
         
     | 
| 
      
 3325 
     | 
    
         
            +
                            shrinkA = kws_arrow.pop("shrinkA", 5)
         
     | 
| 
      
 3326 
     | 
    
         
            +
                            shrinkB = kws_arrow.pop("shrinkB", 5)
         
     | 
| 
      
 3327 
     | 
    
         
            +
                            arrowstyle = strcmp(arrowstyle, arrowstyles)[0]
         
     | 
| 
      
 3328 
     | 
    
         
            +
                            adjust_text(
         
     | 
| 
      
 3329 
     | 
    
         
            +
                                texts,
         
     | 
| 
      
 3330 
     | 
    
         
            +
                                expand_text=(1.05, 1.2),
         
     | 
| 
      
 3331 
     | 
    
         
            +
                                arrowprops=dict(
         
     | 
| 
      
 3332 
     | 
    
         
            +
                                    arrowstyle=arrowstyle,
         
     | 
| 
      
 3333 
     | 
    
         
            +
                                    color=arrowcolor,
         
     | 
| 
      
 3334 
     | 
    
         
            +
                                    lw=arrowlinewidth,
         
     | 
| 
      
 3335 
     | 
    
         
            +
                                    shrinkA=shrinkA,
         
     | 
| 
      
 3336 
     | 
    
         
            +
                                    shrinkB=shrinkB,
         
     | 
| 
      
 3337 
     | 
    
         
            +
                                    **kws_arrow,
         
     | 
| 
      
 3338 
     | 
    
         
            +
                                ),
         
     | 
| 
      
 3339 
     | 
    
         
            +
                            )
         
     | 
| 
       3272 
3340 
     | 
    
         | 
| 
       3273 
3341 
     | 
    
         
             
                figsets(**kws_figsets)
         
     | 
| 
       3274 
3342 
     | 
    
         | 
| 
         @@ -173,6 +173,7 @@ py2ls/LICENSE,sha256=UOZ1F5fFDe3XXvG4oNnkL1-Ecun7zpHzRxjp-XsMeAo,11324 
     | 
|
| 
       173 
173 
     | 
    
         
             
            py2ls/README.md,sha256=CwvJWAnSXnCnrVHlnEbrxxi6MbjbE_MT6DH2D53S818,11572
         
     | 
| 
       174 
174 
     | 
    
         
             
            py2ls/__init__.py,sha256=Nn8jTIvySX7t7DMJ8VNRVctTStgXGjHldOIdZ35PdW8,165
         
     | 
| 
       175 
175 
     | 
    
         
             
            py2ls/batman.py,sha256=E7gYofbDzN7S5oCmO_dd5Z1bxxhoYMJSD6s-VaF388E,11398
         
     | 
| 
      
 176 
     | 
    
         
            +
            py2ls/bio.py,sha256=5q7T_LXmDg0MJoKXwO0kWnfbpshXNvUR5kCnYyLqm2w,10711
         
     | 
| 
       176 
177 
     | 
    
         
             
            py2ls/brain_atlas.py,sha256=w1o5EelRjq89zuFJUNSz4Da8HnTCwAwDAZ4NU4a-bAY,5486
         
     | 
| 
       177 
178 
     | 
    
         
             
            py2ls/chat.py,sha256=Yr22GoIvoWhpV3m4fdwV_I0Mn77La346_ymSinR-ORA,3793
         
     | 
| 
       178 
179 
     | 
    
         
             
            py2ls/correlators.py,sha256=RbOaJIPLCHJtUm5SFi_4dCJ7VFUPWR0PErfK3K26ad4,18243
         
     | 
| 
         @@ -203,23 +204,24 @@ py2ls/data/styles/style6.json,sha256=tu-MYOT9x5Rorc-2IK6sy-J-frmz0RNdm65XAsDQKX4 
     | 
|
| 
       203 
204 
     | 
    
         
             
            py2ls/data/styles/style7.json,sha256=StdUFwIVrS7T_6CDrADHMorzc0WZFWBM7IyYdO1TPHg,4447
         
     | 
| 
       204 
205 
     | 
    
         
             
            py2ls/data/styles/style8.json,sha256=8XUgkZtew8ebvjbAHlDHCSWUqNra3ktDvMCO4vNh-CM,4456
         
     | 
| 
       205 
206 
     | 
    
         
             
            py2ls/data/styles/style9.json,sha256=PLxvntbH_kfzZlnCTtCEAUVBGi5m6Lngb9C01rArQog,4769
         
     | 
| 
       206 
     | 
    
         
            -
            py2ls/data/usages_pd.json,sha256= 
     | 
| 
      
 207 
     | 
    
         
            +
            py2ls/data/usages_pd copy.json,sha256=cS2fYSKvSC274uAw1l6eMPGzLMvZt184dfbcuUiErmw,197313
         
     | 
| 
      
 208 
     | 
    
         
            +
            py2ls/data/usages_pd.json,sha256=4DgbPahF4G5Hd6G0TQurb6dBRVey67lpKdgK6A01Tww,266818
         
     | 
| 
       207 
209 
     | 
    
         
             
            py2ls/data/usages_sns.json,sha256=3OTu6T7n9HbQaFkz-UPMJ_9-Ug6Xjf7q5aDIvZ_6cHk,9246
         
     | 
| 
       208 
210 
     | 
    
         
             
            py2ls/db2ls.py,sha256=MMfFX47aIPIyu7fU9aPvX9lbPRPYOpJ_VXwlnWk-8qo,13615
         
     | 
| 
       209 
211 
     | 
    
         
             
            py2ls/doc.py,sha256=xN3g1OWfoaGUhikbJ0NqbN5eKy1VZVvWwRlhHMgyVEc,4243
         
     | 
| 
       210 
212 
     | 
    
         
             
            py2ls/export_requirements.py,sha256=x2WgUF0jYKz9GfA1MVKN-MdsM-oQ8yUeC6Ua8oCymio,2325
         
     | 
| 
       211 
     | 
    
         
            -
            py2ls/fetch_update.py,sha256= 
     | 
| 
      
 213 
     | 
    
         
            +
            py2ls/fetch_update.py,sha256=9LXj661GpCEFII2wx_99aINYctDiHni6DOruDs_fdt8,4752
         
     | 
| 
       212 
214 
     | 
    
         
             
            py2ls/freqanalysis.py,sha256=F4218VSPbgL5tnngh6xNCYuNnfR-F_QjECUUxrPYZss,32594
         
     | 
| 
       213 
215 
     | 
    
         
             
            py2ls/ich2ls.py,sha256=3E9R8oVpyYZXH5PiIQgT3CN5NxLe4Dwtm2LwaeacE6I,21381
         
     | 
| 
       214 
     | 
    
         
            -
            py2ls/ips.py,sha256= 
     | 
| 
      
 216 
     | 
    
         
            +
            py2ls/ips.py,sha256=46nrt6RRl8Lc-tMh03dRqxF4nUlLfMElnETE1ipu-DM,210309
         
     | 
| 
       215 
217 
     | 
    
         
             
            py2ls/netfinder.py,sha256=LwBkGITB_4BTNtY6RlKdEZVFW6epzMWlnqy2g03KtyU,56117
         
     | 
| 
       216 
218 
     | 
    
         
             
            py2ls/ocr.py,sha256=5lhUbJufIKRSOL6wAWVLEo8TqMYSjoI_Q-IO-_4u3DE,31419
         
     | 
| 
       217 
     | 
    
         
            -
            py2ls/plot.py,sha256= 
     | 
| 
      
 219 
     | 
    
         
            +
            py2ls/plot.py,sha256=A4NiRDItVyrc80qPtLgT1mpzvebU_iMVVownjsu_YFc,135976
         
     | 
| 
       218 
220 
     | 
    
         
             
            py2ls/setuptools-70.1.0-py3-none-any.whl,sha256=2bi3cUVal8ip86s0SOvgspteEF8SKLukECi-EWmFomc,882588
         
     | 
| 
       219 
221 
     | 
    
         
             
            py2ls/sleep_events_detectors.py,sha256=bQA3HJqv5qnYKJJEIhCyhlDtkXQfIzqksnD0YRXso68,52145
         
     | 
| 
       220 
222 
     | 
    
         
             
            py2ls/stats.py,sha256=DMoJd8Z5YV9T1wB-4P52F5K5scfVK55DT8UP4Twcebo,38627
         
     | 
| 
       221 
223 
     | 
    
         
             
            py2ls/translator.py,sha256=zBeq4pYZeroqw3DT-5g7uHfVqKd-EQptT6LJ-Adi8JY,34244
         
     | 
| 
       222 
224 
     | 
    
         
             
            py2ls/wb_detector.py,sha256=7y6TmBUj9exCZeIgBAJ_9hwuhkDh1x_-yg4dvNY1_GQ,6284
         
     | 
| 
       223 
     | 
    
         
            -
            py2ls-0.2.4.dist-info/METADATA,sha256 
     | 
| 
       224 
     | 
    
         
            -
            py2ls-0.2.4.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
         
     | 
| 
       225 
     | 
    
         
            -
            py2ls-0.2.4.dist-info/RECORD,,
         
     | 
| 
      
 225 
     | 
    
         
            +
            py2ls-0.2.4.2.dist-info/METADATA,sha256=_YQg86nAdjPWqkaIrH6p9nSPhjNHbY1AU0BGV6o3wU0,20038
         
     | 
| 
      
 226 
     | 
    
         
            +
            py2ls-0.2.4.2.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
         
     | 
| 
      
 227 
     | 
    
         
            +
            py2ls-0.2.4.2.dist-info/RECORD,,
         
     | 
| 
         
            File without changes
         
     |