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
 class MkD2Secondary a where
 data SSTree idx a
 d1sTree :: D1Secondary > SSTree PairIdx ()
 d2sTree :: D2Secondary > SSTree ExtPairIdx ()
 d2Compare :: (Ord t2, Ord t1) => ((t2, t1), t3) > ((t2, t1), t) > Ordering
 d2Grouping :: (Ord a, Ord a1) => ((a1, a), t1) > ((a1, a), t) > 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 1diagrams. Each nucleotide is paired with at
most one other nucleotide. A nucleotide with index k
in [0..len1]
is
paired if unD1S VU.! k >=0 0
Unpaired status is 1
.
TODO Provide iso
between D1Secondary
and RNAss
.
Eq D1Secondary Source #  
Read D1Secondary Source #  
Show D1Secondary Source #  
Generic D1Secondary Source #  
FromJSON D1Secondary Source #  
ToJSON D1Secondary Source #  
Binary D1Secondary Source #  
Serialize D1Secondary Source #  
NFData 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 #  
FromJSON D2Secondary Source #  
ToJSON 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 1diagrams.
mkD1S :: a > D1Secondary Source #
fromD1S :: D1Secondary > a Source #
MkD1Secondary String Source #  A "fast" instance for getting the pair list of viennastructures. 
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], Vector Char) Source #  Generate Secondary given that we have an unboxed vector of characters 
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. 
class MkD2Secondary a where Source #
Conversion to and from 2diagrams.
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 #  
Treebased representation
A secondarystructure tree. Has no notion of pseudoknots.
d1sTree :: D1Secondary > SSTree PairIdx () Source #
Create a tree from (pseudoknotfree [not checked]) 1diagrams.
d2sTree :: D2Secondary > SSTree ExtPairIdx () Source #
Create a tree from (pseudoknotfree [not checked]) 2diagrams.
Instances for D1S
Instances for D2S
Older instances (should still work)
Highlevel 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!