### Fixed - Structures/Atoms should be significantly smaller now -> fewer chunks should be needed ### Changed - The (smooth) overlap matrix can now be specified for each element independently. It is also possible to decide if the features are scaled with respect to the range over all features of the overlap matrix or with respect to this specific feature. I.e. if there are `<num_features>` (or `<num_eval>` for the non-smooth overlap matrix) is 120, the scaling factor can either be determined for each of them (120 factors) or for all of them (1 factor). The new keywords are: `<(smooth_)overlap_matrix> <element_symbol> (<num_features> <grid_length>) <num_eval> <num_s_orb> <num_p_orb> <scale_wrt2_all_features T/F> <neighbor_list_idx>` # DEVLOG ### Changed - Renamed `DataLoader` to `DataBatcher` everywhere in the code. - Generalized the `QeqExtraFeatureCalculator` as the `GlobalFeatureCalculator`. - Feature maps should not store intermediary results on the atom type anymore. Instead they should implement their own caching mechanism. Such a mechanism is only useful during traning if we calculate feature derivatives towards neighbors (force fraction smaller 50% and not all derivatives can be precomputed). In this case, the features of the same atom might be derived towards multiple neighbors. If some parts of the calculated derivatives are the same, they can/should be cached. The feature maps can hence make use of there cache in their `first_derivative_wrt_to_on_neighbor` and/or `first_derivative_wrt_to_self` routines to avoid recalculating the same intermediate results multiple times. To achieve this each feature map is now required to implement a `allocate_cache(max_num_atoms_in_strucuture, num_structures_in_batch)` routine and a `free_cache()` routine to allocate/free the mentioned chache for each structure batch. If the feature map does not benefit from caching, it can of course just implement an empty dummy routine. Correspondingly, each routine which might call `first_derivative_wrt_to_on_neighbor` and/or `first_derivative_wrt_to_self` must make sure that `allocate_cache`/`free_cache` are called correspondingly. `allocate_cache` shall be called exactly once and before the first call to `first_derivative_wrt_to_on_neighbor` and/or `first_derivative_wrt_to_self`. The `free_cache` routine shall be called after each structure batch has been processed. ### Added - Unit tests are now also run with `DEBUG=ON` in the CI pipeline. - Regression tests (only the one within the repo) are now run with `DEBUG=ON` in the CI pipeline.