| """Tests for analysis/code/carbon_monoxide.py. The figure's claim is that MagNET tracks |
| DFT near the equilibrium bond length but drifts in the non-equilibrium tails; that is checked against |
| the shipped scan data, along with the loaders and the histogram helper.""" |
| import os |
| import sys |
|
|
| import numpy as np |
| import pytest |
|
|
| HERE = os.path.dirname(os.path.abspath(__file__)) |
| sys.path.insert(0, HERE) |
|
|
| import carbon_monoxide as co |
|
|
|
|
| def test_comparison_loads_and_is_sorted(): |
| df = co.load_comparison() |
| assert len(df) == 81 |
| assert list(df.columns) == ["bond_length", "gaussian_c", "magnet_c", "delta_c", |
| "gaussian_o", "magnet_o", "delta_o"] |
| assert df["bond_length"].is_monotonic_increasing |
| assert df["bond_length"].min() == pytest.approx(0.70, abs=1e-3) |
| assert df["bond_length"].max() == pytest.approx(1.50, abs=1e-3) |
| |
| assert np.allclose(df["delta_c"], df["magnet_c"] - df["gaussian_c"]) |
|
|
|
|
| def test_histogram_helper(): |
| centers, counts, bin_width = co.load_bond_length_histogram() |
| assert len(centers) == len(counts) == 100 |
| assert bin_width > 0 |
| assert counts.sum() > 0 |
|
|
|
|
| def test_error_grows_away_from_equilibrium(): |
| """The published claim: the carbon error is small near the equilibrium bond length and much |
| larger in the stretched/compressed tails the model never trained on.""" |
| near, tails = co.equilibrium_vs_extreme_error() |
| assert near < 30.0 |
| assert tails > 100.0 |
| assert tails > 5 * near |
|
|