{-# OPTIONS_GHC -fno-warn-orphans #-} module Bio.Protein.Chain ( module C , ProteinChain(..) ) where import Bio.Chain as C import Bio.Protein.AminoAcid import Control.Lens import Data.Array (Ix (..)) import Data.String (IsString (..)) newtype ProteinChain i a = ProteinChain { ProteinChain i a -> Chain i a getChain :: Chain i a } deriving (Int -> ProteinChain i a -> ShowS [ProteinChain i a] -> ShowS ProteinChain i a -> String (Int -> ProteinChain i a -> ShowS) -> (ProteinChain i a -> String) -> ([ProteinChain i a] -> ShowS) -> Show (ProteinChain i a) forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall i a. (Ix i, Show i, Show a) => Int -> ProteinChain i a -> ShowS forall i a. (Ix i, Show i, Show a) => [ProteinChain i a] -> ShowS forall i a. (Ix i, Show i, Show a) => ProteinChain i a -> String showList :: [ProteinChain i a] -> ShowS $cshowList :: forall i a. (Ix i, Show i, Show a) => [ProteinChain i a] -> ShowS show :: ProteinChain i a -> String $cshow :: forall i a. (Ix i, Show i, Show a) => ProteinChain i a -> String showsPrec :: Int -> ProteinChain i a -> ShowS $cshowsPrec :: forall i a. (Ix i, Show i, Show a) => Int -> ProteinChain i a -> ShowS Show, ProteinChain i a -> ProteinChain i a -> Bool (ProteinChain i a -> ProteinChain i a -> Bool) -> (ProteinChain i a -> ProteinChain i a -> Bool) -> Eq (ProteinChain i a) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall i a. (Ix i, Eq a) => ProteinChain i a -> ProteinChain i a -> Bool /= :: ProteinChain i a -> ProteinChain i a -> Bool $c/= :: forall i a. (Ix i, Eq a) => ProteinChain i a -> ProteinChain i a -> Bool == :: ProteinChain i a -> ProteinChain i a -> Bool $c== :: forall i a. (Ix i, Eq a) => ProteinChain i a -> ProteinChain i a -> Bool Eq, a -> ProteinChain i b -> ProteinChain i a (a -> b) -> ProteinChain i a -> ProteinChain i b (forall a b. (a -> b) -> ProteinChain i a -> ProteinChain i b) -> (forall a b. a -> ProteinChain i b -> ProteinChain i a) -> Functor (ProteinChain i) forall a b. a -> ProteinChain i b -> ProteinChain i a forall a b. (a -> b) -> ProteinChain i a -> ProteinChain i b forall i a b. a -> ProteinChain i b -> ProteinChain i a forall i a b. (a -> b) -> ProteinChain i a -> ProteinChain i b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f <$ :: a -> ProteinChain i b -> ProteinChain i a $c<$ :: forall i a b. a -> ProteinChain i b -> ProteinChain i a fmap :: (a -> b) -> ProteinChain i a -> ProteinChain i b $cfmap :: forall i a b. (a -> b) -> ProteinChain i a -> ProteinChain i b Functor, a -> ProteinChain i a -> Bool ProteinChain i m -> m ProteinChain i a -> [a] ProteinChain i a -> Bool ProteinChain i a -> Int ProteinChain i a -> a ProteinChain i a -> a ProteinChain i a -> a ProteinChain i a -> a (a -> m) -> ProteinChain i a -> m (a -> m) -> ProteinChain i a -> m (a -> b -> b) -> b -> ProteinChain i a -> b (a -> b -> b) -> b -> ProteinChain i a -> b (b -> a -> b) -> b -> ProteinChain i a -> b (b -> a -> b) -> b -> ProteinChain i a -> b (a -> a -> a) -> ProteinChain i a -> a (a -> a -> a) -> ProteinChain i a -> a (forall m. Monoid m => ProteinChain i m -> m) -> (forall m a. Monoid m => (a -> m) -> ProteinChain i a -> m) -> (forall m a. Monoid m => (a -> m) -> ProteinChain i a -> m) -> (forall a b. (a -> b -> b) -> b -> ProteinChain i a -> b) -> (forall a b. (a -> b -> b) -> b -> ProteinChain i a -> b) -> (forall b a. (b -> a -> b) -> b -> ProteinChain i a -> b) -> (forall b a. (b -> a -> b) -> b -> ProteinChain i a -> b) -> (forall a. (a -> a -> a) -> ProteinChain i a -> a) -> (forall a. (a -> a -> a) -> ProteinChain i a -> a) -> (forall a. ProteinChain i a -> [a]) -> (forall a. ProteinChain i a -> Bool) -> (forall a. ProteinChain i a -> Int) -> (forall a. Eq a => a -> ProteinChain i a -> Bool) -> (forall a. Ord a => ProteinChain i a -> a) -> (forall a. Ord a => ProteinChain i a -> a) -> (forall a. Num a => ProteinChain i a -> a) -> (forall a. Num a => ProteinChain i a -> a) -> Foldable (ProteinChain i) forall a. Eq a => a -> ProteinChain i a -> Bool forall a. Num a => ProteinChain i a -> a forall a. Ord a => ProteinChain i a -> a forall m. Monoid m => ProteinChain i m -> m forall a. ProteinChain i a -> Bool forall a. ProteinChain i a -> Int forall a. ProteinChain i a -> [a] forall a. (a -> a -> a) -> ProteinChain i a -> a forall i a. Eq a => a -> ProteinChain i a -> Bool forall i a. Num a => ProteinChain i a -> a forall i a. Ord a => ProteinChain i a -> a forall m a. Monoid m => (a -> m) -> ProteinChain i a -> m forall i m. Monoid m => ProteinChain i m -> m forall i a. ProteinChain i a -> Bool forall i a. ProteinChain i a -> Int forall i a. ProteinChain i a -> [a] forall b a. (b -> a -> b) -> b -> ProteinChain i a -> b forall a b. (a -> b -> b) -> b -> ProteinChain i a -> b forall i a. (a -> a -> a) -> ProteinChain i a -> a forall i m a. Monoid m => (a -> m) -> ProteinChain i a -> m forall i b a. (b -> a -> b) -> b -> ProteinChain i a -> b forall i a b. (a -> b -> b) -> b -> ProteinChain i a -> b forall (t :: * -> *). (forall m. Monoid m => t m -> m) -> (forall m a. Monoid m => (a -> m) -> t a -> m) -> (forall m a. Monoid m => (a -> m) -> t a -> m) -> (forall a b. (a -> b -> b) -> b -> t a -> b) -> (forall a b. (a -> b -> b) -> b -> t a -> b) -> (forall b a. (b -> a -> b) -> b -> t a -> b) -> (forall b a. (b -> a -> b) -> b -> t a -> b) -> (forall a. (a -> a -> a) -> t a -> a) -> (forall a. (a -> a -> a) -> t a -> a) -> (forall a. t a -> [a]) -> (forall a. t a -> Bool) -> (forall a. t a -> Int) -> (forall a. Eq a => a -> t a -> Bool) -> (forall a. Ord a => t a -> a) -> (forall a. Ord a => t a -> a) -> (forall a. Num a => t a -> a) -> (forall a. Num a => t a -> a) -> Foldable t product :: ProteinChain i a -> a $cproduct :: forall i a. Num a => ProteinChain i a -> a sum :: ProteinChain i a -> a $csum :: forall i a. Num a => ProteinChain i a -> a minimum :: ProteinChain i a -> a $cminimum :: forall i a. Ord a => ProteinChain i a -> a maximum :: ProteinChain i a -> a $cmaximum :: forall i a. Ord a => ProteinChain i a -> a elem :: a -> ProteinChain i a -> Bool $celem :: forall i a. Eq a => a -> ProteinChain i a -> Bool length :: ProteinChain i a -> Int $clength :: forall i a. ProteinChain i a -> Int null :: ProteinChain i a -> Bool $cnull :: forall i a. ProteinChain i a -> Bool toList :: ProteinChain i a -> [a] $ctoList :: forall i a. ProteinChain i a -> [a] foldl1 :: (a -> a -> a) -> ProteinChain i a -> a $cfoldl1 :: forall i a. (a -> a -> a) -> ProteinChain i a -> a foldr1 :: (a -> a -> a) -> ProteinChain i a -> a $cfoldr1 :: forall i a. (a -> a -> a) -> ProteinChain i a -> a foldl' :: (b -> a -> b) -> b -> ProteinChain i a -> b $cfoldl' :: forall i b a. (b -> a -> b) -> b -> ProteinChain i a -> b foldl :: (b -> a -> b) -> b -> ProteinChain i a -> b $cfoldl :: forall i b a. (b -> a -> b) -> b -> ProteinChain i a -> b foldr' :: (a -> b -> b) -> b -> ProteinChain i a -> b $cfoldr' :: forall i a b. (a -> b -> b) -> b -> ProteinChain i a -> b foldr :: (a -> b -> b) -> b -> ProteinChain i a -> b $cfoldr :: forall i a b. (a -> b -> b) -> b -> ProteinChain i a -> b foldMap' :: (a -> m) -> ProteinChain i a -> m $cfoldMap' :: forall i m a. Monoid m => (a -> m) -> ProteinChain i a -> m foldMap :: (a -> m) -> ProteinChain i a -> m $cfoldMap :: forall i m a. Monoid m => (a -> m) -> ProteinChain i a -> m fold :: ProteinChain i m -> m $cfold :: forall i m. Monoid m => ProteinChain i m -> m Foldable, Functor (ProteinChain i) Foldable (ProteinChain i) Functor (ProteinChain i) -> Foldable (ProteinChain i) -> (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> ProteinChain i a -> f (ProteinChain i b)) -> (forall (f :: * -> *) a. Applicative f => ProteinChain i (f a) -> f (ProteinChain i a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> ProteinChain i a -> m (ProteinChain i b)) -> (forall (m :: * -> *) a. Monad m => ProteinChain i (m a) -> m (ProteinChain i a)) -> Traversable (ProteinChain i) (a -> f b) -> ProteinChain i a -> f (ProteinChain i b) forall i. Ix i => Functor (ProteinChain i) forall i. Ix i => Foldable (ProteinChain i) forall i (m :: * -> *) a. (Ix i, Monad m) => ProteinChain i (m a) -> m (ProteinChain i a) forall i (f :: * -> *) a. (Ix i, Applicative f) => ProteinChain i (f a) -> f (ProteinChain i a) forall i (m :: * -> *) a b. (Ix i, Monad m) => (a -> m b) -> ProteinChain i a -> m (ProteinChain i b) forall i (f :: * -> *) a b. (Ix i, Applicative f) => (a -> f b) -> ProteinChain i a -> f (ProteinChain i b) forall (t :: * -> *). Functor t -> Foldable t -> (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> t a -> f (t b)) -> (forall (f :: * -> *) a. Applicative f => t (f a) -> f (t a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> t a -> m (t b)) -> (forall (m :: * -> *) a. Monad m => t (m a) -> m (t a)) -> Traversable t forall (m :: * -> *) a. Monad m => ProteinChain i (m a) -> m (ProteinChain i a) forall (f :: * -> *) a. Applicative f => ProteinChain i (f a) -> f (ProteinChain i a) forall (m :: * -> *) a b. Monad m => (a -> m b) -> ProteinChain i a -> m (ProteinChain i b) forall (f :: * -> *) a b. Applicative f => (a -> f b) -> ProteinChain i a -> f (ProteinChain i b) sequence :: ProteinChain i (m a) -> m (ProteinChain i a) $csequence :: forall i (m :: * -> *) a. (Ix i, Monad m) => ProteinChain i (m a) -> m (ProteinChain i a) mapM :: (a -> m b) -> ProteinChain i a -> m (ProteinChain i b) $cmapM :: forall i (m :: * -> *) a b. (Ix i, Monad m) => (a -> m b) -> ProteinChain i a -> m (ProteinChain i b) sequenceA :: ProteinChain i (f a) -> f (ProteinChain i a) $csequenceA :: forall i (f :: * -> *) a. (Ix i, Applicative f) => ProteinChain i (f a) -> f (ProteinChain i a) traverse :: (a -> f b) -> ProteinChain i a -> f (ProteinChain i b) $ctraverse :: forall i (f :: * -> *) a b. (Ix i, Applicative f) => (a -> f b) -> ProteinChain i a -> f (ProteinChain i b) $cp2Traversable :: forall i. Ix i => Foldable (ProteinChain i) $cp1Traversable :: forall i. Ix i => Functor (ProteinChain i) Traversable, Enum (Index (ProteinChain i a)) Ixed (ProteinChain i a) Index (ProteinChain i a) -> (IxValue (ProteinChain i a) -> IxValue (ProteinChain i a)) -> ProteinChain i a -> ProteinChain i a Ixed (ProteinChain i a) -> Enum (Index (ProteinChain i a)) -> (ProteinChain i a -> (Index (ProteinChain i a), Index (ProteinChain i a))) -> (ProteinChain i a -> [(Index (ProteinChain i a), IxValue (ProteinChain i a))]) -> (Index (ProteinChain i a) -> (IxValue (ProteinChain i a) -> IxValue (ProteinChain i a)) -> ProteinChain i a -> ProteinChain i a) -> (Index (ProteinChain i a) -> (IxValue (ProteinChain i a) -> IxValue (ProteinChain i a)) -> ProteinChain i a -> ProteinChain i a) -> (Index (ProteinChain i a) -> (IxValue (ProteinChain i a) -> IxValue (ProteinChain i a)) -> ProteinChain i a -> ProteinChain i a) -> (ProteinChain i a -> Index (ProteinChain i a) -> IxValue (ProteinChain i a)) -> ChainLike (ProteinChain i a) ProteinChain i a -> [(Index (ProteinChain i a), IxValue (ProteinChain i a))] ProteinChain i a -> (Index (ProteinChain i a), Index (ProteinChain i a)) ProteinChain i a -> Index (ProteinChain i a) -> IxValue (ProteinChain i a) forall m. Ixed m -> Enum (Index m) -> (m -> (Index m, Index m)) -> (m -> [(Index m, IxValue m)]) -> (Index m -> (IxValue m -> IxValue m) -> m -> m) -> (Index m -> (IxValue m -> IxValue m) -> m -> m) -> (Index m -> (IxValue m -> IxValue m) -> m -> m) -> (m -> Index m -> IxValue m) -> ChainLike m forall i a. (Ix i, Enum i) => Enum (Index (ProteinChain i a)) forall i a. (Ix i, Enum i) => Ixed (ProteinChain i a) forall i a. (Ix i, Enum i) => Index (ProteinChain i a) -> (IxValue (ProteinChain i a) -> IxValue (ProteinChain i a)) -> ProteinChain i a -> ProteinChain i a forall i a. (Ix i, Enum i) => ProteinChain i a -> [(Index (ProteinChain i a), IxValue (ProteinChain i a))] forall i a. (Ix i, Enum i) => ProteinChain i a -> (Index (ProteinChain i a), Index (ProteinChain i a)) forall i a. (Ix i, Enum i) => ProteinChain i a -> Index (ProteinChain i a) -> IxValue (ProteinChain i a) unsafeRead :: ProteinChain i a -> Index (ProteinChain i a) -> IxValue (ProteinChain i a) $cunsafeRead :: forall i a. (Ix i, Enum i) => ProteinChain i a -> Index (ProteinChain i a) -> IxValue (ProteinChain i a) modifyAfter :: Index (ProteinChain i a) -> (IxValue (ProteinChain i a) -> IxValue (ProteinChain i a)) -> ProteinChain i a -> ProteinChain i a $cmodifyAfter :: forall i a. (Ix i, Enum i) => Index (ProteinChain i a) -> (IxValue (ProteinChain i a) -> IxValue (ProteinChain i a)) -> ProteinChain i a -> ProteinChain i a modifyBefore :: Index (ProteinChain i a) -> (IxValue (ProteinChain i a) -> IxValue (ProteinChain i a)) -> ProteinChain i a -> ProteinChain i a $cmodifyBefore :: forall i a. (Ix i, Enum i) => Index (ProteinChain i a) -> (IxValue (ProteinChain i a) -> IxValue (ProteinChain i a)) -> ProteinChain i a -> ProteinChain i a modify :: Index (ProteinChain i a) -> (IxValue (ProteinChain i a) -> IxValue (ProteinChain i a)) -> ProteinChain i a -> ProteinChain i a $cmodify :: forall i a. (Ix i, Enum i) => Index (ProteinChain i a) -> (IxValue (ProteinChain i a) -> IxValue (ProteinChain i a)) -> ProteinChain i a -> ProteinChain i a assocs :: ProteinChain i a -> [(Index (ProteinChain i a), IxValue (ProteinChain i a))] $cassocs :: forall i a. (Ix i, Enum i) => ProteinChain i a -> [(Index (ProteinChain i a), IxValue (ProteinChain i a))] bounds :: ProteinChain i a -> (Index (ProteinChain i a), Index (ProteinChain i a)) $cbounds :: forall i a. (Ix i, Enum i) => ProteinChain i a -> (Index (ProteinChain i a), Index (ProteinChain i a)) $cp2ChainLike :: forall i a. (Ix i, Enum i) => Enum (Index (ProteinChain i a)) $cp1ChainLike :: forall i a. (Ix i, Enum i) => Ixed (ProteinChain i a) ChainLike) type instance Index (ProteinChain i a) = i type instance IxValue (ProteinChain i a) = a instance Ix i => Ixed (ProteinChain i a) where ix :: Index (ProteinChain i a) -> Traversal' (ProteinChain i a) (IxValue (ProteinChain i a)) ix Index (ProteinChain i a) i' = (Chain i a -> f (Chain i a)) -> ProteinChain i a -> f (ProteinChain i a) forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b coerced ((Chain i a -> f (Chain i a)) -> ProteinChain i a -> f (ProteinChain i a)) -> ((a -> f a) -> Chain i a -> f (Chain i a)) -> (a -> f a) -> ProteinChain i a -> f (ProteinChain i a) forall b c a. (b -> c) -> (a -> b) -> a -> c . Index (Chain i a) -> Traversal' (Chain i a) (IxValue (Chain i a)) forall m. Ixed m => Index m -> Traversal' m (IxValue m) ix @(Chain i a) Index (Chain i a) Index (ProteinChain i a) i' instance IsString (ProteinChain Int AA) where fromString :: String -> ProteinChain Int AA fromString = Chain Int AA -> ProteinChain Int AA forall i a. Chain i a -> ProteinChain i a ProteinChain (Chain Int AA -> ProteinChain Int AA) -> (String -> Chain Int AA) -> String -> ProteinChain Int AA forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Chain Int AA forall a. IsString a => String -> a fromString