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))
psi :: forall m f r g h.Dihedral m f r g h => Index m -> Traversal' m R
psi :: forall m (f :: * -> *) (r :: * -> *) (g :: * -> *) (h :: * -> *).
Dihedral m f r g h =>
Index m -> Traversal' m R
psi Index m
i = 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 -> (forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasC r, Functor f, Functor g) =>
Lens' (AminoAcid f g r a) a
c forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot)) (forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasN r, Functor f, Functor g) =>
Lens' (AminoAcid r f g a) a
n forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasCA r, Functor f, Functor g) =>
Lens' (AminoAcid f r g a) a
ca forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasC r, Functor f, Functor g) =>
Lens' (AminoAcid f g r a) a
c forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix (forall a. Enum a => a -> a
succ Index m
i) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasN r, Functor f, Functor g) =>
Lens' (AminoAcid r f g a) a
n forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) Index m
i
phi :: forall m f r g h.Dihedral m f r g h => Index m -> Traversal' m R
phi :: forall m (f :: * -> *) (r :: * -> *) (g :: * -> *) (h :: * -> *).
Dihedral m f r g h =>
Index m -> Traversal' m R
phi Index m
i = 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 -> (forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasCA r, Functor f, Functor g) =>
Lens' (AminoAcid f r g a) a
ca forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot) forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasC r, Functor f, Functor g) =>
Lens' (AminoAcid f g r a) a
c forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot)) (forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix (forall a. Enum a => a -> a
pred Index m
i) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasC r, Functor f, Functor g) =>
Lens' (AminoAcid f g r a) a
c forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasN r, Functor f, Functor g) =>
Lens' (AminoAcid r f g a) a
n forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasCA r, Functor f, Functor g) =>
Lens' (AminoAcid f r g a) a
ca forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasC r, Functor f, Functor g) =>
Lens' (AminoAcid f g r a) a
c forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) Index m
i
omega :: forall m f r g h.Dihedral m f r g h => Index m -> Traversal' m R
omega :: forall m (f :: * -> *) (r :: * -> *) (g :: * -> *) (h :: * -> *).
Dihedral m f r g h =>
Index m -> Traversal' m R
omega Index m
i = 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 (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap) (forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix (forall a. Enum a => a -> a
pred Index m
i) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasCA r, Functor f, Functor g) =>
Lens' (AminoAcid f r g a) a
ca forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix (forall a. Enum a => a -> a
pred Index m
i) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasC r, Functor f, Functor g) =>
Lens' (AminoAcid f g r a) a
c forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasN r, Functor f, Functor g) =>
Lens' (AminoAcid r f g a) a
n forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) (forall m. Ixed m => Index m -> Traversal' m (IxValue m)
ix Index m
i forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasCA r, Functor f, Functor g) =>
Lens' (AminoAcid f r g a) a
ca forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom) Index m
i
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 :: 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
i = 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 forall b c a. (b -> c) -> (a -> b) -> a -> c
. 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 forall a. Ord a => a -> a -> Bool
> Int
0 Bool -> Bool -> Bool
&& Int
i forall a. Ord a => a -> a -> Bool
< Int
6
getChi :: m -> Maybe R
getChi :: m -> Maybe R
getChi | Bool
checkI = (forall s a. s -> Getting (First a) s a -> Maybe a
^? 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) (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) (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 forall a. Num a => a -> a -> a
+ Int
1)) (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 forall a. Num a => a -> a -> a
+ Int
2)) (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 forall a. Num a => a -> a -> a
+ Int
3)))
| Bool
otherwise = forall a b. a -> b -> a
const 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 = forall a. a -> a -> Ray a
Ray (m
m forall s a. HasCallStack => s -> Getting (Endo a) s a -> a
^?! 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 forall a. Num a => a -> a -> a
+ Int
1)) (forall a (f :: * -> *).
(Floating a, Metric f, Epsilon a) =>
f a -> f a
normalize forall a b. (a -> b) -> a -> b
$ m
m forall s a. HasCallStack => s -> Getting (Endo a) s a -> a
^?! 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 forall a. Num a => a -> a -> a
+ Int
2) forall a. Num a => a -> a -> a
- m
m forall s a. HasCallStack => s -> Getting (Endo a) s a -> a
^?! 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 forall a. Num a => a -> a -> a
+ Int
1))
rot :: V3R -> V3R
rot = forall a. AffineTransformable a => Ray V3R -> R -> a -> a
rotateR Ray V3R
ray (R
cud 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 forall a. Eq a => a -> a -> Bool
== Int
1 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
/= AA
PRO = m -> m
rr forall a b. (a -> b) -> a -> b
$ m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot)
| Int
j forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
ASP = m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
od1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
od2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
PHE = m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ce1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ce2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cz forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
HIS = m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
nd1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ce1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ne2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
ILE = m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
LEU = m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
ASN = m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
od1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
nd2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
TRP = m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ne1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ce2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ce3 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cz2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cz3 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ch2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
TYR = m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ce1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ce2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cz forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ch2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
GLU = m -> m
rr forall a b. (a -> b) -> a -> b
$ m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
MET = m -> m
rr forall a b. (a -> b) -> a -> b
$ m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
GLN = m -> m
rr forall a b. (a -> b) -> a -> b
$ m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
LYS = m -> m
rr forall a b. (a -> b) -> a -> b
$ m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
ARG = m -> m
rr forall a b. (a -> b) -> a -> b
$ m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
3 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
GLU = m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
oe1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
oe2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
3 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
MET = m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
sd forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ce forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
3 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
GLN = m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
oe1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ne2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
3 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
LYS = m -> m
rr forall a b. (a -> b) -> a -> b
$ m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
3 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
ARG = m -> m
rr forall a b. (a -> b) -> a -> b
$ m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
4 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
LYS = m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ce forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
nz forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
4 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
ARG = m -> m
rr forall a b. (a -> b) -> a -> b
$ m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ne forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
| Int
j forall a. Eq a => a -> a -> Bool
== Int
5 Bool -> Bool -> Bool
&& m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType forall a. Eq a => a -> a -> Bool
== AA
ARG = m
m forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cz forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
nh1 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot
forall a b. a -> (a -> b) -> b
& forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
nh2 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ 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 forall a. Num a => a -> a -> a
+ Int
1) V3R -> V3R
rot
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 :: 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 = 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 forall b c a. (b -> c) -> (a -> b) -> a -> c
. 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 forall a. Ord a => a -> a -> Bool
> Int
0 Bool -> Bool -> Bool
&& Int
i 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
_ = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasN r, Functor f, Functor g) =>
Lens' (AminoAcid r f g a) a
n forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
chiPL Int
2 AA
_ = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasCA r, Functor f, Functor g) =>
Lens' (AminoAcid f r g a) a
ca forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
chiPL Int
3 AA
_ = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cb forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
chiPL Int
4 AA
aa | AA
aa forall a. Eq a => a -> a -> Bool
== AA
CYS = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
sg forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| AA
aa forall a. Eq a => a -> a -> Bool
== AA
ILE = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| AA
aa forall a. Eq a => a -> a -> Bool
== AA
SER = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
og forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| AA
aa forall a. Eq a => a -> a -> Bool
== AA
THR = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
og1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| Bool
otherwise = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cg forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
chiPL Int
5 AA
aa | AA
aa forall a. Eq a => a -> a -> Bool
== AA
ASN = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
od1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| AA
aa forall a. Eq a => a -> a -> Bool
== AA
ASP = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
od1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| AA
aa forall a. Eq a => a -> a -> Bool
== AA
HIS = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
nd1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| AA
aa forall a. Eq a => a -> a -> Bool
== AA
MET = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
sd forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| AA
aa forall a. Eq a => a -> a -> Bool
== AA
LEU = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| AA
aa forall a. Eq a => a -> a -> Bool
== AA
PHE = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| AA
aa forall a. Eq a => a -> a -> Bool
== AA
TRP = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| AA
aa forall a. Eq a => a -> a -> Bool
== AA
TYR = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| Bool
otherwise = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cd forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
chiPL Int
6 AA
aa | AA
aa forall a. Eq a => a -> a -> Bool
== AA
ARG = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ne forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| AA
aa forall a. Eq a => a -> a -> Bool
== AA
GLN = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
oe1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| AA
aa forall a. Eq a => a -> a -> Bool
== AA
GLU = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
oe1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| Bool
otherwise = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
ce forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
chiPL Int
7 AA
aa | AA
aa forall a. Eq a => a -> a -> Bool
== AA
LYS = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
nz forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
| Bool
otherwise = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
cz forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
chiPL Int
8 AA
_ = forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadical r, Functor f, Functor g) =>
Lens' (AminoAcid f (Env r) g a) (RadicalType r a)
radical forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Traversal' (Radical a) a
nh1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. HasAtom f => Lens' (f a) a
atom
chiPL Int
_ AA
_ = 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 forall s a. s -> Getting (First a) s a -> Maybe a
^? Int -> AA -> Traversal' m a
chiPL Int
i (m
m forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType)
| Bool
otherwise = 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 = 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 forall s a. s -> Getting a s a -> a
^. forall (r :: * -> *) (f :: * -> *) (g :: * -> *) a.
(HasRadicalType r, Functor f, Functor g) =>
Getting AA (AminoAcid f (Env r) g a) AA
radicalType)) (forall a b. a -> b -> a
const a
v) m
m
| Bool
otherwise = m
m
type ModifyFunction m = (V3R -> V3R) -> IxValue m -> IxValue m
rcd :: 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 :: 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 ModifyFunction m
mf Traversal' m V3R
x1 Traversal' m V3R
x2 Traversal' m V3R
x3 Traversal' m V3R
x4 Index m
i = 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 forall b c a. (b -> c) -> (a -> b) -> a -> c
. 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 = (forall s a. s -> Getting (First a) s a -> Maybe a
^? 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) Traversal' m V3R
x1 Traversal' m V3R
x2 Traversal' m V3R
x3 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 = forall a. a -> a -> Ray a
Ray (m
ar forall s a. HasCallStack => s -> Getting (Endo a) s a -> a
^?! Traversal' m V3R
x2) (forall a (f :: * -> *).
(Floating a, Metric f, Epsilon a) =>
f a -> f a
normalize forall a b. (a -> b) -> a -> b
$ m
ar forall s a. HasCallStack => s -> Getting (Endo a) s a -> a
^?! Traversal' m V3R
x3 forall a. Num a => a -> a -> a
- m
ar forall s a. HasCallStack => s -> Getting (Endo a) s a -> a
^?! Traversal' m V3R
x2)
rot :: V3R -> V3R
rot = forall a. AffineTransformable a => Ray V3R -> R -> a -> a
rotateR Ray V3R
ray (R
cud forall a. Num a => a -> a -> a
- R
d)
mfy :: m -> m
mfy = forall m.
ChainLike m =>
Index m -> (IxValue m -> IxValue m) -> m -> m
modify Index m
i (ModifyFunction m
mf V3R -> V3R
rot) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall m.
ChainLike m =>
Index m -> (IxValue m -> IxValue m) -> m -> m
modifyAfter Index m
i (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap V3R -> V3R
rot))
in m -> m
mfy m
ar