Separate GroundStateFinder functions into two modules

(Suggested by @pmla)

Description

The GroundStateFinder._get_transformation_matrix and _is_sites_in_orbit functions should be moved into a separate module. Though the transformation from spin variables to binary variables is used only by the GroundStateFinder at the moment, this might not always be the case. Moreover, the function can be easily split off and doing so will reduce the size of the class.

Moreover, the GroundStateFinder._get_transformation_matrix should be tested more extensively. One suggestion is to do the following:

  1. Create a prototype structure.
  2. Build a CE model.
  3. Transform the ECIs.
  4. Sample 100 configurations (obtain once by randomization and then kept fixed).
  5. Include the configurations generated in step 4, which is done only once, to the repository.
  6. Load the configurations in the unit test and verify that the total energies are the same in the spin variable model and the binary variable model.

Sub-tasks

  • Decide on a suitable name for the split-off module.
  • Move the GroundStateFinder._get_transformation_matrix and _is_sites_in_orbit functions from the icet/tools/ground_state_finder.py to the split-off module.
  • Add new unit tests for the split-off module, which should include more extensive tests of the get_transformation_matrix function.
  • Ensure that all unit tests pass.

Demonstration

One should be able to use the GroundStateFinder as before without receiving any errors. Moreover, one should be able to import and use the get_transformation_matrix function separately.

Edited by Paul Erhart