<div dir="ltr">On Tue, Aug 12, 2014 at 4:14 PM, Michael Thompson <span dir="ltr">&lt;<a href="mailto:miket@chem.ucla.edu" target="_blank">miket@chem.ucla.edu</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">I&#39;m interested in doing some comparisons of random half data sets, inspired by statistics like CC1/2, CC*, etc. Does phenix contain some tool to split unmerged data into 2 random sets? Thought I would ask before trying to write my own script.<br>

</blockquote><div><br></div><div>Didn&#39;t see this before I replied off-list to your ccp4bb post, but for the record:</div><div><br></div><div class="gmail_quote"><div>You can do this very easily with CCTBX, for instance:<br>

<br></div>from iotbx.file_reader import any_file<br></div><div class="gmail_quote">from cctbx import miller<br></div><div class="gmail_quote">
from scitbx.array_family import flex<br></div><div class="gmail_quote">hkl_in = any_file(&quot;data.hkl&quot;)<br></div><div class="gmail_quote">i_obs = hkl_in.file_object.as_miller_arrays(merge_equivalents=False)<br>i_obs = i_obs.select(i_obs.sigmas() &gt; 0) # filter out bad sigmas</div>

<div class="gmail_quote">if (not keep_friedel_pairs_separate) :</div><div class="gmail_quote">  i_obs = i_obs.as_non_anomalous_array().map_to_asu()<br>
split_datasets = miller.split_unmerged(<br>      unmerged_indices=i_obs.indices(),<br>      unmerged_data=i_obs.data(),<br>      unmerged_sigmas=i_obs.sigmas())<br>data_1 = split_datasets.data_1<br>data_2 = split_datasets.data_2<br>


cc = flex.linear_correlation(data_1, data_2).coefficient()<br><br></div><div class="gmail_quote">(Note
 that if you use an unmerged Scalepack file, you may need to supply the 
unit cell information separately since the format is broken.)</div><div class="gmail_quote"><br></div><div class="gmail_quote">Note that this is already built in to the Miller array class, i.e. this would work:</div><div class="gmail_quote">

<br></div><div class="gmail_quote">cc = i_obs.cc_one_half(anomalous_flag= keep_friedel_pairs_separate)</div><div class="gmail_quote"><br></div><div class="gmail_quote">or this:</div><div class="gmail_quote"><br></div><div class="gmail_quote">

cc_anom = i_obs.cc_anom()</div><div class="gmail_quote"><br></div><div class="gmail_quote">although it is somewhat inefficient to keep doing the splitting.</div><div><br></div><div>-Nat</div></div></div></div>