Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- align :: forall algo m m'. (SequenceAlignment algo, Alignable m, Alignable m') => algo (IxValue m) (IxValue m') -> m -> m' -> AlignmentResult m m'
- newtype EditDistance e1 e2 = EditDistance (e1 -> e2 -> Bool)
- data GlobalAlignment a e1 e2 = GlobalAlignment (Scoring e1 e2) a
- data LocalAlignment a e1 e2 = LocalAlignment (Scoring e1 e2) a
- data SemiglobalAlignment a e1 e2 = SemiglobalAlignment (Scoring e1 e2) a
- type SimpleGap = Int
- type SimpleGap2 = (SimpleGap, SimpleGap)
- data AffineGap = AffineGap {}
- type AffineGap2 = (AffineGap, AffineGap)
- class IsGap a where
- insertCostOpen :: a -> Int
- insertCostExtend :: a -> Int
- deleteCostOpen :: a -> Int
- deleteCostExtend :: a -> Int
- isAffine :: a -> Bool
- data AlignmentResult m m' = AlignmentResult {}
- data Operation i j
- viewAlignment :: forall m m'. (Alignable m, Alignable m', Symbol (IxValue m), Symbol (IxValue m')) => AlignmentResult m m' -> (String, String)
- prettyAlignmment :: forall m m'. (Alignable m, Alignable m', Symbol (IxValue m), Symbol (IxValue m')) => AlignmentResult m m' -> Int -> String
- similarityGen' :: forall m m'. (Alignable m, Alignable m') => AlignmentResult m m' -> (IxValue m -> IxValue m' -> Bool) -> R
- similarityGen :: forall algo m m'. (SequenceAlignment algo, Alignable m, Alignable m') => algo (IxValue m) (IxValue m') -> (IxValue m -> IxValue m' -> Bool) -> m -> m' -> R
- differenceGen' :: forall m m'. (Alignable m, Alignable m') => AlignmentResult m m' -> (IxValue m -> IxValue m' -> Bool) -> R
- differenceGen :: forall algo m m'. (SequenceAlignment algo, Alignable m, Alignable m') => algo (IxValue m) (IxValue m') -> (IxValue m -> IxValue m' -> Bool) -> m -> m' -> R
- similarity' :: forall m m'. (Alignable m, Alignable m', IxValue m ~ IxValue m', Eq (IxValue m), Eq (IxValue m')) => AlignmentResult m m' -> R
- similarity :: forall algo m m'. (SequenceAlignment algo, Alignable m, Alignable m', IxValue m ~ IxValue m', Eq (IxValue m), Eq (IxValue m')) => algo (IxValue m) (IxValue m') -> m -> m' -> R
- difference' :: forall m m'. (Alignable m, Alignable m', IxValue m ~ IxValue m', Eq (IxValue m), Eq (IxValue m')) => AlignmentResult m m' -> R
- difference :: forall algo m m'. (SequenceAlignment algo, Alignable m, Alignable m', IxValue m ~ IxValue m', Eq (IxValue m), Eq (IxValue m')) => algo (IxValue m) (IxValue m') -> m -> m' -> R
Alignment function
align :: forall algo m m'. (SequenceAlignment algo, Alignable m, Alignable m') => algo (IxValue m) (IxValue m') -> m -> m' -> AlignmentResult m m' Source #
Align chains using specifed algorithm
Alignment algorithms
newtype EditDistance e1 e2 Source #
EditDistance (e1 -> e2 -> Bool) |
data GlobalAlignment a e1 e2 Source #
GlobalAlignment (Scoring e1 e2) a |
Instances
IsGap g => SequenceAlignment (GlobalAlignment g) Source # | |
Defined in Bio.Chain.Alignment.Algorithms semi :: GlobalAlignment g e1 e2 -> Bool Source # cond :: (Alignable m, Alignable m') => GlobalAlignment g (IxValue m) (IxValue m') -> Conditions m m' Source # traceStart :: (Alignable m, Alignable m') => GlobalAlignment g (IxValue m) (IxValue m') -> Matrix m m' -> m -> m' -> (Index m, Index m') Source # scoreMatrix :: (Alignable m, Alignable m') => GlobalAlignment g (IxValue m) (IxValue m') -> m -> m' -> Matrix m m' Source # |
data LocalAlignment a e1 e2 Source #
LocalAlignment (Scoring e1 e2) a |
Instances
IsGap g => SequenceAlignment (LocalAlignment g) Source # | |
Defined in Bio.Chain.Alignment.Algorithms semi :: LocalAlignment g e1 e2 -> Bool Source # cond :: (Alignable m, Alignable m') => LocalAlignment g (IxValue m) (IxValue m') -> Conditions m m' Source # traceStart :: (Alignable m, Alignable m') => LocalAlignment g (IxValue m) (IxValue m') -> Matrix m m' -> m -> m' -> (Index m, Index m') Source # scoreMatrix :: (Alignable m, Alignable m') => LocalAlignment g (IxValue m) (IxValue m') -> m -> m' -> Matrix m m' Source # |
data SemiglobalAlignment a e1 e2 Source #
SemiglobalAlignment (Scoring e1 e2) a |
Instances
IsGap g => SequenceAlignment (SemiglobalAlignment g) Source # | |
Defined in Bio.Chain.Alignment.Algorithms semi :: SemiglobalAlignment g e1 e2 -> Bool Source # cond :: (Alignable m, Alignable m') => SemiglobalAlignment g (IxValue m) (IxValue m') -> Conditions m m' Source # traceStart :: (Alignable m, Alignable m') => SemiglobalAlignment g (IxValue m) (IxValue m') -> Matrix m m' -> m -> m' -> (Index m, Index m') Source # scoreMatrix :: (Alignable m, Alignable m') => SemiglobalAlignment g (IxValue m) (IxValue m') -> m -> m' -> Matrix m m' Source # |
type SimpleGap2 = (SimpleGap, SimpleGap) Source #
Gap penalty with different SimpleGap
penalties for sequences.
First element of pair is penalty for first sequence passed to alignment algorithm, second element — penalty for second passed sequence.
Affine gap penalty
Instances
Eq AffineGap Source # | |
Show AffineGap Source # | |
Generic AffineGap Source # | |
NFData AffineGap Source # | |
Defined in Bio.Chain.Alignment.Type | |
IsGap AffineGap2 Source # | |
Defined in Bio.Chain.Alignment.Type insertCostOpen :: AffineGap2 -> Int Source # insertCostExtend :: AffineGap2 -> Int Source # deleteCostOpen :: AffineGap2 -> Int Source # deleteCostExtend :: AffineGap2 -> Int Source # isAffine :: AffineGap2 -> Bool Source # | |
IsGap AffineGap Source # | |
type Rep AffineGap Source # | |
Defined in Bio.Chain.Alignment.Type type Rep AffineGap = D1 ('MetaData "AffineGap" "Bio.Chain.Alignment.Type" "cobot-0.1.1.7-1gG22cBgMSxAc2IJYQchnS" 'False) (C1 ('MetaCons "AffineGap" 'PrefixI 'True) (S1 ('MetaSel ('Just "gapOpen") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Just "gapExtend") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))) |
type AffineGap2 = (AffineGap, AffineGap) Source #
Gap penalty with different AffineGap
penalties for sequences.
First element of pair is penalty for first sequence passed to alignment algorithm, second element — penalty for second passed sequence.
Type class that describes possible gaps in alignments.
insertCostOpen :: a -> Int Source #
Insertions are gaps in the first argument of an alignment function.
insertCostExtend :: a -> Int Source #
deleteCostOpen :: a -> Int Source #
Deletions are gaps in the second argument of an alignment function.
deleteCostExtend :: a -> Int Source #
Instances
IsGap AffineGap2 Source # | |
Defined in Bio.Chain.Alignment.Type insertCostOpen :: AffineGap2 -> Int Source # insertCostExtend :: AffineGap2 -> Int Source # deleteCostOpen :: AffineGap2 -> Int Source # deleteCostExtend :: AffineGap2 -> Int Source # isAffine :: AffineGap2 -> Bool Source # | |
IsGap AffineGap Source # | |
IsGap SimpleGap2 Source # | |
Defined in Bio.Chain.Alignment.Type insertCostOpen :: SimpleGap2 -> Int Source # insertCostExtend :: SimpleGap2 -> Int Source # deleteCostOpen :: SimpleGap2 -> Int Source # deleteCostExtend :: SimpleGap2 -> Int Source # isAffine :: SimpleGap2 -> Bool Source # | |
IsGap SimpleGap Source # | |
Alignment result types
data AlignmentResult m m' Source #
Sequence Alignment result
Instances
Operation that was performed on current step of alignment
Instances
Viewing alignment results
viewAlignment :: forall m m'. (Alignable m, Alignable m', Symbol (IxValue m), Symbol (IxValue m')) => AlignmentResult m m' -> (String, String) Source #
View alignment results as simple strings with gaps.
:: forall m m'. (Alignable m, Alignable m', Symbol (IxValue m), Symbol (IxValue m')) | |
=> AlignmentResult m m' | Result of alignment to format |
-> Int | Desired width of one alignment row |
-> String |
Format alignment result as pretty columns of symbols.
Example with width equal to 20:
0 -------------------- 0 0 TTTTTTTTTTTTTTTTTTTT 19 0 --GCCTGAATGGTGTGGTGT 17 || |||||| |||| ||| 20 TTGC-TGAATG-TGTG-TGT 36 18 TCGGCGGAGGGACCCAGCTA 37 || ||||||||||||||| 37 -CG-CGGAGGGACCCAGCT- 53 38 AAAAAAAAAA 47 53 ---------- 53
Similarity functions
These are generic variants of similarity and difference functions alongside with their specialised variants. Generic versions take the alignment algorithm used for sequence alignment, an equality function on elements of both sequences to calculate hamming distance on aligned sequences, and the sequences themselves.
Sample usage of generic functions:
>>>
similarityGen (GlobalAlignment (\x y -> if x == ord y then 1 else 0) (AffineGap (-11) (-1))) (\x y -> x == ord y) [ord 'R'.. ord 'z'] ['a'..'z']
0.63414633
This one will calculate similarity between a list of Int
s and a list of Char
s.
Generic scoring function used in alignment is \x y -> if x == ord y then 1 else 0
.
Generic equality function used in hamming distance is \x y -> x == ord y
.
Specialised versions do not take the equality function as the sequences are already constrained to have Eq
elements.
Sample usage of specialised function is the same as before:
>>>
:{
seq1 :: String seq1 = "EVQLLESGGGLVQPGGSLRLSCAASGFTFSSYAMSWVRQAPGKGLEWVSAISGSGGSTYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCAKVQLERYFDYWGQGTLVTVSS" seq2 :: String seq2 = "EVQLLESGGGLVQPGGSLRLSAAASGFTFSTFSMNWVRQAPGKGLEWVSYISRTSKTIYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYVARGRFFDYWGQGTLVTVS" similarity (GlobalAlignment blosum62 (AffineGap (-11) (-1))) s1 s2 :} 0.8130081
Sometimes for biological reasons gaps appearing in one of two sequences, that are being aligned, are not physical. For that reason we might want to use different gap penalties when aligning these sequences.
Example of usage of different gaps when aligning two sequences is presented below:
>>>
:{
seq1 :: String seq1 = "AAAAAAGGGGGGGGGGGGTTTTTTTTT" seq2 :: String seq2 = "AAAAAATTTTTTTTT" gapForSeq1 :: AffineGap gapForSeq1 = AffineGap (-5) (-1) gapForSeq2 :: AffineGap gapForSeq2 = AffineGap (-1000) (-1000) -- basically, we forbid gaps on @seq2@ local = LocalAlignment nuc44 (gapForSeq1, gapForSeq2) viewAlignment (align local seq1 seq2) :} ("TTTTTTTTT", "TTTTTTTTT")
similarityGen' :: forall m m'. (Alignable m, Alignable m') => AlignmentResult m m' -> (IxValue m -> IxValue m' -> Bool) -> R Source #
Calculate similarity by precomputed AlignmentResult
.
similarityGen :: forall algo m m'. (SequenceAlignment algo, Alignable m, Alignable m') => algo (IxValue m) (IxValue m') -> (IxValue m -> IxValue m' -> Bool) -> m -> m' -> R Source #
Calculate similarity and difference between two sequences, aligning them first using given algorithm.
differenceGen' :: forall m m'. (Alignable m, Alignable m') => AlignmentResult m m' -> (IxValue m -> IxValue m' -> Bool) -> R Source #
differenceGen :: forall algo m m'. (SequenceAlignment algo, Alignable m, Alignable m') => algo (IxValue m) (IxValue m') -> (IxValue m -> IxValue m' -> Bool) -> m -> m' -> R Source #
similarity' :: forall m m'. (Alignable m, Alignable m', IxValue m ~ IxValue m', Eq (IxValue m), Eq (IxValue m')) => AlignmentResult m m' -> R Source #
similarity :: forall algo m m'. (SequenceAlignment algo, Alignable m, Alignable m', IxValue m ~ IxValue m', Eq (IxValue m), Eq (IxValue m')) => algo (IxValue m) (IxValue m') -> m -> m' -> R Source #