regenerate_data   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 7
eloc 27
dl 0
loc 53
rs 10
c 0
b 0
f 0

3 Functions

Rating   Name   Duplication   Size   Complexity  
A regenerate() 0 16 4
A regenerate_cifs_test_data() 0 7 2
A regenerate_CSD_families_test_data() 0 7 1
1
"""Script for regenerating data found in the tests/data directory, using
2
whatever version of average-minimum-distance is installed to Python.
3
"""
4
5
import numpy as np
6
import amd
7
import pickle
8
import pathlib
9
10
11
_parent = pathlib.Path(__file__).absolute().parent
12
13
14
def regenerate(name, generator):
15
    """Regenerate and overwrite ``PeriodicSet``s, AMDs and PDDs for a
16
    testing dataset from a ``generator`` of ``PeriodicSet``s.
17
    """
18
19
    data = []
20
    for s in generator:
21
        pdd = amd.PDD(s, 100, lexsort=False)  # No lexsort to avoid FP problems
22
        data.append({"PeriodicSet": s, "AMD100": amd.PDD_to_AMD(pdd), "PDD100": pdd})
23
24
    with open(str(_parent / f"{name}.pkl"), "wb") as f:
25
        pickle.dump(data, f)
26
27
    if len(data) > 1:
28
        cdm = amd.PDD_pdist([d["PDD100"] for d in data])
29
        np.savez_compressed(str(_parent / f"{name}_cdm.npz"), cdm=cdm)
30
31
32
def regenerate_cifs_test_data():
33
    """Regenerate and overwrite all test data using cifs in tests/data.
34
    Does not apply to test data extracted with ``csd-python-api``.
35
    """
36
    for name in ("cubic", "T2_experimental"):
37
        path = _parent / f"{name}.cif"
38
        regenerate(name, amd.CifReader(path, show_warnings=False))
39
40
41
def regenerate_CSD_families_test_data():
42
    """Regenerate and overwrite all test data for 'CSD_families' using
43
    ``csd-python-api``.
44
    """
45
    csd_families = ["DEBXIT", "GLYCIN", "HXACAN", "ACSALA"]
46
    reader = amd.CSDReader(csd_families, refcode_families=True, show_warnings=False)
47
    regenerate("CSD_families", reader)
48
49
50
if __name__ == "__main__":
51
    regenerate_cifs_test_data()
52
    regenerate_CSD_families_test_data()
53