Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 12 additions & 13 deletions a3fe/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,25 @@
import warnings as _warnings

from ._version import __version__
from .run import (
CalcSet,
Calculation,
LamWindow,
Leg,
Simulation,
Stage,
)

from .configuration import (
SlurmConfig,
_EngineConfig,
SomdConfig,
EngineType,
JobStatus,
LegType,
PreparationStage,
SlurmConfig,
SomdConfig,
SomdSystemPreparationConfig,
StageType,
_EngineConfig,
enums,
SomdSystemPreparationConfig,
)
from .run import (
CalcSet,
Calculation,
LamWindow,
Leg,
Simulation,
Stage,
)

# A3FE can open many files due to the use of multiprocessing and
Expand Down
2 changes: 1 addition & 1 deletion a3fe/_version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "0.4.0"
__version__ = "0.4.1"
3 changes: 1 addition & 2 deletions a3fe/analyse/mbar.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

import numpy as _np

from ..configuration import SlurmConfig as _SlurmConfig
from ..read._process_somd_files import read_mbar_gradients as _read_mbar_gradients
from ..read._process_somd_files import read_mbar_result as _read_mbar_result
from ..read._process_somd_files import (
Expand All @@ -23,8 +24,6 @@
from ..run._virtual_queue import Job as _Job
from ..run._virtual_queue import VirtualQueue as _VirtualQueue

from ..configuration import SlurmConfig as _SlurmConfig


def run_mbar(
output_dir: str,
Expand Down
3 changes: 2 additions & 1 deletion a3fe/analyse/process_grads.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,8 @@ def __init__(
stat_ineffs_all_winds = (
_np.array(stat_ineffs_all_winds)
* lam_winds[0].sims[0].engine_config.timestep
) # Timestep should be same for all sims
/ 1_000_000
) # Timestep should be same for all sims, fs to ns

# Get the SEMs of the free energy changes from the inter-run SEMs of the gradients
lam_weights = _np.array([lam.lam_val_weight for lam in lam_winds])
Expand Down
8 changes: 4 additions & 4 deletions a3fe/configuration/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
"""Pydantic configuration classes for the a3fe package."""

from .engine_config import SomdConfig, _EngineConfig
from .enums import EngineType, JobStatus, LegType, PreparationStage, StageType
from .slurm_config import SlurmConfig
from .system_prep_config import (
_BaseSystemPreparationConfig,
SomdSystemPreparationConfig,
_BaseSystemPreparationConfig,
)
from .slurm_config import SlurmConfig
from .engine_config import _EngineConfig, SomdConfig
from .enums import EngineType, JobStatus, LegType, PreparationStage, StageType
23 changes: 18 additions & 5 deletions a3fe/configuration/engine_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,36 @@
]

import os as _os
from abc import ABC as _ABC
from abc import abstractmethod as _abstractmethod
from decimal import Decimal as _Decimal
from typing import (
Dict as _Dict,
Literal as _Literal,
)
from typing import (
List as _List,
Union as _Union,
)
from typing import (
Literal as _Literal,
)
from typing import (
Optional as _Optional,
)
from typing import (
Union as _Union,
)

import yaml as _yaml
from pydantic import (
BaseModel as _BaseModel,
)
from pydantic import (
Field as _Field,
)
from pydantic import (
model_validator as _model_validator,
)

import yaml as _yaml
from abc import ABC as _ABC, abstractmethod as _abstractmethod


class _EngineConfig(_BaseModel, _ABC):
"""Base class for engine runner configurations."""
Expand Down
17 changes: 12 additions & 5 deletions a3fe/configuration/enums.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
"""Enums required for Classes in the run package."""

from enum import Enum as _Enum
from typing import Any as _Any
from typing import List as _List
import yaml as _yaml

from .engine_config import _EngineConfig, SomdConfig as _SomdConfig
import yaml as _yaml

from typing import Any as _Any
from .engine_config import SomdConfig as _SomdConfig
from .engine_config import _EngineConfig

__all__ = [
"JobStatus",
Expand Down Expand Up @@ -141,11 +142,17 @@ def file_suffix(self) -> str:
@property
def prep_fn(self):
"""The function to use to prepare the input files for this stage."""
from ..run.system_prep import (
heat_and_preequil_input as _heat_and_preequil_input,
)
from ..run.system_prep import (
minimise_input as _minimise_input,
)
from ..run.system_prep import (
parameterise_input as _parameterise_input,
)
from ..run.system_prep import (
solvate_input as _solvate_input,
minimise_input as _minimise_input,
heat_and_preequil_input as _heat_and_preequil_input,
)

prep_fns = {
Expand Down
21 changes: 12 additions & 9 deletions a3fe/configuration/slurm_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,16 @@
"SlurmConfig",
]

import yaml as _yaml
import subprocess as _subprocess
import os as _os
import re as _re
import subprocess as _subprocess
from typing import Dict as _Dict
from typing import List as _List

import yaml as _yaml
from pydantic import BaseModel as _BaseModel
from pydantic import Field as _Field
from pydantic import ConfigDict as _ConfigDict

import os as _os

from typing import List as _List, Dict as _Dict
from pydantic import Field as _Field


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

model_config = _ConfigDict(validate_assignment=True)

Expand Down
11 changes: 5 additions & 6 deletions a3fe/configuration/system_prep_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,17 @@
"SomdSystemPreparationConfig",
]

import yaml as _yaml

from abc import ABC as _ABC
from typing import Dict as _Dict
from typing import List as _List

import yaml as _yaml
from pydantic import BaseModel as _BaseModel
from pydantic import Field as _Field
from pydantic import ConfigDict as _ConfigDict
from pydantic import Field as _Field

from .enums import StageType as _StageType
from .enums import LegType as _LegType

from typing import List as _List, Dict as _Dict
from .enums import StageType as _StageType


class _BaseSystemPreparationConfig(_ABC, _BaseModel):
Expand Down
3 changes: 1 addition & 2 deletions a3fe/read/_read_exp_dgs.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@
This must have the columns: calc_base_dir, name, exp_dg, exp_er"""

import os as _os

from typing import Optional as _Optional

import pandas as _pd
import numpy as _np
import pandas as _pd


def read_exp_dgs(
Expand Down
7 changes: 3 additions & 4 deletions a3fe/run/_simulation_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,14 @@
import pandas as _pd
import scipy.stats as _stats

from .._version import __version__ as _version
from ..analyse.exceptions import AnalysisError as _AnalysisError
from ..analyse.plot import plot_convergence as _plot_convergence
from ..analyse.plot import plot_sq_sem_convergence as _plot_sq_sem_convergence
from ._logging_formatters import _A3feFileFormatter, _A3feStreamFormatter

from ..configuration import SlurmConfig as _SlurmConfig
from ..configuration import EngineType as _EngineType
from ..configuration import SlurmConfig as _SlurmConfig
from ..configuration import _EngineConfig
from .._version import __version__ as _version
from ._logging_formatters import _A3feFileFormatter, _A3feStreamFormatter


class SimulationRunner(ABC):
Expand Down
2 changes: 1 addition & 1 deletion a3fe/run/_virtual_queue.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
from typing import List as _List
from typing import Optional as _Optional

from ..configuration.enums import JobStatus as _JobStatus
from ._logging_formatters import _A3feFileFormatter, _A3feStreamFormatter
from ._utils import retry as _retry
from ..configuration.enums import JobStatus as _JobStatus


@_dataclass
Expand Down
6 changes: 2 additions & 4 deletions a3fe/run/calc_set.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,10 @@
import numpy as _np
from scipy import stats as _stats

from ..configuration import SlurmConfig as _SlurmConfig
from ..configuration import _EngineConfig
from ..configuration import _BaseSystemPreparationConfig

from ..analyse.analyse_set import compute_stats as _compute_stats
from ..analyse.plot import plot_against_exp as _plt_against_exp
from ..configuration import SlurmConfig as _SlurmConfig
from ..configuration import _BaseSystemPreparationConfig, _EngineConfig
from ..read._read_exp_dgs import read_exp_dgs as _read_exp_dgs
from ._simulation_runner import SimulationRunner as _SimulationRunner
from ._utils import SimulationRunnerIterator as _SimulationRunnerIterator
Expand Down
11 changes: 5 additions & 6 deletions a3fe/run/calculation.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,16 @@
import logging as _logging
import os as _os
import time as _time
from pathlib import Path as _Path
from typing import List as _List
from typing import Optional as _Optional
from pathlib import Path as _Path

from ._simulation_runner import SimulationRunner as _SimulationRunner
from ..configuration import EngineType as _EngineType
from ..configuration import SlurmConfig as _SlurmConfig
from ..configuration import _BaseSystemPreparationConfig, _EngineConfig
from ..configuration.enums import PreparationStage as _PreparationStage
from ._simulation_runner import SimulationRunner as _SimulationRunner
from .leg import Leg as _Leg
from ..configuration import _BaseSystemPreparationConfig
from ..configuration import SlurmConfig as _SlurmConfig
from ..configuration import _EngineConfig
from ..configuration import EngineType as _EngineType


class Calculation(_SimulationRunner):
Expand Down
6 changes: 3 additions & 3 deletions a3fe/run/lambda_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
from ..analyse.detect_equil import (
dummy_check_equil_multiwindow as _dummy_check_equil_multiwindow,
)
from ..configuration import EngineType as _EngineType
from ..configuration import SlurmConfig as _SlurmConfig
from ..configuration import _EngineConfig
from ._simulation_runner import SimulationRunner as _SimulationRunner
from ._virtual_queue import VirtualQueue as _VirtualQueue
from .simulation import Simulation as _Simulation
from ..configuration import SlurmConfig as _SlurmConfig
from ..configuration import _EngineConfig
from ..configuration import EngineType as _EngineType


class LamWindow(_SimulationRunner):
Expand Down
13 changes: 6 additions & 7 deletions a3fe/run/leg.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,20 +22,19 @@
from ..analyse.plot import plot_convergence as _plot_convergence
from ..analyse.plot import plot_rmsds as _plot_rmsds
from ..analyse.plot import plot_sq_sem_convergence as _plot_sq_sem_convergence
from ..configuration import EngineType as _EngineType
from ..configuration import LegType as _LegType
from ..configuration import PreparationStage as _PreparationStage
from ..configuration import SlurmConfig as _SlurmConfig
from ..configuration import StageType as _StageType
from ..configuration import _BaseSystemPreparationConfig, _EngineConfig
from . import system_prep as _system_prep
from ._restraint import A3feRestraint as _A3feRestraint
from ._simulation_runner import SimulationRunner as _SimulationRunner
from ._utils import get_single_mol as _get_single_mol
from ._virtual_queue import Job as _Job
from ._virtual_queue import VirtualQueue as _VirtualQueue
from ..configuration import LegType as _LegType
from ..configuration import PreparationStage as _PreparationStage
from ..configuration import StageType as _StageType
from ..configuration import EngineType as _EngineType
from ..configuration import _EngineConfig
from ..configuration import SlurmConfig as _SlurmConfig
from .stage import Stage as _Stage
from ..configuration import _BaseSystemPreparationConfig


class Leg(_SimulationRunner):
Expand Down
8 changes: 4 additions & 4 deletions a3fe/run/simulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@
import numpy as _np
from sire.units import k_boltz as _k_boltz

from ._simulation_runner import SimulationRunner as _SimulationRunner
from ._virtual_queue import Job as _Job
from ._virtual_queue import VirtualQueue as _VirtualQueue
from ..configuration import EngineType as _EngineType
from ..configuration import JobStatus as _JobStatus
from ..configuration import SlurmConfig as _SlurmConfig
from ..configuration import _EngineConfig
from ..configuration import EngineType as _EngineType
from ._simulation_runner import SimulationRunner as _SimulationRunner
from ._virtual_queue import Job as _Job
from ._virtual_queue import VirtualQueue as _VirtualQueue


class Simulation(_SimulationRunner):
Expand Down
Loading
Loading