ó
X™xTc           @   sÁ   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z e j j d ƒ d  d l	 Z	 e
 d Z e
 d Z d „  Z d „  Z d  d l	 Te d	 e ƒ  ƒ Z d
 e f d „  ƒ  YZ e ƒ  Z d S(   iÿÿÿÿ(   t   divisionNt   scitbx_random_extt   intt   longc          C   so   y. t  t j ƒ  d ƒ t  t j ƒ  d ƒ }  Wn0 t k
 rD ‚  n t k
 r` t j ƒ  }  n Xt |  d	 ƒ S(
   Ni   i   i   i   i   i   i   l        l   ÿÿ (   t   builtin_longt   ost   getpidt   timet   KeyboardInterruptt	   Exceptiont   builtin_int(   t   result(    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/random/__init__.pyt   get_random_seed   s     c         C   s   t  j |  ƒ d  S(   N(   t   mt19937t   seed(   t   value(    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/random/__init__.pyt   set_random_seed   s    (   t   *R   t   variate_factoryc           B   s5   e  Z d  Z d „  Z d „  Z d „  Z e d „ Z RS(   s´  
  The corner stone of this package.

  Synopsis

    g = scitbx.random.variate(scitbx.random.normal_distribution(mean, sigma))

  How to use it from other modules?

    scitbx.random.variate.register(xxxx_ext)

  where xxxx_ext is a Boost.Python module featuring overloaded 'variate'
  functions, variate(engine, distribution), where engine is the like
  of mt19937 and distribution is the like of scitbx.random.normal_distribution.
  c         C   s   g  |  _  d  S(   N(   t   modules(   t   self(    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/random/__init__.pyt   __init__-   s    c         C   s   |  j  j | ƒ d  S(   N(   R   t   append(   R   t   module(    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/random/__init__.pyt   register_module0   s    c         c   s(   t  j Vx |  j D] } | j Vq Wd  S(   N(   R   t   variateR   (   R   R   (    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/random/__init__.pyt   variate_functions3   s     c         C   sª   g  } x� |  j  ƒ  D]a } y | | | ƒ SWq t k
 rs } t | j ƒ j d ƒ d k rm | j | ƒ q qt ‚  q Xq Wt d j g  | D] } t | ƒ ^ qˆ ƒ ƒ ‚ d  S(   Ns   Boost.Python.ArgumentErrori    s   
(   R   R	   t   strt	   __class__t   findR   t   RuntimeErrort   join(   R   t   distributiont   enginet
   exceptionsR   t   e(    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/random/__init__.pyt   __call__7   s    (   t   __name__t
   __module__t   __doc__R   R   R   R   R$   (    (    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/random/__init__.pyR      s
   			(   t
   __future__R    R   R   t   boost.optionalt   boostt   boost.pythont   pythont
   import_extR   t   __builtins__R
   R   R   R   t   mersenne_twister_19937R   t   objectR   R   (    (    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/random/__init__.pyt   <module>   s   

			
*