Safe Haskell | None |
---|---|
Language | Haskell2010 |
Types for RNA secondary structure. Types vary from the simplest array (D1Secondary) to rather complex ones.
- newtype D1Secondary = D1S {}
- newtype D2Secondary = D2S {
- unD2S :: Vector ((Int, Edge, CTisomerism), (Int, Edge, CTisomerism))
- class MkD1Secondary a where
- mkD1S :: a -> D1Secondary
- fromD1S :: D1Secondary -> a
- class MkD2Secondary a where
- mkD2S :: a -> D2Secondary
- fromD2S :: D2Secondary -> a
- data SSTree idx a
- d1sTree :: D1Secondary -> SSTree PairIdx ()
- d2sTree :: D2Secondary -> SSTree ExtPairIdx ()
- d2Compare :: (Ord t2, Ord t3) => ((t2, t3), t) -> ((t2, t3), t1) -> Ordering
- d2Grouping :: (Ord a, Ord a1) => ((a, a1), t) -> ((a, a1), t1) -> Bool
- isCanonicalStructure :: String -> Bool
- isConstraintStructure :: String -> Bool
- structures :: Iso' String [String]
- foldStructure :: Prism' String String
- cofoldStructure :: Prism' String (String, String)
- unsafeDotBracket2pairlist :: [String] -> String -> [(Int, Int)]
- dotBracket2pairlist :: [String] -> String -> Either String [(Int, Int)]
- viennaStringDistance :: Bool -> Bool -> String -> String -> (String, Int)
Documentation
newtype D1Secondary Source
RNA secondary structure with 1-diagrams. Each nucleotide is paired with at
most one other nucleotide. A nucleotide with index k
in [0..len-1]
is
paired if unD1S VU.! k >=0 0
Unpaired status is -1
.
Eq D1Secondary Source | |
Read D1Secondary Source | |
Show D1Secondary Source | |
Generic D1Secondary Source | |
ToJSON D1Secondary Source | |
FromJSON D1Secondary Source | |
Binary D1Secondary Source | |
Serialize D1Secondary Source | |
MkD2Secondary D1Secondary Source | Conversion between D1S and D2S is lossy in D2S -> D1S TODO |
type Rep D1Secondary Source |
newtype D2Secondary Source
D2S | |
|
Eq D2Secondary Source | |
Read D2Secondary Source | |
Show D2Secondary Source | |
Generic D2Secondary Source | |
ToJSON D2Secondary Source | |
FromJSON D2Secondary Source | |
Binary D2Secondary Source | |
Serialize D2Secondary Source | |
MkD1Secondary D2Secondary Source | Conversion between D1S and D2S is lossy in D2S -> D1S |
type Rep D2Secondary Source |
class MkD1Secondary a where Source
Conversion to and from 1-diagrams.
mkD1S :: a -> D1Secondary Source
fromD1S :: D1Secondary -> a Source
MkD1Secondary String Source | A "fast" instance for getting the pair list of vienna-structures. |
MkD1Secondary D2Secondary Source | Conversion between D1S and D2S is lossy in D2S -> D1S |
MkD1Secondary (Vector Char) Source | |
MkD1Secondary (Int, [PairIdx]) Source | (Length,List of Pairs) |
MkD1Secondary ([String], String) Source | A second primitive generator, requiring dictionary and String. This one generates pairs that are then used by the above instance. The dict is a list of possible brackets: ["()"] being the minimal set. |
MkD1Secondary ([String], Vector Char) Source | Generate Secondary given that we have an unboxed vector of characters |
class MkD2Secondary a where Source
Conversion to and from 2-diagrams.
mkD2S :: a -> D2Secondary Source
fromD2S :: D2Secondary -> a Source
MkD2Secondary D1Secondary Source | Conversion between D1S and D2S is lossy in D2S -> D1S TODO |
MkD2Secondary (Int, [ExtPairIdx]) Source |
Tree-based representation
A secondary-structure tree. Has no notion of pseudoknots.
d1sTree :: D1Secondary -> SSTree PairIdx () Source
Create a tree from (pseudoknot-free [not checked]) 1-diagrams.
d2sTree :: D2Secondary -> SSTree ExtPairIdx () Source
Create a tree from (pseudoknot-free [not checked]) 2-diagrams.
d2Grouping :: (Ord a, Ord a1) => ((a, a1), t) -> ((a, a1), t1) -> Bool Source
Instances for D1S
Instances for D2S
Older instances (should still work)
High-level parsing functionality for secondary structures
isCanonicalStructure :: String -> Bool Source
Completely canonical structure.
TODO Check size of hairpins and interior loops?
isConstraintStructure :: String -> Bool Source
Is constraint type structure, i.e. there can also be symbols present that denote up- or downstream pairing.
structures :: Iso' String [String] Source
Take a structural string and split it into its constituents.
If we decide to NOT depend on lens
explicitly, another way to write
this is:
structures :: forall p f . (Profunctor p, Functor f) => p [String] (f [String]) -> p String (f String) structures = dimap (splitOn "&") (fmap (concat . intersperse "&"))
foldStructure :: Prism' String String Source
A fold
structure is a single structure
cofoldStructure :: Prism' String (String, String) Source
A cofold
structure has exactly two structures split by &
(which the
prism removes).
Helper functions
unsafeDotBracket2pairlist :: [String] -> String -> [(Int, Int)] Source
Secondary structure parser which allows pseudoknots, if they use different kinds of brackets.