• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Ruberhauptmann / quant-met / 16489119678

24 Jul 2025 06:05AM UTC coverage: 34.768% (-1.8%) from 36.605%
16489119678

Pull #125

github

web-flow
Merge b4aa50e23 into b5a0f599e
Pull Request #125: Start q loop

3 of 67 branches covered (4.48%)

Branch coverage included in aggregate %.

92 of 226 new or added lines in 11 files covered. (40.71%)

23 existing lines in 2 files now uncovered.

207 of 537 relevant lines covered (38.55%)

1.16 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

20.0
/src/quant_met/cli/q_loop.py
1
"""Functions to run self-consistent calculation for the order parameter."""
2

3
import logging
3✔
4
from pathlib import Path
3✔
5

6
import h5py
3✔
7
import numpy as np
3✔
8
import sisl
3✔
9

10
from quant_met import routines
3✔
11
from quant_met.parameters import Parameters
3✔
12
from quant_met.parameters.control import CritTemp, QLoop
3✔
13

14
logger = logging.getLogger(__name__)
3✔
15

16

17
def q_loop(parameters: Parameters) -> None:
3✔
18
    """Self-consistent calculation for the order parameter.
19

20
    Parameters
21
    ----------
22
    parameters: Parameters
23
        An instance of Parameters containing control settings, the model,
24
        and k-point specifications for the T_C calculation.
25
    """
NEW
26
    if not isinstance(parameters.control, QLoop):
×
NEW
27
        err_msg = "Wrong parameters for q-loop."
×
NEW
28
        raise TypeError(err_msg)
×
29

NEW
30
    result_path = Path(parameters.control.outdir)
×
NEW
31
    result_path.mkdir(exist_ok=True, parents=True)
×
32

NEW
33
    hamiltonian = sisl.get_sile(parameters.control.hamiltonian_file).read_hamiltonian()
×
NEW
34
    k_grid_obj = sisl.MonkhorstPack(
×
35
        hamiltonian.geometry,
36
        [parameters.k_points.nk1, parameters.k_points.nk2, 1],
37
    )
38

NEW
39
    if isinstance(parameters.control.crit_temp, CritTemp):
×
NEW
40
        delta_vs_temp, critical_temperatures, fit_fig = routines.search_crit_temp(
×
41
            hamiltonian=hamiltonian,
42
            kgrid=k_grid_obj,
43
            hubbard_int_orbital_basis=np.array(parameters.control.hubbard_int_orbital_basis),
44
            epsilon=parameters.control.conv_treshold,
45
            max_iter=parameters.control.max_iter,
46
            n_temp_points=20,
47
        )
NEW
48
        logger.info("Search for T_C completed successfully.")
×
NEW
49
        logger.info("Obtained T_Cs: %s", critical_temperatures)
×
50

NEW
51
        fit_fig.savefig(
×
52
            result_path / f"{parameters.control.prefix}_critical_temperatures_fit.pdf",
53
            bbox_inches="tight",
54
        )
55

NEW
56
        result_file_crit_temp = (
×
57
            result_path / f"{parameters.control.prefix}_critical_temperatures.hdf5"
58
        )
NEW
59
        delta_vs_temp.to_hdf(result_file_crit_temp, key="delta_vs_temp")
×
NEW
60
        with h5py.File(result_file_crit_temp, mode="a") as file:
×
NEW
61
            for orbital, crit_temp_orbital in enumerate(critical_temperatures):
×
NEW
62
                file.attrs[f"T_C_{orbital}"] = crit_temp_orbital
×
63

NEW
64
        logger.info("Results saved to %s", result_file_crit_temp)
×
65
    else:
NEW
66
        critical_temperatures = []
×
NEW
67
        with h5py.File(f"{parameters.control.crit_temp}", mode="r") as file:
×
NEW
68
            for key, critical_temperature in file.attrs.items():
×
NEW
69
                if key.startswith("T_C"):
×
NEW
70
                    critical_temperatures.append(critical_temperature)
×
NEW
71
        logger.info("Read critical temperatures from file.")
×
NEW
72
        logger.info("Obtained T_Cs: %s", critical_temperatures)
×
73

NEW
74
    delta_vs_q = routines.loop_over_q(
×
75
        hamiltonian=hamiltonian,
76
        kgrid=k_grid_obj,
77
        hubbard_int_orbital_basis=np.array(parameters.control.hubbard_int_orbital_basis),
78
        epsilon=parameters.control.conv_treshold,
79
        max_iter=parameters.control.max_iter,
80
        n_q_points=parameters.control.n_q_points,
81
        crit_temps=np.array(critical_temperatures),
82
    )
83

NEW
84
    result_file_q = result_path / f"{parameters.control.prefix}_q.hdf5"
×
NEW
85
    result_file_q.unlink()
×
NEW
86
    for key, df in delta_vs_q.items():
×
NEW
87
        df.to_hdf(result_file_q, key=f"temp_{float(key):.6f}")
×
NEW
88
        with h5py.File(result_file_q, "a") as f:
×
NEW
89
            grp = f[f"temp_{float(key):.6f}"]
×
NEW
90
            grp.attrs["crit_temp"] = critical_temperatures
×
NEW
91
            grp.attrs["temp"] = float(key)
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc