| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
Biobase.Secondary.Diagrams
Contents
Description
Types for RNA secondary structure. Types vary from the simplest array (D1Secondary) to rather complex ones.
Synopsis
- 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 b1, Ord a) => ((a, b1), b2) -> ((a, b1), b3) -> Ordering
 - d2Grouping :: (Ord a1, Ord a2) => ((a1, a2), b1) -> ((a1, a2), b2) -> 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)
 - d1Distance :: D1Secondary -> D1Secondary -> 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.
TODO Provide iso between D1Secondary and RNAss.
Instances
newtype D2Secondary Source #
Constructors
| D2S | |
Fields 
  | |
Instances
class MkD1Secondary a where Source #
Conversion to and from 1-diagrams.
Instances
| MkD1Secondary String Source # | A "fast" instance for getting the pair list of vienna-structures.  | 
Defined in Biobase.Secondary.Diagrams  | |
| MkD1Secondary D2Secondary Source # | Conversion between D1S and D2S is lossy in D2S -> D1S  | 
Defined in Biobase.Secondary.Diagrams  | |
| MkD1Secondary (Vector Char) Source # | |
Defined in Biobase.Secondary.Diagrams  | |
| MkD1Secondary (Int, [PairIdx]) Source # | (Length,List of Pairs)  | 
Defined in Biobase.Secondary.Diagrams  | |
| MkD1Secondary ([String], Vector Char) Source # | Generate Secondary given that we have an unboxed vector of characters  | 
Defined in Biobase.Secondary.Diagrams  | |
| 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.  | 
Defined in Biobase.Secondary.Diagrams  | |
class MkD2Secondary a where Source #
Conversion to and from 2-diagrams.
Instances
| MkD2Secondary D1Secondary Source # | Conversion between D1S and D2S is lossy in D2S -> D1S TODO   | 
Defined in Biobase.Secondary.Diagrams  | |
| MkD2Secondary (Int, [ExtPairIdx]) Source # | |
Defined in Biobase.Secondary.Diagrams Methods mkD2S :: (Int, [ExtPairIdx]) -> D2Secondary Source # fromD2S :: D2Secondary -> (Int, [ExtPairIdx]) Source #  | |
Tree-based representation
A secondary-structure tree. Has no notion of pseudoknots.
Instances
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.
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 "&"))
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.
dotBracket2pairlist :: [String] -> String -> Either String [(Int, Int)] Source #
Secondary structure parser with a notion of errors. We either return a
 Right structure, including flags, or a Left error.
viennaStringDistance :: Bool -> Bool -> String -> String -> (String, Int) Source #
Calculates the distance between two vienna strings.
d1Distance :: D1Secondary -> D1Secondary -> Int Source #
Calculate the distance between two D1Secondary structures, that live
 in the same underlying space. In particular, this probably only works
 for structures on the same primary sequence.
This function assumes somewhat dense structures, as it is O(2n) with
 n the length of the underlying vectors.
(i,k) vs (j,l)
TODO error out on weird inputs!