# Path: acpype/params.py
# MAXTIME = 3 * 3600
# TLEAP_TEMPLATE = """
# verbosity 1
# source %(leapAmberFile)s
# source %(leapGaffFile)s
# mods = loadamberparams %(acBase)s.frcmod
# %(res)s = loadmol2 %(acMol2FileName)s
# check %(res)s
# saveamberparm %(res)s %(acBase)s.prmtop %(acBase)s.inpcrd
# saveoff %(res)s %(acBase)s.lib
# quit
# """


from typing import List
from acpype.params import Pi
    """
    attributes: 3 Atoms, spring constant (kcal/mol/rad^2), angle eq. (rad)
    """

    def __init__(self, atoms, kTheta, thetaEq):
        self.atoms = atoms
        self.kTheta = kTheta
        self.thetaEq = thetaEq  # rad, to convert to degree: thetaEq * 180/Pi

    def __str__(self):
        return f"<{self.atoms}, ang={self.thetaEq * 180 / Pi:.2f}>"

    def __repr__(self):
        return f"<{self.atoms}, ang={self.thetaEq * 180 / Pi:.2f}>"


class Dihedral:

    """
    attributes: 4 Atoms, spring constant (kcal/mol), periodicity,
    phase (rad)
    """

    def __init__(self, atoms, kPhi, period, phase):
        self.atoms = atoms
        self.kPhi = kPhi
        self.period = period
        self.phase = phase  # rad, to convert to degree: kPhi * 180/Pi

    def __str__(self):

# Path: acpype/params.py
# MAXTIME = 3 * 3600
# TLEAP_TEMPLATE = """
# verbosity 1
# source %(leapAmberFile)s
# source %(leapGaffFile)s
# mods = loadamberparams %(acBase)s.frcmod
# %(res)s = loadmol2 %(acMol2FileName)s
# check %(res)s
# saveamberparm %(res)s %(acBase)s.prmtop %(acBase)s.inpcrd
# saveoff %(res)s %(acBase)s.lib
# quit
# """


# Path: acpype/mol.py
from typing import List
from acpype.params import Pi

    """
    attributes: 3 Atoms, spring constant (kcal/mol/rad^2), angle eq. (rad)
    """

    def __init__(self, atoms, kTheta, thetaEq):
        self.atoms = atoms
        self.kTheta = kTheta
        self.thetaEq = thetaEq  # rad, to convert to degree: thetaEq * 180/Pi

    def __str__(self):
        return f"<{self.atoms}, ang={self.thetaEq * 180 / Pi:.2f}>"

    def __repr__(self):
        return f"<{self.atoms}, ang={self.thetaEq * 180 / Pi:.2f}>"


class Dihedral:

    """
    attributes: 4 Atoms, spring constant (kcal/mol), periodicity,
    phase (rad)
    """

    def __init__(self, atoms, kPhi, period, phase):
        self.atoms = atoms
        self.kPhi = kPhi
        self.period = period
        self.phase = phase  # rad, to convert to degree: kPhi * 180/Pi

    def __str__(self):

        return f"<{self.atoms}, ang={self.phase * 180 / Pi:.2f}>"