ó
*™xTc        Q   @   s2  d  d l  m Z d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l Z	 d  d l
 Z	 d d d d d	 d
 d d d d d d d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC dD dE dF dG dH dI dJ dK gG Z dL dM d d d d dN dO dP dQ dR dS dT dU dV dW dX d dY dZ d[ d\ d] d^ d_ d` da db dc dd de df dg dh di dj dk dl dm dn do dp d( dq dr d* ds dt du dv dw dx dy dz d{ d| d} d~ d d€ d� d‚ dƒ d„ d… d† d‡ dˆ d‰ dŠ d‹ gG Z dŒ d� dŽ d� d� d‘ d’ d“ d” d• d– d— dh d˜ d™ dš d› dœ d� dž dŸ d  d% d¡ dn d¢ d£ d¤ d¥ d¦ d§ d¨ d© dª d« d¬ d­ d® d¯ d° d± d² d{ d³ d´ dµ d¶ d· d¸ d¹ dº d» d¼ d½ d¾ d¿ dÀ dÁ dÂ dÃ dÄ dÅ dÆ dÇ dÈ dÉ dÊ dË dÌ dÍ dÎ gG Z dÏ dÐ dÑ dÒ dÓ d dÔ dÕ dÖ d× dØ dÙ dÚ dÛ dO dÜ dÝ dÞ dß dà dá dâ d dT d dã dä då d dæ dX dç dè dé dê dë d dì d dí dî dï d] dð dñ d^ dò dó dô dõ dö d_ d_ d_ dö dô dó dò d÷ d dø dï d\ dù dú d dû dü dè dý dþ gG Z dÿ d ddddddddd	d
ddddddddddddL ddÖ ddÜ d ddã dd ddí dddddd– di d d% d!d"d© d¬ d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCgQ Z dDdEdFdGddHdIdJdKdLdMddNdOdÐ dÓ d d× ddO d dPdS dQdä ddý dü d dù dRdSdd dTd� dUdVdWdXdYdZd[d\d]d^d_d`ds dadbdcddded| dfdgdhdidjdkd'dldmdndodpdqdqdrdsdodtdndudvdwdxdydldzgQ Z dá dâ d dT dQdU d{d|d}d~dd€d d�d dë d‚d[ dƒd„d…dd†d_ d‡dˆd‰db dŠd‹dŒd�dŽd�d�d‘d’d“dZd”d•d¢ d–d—d˜d™dšd›dœd�dždŸd d¡d¢d£d¤d¥d¦d§d¨d©dªd«d¬d­d®dÈ d¯d°d±d²d³d´dµd¶d·d¸d¹dºd»gQ Z d¼d½dNdd¾d¿dÏ dÀdÒ dÓ dÁd dÂd× dØ dd	 dO dÜ d dQ dPdá dS dÃd dÄd|d dÅd€d dÆdû d‚dÇdÈdï dÉdSdõ dÊdËda dÌdÍdÎd‹dd dÏdUdÐd dÑdf dŽdŽd“ dÒdÓdUdŒdÔdÕdTddˆdÖd†dð dî d[ dZ dü d×dþ d}d dØdÃdâ gQ Z e	 j j dÙƒ Z dÚ„  Z dÛ„  Z dÜ„  Z dÝdÞd dß„ Z dà„  Z dá„  Z d dâ„ Z d d e d dã„ Z d dä„ Z  d S(å  iÿÿÿÿ(   t   divisionN(   t   make_sub_header(   t   Sorryg!°rh‘íÌ?gq=
×£pÍ?g®GázÎ?g¸…ëQ¸Î?g°rh‘í|Ï?gªñÒMbÐ?g¦›Ä °rÐ?g¢E¶óýÔÐ?gHáz®GÑ?gD‹lçû©Ñ?gé&1¬Ò?g�Âõ(\�Ò?gßO�—nÓ?g/Ý$�•Ó?gj¼t“Ô?gyé&1¬Ô?gsh‘í|?Õ?gmçû©ñÒÕ?gX9´ÈvÖ?g^ºI+×?g¬Zd;ß×?g¤p=
×£Ø?gœÄ °rhÙ?g=
×£p=Ú?g‰A`åÐ"Û?gj¼t“Ü?gu“VÝ?g®GázÞ?g^ºI+ß?g)\�Âõ(à?gÍÌÌÌÌÌà?gq=
×£pá?g¾Ÿ/Ý$â?gáz®Gáâ?g®Gáz®ã?gP�—nƒä?gÇK7‰A`å?g¼t“Væ?g‡ÙÎ÷Sç?gü©ñÒMbè?gð§ÆK7‰é?g¸…ëQ¸ê?g      ì?gòÒMbXí?gbX9´Èî?g¾Ÿ/Ý$ð?g‹lçû©ñð?g˜nƒÀÊñ?gyé&1¬ò?gV-²�ó?gd;ßO�—ô?goƒÀÊ¡õ?gNbX9´ö?g×£p=
×÷?g5^ºIù?gÓMbX9ú?gF¶óýÔxû?gøSã¥›Äü?gé&1¬þ?gF¶óýÔxÿ?gq=
×£p @g)\�Âõ(@gÙÎ÷Sã@goƒÀÊ¡@gÇK7‰A`@g¾Ÿ/Ý$@g¶óýÔxé@g®Gáz®@gX9´Èv@gsh‘í|?@gÕxé&1@g-²�ï§ÆË?g}?5^ºIÌ?g\�Âõ(\Ï?g      Ð?gR¸…ëQÐ?gNbX9´Ð?gJ+‡Ñ?gF¶óýÔxÑ?gB`åÐ"ÛÑ?gçû©ñÒMÒ?gã¥›Ä °Ò?g‰A`åÐ"Ó?gÙÎ÷Sã¥Ó?gÏ÷Sã¥›Ô?g…ëQ¸Õ?gV-²Õ?gƒÀÊ¡EÖ?g+‡ÙÖ?g°rh‘í|×?gTã¥›Ä Ø?gøSã¥›ÄØ?gF¶óýÔxÙ?g“V-Ú?g‹lçû©ñÚ?gƒÀÊ¡E¶Û?g%�•C‹Ü?gÇK7‰A`Ý?gƒÀÊ¡EÞ?g¬Zd;ß?gj¼t“à?gú~j¼t“à?g…ëQ¸á?goƒÀÊ¡á?g“V-â?g�—nƒÀâ?g‡ÙÎ÷Sã?g�•C‹lçã?g…ëQ¸å?gî|?5^ºå?g`åÐ"Ûùæ?g/Ý$�•ç?gÓMbX9è?g¢E¶óýÔè?gq=
×£pé?gj¼t“ê?gd;ßO�—ê?g‰A`åÐ"ë?g®Gáz®ë?gþÔxé&1ì?g¤p=
×£ì?gJ+‡í?gF¶óýÔxí?gB`åÐ"Ûí?g“V-î?gåÐ"Ûù~î?g�—nƒÀî?g`åÐ"Ûùî?g^ºI+ï?g\�Âõ(\ï?g°rh‘í|ï?gV-²�ï?gƒÀÊ¡E¶ï?g+‡ÙÎï?g¬Zd;ßï?gßO�—nÛ?g1¬ZdÛ?gÙÎ÷Sã¥Û?g+‡ÙÎ÷Û?g}?5^ºIÜ?gÏ÷Sã¥›Ü?gË¡E¶óýÜ?gZd;ßOÝ?gV-²Ý?gj¼t“Þ?gffffffÞ?g+‡ÙÞ?g®Gáz®ß?gªñÒMbà?g}?5^ºIà?gP�—nƒà?gøSã¥›Äà?g /Ý$á?gHáz®Gá?gÅ °rh‘á?gmçû©ñÒá?g;ßO�—nâ?g´Èv¾Ÿã?gÛù~j¼tã?g+‡ÙÎã?gþÔxé&1ä?gú~j¼t“ä?gË¡E¶óýä?gq=
×£på?gÙÎ÷Sãå?g‘í|?5^æ?g+‡Ùæ?g\�Âõ(\ç?g�•C‹lçç?g{®Gázè?gu“Vé?gD‹lçû©é?gçû©ñÒMê?g`åÐ"Ûùê?gü©ñÒMbì?gôýÔxé&í?gìQ¸…ëí?g¸…ëQ¸î?g/Ý$�•ï?gÓMbX9ð?gyé&1¬ð?g…ëQ¸ñ?gš™™™™™ñ?g®Gázò?gú~j¼t“ò?gßO�—nó?g/Ý$�•ó?gé&1¬ô?g9´Èv¾Ÿô?gôýÔxé&õ?g®Gáz®õ?gh‘í|?5ö?g#Ûù~j¼ö?gÝ$�•C÷?g˜nƒÀÊ÷?gçû©ñÒMø?g7‰A`åÐø?g‡ÙÎ÷Sù?g×£p=
×ù?g¼t“Vú?g7‰A`åÐú?g²�ï§ÆKû?gÙÎ÷Sã¥Ë?g�•C‹lçË?g)\�Âõ(Ì?gÑ"Ûù~jÌ?gyé&1¬Ì?gZd;ßOÍ?gÅ °rh‘Í?gÁÊ¡E¶óÍ?gh‘í|?5Î?gd;ßO�—Î?g+‡ÙÎ?g¬Zd;Ï?gV-²�Ï?gþÔxé&1Ð?gü©ñÒMbÐ?gú~j¼t“Ð?gøSã¥›ÄÐ?g /Ý$Ñ?gžï§ÆK7Ñ?gœÄ °rhÑ?g‘í|?5^Ò?g9´Èv¾ŸÒ?gáz®GáÒ?g‡ÙÎ÷SÓ?g�•C‹lçÓ?g)\�Âõ(Ô?gÑ"Ûù~jÔ?g#Ûù~j¼Ô?gË¡E¶óýÔ?gÅ °rh‘Õ?g®GázÖ?g¼t“VÖ?gd;ßO�—Ö?g
×£p=
×?g²�ï§ÆK×?gV-²�×?g+‡ÙÎ×?gV-²�ï×?g      Ø?gªñÒMbØ?g�•C‹l×?g¶óýÔxéÖ?gÁÊ¡E¶óÕ?goƒÀÊ¡Õ?g!°rh‘íÔ?g%�•C‹Ô?g×£p=
×Ó?gÛù~j¼tÓ?gÉv¾Ÿ/½?gV-²½?gX9´Èv¾?g¬Zd;¿?gX9´Èv¾¿?g¨ÆK7‰AÀ?g¤p=
×£À?gôýÔxé&Á?gð§ÆK7‰Á?g?5^ºIÂ?g�Âõ(\�Â?g‹lçû©ñÂ?g/Ý$�•Ã?gj¼t“Ä?g#Ûù~j¼Ä?gsh‘í|?Å?gj¼t“Æ?g-²�ï§Æ?g�•C‹lÇ?gþÔxé&1È?gö(\�ÂõÈ?gB`åÐ"ÛÉ?g�—nƒÀÊ?gÍÌÌÌÌÌÌ?g´Èv¾ŸÏ?gš™™™™™Ñ?g333333Ó?gu“VÕ?g¬Zd;×?g¦›Ä °rØ?gî|?5^ºÙ?g333333Û?g#Ûù~j¼Ü?gJ+‡á?g²�ï§ÆKã?g%�•C‹ä?g!°rh‘íè?g-²�ï§ê?g{®Gázì?gX9´Èvî?g}?5^ºIð?g�•C‹lñ?g9´Èv¾Ÿò?g�•C‹lçó?g¬Zd;õ?g-²�ï§ö?gTã¥›Ä ø?gÙÎ÷Sã¥ù?gsh‘í|?û?gáz®Gáü?g%�•C‹þ?g…ëQ¸ @g–C‹lçû @gw¾Ÿ/Ý@gX9´Èv¾@g9´Èv¾Ÿ@gP�—nƒ@g1¬Zd@gƒÀÊ¡E@gôýÔxé&@g /Ý$@gL7‰A`å@gÃõ(\�Â	@g9´Èv¾Ÿ
@g{®Gáz@g‡ÙÎ÷S@g“V-@g /Ý$@gV-²@gÓMbX9Ä?gÏ÷Sã¥›Ä?g…ëQ¸Å?g/Ý$�Å?gºI+‡Æ?g¶óýÔxéÆ?gZd;ßO�Ç?gªñÒMbÈ?gú~j¼t“È?gžï§ÆK7É?gåÐ"Ûù~Ê?g‰A`åÐ"Ë?gö(\�ÂõÐ?g?5^ºIÒ?g¸…ëQ¸Ö?gZd;ßO�×?g‘í|?5^Ú?g{®GázÜ?goƒÀÊ¡Ý?gbX9´ÈÞ?gÕxé&1à?gyé&1¬à?gÇK7‰A`á?g®Gázâ?g+‡Ùâ?gV-²�ã?gÑ"Ûù~jä?gsh‘í|?å?gé&1¬æ?g×£p=
×ç?g#Ûù~j¼è?goƒÀÊ¡é?gåÐ"Ûù~ê?g\�Âõ(\ë?gË¡E¶óýì?gî|?5^ºí?g;ßO�—nî?gßO�—nï?gÙÎ÷Sã¥ï?gªñÒMbð?gX9´Èvð?gÏ÷Sã¥›ð?gNbX9´ð?gbX9´Èð?g¢E¶óýÔð?gw¾Ÿ/Ýð?g+‡Ùð?g7‰A`åÐð?g�—nƒÀð?g-²�ï§ð?g9´Èv¾Ÿð?gú~j¼t“ð?g%�•C‹ð?gåÐ"Ûù~ð?g¦›Ä °rð?gåÐ"Ûù~Ò?g�—nƒÀÒ?g5^ºIÓ?gÝ$�•CÓ?g…ëQ¸…Ó?g-²�ï§ÆÓ?g'1¬ZÔ?gZd;ßOÕ?gj¼t“Ö?gffffffÖ?gbX9´ÈÖ?g®Gáz®×?gú~j¼t“Ø?gJ+‡Ù?gš™™™™™Ù?g�—nƒÀÚ?g‡ÙÎ÷SÛ?gÕxé&1Ü?gyé&1¬Ü?gq=
×£pÝ?g¾Ÿ/Ý$Þ?g`åÐ"ÛùÞ?g¬Zd;ßß?gü©ñÒMbà?gw¾Ÿ/Ýà?gìQ¸…ëá?gåÐ"Ûù~â?g-²�ï§Æã?g¦›Ä °rä?gÉv¾Ÿ/å?g–C‹lçûå?g7‰A`åÐæ?g®Gáz®ç?gÏ÷Sã¥›è?gš™™™™™é?g9´Èv¾Ÿê?gƒÀÊ¡E¶ë?g¢E¶óýÔì?gj¼t“î?g¬Zd;ï?g¨ÆK7‰Að?g¶óýÔxéð?gÅ °rh‘ñ?g=
×£p=ò?g!°rh‘íò?goƒÀÊ¡ó?gR¸…ëQô?g5^ºIõ?gV-²õ?g‘í|?5^ö?g /Ý$÷?g®Gáz®÷?g!°rh‘íø?g…ëQ¸…ù?gé&1¬ú?gyé&1¬ú?gžï§ÆK7û?gÃõ(\�Âû?gƒÀÊ¡Eü?gbX9´Èü?gÝ$�•Cý?gX9´Èv¾ý?gÓMbX9þ?gyé&1¬þ?g…ëQ¸ÿ?g–C‹lçûÉ?g=
×£p=Ê?g5^ºIË?g1¬ZdË?gÕxé&1Ì?gu“VÍ?gmçû©ñÒÍ?g˜nƒÀÊÑ?g;ßO�—nÒ?g1¬ZdÓ?g{®GázÔ?gÃõ(\�ÂÕ?g¾Ÿ/Ý$Ö?g´Èv¾Ÿ×?gP�—nƒØ?gö(\�ÂõØ?gìQ¸…ëÙ?g;ßO�—nÚ?gáz®GáÚ?g)\�Âõ(Ü?gÍÌÌÌÌÌÜ?gsh‘í|?Ý?g…ëQ¸Ý?gw¾Ÿ/ÝÜ?g/Ý$�•Û?g5^ºIÛ?gü©ñÒMbØ?g+‡ÙÎ÷Ó?g“V-Ò?s  
  max_bins = 60
    .type = int
    .short_caption = Max. resolution bins
    .help = '''Maximum number of resolution bins'''
  min_bin_size = 40
    .type = int
    .short_caption = Minimum bin size
    .help = '''Minimum number of reflections per bin'''
c         C   sŒ  | d k r | d k s t  ‚ |  | | | } | } | d } |  | | k  s\ | | k  r` d S| d k  rKd | d } t | ƒ } | d }	 | | }
 t d t | d	 t |	 d
 |
 ƒ | } t d t | d	 t |	 d
 |
 ƒ | } t d t | d	 t |	 d
 |
 ƒ t j | ƒ } t d t | d	 t |	 d
 |
 ƒ t j | ƒ } n- | | } | } t j | ƒ } d | | } | | | | f Sd  S(   Ni    g333333Ó?g      ð¿g      @g      $@g      @i   t   pt_1t   pt_2t   deltag      à?(   g      ð¿g      ð¿g      ð¿g      ð¿(	   t   AssertionErrort   intt   interpolatet   ac_zjt   ac_zj_sdt   ac_zft   matht   sqrtt   ac_zf_sd(   t   It   sigma_It   mean_intensityt   sigma_iobs_rejection_criteriont   ht   h_mint	   i_sig_mint   pointR   R   R   t   Jt   sigma_Jt   Ft   sigma_F(    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/french_wilson.pyt   fw_acentric[   s8    







c         C   s1  | d k r | d k s t  ‚ |  | | d | } | } | d } |  | | k  s` | | k  rd d S| d k  rOd | d } t | ƒ } | d }	 | | }
 t d t | d	 t |	 d
 |
 ƒ | } t d t | d	 t |	 d
 |
 ƒ | } t d t | d	 t |	 d
 |
 ƒ t j | ƒ } t d t | d	 t |	 d
 |
 ƒ t j | ƒ } nÒ d | | } | | } | | } t j | ƒ d d | d | d | } t j | d | d | d | ƒ } | | d d | d | d | } d | | | } | t j | ƒ } | t j | ƒ } | | | | f S(   Ni    g       @g333333Ó?g      ð¿g      @g      $@i   R   R   R   g      ð?g      @g       @g     ÀU@g      `@g     ’¦@g      �@g      .@g      @@g     q@(   g      ð¿g      ð¿g      ð¿g      ð¿g      Ø?g     Àå?g     ’@g      Ð?g      Þ?g     @g      à?g      è?(	   R   R   R   t   c_zjt   c_zj_sdt   c_zfR   R   t   c_zf_sd(   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   t   h_2t   h_4t   h_6t   post_Ft
   post_sig_F(    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/french_wilson.pyt
   fw_centric   sB    








+'&c         C   s;   d } x |  j  ƒ  D] } | | 7} q W| t |  j  ƒ  ƒ S(   Ng        (   t   datat   len(   t   miller_arrayt   sumt   d(    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/french_wilson.pyt   get_mean_intensity«   s    i<   i(   c         C   sí   | d  k r t j } n  t } xÈ | sè |  j d | ƒ t } x¥ |  j ƒ  j ƒ  D]‘ } |  j ƒ  j | ƒ } |  j	 | ƒ } | j
 ƒ  d k rP | j
 ƒ  | k  rá | d } | d k rÆ | d d IJt S| d | IJt } Pqá qP qP Wq! Wt S(   Nt   n_binsi    i   s,   not enough reflections for accurate binning
s$   ** skipping French-Wilson scaling **s   bin too small, trying %d bins(   t   Nonet   syst   stdoutt   Falset   setup_binnert   Truet   binnert	   range_allt	   selectiont   selectt   size(   R(   t   max_binst   min_bin_sizet   logt   bin_successt   i_bint   selt   bin(    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/french_wilson.pyt   f_w_binning³   s(    	
c         C   s�   d d l  m } | j ƒ  } xm |  j ƒ  j ƒ  D]Y } |  j ƒ  j | ƒ } |  j | ƒ } | j ƒ  d | j ƒ  d d } | j | ƒ q/ W| S(   Niÿÿÿÿ(   t   flexi    i   i   (	   t   cctbx.array_familyR@   t   doubleR3   R4   R5   R6   t	   d_max_mint   append(   R(   R@   t   centersR<   R=   R>   t
   bin_center(    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/french_wilson.pyt   get_bin_centersÊ   s    "c         C   s   d | |  | | S(   Ng      ð?(    (   R   R   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/french_wilson.pyR   Ô   s    c      	   C   s~  | d  k r t j } n  | d IJ|  j d t ƒ j } t d |  ƒ } t ƒ  } x(|  j ƒ  j	 ƒ  D]} |  j ƒ  j
 | ƒ } |  j | ƒ } | j ƒ  d k rb | | } xË| j ƒ  D]º\ }	 }
 |
 | k r| | d } | | } | | d } | | } | d  k r| | } në | |
 | | } t d | d | d | ƒ } | |
 k oZ| k n set ‚ | | k o|| k n pš| | k o˜| k n r| | k oÀ| k oÀd	 k n rt j | | ƒ d
 k rt d | |
 | | | f ƒ ‚ n  | | |	 <qµ |
 | k  r[| | } | | d } | | } | | d } | d  k rc| | } në | |
 | | } t d | d | d | ƒ } | |
 k o§| k n s²t ‚ | | k oÉ| k n pç| | k oå| k n rN| | k o| k od	 k n rNt j | | ƒ d
 k rNt d | |
 | | | f ƒ ‚ n  | | |	 <qµ | | } | | |	 <qµ Wqb qb W| S(   Ns>   ** Calculating bin mean intensity values for each intensity **t   use_binningR(   i    i   R   R   R   g        g»½×Ùß|Û=s5   Internal error: i_bin=%d d=%f m_1=%f mean_i=%f m_2=%f(   R-   R.   R/   t   meanR2   R&   RG   t   dictR3   R4   R5   R6   R7   t
   d_spacingsR   R   R   t   fabst   RuntimeError(   R(   R:   t   bin_mean_intensitiest   bin_centerst   d_mean_intensitiesR<   R=   R>   RF   t   indexR*   t   d_1t   d_2t   m_1t   m_2t   mean_iR   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/french_wilson.pyt   calculate_mean_intensities×   sj    
	


	"9(

	"9(
c         C   s‘  d d l  m } |  j ƒ  s/ t d d ƒ ‚ n  |  j ƒ  d  k rP t d ƒ ‚ n  |  j ƒ  d  k ru t d d ƒ ‚ n  |  j ƒ  d  k rš t d d	 ƒ ‚ n  |  j ƒ  sÔ | rÁ |  j	 ƒ  j
 ƒ  }  qÔ t d
 d ƒ ‚ n  |  j ƒ  j |  j ƒ  d ƒ rt d d |  j ƒ  d ƒ ‚ n  | d  k r/t j ƒ  } n  | j d  k rJd | _ n  | d  k rbt j } n  | d  k rwd } nU | d k r¡t j d d d ƒ d } n+ | d k  s¹| d k rÌt d d ƒ ‚ n  g  } t d d | ƒ| d | j IJt d |  d | j d | j d | ƒ sd  S| d |  j ƒ  j ƒ  IJ| j ƒ  } | j ƒ  } | j ƒ  }	 | j ƒ  }
 | j ƒ  } |  j d t ƒ j } t d |  d | ƒ } t | ƒ |  j ƒ  j ƒ  k sÂt  ‚ x�|  j ƒ  j! ƒ  D]y} |  j ƒ  j" | ƒ } |  j# | ƒ } | j ƒ  d k rÕ| j$ ƒ  } | j% ƒ  } xŽt& | j ƒ  | j ƒ  | j' ƒ  ƒ D]h\ } } } | | } | d k r�| j( | | | | f ƒ n” | d k rö| d k s³| d k  rÒ| j( | | | | f ƒ qNq#| } | } t) j* | ƒ } | } n- t+ d  | d! | d" | d# | ƒ \ } } } } | d k r�| d k rS| d k rS| d k sYt  ‚ | j( | ƒ | j( | ƒ | j( | ƒ |	 j( | ƒ |
 j( | ƒ qN| j( | | | | f ƒ qNWx‘t& | j ƒ  | j ƒ  | j' ƒ  ƒ D]h\ } } } | | } | d k r | j( | | | | f ƒ n” | d k r‡| d k sD| d k  rc| j( | | | | f ƒ qßq´| } | } t) j* | ƒ } | } n- t, d  | d! | d" | d# | ƒ \ } } } } | d k r.| d k rä| d k rä| d k sêt  ‚ | j( | ƒ | j( | ƒ | j( | ƒ |	 j( | ƒ |
 j( | ƒ qß| j( | | | | f ƒ qßWqÕqÕW|  j- d$ | d% |	 d& |
 ƒ } | j. ƒ  t/ d' | d | ƒ | S((   Niÿÿÿÿ(   R@   s&   Input array appears to be amplitudes. s6   This method is only appropriate for input intensities.s=   No unit cell information found. Please supply unit cell data.s5   No crystal symmetry information found. Please supply s   crystal symmetry data.s+   Input array does not contain sigma values. s>   This method requires input intensities with associated sigmas.s)   Unmerged data not allowed - please merge s&   symmetry-equivalent reflections first.i    sA   The input intensities have uniform values (%g); this is probably s?   a bug in one of the data processing and/or conversion programs.i<   g      Àg        s>   For French and Wilson scaling, sigma_iobs_rejection_criterion s0   must be a value between -4.0 and -1.0, or None. s0   Setting sigma_iobs_rejection_criteriont to -4.0.g      ð¿s/   must be a value between -4.0 and -1.0, or None.s2   Scaling input intensities via French-Wilson Methodt   outs   Trying %d bins...R(   R8   R9   R:   s   Number of bins = %dRH   R   R   R   R   t   indicesR&   t   sigmast   rejected(0   RA   R@   t   is_xray_intensity_arrayR   t	   unit_cellR-   t   crystal_symmetryRZ   t   is_unique_set_under_symmetryt   merge_equivalentst   arrayR&   t   all_eqt   master_philt   extractR8   R.   R/   t   libtbxt   warnR   R?   R9   R3   t   n_bins_usedRB   t   miller_indexRI   R2   RW   R'   R7   R   R4   R5   R6   t   select_centrict   select_acentrict   zipRY   RD   R   R   R%   R   t   customized_copyt#   set_observation_type_xray_amplitudet   show_rejected_summary(   R(   t   paramsR   t   mergeR:   R@   R[   t   new_It   new_sigma_It   new_Ft   new_sigma_Ft   new_indicesRN   RP   R<   R=   R>   t   cent   acenR   R   RQ   R   R   R   R   R   t   f_obs(    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/french_wilson.pyt   french_wilson_scale6  sö    						$	
	*	
	*$	
c      	   C   s®   | d  k r t j } n  | d t |  ƒ IJt |  ƒ d k rª | d IJ| d IJ| d IJx> |  D]6 } | d t | d ƒ | d | d | d	 f IJqc W| d IJn  d  S(
   Ns&   ** Total # rejected intensities: %d **i    s%   ** Summary or rejected intensities **sA   -----------------------------------------------------------------s:   Miller Index  :  Intesity  :  Sigma  :  Bin Mean Intensitys   %s    %.3f      %.3f    %.3fi   i   i   (   R-   R.   R/   R'   t   str(   R[   R:   t   rej(    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/french_wilson.pyRn   Ç  s    


-(!   t
   __future__R    R.   R   t   libtbx.str_utilsR   t   libtbx.utilsR   t   libtbx.philRe   t   libtbx.callbacksR	   R
   R   R   R   R   R   R   t   philt   parseRc   R   R%   R+   R-   R?   RG   R   RW   R0   Ry   Rn   (    (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/french_wilson.pyt   <module>   s®   				$	,		
	aŒ