
ra                  @   se   d  d l  Z d  d l Z d  d l Z d  d l Z d Z d Z	 d Z
 d d   Z Gd d   d  Z d S)	    Nz assets/XJETS-master - Sheet1.csvz-assets/XJETS-master - col_name_attributes.csvz#assets/data_downloads/data_info.csvc       
         sP  t  j |     t  j |    t |   t |  k rD t d  d St |   }    k r{    f d d   |  D } n	 d g } g  } g  } x t |  D] } | d k r | | } n | } | | d k	 r | | | d d }	 n d }	 |	 } | j | | | g  | j |	 | | g  | j | |	    d  q W| | f S)z
    Generate a color scale for int type categories. Each category will be at the center of a bin.
    The will generate a discrete color bar but may have unequal bin widths
    z1Length of values is greater than length of colorsNc                s"   g  |  ] } |      q S r   ).0i)max_valmin_valr   /var/www/atlasX/datastore.py
<listcomp>   s   	 z'generate_colorscale.<locals>.<listcomp>   r      )npmaxminlenprintrangeappend)
valuescolorsZnvalsZnorm_values
colorscaleticklocationsr   lbZprev_ububr   )r   r   r   generate_colorscale   s.    
	!r   c               @   s   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 d d   Z
 d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d    Z d! d"   Z d# d$   Z d% d&   Z d' S)(	datastorec             C   s   y t  j t  |  _ t |  j j  |  _ |  j j |  _ t  j t	  |  _	 |  j j
 |  j	 d d d d |  _ t  j t  j d  j |  _ d |  _ |  j j d d  |  _ Wn8 t k
 r } z t |  d	 |  _ WYd  d  } ~ Xn Xd  S)
NhowleftonName	attributeZgooddeepTZbad)pdread_csv
master_csv	master_dfr   indextotal_sourcescolumns	col_namesdata_availabilitymergecol_attr	set_indexTcol_attr_dfstatecopyendpoint_df
ValueErrorr   )selfZverrr   r   r   __init__5   s    		
zdatastore.__init__c             C   s   |  j  S)N)r#   )r2   r   r   r   get_master_dataE   s    zdatastore.get_master_datac             C   s!   |  j  |  j  d d k |  _  d  S)NZb_appr	   )r0   )r2   r   r   r   _filter_super_luminal_sourcesH   s    z'datastore._filter_super_luminal_sourcesc             C   s!   |  j  |  j  d d k |  _  d  S)NzX-ray firstr   )r0   )r2   r   r   r   _filter_xray_upstream_offsetK   s    z&datastore._filter_xray_upstream_offsetc             C   s!   |  j  |  j  d d k |  _  d  S)NzRadio firstr   )r0   )r2   r   r   r   _filter_xray_downstream_offsetN   s    z(datastore._filter_xray_downstream_offsetc             C   s2   |  j  |  j  d d k |  j  d d k @|  _  d  S)NzRadio firstr   zX-ray first)r0   )r2   r   r   r   (_filter_xray_upstream_downstream_offsetsQ   s    z2datastore._filter_xray_upstream_downstream_offsetsc             C   s   |  j  S)N)r0   )r2   r   r   r   get_filtered_dataW   s    zdatastore.get_filtered_datac             C   s   |  j  j d d  |  _ d  S)Nr   T)r#   r/   r0   )r2   r   r   r   reset_filtersZ   s    zdatastore.reset_filtersc             C   s   |  j  |  j  d d k S)Nuse_as_scaler	   )r-   )r2   r   r   r   get_valid_scales]   s    zdatastore.get_valid_scalesc             C   s   |  j  |  j  d d k S)N
use_as_catr	   )r-   )r2   r   r   r   get_valid_categories`   s    zdatastore.get_valid_categoriesc             C   s!   |  j  |  j  d j d  d k S)NZ
valid_axisintr	   )r-   astype)r2   r   r   r   get_valid_axesc   s    zdatastore.get_valid_axesc             C   s   |  j  S)N)r-   )r2   r   r   r   get_col_attributesf   s    zdatastore.get_col_attributesc             C   s@   d d d d i d d d d i d d d d i d d	 d d
 i g S)NlabelzSuper luminal sourcesvaluer5   z Sources with upstream X-ray peakr6   z"Sources with downstream X-ray peakr7   z!Sources with both kind of offsetsr8   r   )r2   r   r   r   get_filtersi   s    			zdatastore.get_filtersc             C   sb   |  j  |  j  d j d  d k } d d   | j   D } | j d d d d	 d  d
 d i  | S)Nr;   r?   r	   c          	   S   s6   g  |  ], \ } } d  | d d | d | d i  q S)rC   pretty_namerD   primaryTextr   )r   r   rowr   r   r   r   y   s   	z.datastore.get_scaling_vars.<locals>.<listcomp>r   rC   z
No scalingrD   rG   )r-   r@   iterrowsinsert)r2   Z	scales_dfoptionsr   r   r   get_scaling_varsu   s    		zdatastore.get_scaling_varsc          
   C   s\   |  j  | j d  } d } d | j   | d } d | j   d d d d d	 | d
 d  i S)Ng?(   r
   sizesizemodeareasizemin   sizerefcolor)r0   fillnar   tolist)r2   Zscale_usingscalesZmax_derired_marker_sizerS   r   r   r   get_marker_scaling_options   s    z$datastore.get_marker_scaling_optionsc             C   sb   |  j  |  j  d j d  d k } d d   | j   D } | j d d d d	 d  d
 d i  | S)Nr=   r?   r	   c          	   S   s6   g  |  ], \ } } d  | d d | d | d i  q S)rC   rF   rD   rG   r   )r   r   rH   r   r   r   r      s   	z2datastore.get_categorical_vars.<locals>.<listcomp>r   rC   zNo CategoryrD   rG   )r-   r@   rI   rJ   )r2   Zcat_dfrK   r   r   r   get_categorical_vars   s    	zdatastore.get_categorical_varsc                s]  |  j  | j d  } | d d k j   rOt j | j    } t j |    t |  } | d k  rr d d  i S| d k r | d k r t j	 d d d } n t j	 t
 |  d d	 } t | |  \ } } | d k r d g } d   f d
 d   | j   D d | d d |  j j | d d d d d d | d d d   | D i i Sd d  i Sd  S)Nr   r	   rT      3ZqualDark2divSpectralc                s   g  |  ] } |    q Sr   r   )r   r   )min_unique_valr   r   r      s   	 z+datastore.get_cat_color.<locals>.<listcomp>r   colorbartitlerF   	titlesidetoptickmodearraytickvalsticktextc             S   s"   g  |  ] } t  t |    q Sr   )strr?   )r   r   r   r   r   r      s   	 )r0   rU   allr   sortuniquer   r   clrW   rh   r   rV   r-   loc)r2   Z	cat_usingZ
cat_valuesZunique_valsZn_unique_valsr   r   r   r   )r_   r   get_cat_color   s.    
	zdatastore.get_cat_colorc                sV    j   j  d | k j d j d    t j    f d d    j D d d S)Nr   r   NAc                sI   g  |  ]? } t  j t  j  j j | d   t  j   |  g   q S)rF   )htmlTrTdr-   rm   )r   col)rH   r2   r   r   r      s   	z.datastore.get_source_table.<locals>.<listcomp>	className )r0   ilocrU   rp   Tabler'   )r2   sourcer   )rH   r2   r   get_source_table   s    
zdatastore.get_source_tablec             C   s   d |  j  d j   d |  j  d j   d |  j  d j   d |  j  d j   d	 |  j  d
 j   d |  j  d j   d |  j  d j   d |  j  d j   d t |  j  d j    d |  j i
 S)NZtotal_resolved_xray_knotsz#resolved X_ray knotsZtotal_knots_with_offsetsz#knots with offsetsZtotal_knots_without_offsetsz#knots without offsetsZtotal_resolved_xray_HSz
#HS  XraysZtotal_HS_with_offsetsz#HS with offsetsZtotal_HS_without_offsetsz#HS without offsetsZxray_first_offsetszX-ray firstZradio_first_offsetszRadio firstZ#total_xray_jet_terminates_at_a_bendz/X-ray jet terminates before radio after a bend?Z
total_jets)r#   sumr?   r%   )r2   r   r   r   get_summary_data   s    zdatastore.get_summary_dataN)__name__
__module____qualname__r3   r4   r5   r6   r7   r8   r9   r:   r<   r>   rA   rB   rE   rL   rX   rY   rn   ry   r{   r   r   r   r   r   4   s&   0r   )pandasr    numpyr   Z
colorloverrl   dash_html_componentsrp   r"   r*   r(   r   r   r   r   r   r   <module>   s   '