ó
¬ÿIc           @   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 „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 d d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d d d „ Z d d d „ Z d d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d
 d d  „ Z  d
 d! „ Z! d" „  Z" d# d$ „ Z# d% „  Z$ d& „  Z% d' „  Z& d( „  Z' d S()   iÿÿÿÿ(   t   divisionNc   	   	   C   sg   g  } xZ |  D]R } xI | D]A } x8 | D]0 } x' | D] } | j  | | | | g ƒ q4 Wq' Wq Wq W| S(   N(   t   append(	   t   Lst   Tst   alphast   kst	   task_listt   Lt   Tt   alphat   k(    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   make_task_list   s    )c         C   s&   |  \ } } } } d | | | | f S(   Ns   L_%s_T_%s_alpha_%s_%s.txt(    (   t   taskR   R   R	   R
   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   task_to_file_name(   s    c         C   s&   |  \ } } } } d | | | | f S(   Ns   L=%s T=%s alpha=%s k=%s(    (   R   R   R   R	   R
   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   task_to_desc-   s    c         C   sX   d | t  |  ƒ f } t j d | ƒ d k r3 d St j d | ƒ d k rP d Sd Sd  S(   Ns   %s/%ss   test -f i    s   grep -q rho_infty_T %s i   (   R   t   ost   system(   R   t   data_dirt   path(    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   is_task_complete2   s    c         C   sX   d | t  |  ƒ f } t j d | ƒ d k r3 d St j d | ƒ d k rP d Sd Sd  S(   Ns   %s/%ss   test -f i    s   grep -q rho_infty_T %s i   (   R   R   R   (   R   R   R   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   is_task_a_fragment<   s    c         C   s7   d } x* |  D]" } t  | | ƒ r | d 7} q q W| S(   Ni    i   (   R   (   R   R   t   countR   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   get_num_tasks_completeF   s
    c         C   s'   t  |  | ƒ } t |  ƒ } d | | S(   Ng      Y@(   R   t   len(   R   R   t   numert   denom(    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   get_percent_of_tasks_completeN   s    i   i    c         C   s9  d } d } d } x° |  D]¨ } d | t  | ƒ f }	 t j d |	 ƒ d k rm | d 7} | rÁ d |	 GHqÁ q t j d |	 ƒ d k r¥ | d 7} | rÁ d |	 GHqÁ q | d 7} | r d |	 GHq q W| | | }
 d	 | |
 } d	 | |
 } d	 | |
 } Hd
 | |
 | f GHd | |
 | f GHd | |
 | f GHHd  S(   Ni    s   %s/%ss   test -f i   s   Missing:  %ss   grep -q rho_infty_T %s s   Fragment: %ss   Complete: %sg      Y@s    # Complete:  %6d / %6d = %8.2f%%s    # Fragment:  %6d / %6d = %8.2f%%s    # Missing:   %6d / %6d = %8.2f%%(   R   R   R   (   R   R   t   print_fragmentst   print_completest   print_missingst   nmissingt	   nfragmentt	   ncompleteR   R   t   ntotalt   pmissingt	   pfragmentt	   pcomplete(    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   print_task_list_reportT   s2    


c         C   sg   d } d } x4 |  D], } t  | | ƒ r5 | d 7} n  | d 7} q Wd | | } d | | | f GHd  S(   Ni    i   g      Y@s   %6d / %6d = %8.2f%%(   R   (   R   R   R!   R    R   R$   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   print_short_task_list_reportu   s    c         C   sX   d | t  |  ƒ f } t j d | ƒ d k r3 d St j d | ƒ d k rP d Sd Sd  S(   Ns   %s/%ss   test -f i    s   grep -q rho_infty_T %s i   (   R   R   R   (   R   R   R   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyR      s    c         C   s:   g  } x- |  D]% } t  | | ƒ s | j | ƒ q q W| S(   N(   R   R   (   R   R   t   incompletesR   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   keep_incompletes   s
    c         C   s:   g  } x- |  D]% } t  | | ƒ r | j | ƒ q q W| S(   N(   R   R   (   R   R   t	   completesR   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   keep_completes”   s
    c         C   s…   g  } x$ t  d | ƒ D] } | j g  ƒ q WxQ |  g  k r€ x> t  d | ƒ D]- } |  g  k rb Pn  | | j |  j ƒ  ƒ qL Wq0 W| S(   Ni    (   t   rangeR   t   pop(   R   t   num_processorst   child_task_listst   i(    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   split_task_listœ   s    c           C   s   t  j d ƒ S(   Ns   %a %b %d %Y %I:%M:%S %p %Z(   t   timet   strftime(    (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   get_timestamp¨   s    c           C   s   t  j ƒ  d S(   Ni   (   t   platformt   uname(    (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   get_hostname¬   s    ií  c         C   s"   y t  j |  | ƒ Wn n Xd  S(   N(   R   t   mkdir(   t   dirnamet   mode(    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   mkdirp±   s    c      	   C   sp  |  \ } } } }	 t  ƒ  }
 t |  ƒ } t j d ƒ d k r] t j d |
 IJt j d ƒ n  t j d | ƒ d k r— t j d | IJt j d ƒ n  t |  ƒ } d | | f } t |  | ƒ rä | rÔ d | GHqä d	 | GHd  Sn  d
 |
 | f GH| rd } n d } d | | | | | | | | f } t j | ƒ } | d k rlt j d | | f IJt j d ƒ n  d  S(   Ns   test -f __stop__i    s   __stop__ at %s.i   s
   test -f %ss   No executable "%s".s   %s/%ss#   Already complete but re-running: %ss   Already complete: %ss   %s %ss   dryrun=1t    s$   %s %s %s L=%s T=%s alpha0=%s > %s/%ss   Exiting due to rc %d from %s.(	   R3   R   R   R   t   syst   stderrt   exitR   R   (   R   t   exe_patht   exe_argsR   t   force_re_dot   dry_runR   R   R	   R
   t	   timestampt   taskdesct	   data_filet	   data_patht   drstringt   cmdt   rc(    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   execute_taskÊ   s4    			c         C   s8   t  | ƒ x' |  D] } t | | | | | | ƒ q Wd  S(   N(   R:   RJ   (   R   R?   R@   R   RA   RB   R   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   execute_task_listñ   s    
c         C   s°   t  | ƒ t |  | ƒ } g  } xi t d | ƒ D]X }	 t j ƒ  }
 |
 d k rz t | |	 | | | | | ƒ t j d ƒ q/ | j |
 ƒ q/ Wx | D] }
 t j	 |
 d ƒ q’ Wd  S(   Ni    i   (
   R:   R0   R+   R   t   forkRK   R<   R>   R   t   waitpid(   R   R?   R@   R   t   num_cpusRA   RB   t   ctlst   pidsR/   t   pid(    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   execute_mp_task_listú   s    
c         C   só   y t  | d ƒ } Wn) t j d | d IJt j d ƒ n Xd } xƒ | j ƒ  } | d k rd Pn  t j d d | ƒ } d |  } t j | | ƒ rH | j ƒ  t j d	 d | ƒ } | j	 ƒ  } | d
 SqH t j d |  | f IJt j d ƒ d  S(   Nt   rs   Couldn't open "s   " for read.i   i    R;   s   \n+$s   ^#.*%s s   \s+$iÿÿÿÿs   Couldn't find "%s" in "%s".(
   t   openR<   R=   R>   t   readlinet   ret   subt   matcht   closet   split(   t   RV_namet	   file_namet   file_handlet   got_itt   linet   patternt   fields(    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   get_random_variablef  s(    


c         C   s#   d | t  |  ƒ f } t | | ƒ S(   Ns   %s/%s(   R   Rb   (   R   R[   R   R\   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   get_random_variable(  s    c         C   s   d g |  S(   Ng        (    (   R   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   allocate_1d_array-  s    c         C   s=   g  } x0 t  d |  ƒ D] } t | ƒ } | j | ƒ q W| S(   Ni    (   R+   Rd   R   (   R   t   Mt   rvR/   t   array_1d(    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   allocate_2d_array0  s
    c         C   s@   g  } x3 t  d |  ƒ D]" } t | | ƒ } | j | ƒ q W| S(   Ni    (   R+   Rh   R   (   R   Re   t   NRf   R/   Rg   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   allocate_3d_array7  s
    c         C   sÖ   t  |  ƒ } t  | ƒ } t  | ƒ } t | | | ƒ }	 x™ t d | ƒ D]ˆ }
 |  |
 } xu t d | ƒ D]d } | | } xQ t d | ƒ D]@ } | | } | | | | g } t | | | ƒ |	 |
 | | <q† Wqf WqF W|	 S(   Ni    (   R   Rj   R+   Rc   (   R   R   R	   R   R[   R   t   nLt   nTt   nkt   RVst   LiR   t   TiR   t   kiR
   R   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   get_alpha_RVs?  s    


*c         C   s…   t  |  ƒ } t  |  d ƒ } | } | } t | | ƒ } xG t d | ƒ D]6 } x- t d | ƒ D] } |  | | | | | <q] WqG W| S(   Ni    (   R   Rh   R+   (   t   inputt   in_num_rowst   in_num_colst   out_num_rowst   out_num_colst   outputR/   t   j(    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   get_transposeO  s    c   	      C   s[   | s t  |  | | | | ƒ St  |  | | | | ƒ \ } } } t | ƒ } | | | g Sd  S(   N(   t   array_3d_to_2d_auxRz   (	   t   f_of_LTkR   R   R   t   do_3ht   xposet   array_2dt   L_labelst   T_labels(    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   array_3d_to_2d^  s    c         C   s  t  |  ƒ } t  |  d ƒ } t  |  d d ƒ } | rI | } | | }	 n | | } | }	 t | |	 ƒ }
 g  } g  } | rBxu t d | ƒ D]d } d } xU t d | ƒ D]D } x; t d | ƒ D]* } |  | | | |
 | | <| d 7} q¼ Wq¦ WqŠ Wx | D] } | j | ƒ qù Wxô | D]$ } x | D] } | j | ƒ q$WqWnÅ d } xo t d | ƒ D]^ } xU t d | ƒ D]D } x1 t d | ƒ D]  } |  | | | |
 | | <q„W| d 7} qnWqXWx, | D]$ } x | D] } | j | ƒ qÎWqÁWx | D] } | j | ƒ qðW|
 | | g S(   Ni    i   (   R   Rh   R+   R   (   R|   R   R   R   R}   Rk   Rl   Rm   t   num_rowst   num_colsR   R€   R   Ro   Ry   Rp   Rq   R   R   R
   R/   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyR{   j  sF    
	c         C   sa   t  |  ƒ } t  |  d ƒ } x> t d | ƒ D]- } x# t d | ƒ D] } |  | | GqB WHq, Wd  S(   Ni    (   R   R+   (   Re   Rƒ   R„   R/   Ry   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   print_2d_array¯  s    t   -c         C   sz  t  |  ƒ } t  |  d ƒ } | d k r4 t j } n? y t | d ƒ } Wn) t j d | d IJt j d ƒ n X| d | Ix/ t d | ƒ D] }	 | d | | |	 f Iq‘ W| J| d	 Ix= t d | ƒ D], }	 | d t  | ƒ d t  | |	 ƒ IqÑ W| JxU t d | ƒ D]D }
 | | |
 Ix) t d | ƒ D] }	 | |  |
 |	 Iq9W| JqW| d k rv| j ƒ  n  d  S(
   Ni    R†   t   ws   Couldn't open "s   " for write.i   s   #%s s   %s=%ss   # (   R   R<   t   stdoutRT   R=   R>   R+   RY   (   Re   t   x_namet   x_labelst   y_namet   y_labelsR\   Rƒ   R„   R]   Ry   R/   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   print_2d_array_with_labels¸  s2    
*c      	   C   sd   t  | ƒ d | | | f } t |  | | | d d d d ƒ\ } }	 }
 t | d |	 d |
 | ƒ d  S(   Ns   %s/%s_TL_plot_alpha_%s.txtR}   i   R~   R   R   (   R:   R‚   R   (   Rn   t   RV_nice_nameR   R   R	   R   t   analysis_dirt   TL_3h_fnt   TL_3hR   R€   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   make_one_alpha_fileß  s    
*c      	   C   s\  d | | | f } d | | | f } d | | | f }	 d | | | f }
 t  |  | | | d d d d ƒ\ } } } t | d	 | d
 | | ƒ t  |  | | | d d d d ƒ\ } } } t | d	 | d
 | | ƒ t  |  | | | d d d d ƒ\ } } } t | d
 | d	 | |	 ƒ t  |  | | | d d d d ƒ\ } } } t | d
 | d	 | |
 ƒ d  S(   Ns   %s/%s_LT_plot_alpha_%s.txts   %s/%s_LT_regn_alpha_%s.txts   %s/%s_TL_plot_alpha_%s.txts   %s/%s_TL_regn_alpha_%s.txtR}   i   R~   i    R   R   (   R‚   R   (   Rn   RŽ   R   R   R	   R   R   t   LT_3h_fnt   LT_3v_fnR   t   TL_3v_fnt   LT_3hR€   R   t   LT_3vR‘   t   TL_3v(    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   make_four_alpha_filesê  s    ****c   
   	   C   s^   d | GHxN | D]F } d | GHt  | | | | |  | ƒ }	 t |	 | | | | | | ƒ q Wd  S(   Ns   %s:s     alpha = %s ...(   Rr   R’   (
   t   RV_data_namet   RV_analysis_nameR   R   R   R   R   R   R	   Rn   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   make_alpha_RV_files_short   s    		c   
   	   C   s^   d | GHxN | D]F } d | GHt  | | | | |  | ƒ }	 t |	 | | | | | | ƒ q Wd  S(   Ns   %s:s     alpha = %s ...(   Rr   R™   (
   Rš   R›   R   R   R   R   R   R   R	   Rn   (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   make_alpha_RV_files  s    		((   t
   __future__R    R4   R<   R   RV   R1   R   R   R   R   R   R   R   R%   R&   R(   R*   R0   R3   R6   R:   RJ   RK   RR   Rb   Rc   Rd   Rh   Rj   Rr   Rz   R‚   R{   R…   R   R’   R™   Rœ   R   (    (    (    sK   /homepages/25/d321765456/htdocs/pub_http_internet/rcm/otaskutil/taskutil.pyt   <module>	   sP   	
			
	
		 							'								E	
&			