U
    md~                     @   s   d dl mZmZ d dlZd dlZd dlmZ	 d dlm
Z
 d dlmZ ddlmZ deeejejf eee eeedf ed
ddZdejeee eeedf dddZdS )    )OptionalUnionN)pyplot)rcParams)AnnData   )_utilsFT)adata_or_resultlogshowsavehighly_variable_genesc              	   C   s  t | tr$| j}| jd d dk}n | }t |tjr@d|jk}nd}|rP|j}n|j}|j	}|rn|j
}	|j}
n|j}	|j}
td }tjd|d  |d	 fd
 tjdd t|
|	gD ]>\}}td	d|d	  tddgddg|| gD ]0\}}}|| ||  }}tj||||d	d q|rtd td t|	}|dkrTd| nd}tdt| dt|  t|dt|	  |dkrt  tdrdndd  |sdnd}tdrdndd | |dkrdnd  qt!j"d||d |dkrt# S d S )!a.  Plot dispersions or normalized variance versus means for genes.

    Produces Supp. Fig. 5c of Zheng et al. (2017) and MeanVarPlot() and
    VariableFeaturePlot() of Seurat.

    Parameters
    ----------
    adata
        Result of :func:`~scanpy.pp.highly_variable_genes`.
    log
        Plot on logarithmic axes.
    show
         Show the plot, do not return axis.
    save
        If `True` or a `str`, save the figure.
        A string is appended to the default filename.
        Infer the filetype if ending on {{`'.pdf'`, `'.png'`, `'.svg'`}}.
    ZhvgZflavorZ	seurat_v3variances_normFzfigure.figsize   r   r   )Zfigsizeg333333?)Zwspacezhighly variable geneszother genesblackZgrey)labelcsr
   gffffff?g?g?z$log_{10}$  zmean expressions of genesdispersions	variancesz{} of genesz (normalized)z (not normalized)filter_genes_dispersion)r   r   N)$
isinstancer   varZunspd	DataFramecolumnsZhighly_variablegene_subsetmeansr   r   r   Zdispersions_normr   plZfigureZsubplots_adjust	enumerateZsubplotzipnpZscatterZxscaleZyscaleminZxlimmaxZylimZlegendZxlabelZylabelformatr   Zsavefig_or_showZgca)r	   r
   r   r   r   resultZseurat_v3_flavorr   r   Zvar_or_dispZvar_or_disp_normsizeidxdr   colormaskZmeans_Zvar_or_disps_Zy_minZ	data_type r,   W/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scanpy/plotting/_preprocessing.pyr      sb    



 

r   r&   r
   r   r   c                 C   s   t | |||dd dS )a       Plot dispersions versus means for genes.

    Produces Supp. Fig. 5c of Zheng et al. (2017) and MeanVarPlot() of Seurat.

    Parameters
    ----------
    result
        Result of :func:`~scanpy.pp.filter_genes_dispersion`.
    log
        Plot on logarithmic axes.
    show
         Show the plot, do not return axis.
    save
        If `True` or a `str`, save the figure.
        A string is appended to the default filename.
        Infer the filetype if ending on {{`'.pdf'`, `'.png'`, `'.svg'`}}.
    F)r
   r   r   r   N)r   r.   r,   r,   r-   r   c   s        r   )FNNT)FNN)typingr   r   numpyr"   Zpandasr   Z
matplotlibr   r   r   Zanndatar   r   r   r   Zrecarrayboolstrr   r   r,   r,   r,   r-   <module>   s4   	    V   