module Bio.Protein.Algebra
    ( phi
    , psi
    , omega
    , chi
    ) where

import           Data.Monoid                    ( First (..) )
import           Control.Lens
import           Bio.Utils.Geometry             ( V3R, R, Ray (..), normalize, rotateR )

import           Bio.Protein.AminoAcid
import           Bio.Protein.Metric
import           Bio.Protein.Chain

type Dihedral m f r g h = (ChainLike m, HasN f, HasCA r, HasC g, HasAtom h, IxValue m ~ AminoAcid f r g (h V3R))

-- | Measure and rotate Psi dihedral angle
--
psi :: forall m f r g h.Dihedral m f r g h => Index m -> Traversal' m R
psi :: Index m -> Traversal' m R
psi Index m
i = ModifyFunction m
-> Traversal' m V3R
-> Traversal' m V3R
-> Traversal' m V3R
-> Traversal' m V3R
-> Index m
-> Traversal' m R
forall m (f :: * -> *) (r :: * -> *) (g :: * -> *) (h :: * -> *).
Dihedral m f r g h =>
ModifyFunction m
-> Traversal' m V3R
-> Traversal' m V3R
-> Traversal' m V3R
-> Traversal' m V3R
-> Index m
-> Traversal' m R
rcd (\V3R -> V3R
rot -> (AminoAcid f r g (h V3R)
-> (AminoAcid f r g (h V3R) -> AminoAcid f r g (h V3R))
-> AminoAcid f r g (h V3R)
forall a b. a -> (a -> b) -> b
& (h V3R -> Identity (h V3R))
-> AminoAcid f r g (h V3R) -> Identity (AminoAcid f r g (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasC r, Functor f, Functor g) =>
Lens' (AminoAcid f g r a) a
c ((h V3R -> Identity (h V3R))
 -> AminoAcid f r g (h V3R) -> Identity (AminoAcid f r g (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid f r g (h V3R)
-> AminoAcid f r g (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot)) (Index m -> Traversal' m (IxValue m)
forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i ((AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
 -> m -> f m)
-> ((V3R -> f V3R)
    -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> (V3R -> f V3R)
-> m
-> f m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> f (h V3R))
-> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasN r, Functor f, Functor g) =>
Lens' (AminoAcid r f g a) a
n ((h V3R -> f (h V3R))
 -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> ((V3R -> f V3R) -> h V3R -> f (h V3R))
-> (V3R -> f V3R)
-> AminoAcid f r g (h V3R)
-> f (AminoAcid f r g (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (V3R -> f V3R) -> h V3R -> f (h V3R)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (Index m -> Traversal' m (IxValue m)
forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i ((AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
 -> m -> f m)
-> ((V3R -> f V3R)
    -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> (V3R -> f V3R)
-> m
-> f m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> f (h V3R))
-> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasCA r, Functor f, Functor g) =>
Lens' (AminoAcid f r g a) a
ca ((h V3R -> f (h V3R))
 -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> ((V3R -> f V3R) -> h V3R -> f (h V3R))
-> (V3R -> f V3R)
-> AminoAcid f r g (h V3R)
-> f (AminoAcid f r g (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (V3R -> f V3R) -> h V3R -> f (h V3R)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (Index m -> Traversal' m (IxValue m)
forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i ((AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
 -> m -> f m)
-> ((V3R -> f V3R)
    -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> (V3R -> f V3R)
-> m
-> f m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> f (h V3R))
-> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasC r, Functor f, Functor g) =>
Lens' (AminoAcid f g r a) a
c ((h V3R -> f (h V3R))
 -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> ((V3R -> f V3R) -> h V3R -> f (h V3R))
-> (V3R -> f V3R)
-> AminoAcid f r g (h V3R)
-> f (AminoAcid f r g (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (V3R -> f V3R) -> h V3R -> f (h V3R)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (Index m -> Traversal' m (IxValue m)
forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix (Index m -> Index m
forall a. Enum a => a -> a
succ Index m
i) ((AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
 -> m -> f m)
-> ((V3R -> f V3R)
    -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> (V3R -> f V3R)
-> m
-> f m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> f (h V3R))
-> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasN r, Functor f, Functor g) =>
Lens' (AminoAcid r f g a) a
n ((h V3R -> f (h V3R))
 -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> ((V3R -> f V3R) -> h V3R -> f (h V3R))
-> (V3R -> f V3R)
-> AminoAcid f r g (h V3R)
-> f (AminoAcid f r g (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (V3R -> f V3R) -> h V3R -> f (h V3R)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) Index m
i

-- | Measure and rotate Phi dihedral angle
--
phi :: forall m f r g h.Dihedral m f r g h => Index m -> Traversal' m R
phi :: Index m -> Traversal' m R
phi Index m
i = ModifyFunction m
-> Traversal' m V3R
-> Traversal' m V3R
-> Traversal' m V3R
-> Traversal' m V3R
-> Index m
-> Traversal' m R
forall m (f :: * -> *) (r :: * -> *) (g :: * -> *) (h :: * -> *).
Dihedral m f r g h =>
ModifyFunction m
-> Traversal' m V3R
-> Traversal' m V3R
-> Traversal' m V3R
-> Traversal' m V3R
-> Index m
-> Traversal' m R
rcd (\V3R -> V3R
rot -> (AminoAcid f r g (h V3R)
-> (AminoAcid f r g (h V3R) -> AminoAcid f r g (h V3R))
-> AminoAcid f r g (h V3R)
forall a b. a -> (a -> b) -> b
& (h V3R -> Identity (h V3R))
-> AminoAcid f r g (h V3R) -> Identity (AminoAcid f r g (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasCA r, Functor f, Functor g) =>
Lens' (AminoAcid f r g a) a
ca ((h V3R -> Identity (h V3R))
 -> AminoAcid f r g (h V3R) -> Identity (AminoAcid f r g (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid f r g (h V3R)
-> AminoAcid f r g (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot) (AminoAcid f r g (h V3R) -> AminoAcid f r g (h V3R))
-> (AminoAcid f r g (h V3R) -> AminoAcid f r g (h V3R))
-> AminoAcid f r g (h V3R)
-> AminoAcid f r g (h V3R)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (AminoAcid f r g (h V3R)
-> (AminoAcid f r g (h V3R) -> AminoAcid f r g (h V3R))
-> AminoAcid f r g (h V3R)
forall a b. a -> (a -> b) -> b
& (h V3R -> Identity (h V3R))
-> AminoAcid f r g (h V3R) -> Identity (AminoAcid f r g (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasC r, Functor f, Functor g) =>
Lens' (AminoAcid f g r a) a
c ((h V3R -> Identity (h V3R))
 -> AminoAcid f r g (h V3R) -> Identity (AminoAcid f r g (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid f r g (h V3R)
-> AminoAcid f r g (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot)) (Index m -> Traversal' m (IxValue m)
forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix (Index m -> Index m
forall a. Enum a => a -> a
pred Index m
i) ((AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
 -> m -> f m)
-> ((V3R -> f V3R)
    -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> (V3R -> f V3R)
-> m
-> f m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> f (h V3R))
-> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasC r, Functor f, Functor g) =>
Lens' (AminoAcid f g r a) a
c ((h V3R -> f (h V3R))
 -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> ((V3R -> f V3R) -> h V3R -> f (h V3R))
-> (V3R -> f V3R)
-> AminoAcid f r g (h V3R)
-> f (AminoAcid f r g (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (V3R -> f V3R) -> h V3R -> f (h V3R)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (Index m -> Traversal' m (IxValue m)
forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i ((AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
 -> m -> f m)
-> ((V3R -> f V3R)
    -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> (V3R -> f V3R)
-> m
-> f m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> f (h V3R))
-> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasN r, Functor f, Functor g) =>
Lens' (AminoAcid r f g a) a
n ((h V3R -> f (h V3R))
 -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> ((V3R -> f V3R) -> h V3R -> f (h V3R))
-> (V3R -> f V3R)
-> AminoAcid f r g (h V3R)
-> f (AminoAcid f r g (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (V3R -> f V3R) -> h V3R -> f (h V3R)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (Index m -> Traversal' m (IxValue m)
forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i ((AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
 -> m -> f m)
-> ((V3R -> f V3R)
    -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> (V3R -> f V3R)
-> m
-> f m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> f (h V3R))
-> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasCA r, Functor f, Functor g) =>
Lens' (AminoAcid f r g a) a
ca ((h V3R -> f (h V3R))
 -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> ((V3R -> f V3R) -> h V3R -> f (h V3R))
-> (V3R -> f V3R)
-> AminoAcid f r g (h V3R)
-> f (AminoAcid f r g (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (V3R -> f V3R) -> h V3R -> f (h V3R)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (Index m -> Traversal' m (IxValue m)
forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i ((AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
 -> m -> f m)
-> ((V3R -> f V3R)
    -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> (V3R -> f V3R)
-> m
-> f m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> f (h V3R))
-> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasC r, Functor f, Functor g) =>
Lens' (AminoAcid f g r a) a
c ((h V3R -> f (h V3R))
 -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> ((V3R -> f V3R) -> h V3R -> f (h V3R))
-> (V3R -> f V3R)
-> AminoAcid f r g (h V3R)
-> f (AminoAcid f r g (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (V3R -> f V3R) -> h V3R -> f (h V3R)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) Index m
i

-- | Measure and rotate Omega dihedral angle
--
omega :: forall m f r g h.Dihedral m f r g h => Index m -> Traversal' m R
omega :: Index m -> Traversal' m R
omega Index m
i = ModifyFunction m
-> Traversal' m V3R
-> Traversal' m V3R
-> Traversal' m V3R
-> Traversal' m V3R
-> Index m
-> Traversal' m R
forall m (f :: * -> *) (r :: * -> *) (g :: * -> *) (h :: * -> *).
Dihedral m f r g h =>
ModifyFunction m
-> Traversal' m V3R
-> Traversal' m V3R
-> Traversal' m V3R
-> Traversal' m V3R
-> Index m
-> Traversal' m R
rcd ((h V3R -> h V3R)
-> AminoAcid f r g (h V3R) -> AminoAcid f r g (h V3R)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((h V3R -> h V3R)
 -> AminoAcid f r g (h V3R) -> AminoAcid f r g (h V3R))
-> ((V3R -> V3R) -> h V3R -> h V3R)
-> (V3R -> V3R)
-> AminoAcid f r g (h V3R)
-> AminoAcid f r g (h V3R)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap) (Index m -> Traversal' m (IxValue m)
forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix (Index m -> Index m
forall a. Enum a => a -> a
pred Index m
i) ((AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
 -> m -> f m)
-> ((V3R -> f V3R)
    -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> (V3R -> f V3R)
-> m
-> f m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> f (h V3R))
-> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasCA r, Functor f, Functor g) =>
Lens' (AminoAcid f r g a) a
ca ((h V3R -> f (h V3R))
 -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> ((V3R -> f V3R) -> h V3R -> f (h V3R))
-> (V3R -> f V3R)
-> AminoAcid f r g (h V3R)
-> f (AminoAcid f r g (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (V3R -> f V3R) -> h V3R -> f (h V3R)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (Index m -> Traversal' m (IxValue m)
forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix (Index m -> Index m
forall a. Enum a => a -> a
pred Index m
i) ((AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
 -> m -> f m)
-> ((V3R -> f V3R)
    -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> (V3R -> f V3R)
-> m
-> f m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> f (h V3R))
-> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasC r, Functor f, Functor g) =>
Lens' (AminoAcid f g r a) a
c ((h V3R -> f (h V3R))
 -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> ((V3R -> f V3R) -> h V3R -> f (h V3R))
-> (V3R -> f V3R)
-> AminoAcid f r g (h V3R)
-> f (AminoAcid f r g (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (V3R -> f V3R) -> h V3R -> f (h V3R)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (Index m -> Traversal' m (IxValue m)
forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i ((AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
 -> m -> f m)
-> ((V3R -> f V3R)
    -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> (V3R -> f V3R)
-> m
-> f m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> f (h V3R))
-> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasN r, Functor f, Functor g) =>
Lens' (AminoAcid r f g a) a
n ((h V3R -> f (h V3R))
 -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> ((V3R -> f V3R) -> h V3R -> f (h V3R))
-> (V3R -> f V3R)
-> AminoAcid f r g (h V3R)
-> f (AminoAcid f r g (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (V3R -> f V3R) -> h V3R -> f (h V3R)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (Index m -> Traversal' m (IxValue m)
forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i ((AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
 -> m -> f m)
-> ((V3R -> f V3R)
    -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> (V3R -> f V3R)
-> m
-> f m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> f (h V3R))
-> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasCA r, Functor f, Functor g) =>
Lens' (AminoAcid f r g a) a
ca ((h V3R -> f (h V3R))
 -> AminoAcid f r g (h V3R) -> f (AminoAcid f r g (h V3R)))
-> ((V3R -> f V3R) -> h V3R -> f (h V3R))
-> (V3R -> f V3R)
-> AminoAcid f r g (h V3R)
-> f (AminoAcid f r g (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (V3R -> f V3R) -> h V3R -> f (h V3R)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) Index m
i

-- | Measure and rotate Chi (1, 2, 3, 4, 5) dihedral angles
--
chi :: forall nr cr h m.(HasN nr, Functor cr, HasAtom h, m ~ AminoAcid nr (Env Radical) cr (h V3R)) => Int -> Traversal' m R
chi :: Int -> Traversal' m R
chi Int
i = (m -> Maybe R)
-> (m -> Maybe R -> m) -> Lens m m (Maybe R) (Maybe R)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens m -> Maybe R
getChi m -> Maybe R -> m
setChi ((Maybe R -> f (Maybe R)) -> m -> f m)
-> ((R -> f R) -> Maybe R -> f (Maybe R)) -> (R -> f R) -> m -> f m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (R -> f R) -> Maybe R -> f (Maybe R)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse
  where
    checkI :: Bool
    checkI :: Bool
checkI = Int
i Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> Int
0 Bool -> Bool -> Bool
&& Int
i Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
6

    getChi :: m -> Maybe R
    getChi :: m -> Maybe R
getChi | Bool
checkI    = (m -> Getting (First R) m R -> Maybe R
forall s a. s -> Getting (First a) s a -> Maybe a
^? Getting (First V3R) m V3R
-> Getting (First V3R) m V3R
-> Getting (First V3R) m V3R
-> Getting (First V3R) m V3R
-> Getting (ReturnMetric (First V3R)) m R
forall m a.
Metricable m =>
Getting m a V3R
-> Getting m a V3R
-> Getting m a V3R
-> Getting m a V3R
-> Getting (ReturnMetric m) a R
dihedral @(First V3R) (Int -> Traversal' m V3R
forall a (nr :: * -> *) (cr :: * -> *) (h :: * -> *) m.
(HasN nr, Functor cr, HasAtom h,
 m ~ AminoAcid nr (Env Radical) cr (h a)) =>
Int -> Traversal' m a
chiP Int
i) (Int -> Traversal' m V3R
forall a (nr :: * -> *) (cr :: * -> *) (h :: * -> *) m.
(HasN nr, Functor cr, HasAtom h,
 m ~ AminoAcid nr (Env Radical) cr (h a)) =>
Int -> Traversal' m a
chiP (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)) (Int -> Traversal' m V3R
forall a (nr :: * -> *) (cr :: * -> *) (h :: * -> *) m.
(HasN nr, Functor cr, HasAtom h,
 m ~ AminoAcid nr (Env Radical) cr (h a)) =>
Int -> Traversal' m a
chiP (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
2)) (Int -> Traversal' m V3R
forall a (nr :: * -> *) (cr :: * -> *) (h :: * -> *) m.
(HasN nr, Functor cr, HasAtom h,
 m ~ AminoAcid nr (Env Radical) cr (h a)) =>
Int -> Traversal' m a
chiP (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
3)))
           | Bool
otherwise = Maybe R -> m -> Maybe R
forall a b. a -> b -> a
const Maybe R
forall a. Maybe a
Nothing

    setChi :: m -> Maybe R -> m
    setChi :: m -> Maybe R -> m
setChi m
m Maybe R
Nothing              = m
m
    setChi m
m (Just R
d) | Bool
checkI    = m -> R -> m
safeSetChi m
m R
d
                      | Bool
otherwise = m
m

    safeSetChi :: m -> R -> m
    safeSetChi :: m -> R -> m
safeSetChi m
m R
d = case m -> Maybe R
getChi m
m of
                       Maybe R
Nothing  -> m
m
                       Just R
cud ->
                         let ray :: Ray V3R
ray = V3R -> V3R -> Ray V3R
forall a. a -> a -> Ray a
Ray (m
m m -> Getting (Endo V3R) m V3R -> V3R
forall s a. HasCallStack => s -> Getting (Endo a) s a -> a
^?! Int -> Traversal' m V3R
forall a (nr :: * -> *) (cr :: * -> *) (h :: * -> *) m.
(HasN nr, Functor cr, HasAtom h,
 m ~ AminoAcid nr (Env Radical) cr (h a)) =>
Int -> Traversal' m a
chiP (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)) (V3R -> V3R
forall a (f :: * -> *).
(Floating a, Metric f, Epsilon a) =>
f a -> f a
normalize (V3R -> V3R) -> V3R -> V3R
forall a b. (a -> b) -> a -> b
$ m
m m -> Getting (Endo V3R) m V3R -> V3R
forall s a. HasCallStack => s -> Getting (Endo a) s a -> a
^?! Int -> Traversal' m V3R
forall a (nr :: * -> *) (cr :: * -> *) (h :: * -> *) m.
(HasN nr, Functor cr, HasAtom h,
 m ~ AminoAcid nr (Env Radical) cr (h a)) =>
Int -> Traversal' m a
chiP (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
2) V3R -> V3R -> V3R
forall a. Num a => a -> a -> a
- m
m m -> Getting (Endo V3R) m V3R -> V3R
forall s a. HasCallStack => s -> Getting (Endo a) s a -> a
^?! Int -> Traversal' m V3R
forall a (nr :: * -> *) (cr :: * -> *) (h :: * -> *) m.
(HasN nr, Functor cr, HasAtom h,
 m ~ AminoAcid nr (Env Radical) cr (h a)) =>
Int -> Traversal' m a
chiP (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1))
                             rot :: V3R -> V3R
rot = Ray V3R -> R -> V3R -> V3R
forall a. AffineTransformable a => Ray V3R -> R -> a -> a
rotateR Ray V3R
ray (R
cud R -> R -> R
forall a. Num a => a -> a -> a
- R
d) :: V3R -> V3R
                         in  Int -> (V3R -> V3R) -> m -> m
rotateRadical Int
i V3R -> V3R
rot m
m

    rotateRadical :: Int -> (V3R -> V3R) -> m -> m
    rotateRadical :: Int -> (V3R -> V3R) -> m -> m
rotateRadical Int
j V3R -> V3R
rot m
m | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
1 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
/= AA
PRO = m -> m
rr (m -> m) -> m -> m
forall a b. (a -> b) -> a -> b
$ m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (Radical (h V3R) -> Radical (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (h V3R -> h V3R) -> Radical (h V3R) -> Radical (h V3R)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot)
                          -- Chi 2
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
ASP =      m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cg  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
od1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
od2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
PHE =      m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cg  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cd1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cd2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
ce1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
ce2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cz  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
HIS =      m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cg  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
nd1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cd2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
ce1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
ne2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
ILE =      m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cg1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cg2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cd1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
LEU =      m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cg  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cd1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cd2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
ASN =      m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cg  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
od1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
nd2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
TRP =      m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cg  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cd1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cd2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
ne1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
ce2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
ce3 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cz2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cz3 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
ch2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
TYR =      m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cg  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cd1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cd2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
ce1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
ce2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cz  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
ch2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
GLU = m -> m
rr (m -> m) -> m -> m
forall a b. (a -> b) -> a -> b
$ m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cg  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
MET = m -> m
rr (m -> m) -> m -> m
forall a b. (a -> b) -> a -> b
$ m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cg  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
GLN = m -> m
rr (m -> m) -> m -> m
forall a b. (a -> b) -> a -> b
$ m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cg  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
LYS = m -> m
rr (m -> m) -> m -> m
forall a b. (a -> b) -> a -> b
$ m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cg  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
ARG = m -> m
rr (m -> m) -> m -> m
forall a b. (a -> b) -> a -> b
$ m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cg  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          -- Chi 3
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
3 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
GLU =      m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cd  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
oe1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
oe2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
3 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
MET =      m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
sd  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
ce  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
3 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
GLN =      m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cd  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
oe1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
ne2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
3 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
LYS = m -> m
rr (m -> m) -> m -> m
forall a b. (a -> b) -> a -> b
$ m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cd  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
3 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
ARG = m -> m
rr (m -> m) -> m -> m
forall a b. (a -> b) -> a -> b
$ m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cd  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          -- Chi 4
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
4 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
LYS =      m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
ce  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
nz  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
4 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
ARG = m -> m
rr (m -> m) -> m -> m
forall a b. (a -> b) -> a -> b
$ m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
ne  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          -- Chi 5
                          | Int
j Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
5 Bool -> Bool -> Bool
&& m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
ARG =      m
m m
-> (m -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
cz  ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
nh1 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                                                                       AminoAcid nr (Env Radical) cr (h V3R)
-> (AminoAcid nr (Env Radical) cr (h V3R)
    -> AminoAcid nr (Env Radical) cr (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
forall a b. a -> (a -> b) -> b
& (Radical (h V3R) -> Identity (Radical (h V3R)))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h V3R) -> Identity (Radical (h V3R)))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> ((h V3R -> Identity (h V3R))
    -> Radical (h V3R) -> Identity (Radical (h V3R)))
-> (h V3R -> Identity (h V3R))
-> AminoAcid nr (Env Radical) cr (h V3R)
-> Identity (AminoAcid nr (Env Radical) cr (h V3R))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h V3R -> Identity (h V3R))
-> Radical (h V3R) -> Identity (Radical (h V3R))
forall a. Traversal' (Radical a) a
nh2 ((h V3R -> Identity (h V3R))
 -> AminoAcid nr (Env Radical) cr (h V3R)
 -> Identity (AminoAcid nr (Env Radical) cr (h V3R)))
-> (h V3R -> h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
-> AminoAcid nr (Env Radical) cr (h V3R)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
                          | Bool
otherwise                         =      m
m
      where
        rr :: m -> m
rr  = Int -> (V3R -> V3R) -> m -> m
rotateRadical (Int
j Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1) V3R -> V3R
rot

-- Helper functions

-- | Chi angle point (one to eight)
--   Points 1, 2, 3 and 4 — Chi 1
--   Points 2, 3, 4 and 5 - Chi 2
--   Points 3, 4, 5 and 6 - Chi 3
--   Points 4, 5, 6 and 7 - Chi 4
--   Points 5, 6, 7 and 8 - Chi 5
--
chiP :: forall a nr cr h m.(HasN nr, Functor cr, HasAtom h, m ~ AminoAcid nr (Env Radical) cr (h a)) => Int -> Traversal' m a
chiP :: Int -> Traversal' m a
chiP Int
i = (m -> Maybe a)
-> (m -> Maybe a -> m) -> Lens m m (Maybe a) (Maybe a)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens m -> Maybe a
getChiP m -> Maybe a -> m
setChiP ((Maybe a -> f (Maybe a)) -> m -> f m)
-> ((a -> f a) -> Maybe a -> f (Maybe a)) -> (a -> f a) -> m -> f m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> Maybe a -> f (Maybe a)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse
  where
    checkI :: Bool
    checkI :: Bool
checkI = Int
i Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> Int
0 Bool -> Bool -> Bool
&& Int
i Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
9

    chiPL :: Int -> AA -> Traversal' m a
    chiPL :: Int -> AA -> Traversal' m a
chiPL Int
1 AA
_              =           (h a -> f (h a))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasN r, Functor f, Functor g) =>
Lens' (AminoAcid r f g a) a
n  ((h a -> f (h a))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
    chiPL Int
2 AA
_              =           (h a -> f (h a))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasCA r, Functor f, Functor g) =>
Lens' (AminoAcid f r g a) a
ca ((h a -> f (h a))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
    chiPL Int
3 AA
_              = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
cb  ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
    chiPL Int
4 AA
aa | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
CYS = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
sg  ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
ILE = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
cg1 ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
SER = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
og  ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
THR = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
og1 ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | Bool
otherwise = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
cg  ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
    chiPL Int
5 AA
aa | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
ASN = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
od1 ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
ASP = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
od1 ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
HIS = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
nd1 ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
MET = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
sd  ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
LEU = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
cd1 ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
PHE = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
cd1 ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
TRP = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
cd1 ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
TYR = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
cd1 ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | Bool
otherwise = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
cd  ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
    chiPL Int
6 AA
aa | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
ARG = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
ne  ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
GLN = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
oe1 ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
GLU = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
oe1 ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | Bool
otherwise = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
ce  ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
    chiPL Int
7 AA
aa | AA
aa AA -> AA -> Bool
forall a. Eq a => a -> a -> Bool
== AA
LYS = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
nz  ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
               | Bool
otherwise = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
cz  ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
    chiPL Int
8 AA
_              = (Radical (h a) -> f (Radical (h a)))
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical ((Radical (h a) -> f (Radical (h a)))
 -> AminoAcid nr (Env Radical) cr (h a)
 -> f (AminoAcid nr (Env Radical) cr (h a)))
-> ((a -> f a) -> Radical (h a) -> f (Radical (h a)))
-> (a -> f a)
-> AminoAcid nr (Env Radical) cr (h a)
-> f (AminoAcid nr (Env Radical) cr (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (h a -> f (h a)) -> Radical (h a) -> f (Radical (h a))
forall a. Traversal' (Radical a) a
nh1 ((h a -> f (h a)) -> Radical (h a) -> f (Radical (h a)))
-> ((a -> f a) -> h a -> f (h a))
-> (a -> f a)
-> Radical (h a)
-> f (Radical (h a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> f a) -> h a -> f (h a)
forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
    chiPL Int
_ AA
_              = [Char] -> (a -> f a) -> m -> f m
forall a. HasCallStack => [Char] -> a
error [Char]
"You cannot be here, as Chi dihedrals involves only 8 points"

    getChiP :: m -> Maybe a
    getChiP :: m -> Maybe a
getChiP m
m | Bool
checkI    = m
m m -> Getting (First a) m a -> Maybe a
forall s a. s -> Getting (First a) s a -> Maybe a
^? Int -> AA -> Traversal' m a
chiPL Int
i (m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType)
              | Bool
otherwise = Maybe a
forall a. Maybe a
Nothing

    setChiP :: m -> Maybe a -> m
    setChiP :: m -> Maybe a -> m
setChiP m
m Maybe a
Nothing  = m
m
    setChiP m
m (Just a
v) | Bool
checkI    = ASetter m m a a -> (a -> a) -> m -> m
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over (Int -> AA -> Traversal' m a
chiPL Int
i (m
m m -> Getting AA m AA -> AA
forall s a. s -> Getting a s a -> a
^. Getting AA m AA
forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType)) (a -> a -> a
forall a b. a -> b -> a
const a
v) m
m
                       | Bool
otherwise = m
m

type ModifyFunction m = (V3R -> V3R) -> IxValue m -> IxValue m

-- | Rotate cannonical dihedral in backbone
--
rcd :: forall m f r g h.Dihedral m f r g h => ModifyFunction m {- modify function -} ->
                                              Traversal' m V3R {- first  point    -} ->
                                              Traversal' m V3R {- second point    -} ->
                                              Traversal' m V3R {- third  point    -} ->
                                              Traversal' m V3R {- fourth point    -} ->
                                              Index m          {- dihedral index  -} ->
                                              Traversal' m R
rcd :: ModifyFunction m
-> Traversal' m V3R
-> Traversal' m V3R
-> Traversal' m V3R
-> Traversal' m V3R
-> Index m
-> Traversal' m R
rcd ModifyFunction m
mf Traversal' m V3R
x1 Traversal' m V3R
x2 Traversal' m V3R
x3 Traversal' m V3R
x4 Index m
i = (m -> Maybe R)
-> (m -> Maybe R -> m) -> Lens m m (Maybe R) (Maybe R)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens m -> Maybe R
getRCD m -> Maybe R -> m
setRCD ((Maybe R -> f (Maybe R)) -> m -> f m)
-> ((R -> f R) -> Maybe R -> f (Maybe R)) -> (R -> f R) -> m -> f m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (R -> f R) -> Maybe R -> f (Maybe R)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse
  where
    getRCD :: m -> Maybe R
    getRCD :: m -> Maybe R
getRCD = (m -> Getting (First R) m R -> Maybe R
forall s a. s -> Getting (First a) s a -> Maybe a
^? Getting (First V3R) m V3R
-> Getting (First V3R) m V3R
-> Getting (First V3R) m V3R
-> Getting (First V3R) m V3R
-> Getting (ReturnMetric (First V3R)) m R
forall m a.
Metricable m =>
Getting m a V3R
-> Getting m a V3R
-> Getting m a V3R
-> Getting m a V3R
-> Getting (ReturnMetric m) a R
dihedral @(First V3R) Getting (First V3R) m V3R
Traversal' m V3R
x1 Getting (First V3R) m V3R
Traversal' m V3R
x2 Getting (First V3R) m V3R
Traversal' m V3R
x3 Getting (First V3R) m V3R
Traversal' m V3R
x4)

    setRCD :: m -> Maybe R -> m
    setRCD :: m -> Maybe R -> m
setRCD m
ar Maybe R
Nothing  = m
ar
    setRCD m
ar (Just R
d) = case m -> Maybe R
getRCD m
ar of
                           Maybe R
Nothing -> m
ar
                           Just R
cud ->
                              let ray :: Ray V3R
ray = V3R -> V3R -> Ray V3R
forall a. a -> a -> Ray a
Ray (m
ar m -> Getting (Endo V3R) m V3R -> V3R
forall s a. HasCallStack => s -> Getting (Endo a) s a -> a
^?! Getting (Endo V3R) m V3R
Traversal' m V3R
x2) (V3R -> V3R
forall a (f :: * -> *).
(Floating a, Metric f, Epsilon a) =>
f a -> f a
normalize (V3R -> V3R) -> V3R -> V3R
forall a b. (a -> b) -> a -> b
$ m
ar m -> Getting (Endo V3R) m V3R -> V3R
forall s a. HasCallStack => s -> Getting (Endo a) s a -> a
^?! Getting (Endo V3R) m V3R
Traversal' m V3R
x3 V3R -> V3R -> V3R
forall a. Num a => a -> a -> a
- m
ar m -> Getting (Endo V3R) m V3R -> V3R
forall s a. HasCallStack => s -> Getting (Endo a) s a -> a
^?! Getting (Endo V3R) m V3R
Traversal' m V3R
x2)
                                  rot :: V3R -> V3R
rot = Ray V3R -> R -> V3R -> V3R
forall a. AffineTransformable a => Ray V3R -> R -> a -> a
rotateR Ray V3R
ray (R
cud R -> R -> R
forall a. Num a => a -> a -> a
- R
d)
                                  mfy :: m -> m
mfy = Index m -> (IxValue m -> IxValue m) -> m -> m
forall m.
ChainLike m =>
Index m -> (IxValue m -> IxValue m) -> m -> m
modify Index m
i (ModifyFunction m
mf V3R -> V3R
rot) (m -> m) -> (m -> m) -> m -> m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Index m -> (IxValue m -> IxValue m) -> m -> m
forall m.
ChainLike m =>
Index m -> (IxValue m -> IxValue m) -> m -> m
modifyAfter Index m
i ((h V3R -> h V3R)
-> AminoAcid f r g (h V3R) -> AminoAcid f r g (h V3R)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((V3R -> V3R) -> h V3R -> h V3R
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot))
                              in  m -> m
mfy m
ar