U
    PhK(                  
   @  s  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlZd dlZd dlZd dlmZmZmZ z$ed\ZZeoeddd	kZW n" eeefk
r   d
 ZZY nX ejddd	kZed\ZZerejndZdddddddddg	Z dd Z!dd Z"ej#fddZ$dd Z%ddddZ&ej#fd d!d"d#dZ'ddd$dZ(ej#fd d!d"d%dZ)ej#fd d!d"d&dZ*G d'd dZ+e,d(kre*  dS ))    )annotationsN)OrderedDict)TextIO)OptionalImportErrorget_package_versionoptional_importzmonai._CZBUILD_MONAI01FUSE_META_DICTpsutilz!NOT INSTALLED or UNKNOWN VERSION.print_configget_system_infoprint_system_infoget_gpu_infoprint_gpu_infoprint_debug_infoUSE_COMPILED
IgniteInfoc                  C  s*   t  } tj| d< tjj| d< tj| d< | S )z6
    Read the package versions into a dictionary.
    ZMONAIZNumpyZPytorch)r   monai__version__npversionfull_versiontorchoutput r   N/home/dell461/cl/sdc2/HISourceFinder-master-l/src/monai/config/deviceconfig.pyget_config_values4   s
    

r   c                  C  s   t  } td| d< td| d< td| d< td| d< td	| d	< td
| d< td| d< td| d< td| d< td| d< td| d< t| d< td| d< td| d< td| d< td| d< td| d< td| d< | S )z?
    Read the optional package versions into a dictionary.
    ignitezPytorch IgniteZitkZITKZnibabelZNibabelZskimagezscikit-imagescipyPILZPillowtensorboardZTensorboardZgdowntorchvisionZTorchVisiontqdmZlmdbr   pandasZeinopsZtransformersZmlflowZnrrdZpynrrdZclearml)r   r   psutil_versionr   r   r   r   get_optional_config_valuesA   s(    r'   c                 C  s   t   D ] \}}t| d| | dd q
tdt dt dt  tdtj  t	 }t
|dtj}td	| | dd td
| dd t  D ] \}}t| d| | dd qtd| dd td| dd dS )z~
    Print the package versions to `file`.

    Args:
        file: `print()` text stream file. Defaults to `sys.stdout`.
    z
 version: TfileflushzMONAI flags: HAS_EXT = z, USE_COMPILED = z, USE_META_DICT = zMONAI rev id: z
<username>zMONAI __file__: z
Optional dependencies:zF
For details about installing the optional dependencies, please visit:z^    https://docs.monai.io/en/latest/installation.html#installing-the-recommended-dependencies
N)r   itemsprintHAS_EXTr   r
   r   __revision_id__getpassZgetuserresub__file__r'   )r)   kvusernameZmasked_file_pathr   r   r   r   ]   s     c                 C  s<   zt |r| n|| |< W n tk
r6   d| |< Y nX d S )NzUNKNOWN for given OS)callableBaseException)in_dictkeyfnr   r   r   _dict_appendv   s    r;   r   )returnc               	     s   t  } t| dtj | d dkrHt| dtj ttdrt| dtj nZ| d dkrft| ddd	  n<td
}t	d|
  W 5 Q R X  rt| d fdd	 t| dtj t| dtj t| dtj t| dtj tst| ddd	  n
t }|  t| d|j t| d|j t| d|j t| ddd	  t| ddd	  t| ddd	  t| ddd	  t| dd d	  t| d!d"d	  t| d#d$d	  t| d%d&d	  t t| d'fd(d	 t| d)fd*d	 t| d+fd,d	 W 5 Q R X | S )-z3
    Get system info as an ordered dictionary.
    SystemWindowszWin32 versionwin32_editionzWin32 editionDarwinzMac versionc                   S  s   t  d S )Nr   )platformmac_verr   r   r   r   <lambda>       z!get_system_info.<locals>.<lambda>z/etc/os-releasezPRETTY_NAME="(.*)"zLinux versionc                     s
     dS )N   )groupr   )	linux_verr   r   rC      rD   PlatformZ	ProcessorZMachinezPython versionz`psutil` missingc                   S  s   dS )Nzrun `pip install monai[psutil]`r   r   r   r   r   rC      rD   zProcess nameCommandz
Open fileszNum physical CPUsc                   S  s   t jddS )NFlogicalr   	cpu_countr   r   r   r   rC      rD   zNum logical CPUsc                   S  s   t jddS )NTrJ   rL   r   r   r   r   rC      rD   zNum usable CPUsc                   S  s   t t  S N)lenr   ProcessZcpu_affinityr   r   r   r   rC      rD   zCPU usage (%)c                   S  s   t jddS )NTZpercpu)r   Zcpu_percentr   r   r   r   rC      rD   zCPU freq. (MHz)c                   S  s   t tjddd S )NFrQ   r   )roundr   Zcpu_freqr   r   r   r   rC      rD   z#Load avg. in last 1, 5, 15 mins (%)c                   S  s   dd t  D S )Nc                 S  s"   g | ]}t |t  d  dqS )d   rE   )rR   r   rM   ).0xr   r   r   
<listcomp>   s     5get_system_info.<locals>.<lambda>.<locals>.<listcomp>)r   
getloadavgr   r   r   r   rC      rD   zDisk usage (%)c                   S  s   t t jS rN   )r   
disk_usageosgetcwdpercentr   r   r   r   rC      rD   zAvg. sensor temp. (Celsius)c                   S  s$   t t dd t  D dS )Nc                 S  s   g | ]}|D ]
}|j qqS r   )current)rT   sublistitemr   r   r   rV      s       rW   rE   )r   rR   meanr   Zsensors_temperaturesvaluesr   r   r   r   rC      s   zTotal physical memory (GB)c                     s   t  jd dS N   @rE   )rR   totalr   memr   r   rC      rD   zAvailable memory (GB)c                     s   t  jd dS rb   )rR   	availabler   re   r   r   rC      rD   zUsed memory (GB)c                     s   t  jd dS rb   )rR   usedr   re   r   r   rC      rD   )r   r;   rA   system	win32_verhasattrr?   openr0   searchread	processormachinepython_version
has_psutilr   rP   ZoneshotnameZcmdline
open_filesvirtual_memory)r   Zrel_fpr   )rG   rf   r   r   }   sX    


r   None)r)   r<   c                 C  sD   t std| dd n,t  D ] \}}t| d| | dd qdS )z
    Print system info to `file`. Requires the optional library, `psutil`.

    Args:
        file: `print()` text stream file. Defaults to `sys.stdout`.
    z)`psutil` required for `print_system_info`Tr(   : N)rr   r,   r   r+   r)   r3   r4   r   r   r   r      s    c                    s  t  } tj t| dfdd t| ddd  | d rLt| ddd  tjj  t| d fd	d t| d
tj	
d
 t| dtj	
d  rt| d fdd dkrt| dtjj t| dtjj tD ]}tj|}t| d| d|j t| d| dt|j t| d| dt|j t| d| d|j t| d| dt|jd d t| d| d|j d|j  q| S )NzNum GPUsc                     s    S rN   r   r   )num_gpusr   r   rC      rD   zget_gpu_info.<locals>.<lambda>zHas CUDAc                   S  s   t tj S rN   )boolr   cudais_availabler   r   r   r   rC      rD   zCUDA versionc                   S  s   t jjS rN   )r   r   r|   r   r   r   r   rC      rD   zcuDNN enabledc                     s   t  S rN   )r{   r   	cudnn_verr   r   rC      rD   ZNVIDIA_TF32_OVERRIDEZ TORCH_ALLOW_TF32_CUBLAS_OVERRIDEzcuDNN versionc                     s    S rN   r   r   r~   r   r   rC      rD   r   zCurrent devicez'Library compiled for CUDA architectureszGPU z Namez Is integratedz Is multi GPU boardz Multi processor countz Total memory (GB)rc   rE   z CUDA capability (maj.min).)r   r   r|   device_countr;   backendscudnnr   rZ   environgetcurrent_deviceget_arch_listrangeget_device_propertiesrs   r{   is_integratedis_multi_gpu_boardmulti_processor_countrR   total_memorymajorminor)r   gpuZgpu_infor   )r   rz   r   r      s0    
 $c                 C  s0   t   D ] \}}t| d| | dd q
dS )zr
    Print GPU info to `file`.

    Args:
        file: `print()` text stream file. Defaults to `sys.stdout`.
    rx   Tr(   N)r   r+   r,   ry   r   r   r   r      s    c                 C  s   t d| dd t d| dd t d| dd t|  t d| dd t d t d| dd t|  t d| dd t d t d| dd t|  dS )	z
    Print config (installed dependencies, etc.) and system info for debugging.

    Args:
        file: `print()` text stream file. Defaults to `sys.stdout`.
    z ================================Tr(   zPrinting MONAI config...z!
================================zPrinting system config...zPrinting GPU config...N)r,   r   r   r   )r)   r   r   r   r      s    c                   @  s   e Zd ZdZdZdS )r   z<
    Config information of the PyTorch ignite package.

    z0.4.4N)__name__
__module____qualname____doc__OPT_IMPORT_VERSIONr   r   r   r   r     s   __main__)-
__future__r   r/   rZ   rA   r0   syscollectionsr   typingr   numpyr   r   r   monai.utils.moduler   r   r   _r-   getenvr   ImportErrorAttributeErrorr   r   r
   r   rr   r   r&   __all__r   r'   stdoutr   r;   r   r   r   r   r   r   r   r   r   r   r   <module>   sR   ;"	
