-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Collection of types for bioinformatics
--
-- Types used in a number of bioinformatics libraries.
--
--
-- - linear indices
-- - energies
-- - numerics
--
@package BiobaseTypes
@version 0.1.1.1
-- | Strand information. A newtyped version, complete with serialization,
-- pattern synonyms, being a PrimitiveArray index type, etc.
--
-- TODO will be expanded to encode biological sense information more
-- clearly:
-- http://en.wikipedia.org/wiki/Sense_%28molecular_biology%29.
module Biobase.Types.Strand
newtype Strand
Strand :: Int -> Strand
[getStrand] :: Strand -> Int
instance Data.Vector.Unboxed.Base.Unbox Biobase.Types.Strand.Strand
instance Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector Biobase.Types.Strand.Strand
instance Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector Biobase.Types.Strand.Strand
instance Data.PrimitiveArray.Index.Class.Index Biobase.Types.Strand.Strand
instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Biobase.Types.Strand.Strand)
instance Data.PrimitiveArray.Index.Class.IndexStream Biobase.Types.Strand.Strand
instance Test.QuickCheck.Arbitrary.Arbitrary Biobase.Types.Strand.Strand
instance GHC.Generics.Selector Biobase.Types.Strand.S1_0_0Strand
instance GHC.Generics.Constructor Biobase.Types.Strand.C1_0Strand
instance GHC.Generics.Datatype Biobase.Types.Strand.D1Strand
instance GHC.Generics.Generic Biobase.Types.Strand.Strand
instance GHC.Classes.Ord Biobase.Types.Strand.Strand
instance GHC.Classes.Eq Biobase.Types.Strand.Strand
instance GHC.Show.Show Biobase.Types.Strand.Strand
instance GHC.Read.Read Biobase.Types.Strand.Strand
instance GHC.Enum.Bounded Biobase.Types.Strand.Strand
instance GHC.Enum.Enum Biobase.Types.Strand.Strand
instance Control.DeepSeq.NFData Biobase.Types.Strand.Strand
instance Data.Binary.Class.Binary Biobase.Types.Strand.Strand
instance Data.Serialize.Serialize Biobase.Types.Strand.Strand
instance Data.Aeson.Types.Class.ToJSON Biobase.Types.Strand.Strand
instance Data.Aeson.Types.Class.FromJSON Biobase.Types.Strand.Strand
instance Data.Hashable.Class.Hashable Biobase.Types.Strand.Strand
-- | Discretized log-odds.
module Biobase.Types.Odds
-- | Discretized log-odds.
--
-- The BLOSUM matrices, for example, store data in discretized log-odds
-- form.
--
-- TODO Might move up even higher into statistics modules.
newtype DLO
DLO :: Int -> DLO
[getDLO] :: DLO -> Int
instance Data.Vector.Unboxed.Base.Unbox Biobase.Types.Odds.DLO
instance Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector Biobase.Types.Odds.DLO
instance Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector Biobase.Types.Odds.DLO
instance Data.Binary.Class.Binary Biobase.Types.Odds.DLO
instance Data.Serialize.Serialize Biobase.Types.Odds.DLO
instance Data.Aeson.Types.Class.FromJSON Biobase.Types.Odds.DLO
instance Data.Aeson.Types.Class.ToJSON Biobase.Types.Odds.DLO
instance Control.DeepSeq.NFData Biobase.Types.Odds.DLO
instance GHC.Generics.Selector Biobase.Types.Odds.S1_0_0DLO
instance GHC.Generics.Constructor Biobase.Types.Odds.C1_0DLO
instance GHC.Generics.Datatype Biobase.Types.Odds.D1DLO
instance GHC.Read.Read Biobase.Types.Odds.DLO
instance GHC.Show.Show Biobase.Types.Odds.DLO
instance GHC.Classes.Ord Biobase.Types.Odds.DLO
instance GHC.Classes.Eq Biobase.Types.Odds.DLO
instance GHC.Generics.Generic Biobase.Types.Odds.DLO
module Biobase.Types.Index.Type
-- | A linear Int-based index type.
newtype Index (t :: Nat)
Index :: Int -> Index
[getIndex] :: Index -> Int
-- | Turn an Int into an Index safely.
index :: KnownNat t => Int -> Index t
-- | Produce Just and Index or Nothing.
maybeIndex :: KnownNat t => Int -> Maybe (Index t)
instance Data.Vector.Unboxed.Base.Unbox (Biobase.Types.Index.Type.Index t0)
instance Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (Biobase.Types.Index.Type.Index t0)
instance Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (Biobase.Types.Index.Type.Index t0)
instance GHC.TypeLits.KnownNat t => Data.PrimitiveArray.Index.Class.Index (Biobase.Types.Index.Type.Index t)
instance Data.PrimitiveArray.Index.Class.IndexStream z => Data.PrimitiveArray.Index.Class.IndexStream (z Data.PrimitiveArray.Index.Class.:. Biobase.Types.Index.Type.Index t)
instance Data.PrimitiveArray.Index.Class.IndexStream (Biobase.Types.Index.Type.Index t)
instance Test.QuickCheck.Arbitrary.Arbitrary (Biobase.Types.Index.Type.Index t)
instance GHC.Generics.Selector Biobase.Types.Index.Type.S1_0_0Index
instance GHC.Generics.Constructor Biobase.Types.Index.Type.C1_0Index
instance GHC.Generics.Datatype Biobase.Types.Index.Type.D1Index
instance GHC.Arr.Ix (Biobase.Types.Index.Type.Index t)
instance GHC.Generics.Generic (Biobase.Types.Index.Type.Index t)
instance GHC.Classes.Ord (Biobase.Types.Index.Type.Index t)
instance GHC.Classes.Eq (Biobase.Types.Index.Type.Index t)
instance GHC.Read.Read (Biobase.Types.Index.Type.Index t)
instance GHC.Show.Show (Biobase.Types.Index.Type.Index t)
instance GHC.TypeLits.KnownNat t => GHC.Num.Num (Biobase.Types.Index.Type.Index t)
instance Control.DeepSeq.NFData (Biobase.Types.Index.Type.Index t)
instance Data.Binary.Class.Binary (Biobase.Types.Index.Type.Index t)
instance Data.Serialize.Serialize (Biobase.Types.Index.Type.Index t)
instance Data.Aeson.Types.Class.ToJSON (Biobase.Types.Index.Type.Index t)
instance Data.Aeson.Types.Class.FromJSON (Biobase.Types.Index.Type.Index t)
instance Data.Hashable.Class.Hashable (Biobase.Types.Index.Type.Index t)
-- | Biological sequence data is oftentimes indexed either 0- or
-- 1-based. The Index type developed provides static
-- guarantees that there is no confusion what index is in use.
--
-- This module does not export the ctor Index. If you want to
-- (unsafely) use it, import Biobase.Types.Index.Type directly.
-- Use fromInt0 to make clear that you count from 0 and
-- transform to an Index t. I.e. fromInt0 0 :: Index 1
-- yields the lowest 1-base index.
module Biobase.Types.Index
-- | Uses index to guarantee that the Index is ok.
checkIndex :: KnownNat t => Index t -> Index t
-- | Re-Index an index of type Index n as Index m. This
-- is always safe, as 0 :: Index 0 gives 1 :: Index 1
-- for example. I.e. valid indices become valid indices.
reIndex :: (KnownNat n, KnownNat m) => Index n -> Index m
-- | Helper function that allows addition of an Index and
-- an Int, with the Int on the right.
(+.) :: KnownNat t => Index t -> Int -> Index t
-- | Unsafe plus.
unsafePlus :: KnownNat t => Index t -> Int -> Index t
-- | Helper function that allows subtraction of an Index
-- and an Int, with the Int on the right.
(-.) :: KnownNat t => Index t -> Int -> Index t
-- | Unsafe minus.
unsafeMinus :: KnownNat t => Index t -> Int -> Index t
-- | Return the index as an Int-style index that is zero-based.
toInt0 :: KnownNat t => Index t -> Int
-- | As an index from an Int-style zero-based one.
--
-- TODO We might want to check that the argument is [0..].
fromInt0 :: KnownNat t => Int -> Index t
-- | Zero-based indices.
type I0 = Index 0
-- | One-based indices.
type I1 = Index 1
getIndex :: Index t -> Int
-- | Turn an Int into an Index safely.
index :: KnownNat t => Int -> Index t
-- | Produce Just and Index or Nothing.
maybeIndex :: KnownNat t => Int -> Maybe (Index t)
-- | A linear Int-based index type.
data Index (t :: Nat)
-- | For some values, we want to have different kind of extreme values.
-- Consider a Double representing an energy. We want near
-- infinities that do not lead to numeric problems.
--
-- TODO benchmark different extremes and their interplay with algebraic
-- operations.
--
-- TODO consider the ieee754 package
module Biobase.Types.NumericalExtremes
-- | Very large and small numbers with some numerical safety to
-- 1/0 or maxBound (depending on if we are
-- Integral or RealFloat.
--
-- We have:
--
--
-- maxFinite >= extremelyLarge >= veryLarge
--
--
--
-- veryLarge >= verySmall
--
--
-- verySmall >= extremelySmall >= minFinite.
--
-- TODO the small stuff should actually be around zero, but positive and
-- go into NumericalEpsilon. Here we should actually use other
-- names.
class NumericalExtremes x
-- | Largest finite number
maxFinite :: NumericalExtremes x => x
-- | Smallest finite number
minFinite :: NumericalExtremes x => x
-- | Around 1/100 of the largest finite number
veryLarge :: NumericalExtremes x => x
-- | Around 1/100 of the smallest finite number
verySmall :: NumericalExtremes x => x
-- | Around 1/ 10 of the largest finite number
extremelyLarge :: NumericalExtremes x => x
-- | Around 1/ 10 of the smallest finite number
extremelySmall :: NumericalExtremes x => x
-- | Small numbers.
class NumericalEpsilon x
-- | Smallest positive number /= 0.0.
epsilon :: NumericalEpsilon x => x
instance Biobase.Types.NumericalExtremes.NumericalExtremes GHC.Types.Int
instance Biobase.Types.NumericalExtremes.NumericalExtremes GHC.Types.Double
instance Biobase.Types.NumericalExtremes.NumericalEpsilon GHC.Types.Double
-- | Different types of energies and conversion between.
--
-- TODO enthalpy TODO entropy
module Biobase.Types.Energy
-- | Gibbs free energy change.
--
-- For RNA structure, the change in energy from the unfolded structure to
-- the given structure.
--
-- In units of kcal / mol.
--
-- TODO shall we phantom-type the actual units?
newtype DeltaGibbs
DG :: Double -> DeltaGibbs
[getDG] :: DeltaGibbs -> Double
-- | round $ DeltaGibbs / 100.
newtype DeltaDekaGibbs
DekaG :: Int -> DeltaDekaGibbs
[getDekaG] :: DeltaDekaGibbs -> Int
instance Biobase.Types.NumericalExtremes.NumericalExtremes Biobase.Types.Energy.DeltaDekaGibbs
instance Data.Vector.Unboxed.Base.Unbox Biobase.Types.Energy.DeltaDekaGibbs
instance Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector Biobase.Types.Energy.DeltaDekaGibbs
instance Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector Biobase.Types.Energy.DeltaDekaGibbs
instance Data.Hashable.Class.Hashable Biobase.Types.Energy.DeltaDekaGibbs
instance Data.Binary.Class.Binary Biobase.Types.Energy.DeltaDekaGibbs
instance Data.Serialize.Serialize Biobase.Types.Energy.DeltaDekaGibbs
instance Data.Aeson.Types.Class.FromJSON Biobase.Types.Energy.DeltaDekaGibbs
instance Data.Aeson.Types.Class.ToJSON Biobase.Types.Energy.DeltaDekaGibbs
instance Data.Default.Class.Default Biobase.Types.Energy.DeltaDekaGibbs
instance GHC.Generics.Selector Biobase.Types.Energy.S1_0_0DeltaDekaGibbs
instance GHC.Generics.Constructor Biobase.Types.Energy.C1_0DeltaDekaGibbs
instance GHC.Generics.Datatype Biobase.Types.Energy.D1DeltaDekaGibbs
instance GHC.Generics.Generic Biobase.Types.Energy.DeltaDekaGibbs
instance GHC.Show.Show Biobase.Types.Energy.DeltaDekaGibbs
instance GHC.Read.Read Biobase.Types.Energy.DeltaDekaGibbs
instance GHC.Num.Num Biobase.Types.Energy.DeltaDekaGibbs
instance GHC.Classes.Ord Biobase.Types.Energy.DeltaDekaGibbs
instance GHC.Classes.Eq Biobase.Types.Energy.DeltaDekaGibbs
instance Biobase.Types.NumericalExtremes.NumericalExtremes Biobase.Types.Energy.DeltaGibbs
instance Biobase.Types.NumericalExtremes.NumericalEpsilon Biobase.Types.Energy.DeltaGibbs
instance Data.Vector.Unboxed.Base.Unbox Biobase.Types.Energy.DeltaGibbs
instance Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector Biobase.Types.Energy.DeltaGibbs
instance Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector Biobase.Types.Energy.DeltaGibbs
instance Data.Hashable.Class.Hashable Biobase.Types.Energy.DeltaGibbs
instance Data.Binary.Class.Binary Biobase.Types.Energy.DeltaGibbs
instance Data.Serialize.Serialize Biobase.Types.Energy.DeltaGibbs
instance Data.Aeson.Types.Class.FromJSON Biobase.Types.Energy.DeltaGibbs
instance Data.Aeson.Types.Class.ToJSON Biobase.Types.Energy.DeltaGibbs
instance Data.Default.Class.Default Biobase.Types.Energy.DeltaGibbs
instance GHC.Generics.Selector Biobase.Types.Energy.S1_0_0DeltaGibbs
instance GHC.Generics.Constructor Biobase.Types.Energy.C1_0DeltaGibbs
instance GHC.Generics.Datatype Biobase.Types.Energy.D1DeltaGibbs
instance GHC.Generics.Generic Biobase.Types.Energy.DeltaGibbs
instance GHC.Show.Show Biobase.Types.Energy.DeltaGibbs
instance GHC.Read.Read Biobase.Types.Energy.DeltaGibbs
instance GHC.Real.Fractional Biobase.Types.Energy.DeltaGibbs
instance GHC.Num.Num Biobase.Types.Energy.DeltaGibbs
instance GHC.Classes.Ord Biobase.Types.Energy.DeltaGibbs
instance GHC.Classes.Eq Biobase.Types.Energy.DeltaGibbs
module Biobase.Types.Accession
-- | The accession number is a unique identifier in bioinformatics.
--
-- Depending on the source, accession numbers follow different
-- alphanumeric formats! While letters-than-numbers is quite common,
-- swissprot uses a mix. Hence, we just use a text string as accession.
--
-- A phantom type is provided to enable type safety annotations. Helper
-- functions provide smart construction from the Accession
-- tagged generic type.
newtype Accession t
Accession :: Text -> Accession t
[_getAccession] :: Accession t -> Text
accession :: Stringable s => s -> Accession t
tagAccession :: Accession f -> Accession t
-- | nucleotide sequence
data Nucleotide
-- | protein sequence
data Protein
-- | Tag as being a clan.
data Clan
-- | Tag as being a Pfam model.
data Pfam
-- | Tag as being an Rfam model. Used for Stockholm and CM files.
data Rfam
-- | Species have an accession number, too.
data Species
instance GHC.Generics.Selector Biobase.Types.Accession.S1_0_0Accession
instance GHC.Generics.Constructor Biobase.Types.Accession.C1_0Accession
instance GHC.Generics.Datatype Biobase.Types.Accession.D1Accession
instance GHC.Generics.Generic (Biobase.Types.Accession.Accession t)
instance GHC.Show.Show (Biobase.Types.Accession.Accession t)
instance GHC.Read.Read (Biobase.Types.Accession.Accession t)
instance GHC.Classes.Ord (Biobase.Types.Accession.Accession t)
instance GHC.Classes.Eq (Biobase.Types.Accession.Accession t)
instance Data.String.IsString (Biobase.Types.Accession.Accession t)
instance Data.Binary.Class.Binary (Biobase.Types.Accession.Accession t)
instance Data.Aeson.Types.Class.FromJSON (Biobase.Types.Accession.Accession t)
instance Data.Hashable.Class.Hashable (Biobase.Types.Accession.Accession t)
instance Data.Serialize.Serialize (Biobase.Types.Accession.Accession t)
instance Data.Aeson.Types.Class.ToJSON (Biobase.Types.Accession.Accession t)