ó
`F‰\c           @   sW  d  d l  m Z d  d l Z d  d l j Z d  d l m Z e j	 d ƒ Z
 e j d ƒ Z i i d d d g d 6d d d g d	 6d d d g d
 6d d d g d 6d 6i d e d 6d e d
 6d e d 6d e d	 6d 6i d d d g d 6d d d g d 6d 6i d d d g d 6d d d g d 6d d d g d 6d 6i d d d g d 6d d d g d 6d d d g d 6d d d g d 6d d d g d 6d  6i d d d g d 6d d d g d 6d d d g d! 6d" 6i d# d$ d# g d% 6d& d& d' g d( 6d) d* d+ g d, 6d- d. d/ g d0 6d1 d2 d3 g d4 6d5 d& d6 g d7 6d8 6Z d9 „  Z d: „  Z d; „  Z e d< „ Z d S(=   iÿÿÿÿ(   t   divisionN(   t   to_rgbi   i   gÍÌÌÌÌÌä?i    t   Gt   TUt   Cg      à?t   At   classicgš™™™™™É?gš™™™™™Ù?g333333ã?gš™™™™™é?t   graysgš™™™™™á?t   TAUt   GCt   base_pairingt   RKDENQt   SGHTAPt   YVMCLFIWt   hydrophobicityt   GSTYCt   QNt   KRHt   DEt   AVLIPWFMt	   chemistryt   GSTYCQNAVLIPWFMt   chargegáz®GáÚ?g{®GázÄ?t   DECg®GázÞ?g        t   PGg¤p=
×£À?gffffffÖ?g…ëQ¸…ã?t   MIWALFVg      Ð?g\Âõ(\ç?gìQ¸…ëÑ?t   NTSQg®Gáz®ç?g
×£p=
Ç?g¸…ëQ¸¾?t   RKg
×£p=
·?gq=
×£pÝ?t   HYt   NajafabadiEtAl2017c         C   s;   t  g  |  j ƒ  D]$ \ } } | | k r | | f ^ q ƒ S(   N(   t   dictt	   iteritems(   t   in_dictt   keys_to_keept   kt   v(    (    s   ../../logomaker/src/color.pyt   restrict_dict;   s    c   	      C   sŠ   t  j | ƒ } t |  ƒ } t j d d d | d ƒ d d  d … } i  } x8 t |  ƒ D]* \ } } | | | ƒ d  } | | | <qX W| S(   Ni    i   i   i   (   t   pltt   get_cmapt   lent   npt   linspacet	   enumerate(	   t   charst	   cmap_namet   cmapt   num_chart   valst   color_schemet   nt   chart   color(    (    s   ../../logomaker/src/color.pyt   cmap_to_color_scheme>   s    *c         C   s\   i  } xO |  j  ƒ  D]A } |  | } x. | D]& } | | | j ƒ  <| | | j ƒ  <q* Wq W| S(   N(   t   keyst   uppert   lower(   t
   color_dictt   new_dictt   keyt   valueR2   (    (    s   ../../logomaker/src/color.pyt   expand_color_dictI   s    
c         C   sH  d	 } y t |  ƒ } t } Wn n Xi  } | rP x| D] } | | | <q9 Wnô t |  ƒ t k rq t |  ƒ } nÓ t |  ƒ t k r2|  d k r¿ x$ | D] } d d d d g | | <q– Wd } qD|  d k rõ xa | D] } t j j	 d ƒ | | <qÒ WqD|  t
 k rt
 |  } t | ƒ } qD|  } t | | ƒ } n t sDt d ƒ ‚ t | ƒ t | j ƒ  ƒ k s¤x? | D]4 }	 |	 | k rid |	 }
 |
 GHt d ƒ | |	 <qiqiWn  | rê| j ƒ  } | j ƒ  } t j j | ƒ t t | | ƒ ƒ } n  | d	 k rÿd } n  xB | D]: } | | } t j t | ƒ d  | g ƒ } | | | <qW| S(
   s   
    get color_dict: each key is 1 char, each value is a 4-vector of rgba values
    This is the main function that OldLogo interfaces with
    t   nonei    t   randomi   s   color_scheme has invalid type.s:   Warning: Character '%s' is not in color_dict. Using black.t   blackg      ð?N(   t   NoneR   t   Truet   typeR   R<   t   strR(   R>   t   randt   color_scheme_dictR4   t   Falset   AssertionErrort   setR5   t   valuest   shufflet   zipt   arrayt   list(   R0   R+   t   alphat   shuffle_colorst   is_colorR3   R8   R2   R,   t   ct   messageRI   R:   t   rgbt   rgba(    (    s   ../../logomaker/src/color.pyt   get_color_dictS   sZ    
	
	
 (   t
   __future__R    t   numpyR(   t   matplotlib.pyplott   pyplotR%   t   matplotlib.colorsR   t   zerost   three_zerost   onest
   three_onesRE   R$   R4   R<   RF   RU   (    (    (    s   ../../logomaker/src/color.pyt   <module>   sX   			
