def test_few_reflections(dials_data): u""" Test that dials.symmetry does something sensible if given few reflections. Use some example integrated data generated from two ten-image 1° sweeps. These each contain a few dozen integrated reflections. Also test the behaviour of dials.merge and dials.report on the output. By suppressing the output from dials.scale and dials.report, we obviate the need to run in a temporary directory. Args: dials_data: DIALS custom Pytest fixture for access to test data. """ # Get the input experiment lists and reflection tables. data_dir = dials_data("l_cysteine_dials_output") experiments = ExperimentList.from_file(data_dir / "11_integrated.expt") experiments.extend( ExperimentList.from_file(data_dir / "23_integrated.expt")) refls = "11_integrated.refl", "23_integrated.refl" reflections = [ flex.reflection_table.from_file(data_dir / refl) for refl in refls ] # Get and use the default parameters for dials.scale, suppressing HTML output. scale_params = scale.phil_scope.fetch( source=phil.parse("output.html=None")).extract() # Does what it says on the tin. Run scaling. scaled_expt, scaled_refl = scale.run_scaling(scale_params, experiments, reflections) # Get and use the default parameters for dials.merge. merge_params = merge.phil_scope.fetch(source=phil.parse("")).extract() # Run dials.merge on the scaling output. merge.merge_data_to_mtz(merge_params, scaled_expt, [scaled_refl]) # Get and use the default parameters for dials.report, suppressing HTML output. report_params = report.phil_scope.fetch( source=phil.parse("output.html=None")).extract() # Get an Analyser object, which does the dials.report stuff. analyse = report.Analyser( report_params, grid_size=report_params.grid_size, centroid_diff_max=report_params.centroid_diff_max, ) # Run dials.report on scaling output. analyse(scaled_refl, scaled_expt)
def export_merged_mtz(self, filename, d_min=None): params = merge.phil_scope.extract() params.d_min = d_min params.assess_space_group = False mtz_obj = merge.merge_data_to_mtz(params, self._experiments, [self._reflections]) mtz_obj.write(filename)
def _export_merged_mtz(params, experiments, joint_table): """Export merged data.""" # call dials.merge from dials.command_line.merge import merge_data_to_mtz from dials.command_line.merge import phil_scope as merge_phil_scope merge_params = merge_phil_scope.extract() merge_params.reporting.wilson_stats = False merge_params.reporting.merging_stats = False merge_params.assess_space_group = False merge_params.partiality_threshold = params.cut_data.partiality_cutoff mtz_file = merge_data_to_mtz(merge_params, experiments, [joint_table]) logger.info("\nWriting merged data to %s", (params.output.merged_mtz)) out = StringIO() mtz_file.show_summary(out=out) logger.info(out.getvalue()) mtz_file.write(params.output.merged_mtz)
def _export_merged_mtz(params, experiments, joint_table): """Export merged data.""" # call dials.merge from dials.command_line.merge import merge_data_to_mtz from dials.command_line.merge import phil_scope as merge_phil_scope merge_params = merge_phil_scope.extract() logger.disabled = True merge_params.assess_space_group = False merge_params.partiality_threshold = params.cut_data.partiality_cutoff merge_params.output.crystal_names = [params.output.crystal_name] merge_params.output.project_name = params.output.project_name merge_params.best_unit_cell = params.reflection_selection.best_unit_cell mtz_file = merge_data_to_mtz(merge_params, experiments, [joint_table]) logger.disabled = False logger.info("\nWriting merged data to %s", (params.output.merged_mtz)) out = StringIO() mtz_file.show_summary(out=out) logger.info(out.getvalue()) mtz_file.write(params.output.merged_mtz)