Skip to content

Commit eff22b6

Browse files
Merge pull request #77 from Roy-Haolin-Du/main
Fix: Add timestep unit conversion for stat inefficiencies (fs to ns)
2 parents e66afac + cc80778 commit eff22b6

26 files changed

Lines changed: 116 additions & 100 deletions

a3fe/__init__.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,25 @@
1313
import warnings as _warnings
1414

1515
from ._version import __version__
16-
from .run import (
17-
CalcSet,
18-
Calculation,
19-
LamWindow,
20-
Leg,
21-
Simulation,
22-
Stage,
23-
)
24-
2516
from .configuration import (
26-
SlurmConfig,
27-
_EngineConfig,
28-
SomdConfig,
2917
EngineType,
3018
JobStatus,
3119
LegType,
3220
PreparationStage,
21+
SlurmConfig,
22+
SomdConfig,
23+
SomdSystemPreparationConfig,
3324
StageType,
25+
_EngineConfig,
3426
enums,
35-
SomdSystemPreparationConfig,
27+
)
28+
from .run import (
29+
CalcSet,
30+
Calculation,
31+
LamWindow,
32+
Leg,
33+
Simulation,
34+
Stage,
3635
)
3736

3837
# A3FE can open many files due to the use of multiprocessing and

a3fe/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.4.0"
1+
__version__ = "0.4.1"

a3fe/analyse/mbar.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import numpy as _np
1717

18+
from ..configuration import SlurmConfig as _SlurmConfig
1819
from ..read._process_somd_files import read_mbar_gradients as _read_mbar_gradients
1920
from ..read._process_somd_files import read_mbar_result as _read_mbar_result
2021
from ..read._process_somd_files import (
@@ -23,8 +24,6 @@
2324
from ..run._virtual_queue import Job as _Job
2425
from ..run._virtual_queue import VirtualQueue as _VirtualQueue
2526

26-
from ..configuration import SlurmConfig as _SlurmConfig
27-
2827

2928
def run_mbar(
3029
output_dir: str,

a3fe/analyse/process_grads.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,8 @@ def __init__(
136136
stat_ineffs_all_winds = (
137137
_np.array(stat_ineffs_all_winds)
138138
* lam_winds[0].sims[0].engine_config.timestep
139-
) # Timestep should be same for all sims
139+
/ 1_000_000
140+
) # Timestep should be same for all sims, fs to ns
140141

141142
# Get the SEMs of the free energy changes from the inter-run SEMs of the gradients
142143
lam_weights = _np.array([lam.lam_val_weight for lam in lam_winds])

a3fe/configuration/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
"""Pydantic configuration classes for the a3fe package."""
22

3+
from .engine_config import SomdConfig, _EngineConfig
4+
from .enums import EngineType, JobStatus, LegType, PreparationStage, StageType
5+
from .slurm_config import SlurmConfig
36
from .system_prep_config import (
4-
_BaseSystemPreparationConfig,
57
SomdSystemPreparationConfig,
8+
_BaseSystemPreparationConfig,
69
)
7-
from .slurm_config import SlurmConfig
8-
from .engine_config import _EngineConfig, SomdConfig
9-
from .enums import EngineType, JobStatus, LegType, PreparationStage, StageType

a3fe/configuration/engine_config.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,36 @@
55
]
66

77
import os as _os
8+
from abc import ABC as _ABC
9+
from abc import abstractmethod as _abstractmethod
810
from decimal import Decimal as _Decimal
911
from typing import (
1012
Dict as _Dict,
11-
Literal as _Literal,
13+
)
14+
from typing import (
1215
List as _List,
13-
Union as _Union,
16+
)
17+
from typing import (
18+
Literal as _Literal,
19+
)
20+
from typing import (
1421
Optional as _Optional,
1522
)
23+
from typing import (
24+
Union as _Union,
25+
)
26+
27+
import yaml as _yaml
1628
from pydantic import (
1729
BaseModel as _BaseModel,
30+
)
31+
from pydantic import (
1832
Field as _Field,
33+
)
34+
from pydantic import (
1935
model_validator as _model_validator,
2036
)
2137

22-
import yaml as _yaml
23-
from abc import ABC as _ABC, abstractmethod as _abstractmethod
24-
2538

2639
class _EngineConfig(_BaseModel, _ABC):
2740
"""Base class for engine runner configurations."""

a3fe/configuration/enums.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
"""Enums required for Classes in the run package."""
22

33
from enum import Enum as _Enum
4+
from typing import Any as _Any
45
from typing import List as _List
5-
import yaml as _yaml
66

7-
from .engine_config import _EngineConfig, SomdConfig as _SomdConfig
7+
import yaml as _yaml
88

9-
from typing import Any as _Any
9+
from .engine_config import SomdConfig as _SomdConfig
10+
from .engine_config import _EngineConfig
1011

1112
__all__ = [
1213
"JobStatus",
@@ -141,11 +142,17 @@ def file_suffix(self) -> str:
141142
@property
142143
def prep_fn(self):
143144
"""The function to use to prepare the input files for this stage."""
145+
from ..run.system_prep import (
146+
heat_and_preequil_input as _heat_and_preequil_input,
147+
)
148+
from ..run.system_prep import (
149+
minimise_input as _minimise_input,
150+
)
144151
from ..run.system_prep import (
145152
parameterise_input as _parameterise_input,
153+
)
154+
from ..run.system_prep import (
146155
solvate_input as _solvate_input,
147-
minimise_input as _minimise_input,
148-
heat_and_preequil_input as _heat_and_preequil_input,
149156
)
150157

151158
prep_fns = {

a3fe/configuration/slurm_config.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,16 @@
44
"SlurmConfig",
55
]
66

7-
import yaml as _yaml
8-
import subprocess as _subprocess
7+
import os as _os
98
import re as _re
9+
import subprocess as _subprocess
10+
from typing import Dict as _Dict
11+
from typing import List as _List
1012

13+
import yaml as _yaml
1114
from pydantic import BaseModel as _BaseModel
12-
from pydantic import Field as _Field
1315
from pydantic import ConfigDict as _ConfigDict
14-
15-
import os as _os
16-
17-
from typing import List as _List, Dict as _Dict
16+
from pydantic import Field as _Field
1817

1918

2019
class SlurmConfig(_BaseModel):
@@ -33,8 +32,12 @@ class SlurmConfig(_BaseModel):
3332
extra_options: _Dict[str, str] = _Field(
3433
{}, description="Extra options to pass to SLURM. For example, {'account': 'qt'}"
3534
)
36-
queue_check_interval: int = _Field(30, ge=1, description="Interval in seconds between SLURM queue status checks.")
37-
job_submission_wait: int = _Field(300, ge=1, description="Wait time in seconds for job submission to SLURM queue.")
35+
queue_check_interval: int = _Field(
36+
30, ge=1, description="Interval in seconds between SLURM queue status checks."
37+
)
38+
job_submission_wait: int = _Field(
39+
300, ge=1, description="Wait time in seconds for job submission to SLURM queue."
40+
)
3841

3942
model_config = _ConfigDict(validate_assignment=True)
4043

a3fe/configuration/system_prep_config.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,17 @@
66
"SomdSystemPreparationConfig",
77
]
88

9-
import yaml as _yaml
10-
119
from abc import ABC as _ABC
10+
from typing import Dict as _Dict
11+
from typing import List as _List
1212

13+
import yaml as _yaml
1314
from pydantic import BaseModel as _BaseModel
14-
from pydantic import Field as _Field
1515
from pydantic import ConfigDict as _ConfigDict
16+
from pydantic import Field as _Field
1617

17-
from .enums import StageType as _StageType
1818
from .enums import LegType as _LegType
19-
20-
from typing import List as _List, Dict as _Dict
19+
from .enums import StageType as _StageType
2120

2221

2322
class _BaseSystemPreparationConfig(_ABC, _BaseModel):

a3fe/read/_read_exp_dgs.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22
This must have the columns: calc_base_dir, name, exp_dg, exp_er"""
33

44
import os as _os
5-
65
from typing import Optional as _Optional
76

8-
import pandas as _pd
97
import numpy as _np
8+
import pandas as _pd
109

1110

1211
def read_exp_dgs(

0 commit comments

Comments
 (0)