Skip to content
Open
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
4 changes: 2 additions & 2 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:

- name: Install MDANSE
working-directory: MDANSE
run: python -m pip install --group test .
run: python -m pip install --group test --group external .

- name: Run unit tests
working-directory: MDANSE
Expand Down Expand Up @@ -66,7 +66,7 @@ jobs:

- name: Install MDANSE
working-directory: MDANSE
run: python -m pip install --group test .
run: python -m pip install --group test --group external .

- name: Install MDANSE_GUI
working-directory: MDANSE_GUI
Expand Down
7 changes: 5 additions & 2 deletions MDANSE/Src/MDANSE/Framework/Configurable.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
#
from __future__ import annotations

from typing import Any, ClassVar

from more_itertools import value_chain

from MDANSE.MLogging import LOG
Expand All @@ -40,9 +42,10 @@ class Configurable:
#.. 2-value is the dictionary of the keywords used when initializing the configurator.
"""

enabled = True
enabled: ClassVar[bool] = True
visible: ClassVar[bool] = True

settings = {}
settings: ClassVar[dict[str, tuple[str, dict[str, Any]]]] = {}

def __init__(self, settings=None, trajectory_input="mdanse"):
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,16 @@
#
from __future__ import annotations

from ase.io.formats import all_formats

from MDANSE import PLATFORM
from MDANSE.Framework.Configurators.IConfigurator import IConfigurator
from MDANSE.Framework.Configurators.InputFileConfigurator import InputFileConfigurator
from MDANSE.MLogging import LOG

try:
from ase.io.formats import all_formats
except ImportError:
all_formats = []


@IConfigurator.register("AseInputFileConfigurator")
class AseInputFileConfigurator(InputFileConfigurator):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,15 @@
#
from __future__ import annotations

import MDAnalysis as mda
from contextlib import suppress

from MDANSE.Framework.Configurators.IConfigurator import IConfigurator

from .MultiInputFileConfigurator import MultiInputFileConfigurator

with suppress(ImportError):
import MDAnalysis as mda


@IConfigurator.register("MDAnalysisCoordinateFileConfigurator")
class MDAnalysisCoordinateFileConfigurator(MultiInputFileConfigurator):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@

from contextlib import suppress

import MDAnalysis as mda

from MDANSE.Framework.Configurators.FloatConfigurator import FloatConfigurator
from MDANSE.Framework.Configurators.IConfigurator import IConfigurator

with suppress(ImportError):
import MDAnalysis as mda


@IConfigurator.register("MDAnalysisTimeStepConfigurator")
class MDAnalysisTimeStepConfigurator(FloatConfigurator):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,16 @@
from __future__ import annotations

from collections.abc import Iterable

import MDAnalysis as mda
from contextlib import suppress

from MDANSE.Framework.AtomMapping import AtomLabel
from MDANSE.Framework.Configurators.IConfigurator import IConfigurator

from .FileWithAtomDataConfigurator import FileWithAtomDataConfigurator

with suppress(ImportError):
import MDAnalysis as mda


@IConfigurator.register("MDAnalysisTopologyFileConfigurator")
class MDAnalysisTopologyFileConfigurator(FileWithAtomDataConfigurator):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@

from contextlib import suppress

import mdtraj as md

from MDANSE.Framework.Configurators.FloatConfigurator import FloatConfigurator
from MDANSE.Framework.Configurators.IConfigurator import IConfigurator

with suppress(ImportError):
import mdtraj as md


@IConfigurator.register("MDTrajTimeStepConfigurator")
class MDTrajTimeStepConfigurator(FloatConfigurator):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,18 @@

import traceback
from collections.abc import Iterable
from contextlib import suppress
from pathlib import Path

import mdtraj as md
from mdtraj.core.trajectory import _TOPOLOGY_EXTS

from MDANSE.Framework.AtomMapping import AtomLabel
from MDANSE.Framework.Configurators.IConfigurator import IConfigurator

from .FileWithAtomDataConfigurator import FileWithAtomDataConfigurator

with suppress(ImportError):
import mdtraj as md
from mdtraj.core.trajectory import _TOPOLOGY_EXTS


@IConfigurator.register("MDTrajTopologyFileConfigurator")
class MDTrajTopologyFileConfigurator(FileWithAtomDataConfigurator):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,16 @@
#
from __future__ import annotations

from contextlib import suppress
from pathlib import Path

from mdtraj.formats.registry import FormatRegistry

from MDANSE.Framework.Configurators.IConfigurator import IConfigurator

from .MultiInputFileConfigurator import MultiInputFileConfigurator

with suppress(ImportError):
from mdtraj.formats.registry import FormatRegistry


@IConfigurator.register("MDTrajTrajectoryFileConfigurator")
class MDTrajTrajectoryFileConfigurator(MultiInputFileConfigurator):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,14 @@

from pathlib import Path

from ase.io.formats import ioformats

from MDANSE import PLATFORM
from MDANSE.Framework.Configurators.IConfigurator import IConfigurator

try:
from ase.io.formats import ioformats
except ImportError:
ioformats = []


@IConfigurator.register("OutputStructureConfigurator")
class OutputStructureConfigurator(IConfigurator):
Expand Down
16 changes: 13 additions & 3 deletions MDANSE/Src/MDANSE/Framework/Converters/ASE.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,12 @@
from math import sqrt

import numpy as np
from ase import Atoms
from ase.io.trajectory import Trajectory as ASETrajectory
from more_itertools import ilen

from MDANSE.Chemistry.ChemicalSystem import ChemicalSystem
from MDANSE.Framework.AtomMapping import get_element_from_mapping
from MDANSE.Framework.Converters.Converter import Converter
from MDANSE.Framework.Jobs.IJob import IJob
from MDANSE.Framework.Parsers import ASEParser
from MDANSE.Framework.Units import INTERNAL_UNITS, UnitError, measure
from MDANSE.MLogging import LOG
from MDANSE.MolecularDynamics.Configuration import (
Expand All @@ -38,6 +35,17 @@
from MDANSE.MolecularDynamics.Trajectory import TrajectoryWriter
from MDANSE.MolecularDynamics.UnitCell import UnitCell

try:
from ase import Atoms
from ase.io.trajectory import Trajectory as ASETrajectory

from MDANSE.Framework.Parsers import ASEParser

ase_available = True
except ImportError:
ASEParser = object()
ase_available = False


class ASETrajectoryFileError(Exception):
pass
Expand All @@ -56,6 +64,8 @@ class ASE(Converter):
standard input file names.
"""

enabled = ase_available
requires_extras = ("ase",)
category = ("Converters", "General")
label = "ASE"

Expand Down
12 changes: 10 additions & 2 deletions MDANSE/Src/MDANSE/Framework/Converters/Gromacs.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@
from pathlib import Path

import numpy as np
from mdtraj.formats.trr import TRRTrajectoryFile
from mdtraj.formats.xtc import XTCTrajectoryFile

from MDANSE.Framework.Converters.Converter import Converter
from MDANSE.Framework.Jobs.IJob import IJob
Expand All @@ -28,6 +26,14 @@
from MDANSE.MolecularDynamics.Trajectory import TrajectoryWriter
from MDANSE.MolecularDynamics.UnitCell import UnitCell

try:
from mdtraj.formats.trr import TRRTrajectoryFile
from mdtraj.formats.xtc import XTCTrajectoryFile

mdtraj_available = True
except ImportError:
mdtraj_available = False


class GromacsConverterError(Exception):
pass
Expand All @@ -38,6 +44,8 @@ class GromacsConverterError(Exception):
class Gromacs(Converter):
"""Converts a Gromacs trajectory to an MDT trajectory."""

enabled = mdtraj_available
requires_extras = ("mdtraj",)
label = "Gromacs"

settings = {}
Expand Down
11 changes: 9 additions & 2 deletions MDANSE/Src/MDANSE/Framework/Converters/MDAnalysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
#
from __future__ import annotations

import MDAnalysis as mda

from MDANSE.Chemistry.ChemicalSystem import ChemicalSystem
from MDANSE.Framework.AtomMapping import get_element_from_mapping
from MDANSE.Framework.Converters.Converter import Converter
Expand All @@ -29,6 +27,13 @@
from MDANSE.MolecularDynamics.Trajectory import TrajectoryWriter
from MDANSE.MolecularDynamics.UnitCell import UnitCell

try:
import MDAnalysis as mda

mda_available = True
except ImportError:
mda_available = False


@IJob.register("MDAnalysis")
@Converter.register("MDAnalysis")
Expand All @@ -45,6 +50,8 @@ class MDAnalysis(Converter):
<a href="https://userguide.mdanalysis.org/stable/formats/index.html#formats">formats</a>.
"""

enabled = mda_available
requires_extras = ("mdanalysis",)
category = ("Converters", "General")
label = "MDAnalysis"
settings = {}
Expand Down
11 changes: 9 additions & 2 deletions MDANSE/Src/MDANSE/Framework/Converters/MDTraj.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@

from math import isclose

import mdtraj as md

from MDANSE.Chemistry.ChemicalSystem import ChemicalSystem
from MDANSE.Framework.AtomMapping import get_element_from_mapping
from MDANSE.Framework.Converters.Converter import Converter
Expand All @@ -30,6 +28,13 @@
from MDANSE.MolecularDynamics.Trajectory import TrajectoryWriter
from MDANSE.MolecularDynamics.UnitCell import UnitCell

try:
import mdtraj as md

mdtraj_available = True
except ImportError:
mdtraj_available = False


@IJob.register("MDTraj")
@Converter.register("MDTraj")
Expand All @@ -41,6 +46,8 @@ class MDTraj(Converter):
trajectories will be stitched together.
"""

enabled = mdtraj_available
requires_extras = ("mdtraj",)
category = ("Converters", "General")
label = "MDTraj"
settings = {}
Expand Down
12 changes: 10 additions & 2 deletions MDANSE/Src/MDANSE/Framework/Jobs/AverageStructure.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,19 @@
from pathlib import Path

import numpy as np
from ase.atoms import Atom, Atoms
from ase.io import write as ase_write

from MDANSE import PLATFORM
from MDANSE.Framework.Jobs.IJob import IJob
from MDANSE.Framework.Units import measure

try:
from ase.atoms import Atom, Atoms
from ase.io import write as ase_write

ase_available = True
except ImportError:
ase_available = False


@IJob.register("AverageStructure")
class AverageStructure(IJob):
Expand All @@ -41,6 +47,8 @@ class AverageStructure(IJob):
you can output just the crystalline part using a corresponding atom selection.
"""

enabled = ase_available
requires_extras = ("ase",)
label = "Average Structure"

category = ("Trajectory",)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

class CartesianCorrelationFunction(IJob):
enabled = False
visible = False

category = (
"Analysis",
Expand Down
1 change: 1 addition & 0 deletions MDANSE/Src/MDANSE/Framework/Jobs/DistanceHistogram.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class DistanceHistogram(IJob):
type = None

enabled = False
visible = False

category = (
"Analysis",
Expand Down
2 changes: 2 additions & 0 deletions MDANSE/Src/MDANSE/Framework/Jobs/IJob.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,11 +200,13 @@ class IJob(Configurable, RegisterFactory, ABC):
"""

registry: ClassVar[UCDict[str, type[IJob]]] = UCDict()
requires_extras: ClassVar[tuple[str, ...]] = ()

section = "job"
key_gen = key_generator(6)
ancestor: ClassVar[list[str]] = []
PREDICTORS: ClassVar[tuple[str, ...]] = ()

runscript_import_line = "from MDANSE.Framework.Jobs.IJob import IJob"

def __init__(self, trajectory_input="mdanse"):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class RotationAutocorrelation(IJob):
"""

enabled = False
visible = False

label = "Rotation Autocorrelation"

Expand Down
1 change: 0 additions & 1 deletion MDANSE/Src/MDANSE/Framework/Parsers/CASTEP_MD.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
from typing import Any

import numpy as np
from ase.io.trajectory import Trajectory as ASETrajectory
from more_itertools import first, one, split_at

from MDANSE.Framework.AtomMapping import AtomLabel
Expand Down
Loading
Loading