Hi, I think I found a bug or missing feature in cctbx.miller.complete_array: As I suppose the complete_array function should check if a set of reflections is complete and add missing indices with the specified values. The bug is now when a set contains symmetrically equivalent reflections e.g. in P4 (1, 0, 2) and (0, 1, 2). The sample code below generates this output for the atached data file: --- f_obs read in: Miller array info: None Observation type: xray.amplitude Type of data: double, size=8 Type of sigmas: None Number of Miller indices: 8 Anomalous flag: False Unit cell: (4, 4, 4.44, 90, 90, 90) Space group: P 4 (No. 75) Systematic absences: 0 Centric reflections: 3 Resolution range: 4.44 1.94109 Completeness in resolution range: 1 Completeness with d_max=infinity: 1 (0, 0, 1) 4.10852771683 (0, 1, 0) 4.34856298103 (0, 1, 1) 10.0 (1, 1, 0) 0.911043357914 (1, 1, 1) 9.12523972288 (0, 0, 2) 5.97578446733 (0, 2, 0) 7.10492786733 (1, 0, 2) 2.17485631709 --- f_obs completed: Miller array info: None Observation type: xray.amplitude Type of data: double, size=9 Type of sigmas: None Number of Miller indices: 9 Anomalous flag: False Unit cell: (4, 4, 4.44, 90, 90, 90) Space group: P 4 (No. 75) Systematic absences: 0 Centric reflections: 3 Resolution range: 4.44 1.94109 (0, 0, 1) 4.10852771683 (0, 1, 0) 4.34856298103 (0, 1, 1) 10.0 (1, 1, 0) 0.911043357914 (1, 1, 1) 9.12523972288 (0, 0, 2) 5.97578446733 (0, 2, 0) 7.10492786733 (1, 0, 2) 2.17485631709 (0, 1, 2) 0.0 ---- sample code ------- obs_file = "Model02.hkl" xtal_symm = crystal.symmetry( unit_cell=(4.000, 4.0, 4.44, 90.0, 90.0, 90.0), space_group_symbol="P 4") # load (integral) intensities from diffraction data from iotbx import reflection_file_reader rfl = reflection_file_reader.any_reflection_file("intensities="+obs_file, ensure_read_access=True) I_obs = rfl.as_miller_arrays(crystal_symmetry=xtal_symm, force_symmetry=False, merge_equivalents=True, base_array_info=None)[0] I_obs = I_obs.discard_sigmas() I_obs.merge_equivalents() f_obs = I_obs.as_amplitude_array() print("\n--- f_obs read in:") f_obs.show_comprehensive_summary() f_obs.show_array() d_max, d_min = f_obs.resolution_range() # add missing reflections with 0.0 intensity (= not observed) f_obs = f_obs.complete_array(d_min=d_min, d_max=d_max, new_data_value=0.0, new_sigmas_value=1.0).sort() print("\n--- f_obs completed:") f_obs.show_comprehensive_summary() f_obs.show_array() ---- end sample code ------- As you can see the index (0, 1, 2) is added with zero amplitude where instead the index (1, 0, 2) should be renamed to (0, 1, 2) as those two are symmetrically equivalent for any tetragonal spacegroup (like P4). So to me it looks like the complete_array method does not honor symmetrically equivalent indices at all, where it should imho. What do you think on this issue? With regards, Dipl. Phys. Jan M. Simons Institute of Crystallography RWTH Aachen University