o
    Mh                     @   sj   d dl Zd dlZd dlmZ d dlZdd Zdd Zdd Z	d	d
 Z
dddZdd Zdd Zdd ZdS )    N)Pathc                 C   s   t dd}t jt|d t jd}tt|D ]}t jd|d  d|d  dt jd||d |d	 d < q|t |t| d d
 k|t|d d k@  }|S )Ni9  i     dtypei#     @i'd      s   i  )nparangezeroslenint32rangewhereint)startendyearsdatesi r   N/global/cfs/cdirs/e3sm/www/hass877/share/emis_processing/FlexEmis/src/utils.py	get_dates   s   :2r   c                 C   s2   d}| | | dt j |d d   d d }|S )NgWTDgUUUUUU?gư>   gMbP?gڝ"E)r
   pi)mwrhodiamavgod
num_factorr   r   r   get_num_factor   s   *r!   c                 C   s(   | dkrt d}| }|S t | }|S )N .)r   absolute)pathpdir_pathr   r   r   get_dir_path   s   r(   c              	   C   s   t d dddddddd	d
}t d| t d z
| d jd}W n   tdg }g }|D ]}|t|dd  |||dd    q0tt||}t d| |S )Nz$
Grabbing E3SM sector info in a dictZAGRENEINDZTRAZRCOZSLVZWSTZSHP)ZAgricultureZEnergyZ
IndustrialZTransportationzResidential, Commercial, Otherz#Solvents production and applicationZWastezInternational Shippingz
E3SM sectors:z-
Getting the sectors available in the datasetsector;zS
No sectors available in the selected dataset!
Possibly due to no sector dimension.:r   r   z
Available sectors: )	printidssplit	Exceptionappendr   stripdictzip)dataZorig_sectorsZ
items_datakeysvaluesitemsectorsr   r   r   get_sectors   s0   

r;   c                 C   s   | d krt jg dt jd} nt j| t jd} t jt| d t jd}tt| D ]}| | d ||  ||d < q)|dd  |d d  d }tj|d| idgd}|| |fS )	N)g   ?g"?g  @l?g  @^?gC?gI?g&1?g  @A?g  "@g?33@g  @7	@gĠ@g  @l@r   r           j@altitudecoordsdims)r
   arrayfloat64r   r   r   xr	DataArray)altitude_airaltitude_int_airr   ZdzZzcolr   r   r   get_zcol5   s   

rI   c                 C   s"  t | tkst| rtdS t| dkrt| dk rzj| dk r"dnd}tt| tt|  d}t|dd  dk rFtt| }|| W S t|dd  D ]4\}}|d	kr|dkrkttt| |d|d
   }nttt| |d|d   }||   W S qNW d S    Y dS d| S )N-g-C6?r   r   r"   fr<   r   0      z{:.0e})typestrr
   isnanabsformatr   	enumerate)nsgnnumdr   er   r   r   roundingF   s(   
" 
rZ   c                 C   s   | j }tjt|d tjd}tt|D ]}|| d ||  ||d < q|dd  |d d  d }t|d }tj	|d| j idgd}| | } | j
dd} | S )	Nr   r   r<   r=   r>   r?   r@   )dim)r?   r
   r   r   rD   r   roundtolistrE   rF   sum)r6   rG   rH   r   ZaahhZhh_arrr   r   r   get_emis_vertint]   s   r`   c                 C   s$   t | |\}}|d d d }|S )N   <   )calendar
monthrange)yearmonth_dayssecondsr   r   r   
sec_in_moni   s   rj   )N)numpyr
   xarrayrE   pathlibr   rc   r   r!   r(   r;   rI   rZ   r`   rj   r   r   r   r   <module>   s    	
