³ò
fOHc           @   sY   d  d k  Td  d k Td  d k Td „  Z d „  Z d d	 d „  ƒ  YZ d „  Z d „  Z d S(
   iÿÿÿÿ(   t   *c         C   sM   t  t t d ƒ |  i ƒ } t  t t d ƒ | ƒ } t | ƒ t t | ƒ ƒ S(   Nt   genet   v(   t   mapt   rcurryt   getattrt	   particlest   sumvt   floatt   len(   t   envt   genest   vectors(    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyt   averageGeneVector   s    c         C   s=   y+ t  t |  | ƒ t |  ƒ t | ƒ ƒ SWn d Sn Xd  S(   Ng        (   t   arccost   dott   mag(   t   v1t   v2(    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyt   cosineAngle
   s    +t   Environmentc           B   sk   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   c         C   s§   d |  _  t d d ƒ |  _ t d d ƒ |  _ d |  _ d |  _ t |  _ d |  _ d |  _	 d |  _
 t |  _ t |  _ d  |  _ t |  _ d	 |  _ g  |  _ |  i ƒ  d  S(
   Ni    iþÿÿÿi   gš™™™™™¹?g      à?i   i   g      @i   (   t   stepst   at   xRanget   yRanget   mutationRatet   et   Falset   fixedPopulationt   maxPopulationt   minPopulationt   reproMeanTimet   Truet	   reproducet   haveCollisionst   Nonet   removedParticlet   showGeneArrowst   recomputeGenet
   reproTimest   reset(   t   self(    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyt   __init__   s     													c         C   sF   g  |  _  x- t d |  i ƒ D] } |  i  i t ƒ  ƒ q Wd |  _ d  S(   Ni    (   R   t   rangeR   t   appendt   ParticleR   (   R)   t   i(    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyR(   (   s
    	 c         C   s‹   t  |  ƒ } t | ƒ } xl |  i D]a } t | i i ƒ } t | | i i ƒ d } d } | | | t t | ƒ t | ƒ ƒ | _	 q" Wd  S(   Ni   gš™™™™™É?(
   R   R   R   R   R   R   R   t   cost   sint	   geneArrow(   R)   t   avgt   bt   pt   ct   anglet
   normalSize(    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyt   setGeneVectors/   s    
 c         C   s¨   |  i  o% |  i |  i d j o |  i ƒ  n |  i d 7_ x |  i D] } | i | ƒ qH W|  i o |  i ƒ  n |  i ƒ  |  i	 o |  i
 o |  i ƒ  n d  S(   Ni    i   (   R%   R   R&   R8   R   t   timeStepR"   t
   collisionst   checkBoundsR   R!   t
   checkTimes(   R)   t   dtR4   (    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyR9   ;   s    !
 

c   
      C   s%  xt  d t |  i ƒ ƒ D]} |  i | } xî t  | d t |  i ƒ ƒ D]Ð } |  i | } | i | i } t | ƒ } t | | ƒ | i | i d j  o} | i | i } t | | ƒ d j  p t oL t	 | ƒ } | |  i
 d d }	 | i |	 | 8_ | i |	 | 7_ qqI qI Wq Wd  S(   Ni    i   i   (   R+   R	   R   t   rvt	   normalizeR   t   radiust   vvR    R   R   (
   R)   R.   R   t   jR3   t   r_abt   nt   v_abt   mt   J(    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyR:   I   s      $c         C   sÏ   g  } x³ |  i  D]¨ } t |  i ƒ } t | | i ƒ t ƒ  j ow t |  i  ƒ |  i j  oQ |  i i	 | i ƒ d | i t
 |  i ƒ i ƒ  f GH| i	 | i |  i ƒ ƒ n d | _ q q W|  i  | 7_  d  S(   Ns%   gave birth when t was %f mean time %fg        (   R   t   meanTimeToLambdaR   t   cumulativeExpDistt	   reproTimet   randomR	   R   R'   R,   t   arrayt   meant   mutateR   (   R)   t	   youngOnesR4   t   l(    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyR<   \   s    
 !c   
   	   C   sÛ  g  } xt  d t |  i ƒ ƒ D]} |  i | } |  i \ } } |  i \ } } | i d | j  p< | i d | j p( | i d | j  p | i d | j o t t ƒ  t |  i ƒ d ƒ } | | j o | d 7} n |  i o+ |  i	 |  i | ƒ |  i
 ƒ  |  i | <q!| i | ƒ q q W| i ƒ  | i ƒ  x, | D]$ } |  i	 |  i | ƒ |  i | =q@Wt |  i ƒ |  i j  oV g  }	 x: t  d |  i t |  i ƒ ƒ D] } |	 i |  i
 ƒ  ƒ q§W|  i |	 7_ n d  S(   Ni    i   (   R+   R	   R   R   R   R>   t   intRK   R   t   handleRemovedParticlet   babyParticleR,   t   sortt   reverseR   (
   R)   t
   removeListR.   R4   t   xmint   xmaxt   ymint   ymaxRB   t   babies(    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyR;   h   s4     P  


   c         C   s   |  i  o |  i  | ƒ n d  S(   N(   R$   (   R)   t   particle(    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyRR   †   s    
c         C   sT   t  |  i ƒ d j o t ƒ  Sn t t ƒ  t  |  i ƒ ƒ } |  i | i |  i ƒ S(   Ni    (   R	   R   R-   RQ   RK   RN   R   (   R)   RB   (    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyRS   ‹   s    c         C   sT   d } d  } xA |  i D]6 } t | i | ƒ } | | j  o | } | } q q W| S(   Ng      @(   R#   R   R   R>   (   R)   t   positiont   distt   closestR4   t   d(    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyt   closestParticle‘   s    
 c         C   s+  h  } t  t t t d ƒ |  i ƒ ƒ } | i ƒ  | d <| i ƒ  | d <| i ƒ  | d <t  t t t d ƒ |  i ƒ ƒ } t  t t t d ƒ | ƒ ƒ } | i ƒ  | d <| i ƒ  | d <| i ƒ  | d	 <t  t t t d
 ƒ |  i ƒ ƒ } | i ƒ  | d <| i ƒ  | d <| i ƒ  | d <t	 |  i ƒ | d <t
 |  ƒ } t | ƒ | d <t t t d ƒ | ƒ } t  t t | ƒ ƒ } | i ƒ  | d <| i ƒ  | d <t  t t t t t d ƒ ƒ |  i ƒ ƒ }	 |	 i ƒ  | d <|	 i ƒ  | d <t  t t t t t d ƒ ƒ |  i ƒ ƒ }
 |
 i ƒ  | d <|
 i ƒ  | d <| S(   NR[   s   reproduction-count-maxs   reproduction-count-means   reproduction-count-stdR   t
   generations   generation-number-mins   generation-number-means   generation-number-stdt   ts   age-maxs   age-means   age-stds   particle-counts   gene-mean-magR   s   gene-mag-means   gene-mag-stdRA   s
   speed-means	   speed-stdR>   s	   dist-means   dist-std(   RL   R   R   R   R   t   maxRM   t   stdt   minR	   R   R   t   compose(   R)   t   dataR[   R   t   generationst   timest   avgGenet   geneVectorst   geneMagnitudest   speedR^   (    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyt
   recordData›   s8    !!!**(   t   __name__t
   __module__R*   R(   R8   R9   R:   R<   R;   RR   RS   Ra   Ro   (    (    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyR      s   										
c         C   s   d t  |  | ƒ S(   Ng      ð?(   t   exp(   RP   t   x(    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyRI   ¿   s    c         C   s   d |  S(   Ng_ÎQÚk?(    (   t   meantime(    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pyRH   Â   s    N(    (   R-   t   ShaneRK   R   R   R   RI   RH   (    (    (    sI   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Environment.pys   <module>   s   


		¯	