
dKc        +   @   s  d  d k  Z  d  d k Z d  d k Z d  d k Z e i d  d  d k Td  d k Z d  d k Td  d k	 l
 Z
 d  d k Td  d k Td  d k Td  d k Z d  d k i Z d  d k Z d  d k Z d  d k l Z d  d k i Z d  d k l Z d  d k l Z e i h  d d	 <d
 d < d   Z d d d d d d  Z d d d d  Z d d  Z  d d e! d d  Z" d   Z# e$ d  Z% d   Z& d   Z' d d d e! d e( d d d d 	 Z) d d d e! d d  Z* h  e$ d  Z+ d    Z, d!   Z- d"   Z. d#   Z/ d$   Z0 d%   Z1 d&   Z2 d'   Z3 d(   Z4 d)   Z5 d*   Z6 d+   Z7 d,   Z8 d-   Z9 d. e$ d/  Z: d0 d1  Z; d2   Z< d3   Z= d4   Z> d5   Z? e! d6  Z@ e! d7  ZA d8   ZB d9   ZC d:   ZD eE d; h  d d d f d> <d d d f d? <d d d f d@ < ZF dA eG f dB     YZH d  dC kI lJ ZJ d  dD kK lL ZL dE dF d0 dG dH d< dI  ZM eN dJ j oe  iO d ZP eQ dK dL  dM eP j ZR dN eP j ZS dO eP j ZT dP ZU dQ ZV eR o
 dR ZW n dQ ZW dS eP j o! eA eU eV eR  e  iX d  n eV eU eW dT ZY e iZ e[ eY   Z\ eS o dU GHe\ i] dV j e\ i^ dW j Z_ dX e\ j o  e` e$ g ea e\   e\ _b n dY ec e_  GHxK ed e_  D]= Ze e< e\ if ee e\ ig ee e\  e\ ib ee <dZ Ge\ ib ee GHqWe\ ib ih ei  e\ _b ej e ik e\ e il  eY  e  iX d  n e\ i] dV j e\ i^ dW j e\ ib d j Z_ d[ ec e_  GHeT oxed e_  D]Ze e\ ee Zm e; em if em ig e\ d\  \ Zn Zo Zp Zq Zr Zs e= en ep eq  \ Zt Zu Zv Zw e8 en et eo eu ev ew er es  Zx d] Gey ex  Gez ex  Ge{ ex  GHec ex  Z| d= Z} d^ e~ eo e  Z e: en em if em ig em i em i em i em i e} e 	 Z d_ Gey e  Gez e  Ge{ e  GHe em i] d`  Z e em i] d`  Z d0 e e e da db  Z g  Z e D]5 Z e ec e e e e  d= e e ex    q[ Z e e  Z e e Z e e e| e\ i^ ee <e e e\ i] ee <e e e| dW j  o qkn e   e e e dc  e e|  e dd  e de  df em if em ig em i em i f Z e e  e e{ e  dg e{ e  d  e ey e  e{ e   e dO eW dh ee  qkWeV eU eW di Z ej e ik e\ e il  e  n e\ i] dV j e\ i^ dg j e\ ib d j Z_ d[ ec e_  GHe\ e_ Z e   e e i] e i^ dj dd d< e dk  e dl  e dm eW dn  e   eM e\ e  eH eF  Z eL do dp dq dr  e _ e ds eW dn  e\ e_ Z e e i^  Z e e Z e i e i dt du dv dw dx e if  e i dt dy dv dw dx e ig  e i dt dz dv dw dx e i  e i dt d{ dv dw dx e i  e i dt d| dv dw dx e i  e i dt d} dv dw dx e i  e i dt d~ dv dw dx e i^  e i dt d dv dw dx e i]  g  Z e i d d e$ xed e_  D]Ze e\ ee Zm e; em if em ig e\  \ Zn Zo Zp Zq Zr Zs e= en ep eq  \ Zt Zu Zv Zw e8 en et eo eu ev ew er es  Zx ec ex  Z| d= Z} d^ e~ eo e  Z e: en em if em ig em i em i em i em i e} e 	 Z em i] Z d em if em ig em i em i em i em i f Z e   e en if en ig d dd d d Z e em if em if em i e e em ig   e g em ig em ig em i e g d d d e em if g em ig g d d dg d d e d  e d  e e  e e d= e  ex Z e d< e e ea en    Z d Ge GHd Ge GHe e  e  Z e en if e en ig e dj  e e  e d d d d g  Z eM e\ e d db d d d d d d^ d d d d= e   Z e em if d dF dd d< d d e em ig d dF dd d< d d e g  g   e g  g   e e  e d d d d g  Z eM e\ e d dE d d d d d d d d d d e em if d dF dd d< d d e em ig d dF dd d< d d e g  g   e g  g   d\ Z e e e em ig   Z e em if e em if e em ig e em ig e g  e d eW d ee dn  e   e en i en i d dd d e em i g em i g d d dg d d e en i e en i e dj  e e  e d  e d  e e  e d eW d ee dn  e   e en i en i d dd d e em i g em i g d d dg d d e en i e en i e dj  e e  e d  e d  e d d d e d d d e d d  e d d  e e  e d eW d ee dn  qi
Wn d S(   iNt   Agg(   t   *(   t   Line2D(   t   rcParams(   t   Ellipse(   t
   parse_mwgct   nearests   image.interpolationt   lowers   image.originc         O   s4   d d  k  } d G|  Gd G| i |  | |  d GHd  S(   Nit   savings   ...s   done.(   t   pylabt   savefig(   t   fnt   argst   kwargsR	   (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyR
      s    c         C   s3  |  \ } }	 }
 | \ } } } | d  j o t t |   } n | d  j o t t |   d } n t |  } t |  } t |  } t |  } t |  } t |  } t   | d  j	 o | i \ } } n | d  j	 ot |  } | d  j	 o/| d  j	 o"xt | | | | | | | | | | | d  d   | f i	 | d  d   | f i	  D] \ } } } } } } } t
 | g | g d d | d | d | d | t
 t t | g  d  d   t f i |  | f  t t | g  d  d   t f i |  | f  d d | d | qcWqxt | | | | | | | | | |  D]C \ } } } } } t
 | g | g d d | d | d | d | qYWndx`| D]X} xO| D]G} x>| D]6} | | j | | j | | j } t |  d j o qn d	 Gt |  Gd
 G| GHt
 | | | | d d | d | d | d | | d  j	 o | d  j	 o x t |  D] } t
 t | | t f i |  | d  d   | f f  t | | t f i |  | d  d   | f f  d d | d | qsWqqWqWqWt |
  t |  t |	  t |  d  S(   Ng      @t   .t   colort   alphat   mect   mst   -i    t   plottings   in color(   t   Nonet   onest   lent   uniquet   arrayt   clft   shapet   argsortt   zipt   Tt   plott   vstackt   newaxist   repeatt   sumt   findt   xlimt   ylimt   xlabelt   ylabel(   t   xballt   yballR   R   R   t   xtailt   ytailt	   plotordert   xt   xlt   xranget   yt   ylt   yranget   uct   uat   umst   arrat   arrct   arrmst   Ntailst   nilt   It   ct   at   msit   xit   yit   xtit   ytit   i(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   make_one_plot"   s`    Y .41- 6    0 52'


g?g333333?c         C   s   | d  j	 oD | d j p t  | d j p t  d | d } d | } n |  i   } | i   | t t |   |  | t t |   |  f S(   Ni    i   g      ?g       @(   R   t   AssertionErrort   copyt   sortt   floorR   t   ceil(   R.   t   qlot   qhit   quantilet   sx(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt
   plot_rangeX   s    
R1   c      
   C   s  d d d d d d d d d	 d
 g
 } xM | D]E } t  |  d |  d |  } d | j  o
 d j  n o Pq+ q+ Wt | t  t |  d |   | t  t |  d |  d  |  } | d j o t t t |   |  n t t t |   |  d  S(   Ng{Gz?g?g?g?g      ?g      ?g       @g      @g      $@g      4@i   i    i   i
   R1   (   t   intt   arangeRI   RJ   t   ytickst   sint   deg2radt   xticks(   t   decranget   axist   stepst   st   nst   decticks(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt	   dec_ticksb   s    $ 		c   %      C   s  d } d } d } d } d } d } t  |  } t |  t  |  } |  | t  |   f } t t |   | t t t t  |     f } | | | f } | d  j o d t |  i  } n | d  j o t d g t |    } n |	 ot	 d	 t
 t |  d	   } d
 | } d G| i   G| i   GHd } t |   } t i d | | f  } t i d | | f  } d } |  | t t |   | | | d } | | | | | d } d G| i GHt t |   } d t |  i  }  t | | | d |  d | d | d | d | t   }! |
 d  j	 o[ xX t |
   D]F \ }" }# }$ } t |" |# g t t |$   t t |   g d  qCWn t |!  n t | | | |  t |  d  S(   Ns   Rix distance (kpc)s   r (mag)s   proper motion RA (mas/yr)s   proper motion Dec (mas/yr)s   RA (deg)s	   Dec (deg)g?t   rg333333?g      N@s   snapdist range:g      @t   sizeg     j@g     @@g      @s   shape:g      ?R   R   R+   R,   R-   s   b-g    @wKAg    @wKA(   RO   R\   RS   RT   R   R   R   R   R   t   expRI   t   logt   mint   maxt   randomt   normalt   cosRE   RW   R   R   (%   t   rat   dect   distt   pmrat   pmdect   pmraerrt   pmdecerrR   R   t	   squidplott   pairst	   distlabelt   rlabelt	   pmralabelt
   pmdeclabelt   ralabelt   declabelRV   t	   distranget   raballt   decballt   distballt   snapdistR   t   Ntailt   Nt   dxt   dyt   yrst   ratailt   dec2t   dectailt   alpha2R>   t   ra1t   ra2t   dec1(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt
   make_plotsp   sN    
3 
*.	 <c      	   C   sc  t  |   | j  p t  t  |  | j  p t  h  } x t |  |  D] \ } } | | j o* | | | j o | | i |  q n | g | | <| | j o* | | | j o | | i |  q qJ | g | | <qJ Wg  } xt |  D]} t } x& | D] }	 | |	 j o t } PqqW| o q n | | j o q n t | g  }
 | i | g   } x t	 |  ox | i
 d  } |
 i |  | i | g   } xC | D]; } | |
 j o qn | | j o qn | i |  qWqqW| i |
  q Wd t |  i t  } x5 t |  D]' \ } }	 x |	 D] } | | | <qAWq.W| | f S(   Ni    i(   Rb   RF   R   t   appendt   ranget   Falset   Truet   sett   getR   t   popt   addR   t   astypeRP   t	   enumerate(   t   I1t   I2R{   t   friendst   i1t   i2t   groupsRD   t   alreadygroupedt   gt
   friendsofit   qt   friendt   foft   fft   groupnumbert   gnum(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   friends_of_friends   s`       	  	  c   	      C   s  t  |   t  |  j o t |   } n t |  } t i   } t i | d d  } t i | d d  } t i | d d  } t |  | d d | d | d d d d d d	 d
 d d
 t |  | d d | d | d d d d d	 d
 d d
 | o t |  | d d | n d  S(   Ni   g      ?g?R   R   t   lwR   t   zordert   solid_capstylet   roundt   solid_joinstylei   R   (   t   varR   Rc   t   uniformt   colorsyst
   hsv_to_rgbR   (	   R.   R1   R   t   plot_pivotsR<   R4   t	   colorcodet   highlightcolort   highlightedgecolor(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt	   plot_worm   s    %!c         C   s   d |  d t  t |   S(   Ng     f@(   Re   RT   (   Rf   Rg   (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   plotra   s    c          C   s}   t    }  t   i   } t   i   \ } } t | | d  } x- | D]% } t t | |  | d d d qF Wt  |   d  S(   Nid   s   k-R   i   (   RW   t   gcat
   get_xtickst   get_ylimt   linspaceR   R   (   R>   t   tickst   declot   dechit   decsRf   (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   plot_radec_grid_lines   s    	 #i  i   i    i_   c      	   C   s  | } t  i } | d  j o t |   t |  g } n t |  | d | d | d | \ } } } | i } | o | | |  } n | i   | i   | i   | i   f } t | d | d d d | |
 d  j	 o t	   i
 |
  n t | | |	  }
 | |
 | | | f S(   Nt   binsR   t   weightst   extentt   aspectt   autot   cmap(   t   numpyR`   R   RO   t   histogram2dR   Ra   Rb   t   imshowt   gcit   set_climt   set_image_color_percentiles(   R.   R1   R   R   R   R`   t	   logoffsetR   t   pctlot   pcthit   minmaxt   dologt   Ht   xet   yeR   (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   plot_2d_hist  s    	*	*i   c	   '      C   s  d d  k  }	 | }
 |	 i } |
 d  j o t |   t |  g }
 n |
 d d |
 d d } } |
 d d |
 d d } } t | | | d d  } t | | | d d  } | d | d } | d | d } | d  | d } | d  | d } t |  } t |  } g  } x| t |  d  D]} xx| t |  d  D]`} t |  | | j |  | | d j  | | | j | | | d j   } t |  d j o qLn t | |  | | | f <t | |  | | | f <t |  d j  o qLn | p qLn t	 | | | | | f | | | | | f  } t
 t | |  | g | t | |  g g  } t i |  \ } } t | d | d  d t } qLWq/Wd Gt t | d | d  i    GH| d j o. t t | d | d  i    \ }  } n t   i   \ }! }" d d | d | |! } t | |  \ }# }$ | d  j	 o | | d 9} n t |# |$ | | d	 d
 d | }% | o2 x/ | D]# }& t   i |&  |& i d  qWn |% | f S(   Nii    i   g       @i   g     f@s   mean vector length:g      @t   pivott   middlet   scalet   none(   i    i   (   i   i   (   t   __builtin__R   R   RO   R   t   zerosR   R$   t   meant   covR   R   t   linalgt   eight   arctant   pit   sqrtt   ravelt   gcft   get_size_inchest   meshgridt   quiverR   t
   add_artistt   set_facecolor('   R.   R1   t   vxt   vyR   R   R   t   do_ellipsest   vscaleR   t	   dataranget   xlot   xhit   ylot   yhit   xedgest   yedgest   xbinwt   ybinwt   xct   yct   mvxt   mvyt   ellipsesRD   t   jR<   R=   t   Ct	   eigenvecst	   eigenvalst   angleR;   t   figwt   fight   XCt   YCt   Qt   e(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   plot_mean_vector_field  sd    	  -42)
'.! c         C   s   t  } t i i |   o6 y( d G|  GHt i t |    } t } WqO qO Xn | pC | | |   } | o) d G|  GHt t i	 | t i
  |   q n | S(   Ns   Reading pickles   Writing pickle(   R   t   ost   patht   existst   picklet   loadst	   read_fileR   t
   write_filet   dumpst   HIGHEST_PROTOCOL(   R   t   funcR   R   t   write_cachet   gotitt   X(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt
   read_cache_  s    	
	$c         C   s   t  t |    S(   N(   RS   RT   (   Rg   (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   plotdeco  s    c         C   s  d |  i  d  d f d |  i d  d f d |  i d  d f d |  i d  d f d	 |  i d  d
 f d t |  i |  i   d  d f d t |  i |  i   d  d f d t |  i |  i   d  d f d t |  i |  i   d  d f d |  i d  d f d |  i d  d f d |  i	 d  d f d |  i
 d  d f d |  i d  d f d |  i d  d f g } t d d)  t   xt |  D]\ } } x}t |  D]o\ } } | \ } } } }	 | \ }
 } } } | d j o q~n | d  j o& t |  } | | | |	 f | | <n | d  j o& t |  } |
 | | | f | | <n t t |  t |  | t |  | d!  | | j o/ t | d" d# | t |  t d$ |	 } q~t | | d# | | g d% d& t |  t |
  t |  t |  t d' |	 | f } q~WqeWt d( } t |  t   d  S(*   Ns   Rix distance (kpc)Rh   s#   mu_l*cos(b), no correction (mas/yr)t   origpmls   mu_b, no correction (mas/yr)t   origpmbs&   mu_l*cos(b), v_sun correction (mas/yr)t   pmls   mu_b, v_sun correction (mas/yr)t   pmbs   v_l, no correction (km/s)t   origvls   v_b, no correction (km/s)t   origvbs   v_l, v_sun correction (km/s)t   vls   v_b, v_sun correction (km/s)t   vbs   l (deg)t   ls   b (deg)t   bs   RA (deg)Rf   s	   Dec (deg)Rg   s   r (mag)R]   s
   Fe/H (dex)t   feht   figsizei<   i   i2   R   s   -allsky-%s.pngR   ic   s   -allsky-%s-%s.pngs   -all.pdf(   i<   i<   (   Rh   R   t   old_pmlt   old_pmbR  R  t   pmdisttovelocityR  R  Rf   Rg   R]   R  t   figureR   R   RO   t   subplotR   t   histR'   t   prefixR   R(   R%   R&   R
   (   R.   t   ballsRD   t   biR   t   bjR/   R@   t   xrt   xnR2   RA   t   yrt   ynR   (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   all_pairs_plotsr  sZ      .






c          C   s  t    } d t |  GHg  } | D]" } | d d j  o | | q# q# ~ } g  } | D]" } | d d j o | | qY qY ~ } d t |  GHt g  }	 | D] } |	 | d q ~	  }
 t g  } | D] } | | d q ~  } t g  } | D] } | | d q ~  } t g  } | D] } | | d q"~  } t g  } | D] } | | d qM~  } t g  } | D] } | | d qx~  } t |  i  } t |  i  } t |  i  } d } t   t |  i |  i d	 | d
 | \ } } } t	 |
 t |  d  t
 d  t d  t |  t |  t |  t | d  t   t |  i |  i d | d
 | \ } } } d | d t | i    t | i    f } t   t |  i |  i d | d
 | \ } } } t	 |
 t |  d  t
 d  t d  t |  t |  t |  t | d  t   | i   } d | | d j <| t | d  :} d G| i   G| i   GHt | d | d d d t t	 |
 t |  d  t	 | t |  d d d d d t
 d  t d  t |  t |  t |  t | d  d  S(   Ns   total of %i GCsi   g      @s     %i closer than 5 kpci   i   i    id   R   R   t   rxs   RA (deg)s	   Dec (deg)s   -density.pngR   s   -density-unweighted.pngs   R range:R   R   R   R   t   roR   R]   t   mfcR   s   -density-divided.png(   id   id   (   R   R   R   RO   Rf   R  Rg   R   R   R   R'   R(   R\   R%   R&   R
   t   medianR   RG   t   maximumRa   Rb   R   t   antigray(    R.   t   densityR!  t   mwgct   _[1]t   xxt   nearmwgct   _[2]t   farmwgct   _[3]t   gcrat   _[4]t   gcdect   _[5]t   gcnamest   _[6]t   fargcrat   _[7]t   fargcdect   _[8]t
   fargcnamest   rart   pdecrt   decrR   R   R   t   nil2t   H2R;   t   extt   R(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   density_plots  sd    	66++++++*




*0*




"




c         C   s   d GH|  d  d   d f } |  d  d   d f } | t  | | j   } | t  | | j   } t |  } x | D] } | | c d 7<qp W| | | | | f S(   Ns   Computing density...i    i   (   R$   R   (   t   indsR{   R   R   t	   leftindext
   rightindexR0  RD   (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   compute_density  s     c         C   s4   t  |   } t  |  } t |  |  } | | | f S(   N(   R   R   (   R.   R1   t   mxt   myR=   (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   mean_and_covar  s    c         C   s   t  i |  \ } } t t | d | d   } t t |  | g  d t | d  d t | d  |  } t   } | i | i	  | i
 |  | S(   Ni    i   i   (   i    i   (   i   i   (   R   t   eigt   rad2degR   R   R   R   R   t   set_clip_boxt   bboxR   (   RO  RP  R=   t   eigvalst   eigvecsR   R   R>   (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt    plot_ellipse_from_mean_and_covar  s    #	c         C   s   |  i  \ } } | d j p t  | i  \ } } | d j p t  | | j p t  | i  \ } } } | d j p t  | d j p t  | | j p t  | d  d   d d f | d  d   d d f | d  d   d d f | d  d   d d f } t |  } | d  d   d d f | | d  d   d d f <| d  d   d d f | | d  d   d d f <| d  d   d d f | | d  d   d d f <| d  d   d d f | | d  d   d d f <|  | }	 |	 d  d   d f | d  d   d d f |	 d  d   d f |	 d  d   d f | d  d   d d f |	 d  d   d f |	 d  d   d f | d  d   d d f |	 d  d   d f |	 d  d   d f | d  d   d d f |	 d  d   d f }
 d |
 t d t  d t |  S(   Ni   i    i   g      g       @g      ?(   R   RF   t
   zeros_likeR`   R   (   R.   RO  t   varxR{   t   twot   N2t   twobt   detvart   invvarR|   t   d2(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   ln_gaussian_2d  s&    ^0011
Bc         C   sF   | } d | } |  | } | | | } d | d t  d t |  S(   Ng      ?g      g      ?g       @(   R`   R   (   R.   RO  RZ  R^  R_  R|   R`  (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   ln_gaussian_1d$  s
    

c         C   s'   t  | d | d | d | d  S(   Ni   i    (   R`   (   R.   t	   pmraranget
   pmdecrange(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   flat_background_pm_lnprob+  s    c         C   sN   t  t |  i |  i f  i | | d  d   f | | d  d   d  d   f  S(   N(   Ra  R    Ri   Rj   R   (   R.   t
   componentst   pmmeanst   pmvars(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   gaussian_background_pm_lnprob.  s    c         C   sZ   t  |  i  } | d  j	 o | t |  7} n | d  j	 o | t | |  7} n | S(   N(   RY  Rf   R   R`   (   R.   Rf  t
   radec_areat   distfeh_amplitudest   lnp(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   background_radecdistfeh_lnprob1  s    c         C   s5   t  |  |  } t t |  |  t | |   | S(   N(   R.  R`   R_   (   R.   R1   t   ref(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   logsum:  s    c         C   s   t  |  | | |  } | d  j	 o | d  j	 ov | d  j	 oi | d  j	 o\ d }	 t |  | |  }
 t |  | | |  } | t t |	  |
 t d |	  |  7} n | S(   Ng{Gz?g      ?(   Rm  R   Re  Ri  Ro  R`   (   R.   Rf  Rj  Rk  Rg  Rh  Rc  Rd  Rl  t   betat   lnp_flatt	   lnp_gauss(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   background_data_lnprobB  s    4/c         C   so   t  |  | t t |   | | f  i } t t |  t |  g  } | t |  :} t t | |   S(   N(	   R    Re   RT   R   R   RS   t   normt   absolutet   dot(   Rf   Rg   t   racentert	   deccenterR   t   duvt   vorth(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   distance_from_radec_lineO  s
    g        c         C   s,  d } t  |  i  } | d  j	 o` | d  j	 oS t | |  |	 } | t t |  i |  i | | |  d | d  t |  7} n | d  j	 o$ | t |  i | |  i	 d  7} n | d  j	 o | t |  i
 | |  7} n |
 oD | t |  i | |  i d  7} | t |  i | |  i d  7} n | S(   Ng?i   g        g|Gz?(   RY  Rf   R   t   arctan2Rb  R{  Rg   R`   Rh   t	   dd_in_kpcR  Ri   t   dpmraRj   t   dpmdec(   R.   Rf   Rg   Rh   R  Ri   Rj   t   streamwidtht   streamlengtht   angle_offsett	   includepmt   fehvarRl  R   (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   foreground_data_lnprob[  s    !$ $g      $@c         C   s  d } d } t  |  | | | i | i  } d t |  GH| | } t | i d d } t | i d d }	 t |	 d |  t |	 d |  f }	 | i | d j | i | d j | i |	 d j | i |	 d j } | | } d t	 |  GHt | i
 d d }
 t | i d d } | i
 |
 d j | i
 |
 d j | i | d j | i | d j } | | } d	 t	 |  GH| t | d
 | |	 |
 | f S(   Nigffffffs   %i within RA,Dec rangeRM   gGz?i    i   s   %i within dist,FeH ranges   %i within pm rangei   (   t   points_within_radiusRf   Rg   R#   RO   Rh   R  Rb   Ra   R   Ri   Rj   R   (   Rf   Rg   R.   R]   t   fehmint   fehmaxR<   R1   Ru   t   fehrangeRc  Rd  (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   make_6d_cuts  s"    
&F
F
c         C   s   | t  |  | d d | i | i  } d } t t t | | i |  | i t t |    d t t |   i	 t
  } t t |   | j  S(   Ni   i
   g      4@g       @(   t   points_within_radius_rangeRf   Rg   RI   R   R|  Re   RT   t   floatR   RP   R   R   (   Rf   Rg   R.   t   ringt   nazbinst   anglebin(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   is_edge_of_survey  s    %!c         C   sn  d } d } t  | d | d d t d | d } t  | d | d d t d | d } t |  d t |  d } t |  i  i t  d } t | d f  }	 t | d d f  }
 t |  } d } xt t	 | d  | d   D]o\ } \ } } xZt t	 | d  | d   D];\ } \ } } |  i
 | j |  i
 | j |  i | j |  i | j } |  | } t | i | i  } t |  d j  o2 t |  } t d d g d d g g  | d <n | | | <| d |	 | d f <| d |	 | d f <| d |
 | d  d   d  d   f <t |  t t |    | | | | | | <| d 7} qWq W| | |	 |
 f S(	   Ni   i   i    i   t   endpointt   numii   (   R   R   R   t	   ones_likeRf   R   RP   R   R   R   Rh   R  RQ  Ri   Rj   t   listR   R  (   R1   Ru   R  t   distbinst   fehbinsR   R   t   NCRf  Rg  Rh  Rk  R=   t   ynumR   R   t   xnumR   R   R<   RA   t   MC(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   build_component_model  s6    ''  6
&
#0c   -      C   s  t  t |  i   } t t |  i   } t  t |  i   } t t |  i   } t |  i  |  _ t |  i  |  _ t |  i  i	 t
  |  _ | d } d } d } xt | |  D]} |  i | j |  i | d j }	 xt | |  D]}
 |	 |  i |
 j |  i |
 d j } t |  d j  o q n d G|
 Gd G| Gd Gt |  GHt |
 d	 | d	 |   } | |  | _ | o d
 GHq n t |
 d	 | d	 |   \ } } } } } } t | | |  \ } } } } t | | | | | | | |  } d Gt |  Gt |  Gt |  GHxyt |  D]k} |  t |  } d } d t | t  } t | | i | i | i | i | i | i | | 	 } d Gt |  Gt |  Gt |  GHd t d d. d	  } t g  } | D]5 } | t t | t |  d | t |    q~  }  t |   }! t |  }" |  |! |" |  i | <| |! |  i | <|  i | d j  o q'n t t  d  t  t | |  |  |! d j   d  }# t  t | |  |  |! d j   d }$ d t |# |$ d d  } g  }% | D]5 } |% t t | t |  d | t |    q~% }  t |   }! | |! }& |  |! |" |  i | <| |! |  i | <| d |  i | | f }' t!   t" | |  d  t# d  t$ d  d | i | i f }( t% |(  t& t |   d t |   d  t' d |# d |$  t( |' d  t!   t) | i | i d d d d }) t) | i | i | i t* t+ | i   |) g | i | i | i |) g d  d! d" t) | i g | i g d# d$ d d% d& t# d'  t$ d(  t |&  | t d |&  | }* t d	 t, |& t- |    }+ d) G|& GHd* G|+ GHt. |*  |+  }, t) | i |, | i |, d+  t% |(  t( |' d,  d- G| GHt/ t0 i1 |  t0 i2  |  q'Wq Wq Wd- G| GHt/ t0 i1 |  t0 i2  |  d  S(/   Ns   -brutish.pickleg       @g      4@g      ?i   t   rlot   dlot   Nstarsg      ?s   edge of survey.t   bgg       @t   fgg      $@iig?i   gh㈵>i   g-C6?g{Gz?s
   -%.5f-%06is   r-R   s   log(p(data))s   dist=%.1f, [FeH]=%.1fi
   s
   -alpha.pngs   k,g333333?s   k-R   i   t   koR   R,  R   s   RA (deg)s	   Dec (deg)s   best alpha:s   N fg:s   k.s
   -radec.pngs   Saving result tog(3   RI   Ra   Rf   RJ   Rb   Rg   RY  t   deltalogprobt	   bestalphaR   t   boolt   edgeofsurveyRQ   R#   R  R  R  Rs  R-  R$   RP   R   R   R  Rh   R  Ri   Rj   R   R`   R_   t   argmaxt   log10R   t   semilogxR'   R(   t   titleR&   R%   R
   R   Re   RT   R   R   R   R  R  R  R  (-   R.   t   overall_prefixt   ralot   rahiR   R   t   picklefnR  R  t   DR  RI  t   eosR1   t
   solidangleRu   R  Rc  Rd  Rf  Rk  Rg  Rh  R  t   jbosst   bosst   streamwt	   streamlenR  t   alphasR2  R   t   pst   bestit   strawmant   loalphat   hialphaR5  t   bestaR!  t   titt   dyrt   logfract   NFGt   IN(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   brutishly_find  s    
   $,!# #
E7(B



!0'(

" 		
	(	c   O      C   s  d t  |   GHt o t |  i  } t t d t d |  i | d | d | d    } |  i } |  i } |  i	 }	 |  i
 }
 t t |	 d |
 d  i    \ } } t   i   \ } } d d | | } t |  i  } t |  i  } n t | | | |  i |  i  } d t |  GH|  | } t | i d d	 } t | i d d	 } t | d d
  t | d d  f } | i | d j | i | d j | i | d j | i | d j } | | } d t  |  GHt   t | i | i d dR d | | g \ } } } } } t d  t d  t | d | d  d | d | d  d  \ } } t   t   } t   \ } } x t | i   | i   | i    D] \ } } }  xX dS dT dU dV g D]D \ }! }" t | |! | | |" | t |   d d d d d d qWt | | t |   d dW d d d d qWt |  t | d  t  |  d t  |  d }# t  | i  i! t  d }$ t" |# d f  }% t" |# d d f  }& t" |#  }' t   t | i	 d d d d }( t | i
 d d d d }) d }* xt# t | d  | d   D]\ }+ \ }, }- xt# t | d  | d   D]`\ }. \ }/ }0 | i |/ j | i |0 j | i |, j | i |- j } | | } t$ t  |  d t  |  d t  |  d |+ t  |  d |. d  t% | i	 | i
 d   t& | i	 | i
  }1 t  |  d j  o2 t' |1  }1 t( d d g d d g g  |1 d <n t) |1   }2 |2 i* d!  |2 i+ d"  |2 i, d#  t |( d |( d d |) d |) d d t  |  d dX d d d d t- |(  t. |)  |+ d j o
 |. d j p t/ g  g   t0 g  g   n |* |$ | <|1 d |% |* d f <|1 d |% |* d f <|1 d |& |* d  d   d  d   f <t  |  t1 t  |   |0 |/ |- |, |' |* <|* d 7}* qQWq!Wt2 d$ d% d& d%  t | d'  t3 t  |   }3 t4 | |$ t5 | d |' |% |&  }4 d( Gt |4  Gt6 |4  Gt |4  GHt ot7 t8 t9 d d) d)  d* dY   }5 d+ Gt |5  GHd) }6 d) }7 t: |6 |7 d f  d* }8 t" |6 |7 d d f  }9 dZ |9 d  d   d d f <d[ |9 d  d   d d f <t t9 d |6 |6  t9 d |7 |7   \ } } t7 t; t< | i   | i   f  i= |8 |9   }: d, Gt |:  GHn t> t? | | | i | i   }; xt# |; d*   D]
\ }< }= | t |=  }3 t@ | |3 i |3 i |3 i |3 i |3 i	 |3 i
 d- d | 	 }> d. Gt |>  Gt6 |>  Gt |>  GHd/ tA d0 d\ d2  }? t( g  }@ |? D]5 }A |@ t tB |A t7 |>  d- |A t7 |4    q 	~@  }B t   tC |? |B d3  t d4  t d5  d6 |3 i |3 i f }C tD |C  t. t |B  d# t |B  d  t | d7 |< d8  tE |B  }D |D d j o|B |D |B d d j oxt   t tF d9  tF t |? |B |B |D d/ j   d  }E tF t |? |B |B |D d/ j   d }F d/ tA |E |F d: d;  }? g  }G |? D]5 }A |G t tB |A t7 |>  d- |A t7 |4    q
~G }B tE |B  }D |? |D }H tC |? |B d3  t d4  t d5  tD |C  t. t |B  d# t |B  d  t- d/ |E d/ |F  t | d7 |< d8  t   t% | i | i d  d4 d< d1 }I t% |3 i |3 i |3 i	 tG tH |3 i   |I g |3 i |3 i |3 i
 |I g d= d> d? t% |3 i g |3 i g d@ dA d# dB d! t dC  t dD  tB |H  |> tB d- |H  |4 }J t d2 tI |H t  |    }K dE G|H GHdF G|K GHt> |J  |K  }L t% | i |L | i |L dG  tD |C  t | d7 |< dH  t   t% | iJ | iK | iK d  d4 d< t% |3 iJ |3 iK g |3 iK g d@ dA d# dB d! t dI  t dJ  t% | iJ |L | iK |L g | iK |L g dG  tD |C  t | d7 |< dK  qqWd  Sd2 }M x tA d dL |M  D] }N |  i |N j |  i |N |M j } dM t |  |N f GHt |  d j o qn t   tL | | | | |	 | |
 | | | dN dO dP | d4 d2 t- |  t. |  t dC  t dD  t | dQ |N d  qWd  S(]   Ns
   %i objectsi   i    i   i  g      @s   %i within RA,Dec rangeRM   gGz?igffffffs   %i within dist,FeH rangeR   i   i   R   s
   dist (kpc)s   [Fe/H] (dex)ig       @R   t   kt   fontsizei   t   horizontalalignmentt   centers   .pngRK   g{Gzt?RL   gףp=
?s   k,R   R  i
   t   wspaceg?t   hspaces   -gridpmra.pngR  id   i2   s   test1d:s   test2d:g      ?R  g      $@ig?g      ?s   r-R   s   log(p(data))s   dist=%.1f, [FeH]=%.1fs	   -boss%03is
   -alpha.pnggh㈵>g-C6?g{Gz?g333333?s   k-R   i   R  R   R,  s   RA (deg)s	   Dec (deg)s   best alpha:s   N fg:s   k.s
   -radec.pngs   g - r (mag)s   r (mag)s   -colormag.pnggQ@s   %i with dlo=%fR   R   R   s   -%.1f(   i   i   (   ii(   ii   (   i   i   (   i   i(   i    i   i    (   i   i    i    id   id   id   g(M   R   R   RO   R  t   bluegrayredt   minimumR.  Rf   Rg   Ri   Rj   R   R   R   R   R  R#   Rh   Rb   Ra   R   R   R'   R(   R   t   colorbarRW   t   get_pixel_scalesR   t   textRP   R
   R  R   R   R   R  R   RQ  R  R   RX  R   t   set_edgecolort
   set_zorderR%   R&   RU   RR   R  t   subplots_adjustR   Rs  R   R-  R_   Rb  R   R   Ra  R    R   R   t   radecdotproductsR  RQ   R`   R  R  R  R  Re   RT   R   R   R]   R   (O   R.   R!  t   ract   deccR]   R  R   R  t   Yt   Ut   VR;   R   R   R   RC  RE  R<   R1   Ru   R   t   nil1RF  R   R   R   R   R>   t   xppt   yppR@   RA   t   nR|   R}   R  Rf  Rg  Rh  Rk  t   pmrart   pmdecrR=   R  R   R   R  R   R   R  R   R  R  t   test1dt   NXt   NYRO  RZ  t   test2dt   JR   R  R  R  R2  R   R  R  R  R  R  R5  R  R  R  R  R  t   dstepR  (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   candidate_plot  sP   9				*
&F


5	%  <,
  6
H&H


#0##$-3" #
E


!&7(B



!0'(

" 		
#/

/
  <



c         C   s  | |  } t  | d t |  f  } | i   } d G| GHd | j o | i | _ | i d  n | ou d GHt i d  t i t	 |   } | i
 | | _
 | i | | _ | i | | _ | i | | _ | d 7} n t | i | i | i
 | i  \ } } | _ | _ | i
 | i | _ | _ t | i | i | i | i
 | i  \ | _
 | _ t | i | i | i
 | i  \ | _ | _ | _ | _ | i | _ | i d  t | i  | _ t | i | i  | _ | | f S(   Ns   .pickles   data file columns:t   d_kpct   d_in_kpcs*   Scrambling proper motions and distances...i*   s	   -scramble(   R  t   text_table_fieldst   columnsR  R  t   delete_columnRc   t   seedt   permutationR   Ri   Rj   R  t   pm_radectolbRf   Rg   R  R  t   old_pmrat	   old_pmdect   remove_solar_motionR  R  R  R  Rh   R  R   (   t   datafnR!  t   scrambleR.   t   colsR<   R  R  (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   read_data_file  s2    
	339c         C   s)   t  |  | |  \ } } t | |  d  S(   N(   R  R  (   R  R!  R  R.   (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   analyze_data_file  s    c    1         s	  d d k  l   dC }  t d d g  } t |  } t d } t i i |  pt t	 i
  }  t t	 i  } t t	 i  } t ot   t t t t	 i d t	 i d  t t	 i d t	 i d    } d	 Gt t t t	 i d t	 i d  t t	 i d t	 i d    GHt t t	 i d t	 i d  t t	 i d t	 i d   } t | d
 d  t d
 d g d
 d g d  t d  t   t t t t	 i d t	 i d  t t	 i d t	 i d    } d	 Gt t t t	 i d t	 i d  t t	 i d t	 i d    GHt t t	 i d t	 i d  t t	 i d t	 i d   } t | d
 d  t d
 d g d
 d g d  t d  t   t i t  t	   } t	 i | } t	 i | } t! t	 i
 t	 i | |  \ }	 }
 } } t t	 i | t	 i | t	 i | t	 i |  t | d
 d  t d  n t ot t	 i"  } t t	 i#  } d
 } t$ i%   } xMt& d d d  D]9} d | } t   t	 i' | j  } t	 | } t( | i" | i# | i | i d | \ } } | d
 j o
 | } n t) d  t* d  t+ d |  t, |  t- |  t t d | d  t   t( | i" | i# | i | i d | t) d  t* d  t+ d |  t, |  t- |  t t d | d  qWt$ i%   } d G| | GHn t okd GHt   t( t	 i
 t	 i t t  \ } } t. |  t) d  t* d   t+ d!  t, |   t- |  t t d"  t   t( t	 i
 t	 i t	 i t	 i d | t. |  t) d  t* d   t+ d#  t, |   t- |  t t d$  t   t( t	 i" t	 i# t t  \ } } t) d  t* d  t+ d!  t, t t	 i"   t- t t	 i#   t t d%  n d& GHx d' d( g D] } t	 i' | j  } t	 | } d | } t/   \ } } | d) 7} | d) 7} t   t | i
 | i d* | d+ | d+ f t) d  t* d   t. |  t, |   t- |  t t d, | d  qoWt0 t	  d- } | } d. } d- } | } d/ } t1 t	 i
 t2 t3 t	 i   | t	 i | t	 i4 | t	 i | t	 i | t	 i' | f  i5   } d0 GH  i6 |  }  |  GHd1 G| GH  i7 |  |  }! d2 G|! GHn d3 G| GH  i8 |  }  t o t d4 }" t i i |"  pf t1 t	 i
 t2 t3 t	 i   t	 i f  i9 } d0 GH  i6 |  }# |# GHd1 G|" GH  i7 |# |"  }! n   f d5   }$ t: t d6 |$ |# d f  }% d7 t  |%  GHn x d8 g D] }& t d9 |& }'   f d:   }( t: |' |( |  |& f  }) d7 t  |)  GHt; |) t  t	   \ }* }+ }, }- }. d; G|. i   GHh  t	 d< <|. d= <|* d> <|+ d? <}/ d@ }0 dA GHt< t= i> |/ t= i?  |0  dB GHt@ iA d
  qWd  S(D   Ni(   t   spherematch_ci   i  ii?   s   .kdi   s   largest |pm| difference:i    id   i   s   r--s   magnitudes-old.pngs   magnitudes.pngs   dotproducts.pnggffffffg gs   %.1fR   s   $\ell$ (deg)s   b (deg)s9   Proper motions, corrected for solar motion, [Fe/H] < %.1fs   -allsky-grid-pmlb-s   .pngs=   Proper motions, not corrected for solar motion, [Fe/H] < %.1fs   -allsky-grid-oldpmlb-s   time:s   Plotting vector fields...s   RA (deg)s	   Dec (deg)s*   Proper motions, no solar motion corrections   -allsky-grid-oldpm.pngs'   Proper motions, solar motion corrections   -allsky-grid-pm.pngs   -allsky-grid-oldpmlb.pngs   Making summary plots...ggffffffi   R   i   s   -allsky-ra-dec-g      @g?g?s   Building kdtree...s   Writing kdtree tos   rtn=s   Reading kdtree froms   -xyz.kdc            s3   d GH  i  |  |  |  \ } } d Gt |  GH| S(   Ns   Matching...s   Done!  Got %i pairs(   t   matchR   (   t   kdR]   RK  R;   (   R  (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   match_radec  s    s   -radecmatch.pickles   Got %i matchesg      ?s   -match-%.2f.picklec            s1   d G| Gd GH  i  |  |  |  \ } } d GH| S(   Ns   Matching with radiuss   ...s   Done!(   R  (   R  R]   RK  R;   (   R  (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   match_6d  s    s   Max density:R.   R0  R   R   s   state.pickles   pickling...s   done.(   i   i  (B   t   astrometry.libkd.spherematchR  R   R  R!  R   R  R  RO   R.   Rf   Rg   R   R   R  t   absR   R  R  R  R  Rb   R   R   R   R
   R  R  Ri   Rj   Rc   R  R   R  R  R  t   timet   clockRQ   R  R   R'   R(   R  R%   R&   R\   t   get_axes_pixel_sizeR)  R    Re   RT   Rh   t	   transposet   kdtree_buildt   kdtree_writet   kdtree_openR   R  RN  R  R  R  R  t   syst   exit(1   RC  RE  RD  t   kdfnR<   R   R  t   pmra2t   pmdec2R  RF  t   pml2t   pmb2R/   R2   R   t   t0t   fehcutt   infixt   thisxR   t   vt   t1t   wt   ht   rascalet   decscalet	   distscalet	   pmrascalet
   pmdecscalet   fehscaleR  R  t   rtnt   kd2fnt   kd2R  t   Mt   radiusR   R  RK  R   R   RL  RM  R0  t   statet   statefn(    (   R  sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   OLD_DELETE_ME_analyze_data_file  s@   
FI!
FI!
' 
-




%



!





%





!


 


'





 



		
.	
 $		c         C   s  d } t  t |   } t |  } xXt |  D]J\ } } | | j | | j }	 | |	 }
 |  i | t t |  i |   } |  i | } |  i |
 t t |  i |
   } |  i |
 } t |  i	 | |  i
 | g  } | t |  :} t | | f  i } t | | g  i } t t | | |   | d j  } t |  | | <| d d j o t |  | d |  | GHq2 q2 Wt |  | d  | S(   Ng      ?g       @i  i    s	   tube-%06it   tube(   R   R   R   R   Rf   Re   RT   Rg   R   Rj   Ri   Rt  R    R   Ru  Rv  R#   RJ  (   R.   R   R   R0  R  t   tubedensityR<   t   iit   leftR  t   rightt   u0t   v0t   uR  t   pmortht   uvt   uv0t   intube(    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   tube_density  s,     
$$!#c          C   s  t  oyt d t }  d  } t i i |   o0 y" d G|  GHt i t	 |    } Wq^ q^ Xn | d  j oN d GHt
 t t t t i   } d GHd G|  GHt t i | t i  |   n | \ } } t   xf | D]^ } t |  d j  o q n t |  } t t i | t i | d t t i |  t  q Wt d  t d	  t t i  } t |  t t t i   t  t t i   t! t d
  t   xf | D]^ } t |  d j  o qn t |  } t t i" | t i | d t t i |  t  qWt d  t d	  t t i  } t t t i"   t  t t i   t#   t! t d  t$ i% d  t i d j t i d j  t i d j t i d j  } d Gt& g  } t' | |  D] }	 | t | |	  q~  GH| t' | |  t( g  }
 t' | |  D] }	 |
 t | |	  q~
  } d G| GHd Gt |  GHd Gt) i*   Gd Gt) i&   GHt) | t) | i*   t) | i&   t) | i*   } d Gt) | i*   Gd Gt) | i&   GHt | t } t | t } t+ d d d g g  i, } t+ d d d g g  i, } | | | | } t+ g  } | i, D]D } | d t- | d d  t- | d d  t- | d d  f q5~  } d d | } d Gt. |  GHd Gt t' |   GHd  } d  GHt   t/ t i | t i | t i | t i0 | t i1 | t i2 | t i3 | | | d! t  d" | 	t d# t d$ }  t! |   d% G|  GHt4   } x g  } t' | |  D] } | | | qn~ D]j } t |  d j  o qn d& Gt |  GHt |  } t t i | t i | d' t t i |   qWt o x | D]| } t | j } t | } t | } t5 t6 t i | t i | f  t6 t i | t i | f  d( d) d* d+ d d, d qWn t4 |  t! t d-  t o t/ t i t i t i t i0 t i1 t i2 t i3 d. d/ t t i d j t i d j  t i d0 j t i d1 j  } t/ t i | t i | t i | t i0 | t i1 | t i2 | t i3 | | | | | d2 t 
 qn d  S(3   Ns   -fof-%f.pickles   Trying to read pickles   starting fof...s   done fofs   Writing picklei   g      $@s   RA (deg)s	   Dec (deg)s   -allsky-worms.pngs   RA*cos(Dec) (deg)s   -allsky-worms-2.pngi    i   i   i3   i=   s   Largest group touching window:s   largest group:s   size:s   full-sky density min:s   max:s   spatial cut density min:g      ?s   #%02x%02x%02xgo@i   i   g?s    number of points in spatial cut:s   number of unique colors in cut:s   making plots...Rm   Rn   s   -worm-%fs   .pngs	   done plots   Highlighting group of lengthg      I@R   R   R1   R   R   s   -highlight.pngt   suffixs   -allsky%.1fi(   i<   s   -zA-%.1f(7   R   R!  R  R   R   R  R  R  R  R  R   RL  RM  R   R.   Rf   R  R  R  R   R  R   R  R   Rh   R   R'   R(   RO   Rg   R\   R%   R&   R
   R   R   R  R  Rb   R   R  R0  Ra   R   R   RP   R#   R   Ri   Rj   R~  R  RW   R   R    (   R   t   FOFt	   fofgroupst	   groupnumsR   t   LGRV   t   ZR2  t   giR5  t   largestgroupt
   reldensityt
   leftinsidet   rightinsidet   colorlot   colorhit   colorsR7  R=   R  t
   radecpairsR>   R9  RD   t   indxR<   t   LRI  (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   oldjunk  s    		  


 

6>M	4%aR
		0  

 !
;6t   bgrg      ?g      ?t   redt   greent   bluet   ColorbarMappablec           B   s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         C   s   | |  _  d  |  _ d  S(   N(   R   R   Rt  (   t   selfR   (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   __init__  s    	c         C   s   d  S(   N(    (   RB  (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   autoscale_None  s    c         C   s   d S(   Ng      ?(    (   RB  (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt	   get_alpha  s    c         C   s   d  S(   N(    (   RB  R.   (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   add_observer  s    c         C   s   d  S(   N(    (   RB  R.   R1   (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt   set_colorbar  s    (   t   __name__t
   __module__RC  RD  RE  RF  RG  (    (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyRA    s
   				(   t   ScalarMappable(   t	   Normalizeg{Gz?R  g      @g?c         C   sF  t  |  i |  i d d | d | d d x t t |   D] } | | }	 t t d t d |	 i d d    }
 t  |	 i |	 i | |	 i	 t
 t |	 i   g |	 i |	 i | |	 i g d
 d | |	 i d |
 d | d d t  |	 i g |	 i g d d |
 d | d | d d q; Wt t |  i   t t |  i   d  S(   Nt   ,R   R   R   i  i   i    g       gffffffR   R   i  t   oR,  R   i  g433333?(   R   Rf   Rg   R   R   t   bgrmapRa   Rb   R  Ri   Re   RT   Rj   Rh   R%   RO   R&   (   R.   t   streamt   xalphat   xcolort   lwscalet   dotmsR  t   streamalphaRD   RY   R=   (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pyt
   amber_plot  s    ( 
)0-8t   __main__t   dpiid   R  R  t   reruns'   1_4kpc_metal_poor_with_PM_July23_09.txtt    s	   -scramblet   brutes   -brutish3.pickles#   Recomputing edge-of-survey flags...gMbP?i   R  s	   fixing %iR   s
   %i streamsg      4@R  g       @R  g      >@g-C6?g{Gz?s   r-R   s   log(p(data))s+   (RA,Dec)=(%.1f,%.1f), dist=%.1f, [FeH]=%.1fi
   s   -%06i-alpha.pngs   -brutish4.pickles   k.s
   Best alphas   Delta log probt	   alphaprobs   .pngt   vming       t   vmaxgfffffft   ambert   nameRf   t   formatR  R   Rg   Rh   R  Ri   Rj   t   dlogprobt	   amplitudes
   cands.fitst   clobbers;   (RA,Dec)=(%.1f,%.1f), pm=(%.0f,%.0f), dist=%.1f, [FeH]=%.1fs   k,g333333?g?s   k-R   i   R  R   R,  R   s   RA (deg)s	   Dec (deg)s   best alpha:s   N fg:gGz?g)\(?g      ?RP  RQ  s   0.4RR  g      @RS  R  g?RT  R   R   i  g?g      @gffffff?t   radecs   -%06is
   Dist (kpc)s   [Fe/H] (dex)t   distfehs   pm RA (mas/yr)s   pm Dec (mas/yr)s   0.5ii2   t   pm(   i  i  (   i   i   (   g        ii    (   g      ?i    i    (   g      ?i   i(   g        ii    (   g      ?g      ?g      ?(   g      ?i    i(   g        ii   (   g      ?i    i    (   g      ?i    ig{Gz?g{Gz?(   R  t   os.pathR   R  t
   matplotlibt   uset   astrometry.util.pyfits_utilst   pyfitsR	   t   matplotlib.linesR   t   astrometry.util.starutil_numpyt   astrometry.util.filet   astrometry.util.plotutilsR   t   numpy.randomRc   R   t   cPickleR  R   t   scipy.linalgR   t   matplotlib.patchesR   R1  R   t   updateR
   R   RE   RO   R\   R   R   R   R   R   R   R   R/  R   R   R  R  R)  RJ  RN  RQ  RX  Ra  Rb  Re  Ri  Rm  Ro  Rs  R{  R  R  R  R  R  R  R  R  R  R*  R<  t   LinearSegmentedColormapRN  t   objectRA  t   matplotlib.cmRJ  t   matplotlib.colorsRK  RU  RH  t   argvR   R  R  R  RX  R   R!  R
  R  R  R  R  R.   R  R  R<   R   R   R  R#   R$   RD   Rf   Rg   R   R  R  R  R  R  R1   R  Ru   R  Rc  Rd  Rf  Rk  Rg  Rh  R  Ra   R-  Rb   R  R  R   R   R  Rh   R  Ri   Rj   R  R  R  R  RQ   R  R2  R   R`   R_   R  R  R  R  R   R  t   axhlineR'   R(   R  R  R&   R%   t   outpicklefnRO  R   t   cmRt  t   bossesR   R  t	   new_tablet   Columnt   tt   writetoR  Re   RT   R  RP   R   R  R  t   axest   subaRW   R>   t   axvlineRU   RR   t   subbR  t   dra(    (    (    sA   /home/dstn/astrometry/projects/itsfullofstreams/sanitycheckrix.pys   <module>   s  





		6
4	E			E		6	;				 									
		j	 		=	w

  ') 
-##B



"
! )




$' 
*		.0'(

" 		
	
2(



(




