def _update_x_transforms(self):
<EOL>theta_minus_phis = self.y_transform - numpy.sum(self.x_transforms, axis=<NUM_LIT:0>)<EOL>for xtransform_index in range(len(self.x_transforms)):<EOL><INDENT>xtransform = self.x_transforms[xtransform_index]<EOL>sorted_data_indices = self._xi_sorted[xtransform_index]<EOL>xk_sorted = sort_vector(self.x[xtransform_index], sorted_data_indices)<EOL>xtransform_sorted = sort_vector(xtransform, sorted_data_indices)<EOL>theta_minus_phis_sorted = sort_vector(theta_minus_phis, sorted_data_indices)<EOL>to_smooth = theta_minus_phis_sorted + xtransform_sorted<EOL>smoother = perform_smooth(xk_sorted, to_smooth, smoother_cls=self._smoother_cls)<EOL>updated_x_transform_smooth = smoother.smooth_result<EOL>updated_x_transform_smooth -= numpy.mean(updated_x_transform_smooth)<EOL>unsorted_xt = unsort_vector(updated_x_transform_smooth, sorted_data_indices)<EOL>self.x_transforms[xtransform_index] = unsorted_xt<EOL>tmp_unsorted = unsort_vector(to_smooth, sorted_data_indices)<EOL>theta_minus_phis = tmp_unsorted - unsorted_xt<EOL><DEDENT>
Compute a new set of x-transform functions phik.

phik(xk) = theta(y) - sum of phii(xi) over i!=k

This is the first of the eponymous conditional expectations. The conditional
expectations are computed using the SuperSmoother.