What are the differences between -free and -ref for 'process' ... and why are there any at all?

In an ideal world we would only have a single flag (–ref) and the question would go away. However, in real life we might have to deal with three situations:

1. A reference MTZ file containing both amplitudes and test-set flag

This is the best case, since we can deal with alternate indexing schemes (possible for several spacegroups) at the same time. Since we have a set of reference amplitudes, we can adjust the indexing scheme between the reflection file from autoPROC and the reference MTZ file.

If using the –ref flag, the resulting MTZ file from autoPROC will follow the same indexing scheme as the reference MTZ file and will have the same test-set flags.

If using the –free flag, the indexing scheme chosen by autoPROC will be kept and the reference MTZ file is (optionally) reindexed before transfering the test-set flags.

Please note that in spacegroups without alternate indexing scheme, no difference should be visible between the two options.

2. A reference MTZ file containing only amplitudes

In this case only the check for alternate indexing schemes is done (see above).

3. The MTZ file only contains test-set flags

Due to the lack of a set of amplitudes, not check for alternate indexing (if allowed by spacegroup) can be done. So the test-set flags are used as-is.