U
    Åmœd~  ã                   @   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ì|�rŽt d¡ t d¡ t |	¡}|dk�rTd| nd}t dt |¡ dt |¡ ¡ t |dt |	¡ ¡ |dk�r t ¡  t d�r®dndd ¡ |�sÂdnd}t d�rÔdndd  |¡ |dk�rîdnd ¡ q¶t!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   üü