BiobaseXNA 0.9.2.1 → 0.9.3.0
raw patch · 10 files changed
+150/−30 lines, 10 filesdep ~PrimitiveArraydep ~aesondep ~basePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: PrimitiveArray, aeson, base, bimaps, cereal, file-embed, lens
API changes (from Hackage documentation)
- Biobase.Primary.Letter: instance Data.Aeson.Types.Class.FromJSON (Biobase.Primary.Letter.Letter t)
- Biobase.Primary.Letter: instance Data.Aeson.Types.Class.ToJSON (Biobase.Primary.Letter.Letter t)
- Biobase.Primary.Letter: instance GHC.Generics.Constructor Biobase.Primary.Letter.C1_0Letter
- Biobase.Primary.Letter: instance GHC.Generics.Datatype Biobase.Primary.Letter.D1Letter
- Biobase.Primary.Letter: instance GHC.Generics.Selector Biobase.Primary.Letter.S1_0_0Letter
- Biobase.Secondary.Basepair: instance Data.Aeson.Types.Class.FromJSON Biobase.Secondary.Basepair.CTisomerism
- Biobase.Secondary.Basepair: instance Data.Aeson.Types.Class.FromJSON Biobase.Secondary.Basepair.Edge
- Biobase.Secondary.Basepair: instance Data.Aeson.Types.Class.ToJSON Biobase.Secondary.Basepair.CTisomerism
- Biobase.Secondary.Basepair: instance Data.Aeson.Types.Class.ToJSON Biobase.Secondary.Basepair.Edge
- Biobase.Secondary.Basepair: instance GHC.Generics.Constructor Biobase.Secondary.Basepair.C1_0CTisomerism
- Biobase.Secondary.Basepair: instance GHC.Generics.Constructor Biobase.Secondary.Basepair.C1_0Edge
- Biobase.Secondary.Basepair: instance GHC.Generics.Datatype Biobase.Secondary.Basepair.D1CTisomerism
- Biobase.Secondary.Basepair: instance GHC.Generics.Datatype Biobase.Secondary.Basepair.D1Edge
- Biobase.Secondary.Basepair: instance GHC.Generics.Selector Biobase.Secondary.Basepair.S1_0_0CTisomerism
- Biobase.Secondary.Basepair: instance GHC.Generics.Selector Biobase.Secondary.Basepair.S1_0_0Edge
- Biobase.Secondary.Diagrams: instance Data.Aeson.Types.Class.FromJSON Biobase.Secondary.Diagrams.D1Secondary
- Biobase.Secondary.Diagrams: instance Data.Aeson.Types.Class.FromJSON Biobase.Secondary.Diagrams.D2Secondary
- Biobase.Secondary.Diagrams: instance Data.Aeson.Types.Class.ToJSON Biobase.Secondary.Diagrams.D1Secondary
- Biobase.Secondary.Diagrams: instance Data.Aeson.Types.Class.ToJSON Biobase.Secondary.Diagrams.D2Secondary
- Biobase.Secondary.Diagrams: instance GHC.Generics.Constructor Biobase.Secondary.Diagrams.C1_0D1Secondary
- Biobase.Secondary.Diagrams: instance GHC.Generics.Constructor Biobase.Secondary.Diagrams.C1_0D2Secondary
- Biobase.Secondary.Diagrams: instance GHC.Generics.Constructor Biobase.Secondary.Diagrams.C1_0SSTree
- Biobase.Secondary.Diagrams: instance GHC.Generics.Constructor Biobase.Secondary.Diagrams.C1_1SSTree
- Biobase.Secondary.Diagrams: instance GHC.Generics.Datatype Biobase.Secondary.Diagrams.D1D1Secondary
- Biobase.Secondary.Diagrams: instance GHC.Generics.Datatype Biobase.Secondary.Diagrams.D1D2Secondary
- Biobase.Secondary.Diagrams: instance GHC.Generics.Datatype Biobase.Secondary.Diagrams.D1SSTree
- Biobase.Secondary.Diagrams: instance GHC.Generics.Selector Biobase.Secondary.Diagrams.S1_0_0D1Secondary
- Biobase.Secondary.Diagrams: instance GHC.Generics.Selector Biobase.Secondary.Diagrams.S1_0_0D2Secondary
- Biobase.Secondary.Vienna: instance Data.Aeson.Types.Class.FromJSON Biobase.Secondary.Vienna.ViennaPair
- Biobase.Secondary.Vienna: instance Data.Aeson.Types.Class.ToJSON Biobase.Secondary.Vienna.ViennaPair
- Biobase.Secondary.Vienna: instance GHC.Generics.Constructor Biobase.Secondary.Vienna.C1_0ViennaPair
- Biobase.Secondary.Vienna: instance GHC.Generics.Datatype Biobase.Secondary.Vienna.D1ViennaPair
- Biobase.Secondary.Vienna: instance GHC.Generics.Selector Biobase.Secondary.Vienna.S1_0_0ViennaPair
+ Biobase.Primary.AA: instance Biobase.Primary.Letter.LetterChar Biobase.Primary.AA.AA
+ Biobase.Primary.AA: instance Data.Aeson.Types.FromJSON.FromJSON (Biobase.Primary.Letter.Letter Biobase.Primary.AA.AA)
+ Biobase.Primary.AA: instance Data.Aeson.Types.ToJSON.ToJSON (Biobase.Primary.Letter.Letter Biobase.Primary.AA.AA)
+ Biobase.Primary.Letter: charLetter :: LetterChar t => Char -> Letter t
+ Biobase.Primary.Letter: class LetterChar t
+ Biobase.Primary.Letter: letterChar :: LetterChar t => Letter t -> Char
+ Biobase.Primary.Nuc.DNA: instance Biobase.Primary.Letter.LetterChar Biobase.Primary.Nuc.DNA.DNA
+ Biobase.Primary.Nuc.DNA: instance Biobase.Primary.Letter.LetterChar Biobase.Primary.Nuc.DNA.DNA => Data.Aeson.Types.ToJSON.ToJSON (Biobase.Primary.Letter.Primary Biobase.Primary.Nuc.DNA.DNA)
+ Biobase.Primary.Nuc.DNA: instance Biobase.Primary.Letter.MkPrimary (Data.Vector.Unboxed.Base.Vector GHC.Types.Char) Biobase.Primary.Nuc.DNA.DNA => Data.Aeson.Types.FromJSON.FromJSON (Biobase.Primary.Letter.Primary Biobase.Primary.Nuc.DNA.DNA)
+ Biobase.Primary.Nuc.RNA: instance Biobase.Primary.Letter.LetterChar Biobase.Primary.Nuc.RNA.RNA
+ Biobase.Primary.Nuc.RNA: instance Data.Aeson.Types.FromJSON.FromJSON (Biobase.Primary.Letter.Letter Biobase.Primary.Nuc.RNA.RNA)
+ Biobase.Primary.Nuc.RNA: instance Data.Aeson.Types.ToJSON.ToJSON (Biobase.Primary.Letter.Letter Biobase.Primary.Nuc.RNA.RNA)
+ Biobase.Primary.Nuc.XNA: instance Biobase.Primary.Letter.LetterChar Biobase.Primary.Nuc.XNA.XNA
+ Biobase.Primary.Nuc.XNA: instance Biobase.Primary.Letter.LetterChar Biobase.Primary.Nuc.XNA.XNA => Data.Aeson.Types.ToJSON.ToJSON (Biobase.Primary.Letter.Primary Biobase.Primary.Nuc.XNA.XNA)
+ Biobase.Primary.Nuc.XNA: instance Biobase.Primary.Letter.MkPrimary (Data.Vector.Unboxed.Base.Vector GHC.Types.Char) Biobase.Primary.Nuc.XNA.XNA => Data.Aeson.Types.FromJSON.FromJSON (Biobase.Primary.Letter.Primary Biobase.Primary.Nuc.XNA.XNA)
+ Biobase.Primary.Pretty: Pretty :: f a -> Pretty f a
+ Biobase.Primary.Pretty: [getPretty] :: Pretty f a -> f a
+ Biobase.Primary.Pretty: instance (Biobase.Primary.Letter.LetterChar x, Foreign.Storable.Storable (Biobase.Primary.Letter.Letter x)) => Data.Aeson.Types.ToJSON.ToJSON (Biobase.Primary.Pretty.Pretty Data.Vector.Storable.Vector (Biobase.Primary.Letter.Letter x))
+ Biobase.Primary.Pretty: instance Biobase.Primary.Letter.LetterChar x => Data.Aeson.Types.ToJSON.ToJSON (Biobase.Primary.Pretty.Pretty Data.Vector.Unboxed.Base.Vector (Biobase.Primary.Letter.Letter x))
+ Biobase.Primary.Pretty: instance Biobase.Primary.Letter.LetterChar x => Data.Aeson.Types.ToJSON.ToJSON (Biobase.Primary.Pretty.Pretty Data.Vector.Vector (Biobase.Primary.Letter.Letter x))
+ Biobase.Primary.Pretty: instance Biobase.Primary.Letter.LetterChar x => Data.Aeson.Types.ToJSON.ToJSON (Biobase.Primary.Pretty.Pretty [] (Biobase.Primary.Letter.Letter x))
+ Biobase.Primary.Pretty: newtype Pretty f a
+ Biobase.Primary.Unknown: instance Data.Aeson.Types.FromJSON.FromJSON (Biobase.Primary.Letter.Letter Biobase.Primary.Unknown.Unknown)
+ Biobase.Primary.Unknown: instance Data.Aeson.Types.ToJSON.ToJSON (Biobase.Primary.Letter.Letter Biobase.Primary.Unknown.Unknown)
+ Biobase.Secondary.Basepair: instance Data.Aeson.Types.FromJSON.FromJSON Biobase.Secondary.Basepair.CTisomerism
+ Biobase.Secondary.Basepair: instance Data.Aeson.Types.FromJSON.FromJSON Biobase.Secondary.Basepair.Edge
+ Biobase.Secondary.Basepair: instance Data.Aeson.Types.ToJSON.ToJSON Biobase.Secondary.Basepair.CTisomerism
+ Biobase.Secondary.Basepair: instance Data.Aeson.Types.ToJSON.ToJSON Biobase.Secondary.Basepair.Edge
+ Biobase.Secondary.Diagrams: instance Data.Aeson.Types.FromJSON.FromJSON Biobase.Secondary.Diagrams.D1Secondary
+ Biobase.Secondary.Diagrams: instance Data.Aeson.Types.FromJSON.FromJSON Biobase.Secondary.Diagrams.D2Secondary
+ Biobase.Secondary.Diagrams: instance Data.Aeson.Types.ToJSON.ToJSON Biobase.Secondary.Diagrams.D1Secondary
+ Biobase.Secondary.Diagrams: instance Data.Aeson.Types.ToJSON.ToJSON Biobase.Secondary.Diagrams.D2Secondary
+ Biobase.Secondary.Vienna: instance Data.Aeson.Types.FromJSON.FromJSON Biobase.Secondary.Vienna.ViennaPair
+ Biobase.Secondary.Vienna: instance Data.Aeson.Types.ToJSON.ToJSON Biobase.Secondary.Vienna.ViennaPair
- Biobase.Primary.AA: charBaa :: Bimap Char (Letter AA)
+ Biobase.Primary.AA: charBaa :: Bimap (HashMap Char (Letter AA)) (HashMap (Letter AA) Char)
- Biobase.Primary.Hashed: hash2primary :: (Unbox (Letter t), Bounded (Letter t), Enum (Letter t)) => HashedPrimary t -> Primary t
+ Biobase.Primary.Hashed: hash2primary :: forall t. (Unbox (Letter t), Bounded (Letter t), Enum (Letter t)) => HashedPrimary t -> Primary t
- Biobase.Primary.Hashed: mkHashedPrimary :: (Unbox (Letter t), Bounded (Letter t), Enum (Letter t)) => Primary t -> HashedPrimary t
+ Biobase.Primary.Hashed: mkHashedPrimary :: forall t. (Unbox (Letter t), Bounded (Letter t), Enum (Letter t)) => Primary t -> HashedPrimary t
- Biobase.Secondary.Diagrams: d2Compare :: (Ord t2, Ord t3) => ((t2, t3), t) -> ((t2, t3), t1) -> Ordering
+ Biobase.Secondary.Diagrams: d2Compare :: (Ord t3, Ord t2) => ((t2, t3), t) -> ((t2, t3), t1) -> Ordering
- Biobase.Secondary.Diagrams: d2Grouping :: (Ord a, Ord a1) => ((a, a1), t) -> ((a, a1), t1) -> Bool
+ Biobase.Secondary.Diagrams: d2Grouping :: (Ord a1, Ord a) => ((a, a1), t) -> ((a, a1), t1) -> Bool
Files
- Biobase/Primary/AA.hs +18/−2
- Biobase/Primary/Letter.hs +8/−2
- Biobase/Primary/Nuc/DNA.hs +12/−1
- Biobase/Primary/Nuc/RNA.hs +23/−0
- Biobase/Primary/Nuc/XNA.hs +11/−0
- Biobase/Primary/Pretty.hs +30/−0
- Biobase/Primary/Unknown.hs +15/−0
- Biobase/Secondary/Diagrams.hs +1/−1
- BiobaseXNA.cabal +26/−24
- changelog.md +6/−0
Biobase/Primary/AA.hs view
@@ -6,6 +6,7 @@ module Biobase.Primary.AA where import Control.Arrow ((***),first)+import Data.Aeson import Data.Hashable import Data.Ix (Ix(..)) import Data.Map.Strict (Map)@@ -13,15 +14,17 @@ import Data.Tuple (swap) import Data.Vector.Unboxed.Deriving import GHC.Base (remInt,quotInt)+import qualified GHC.Exts as GHC import GHC.Generics (Generic)+import qualified Data.Bijection.HashMap as B import qualified Data.ByteString.Char8 as BS import qualified Data.ByteString.Lazy.Char8 as BSL+import qualified Data.Foldable as F import qualified Data.Map.Strict as M import qualified Data.Text as T import qualified Data.Vector.Generic as VG import qualified Data.Vector.Generic.Mutable as VGM import qualified Data.Vector.Unboxed as VU-import qualified Data.Bijection.Map as B import Biobase.Primary.Letter @@ -65,6 +68,19 @@ aaRange = [Stop .. pred Undef] +instance LetterChar AA where+ letterChar = aaChar+ charLetter = charAA++instance ToJSON (Letter AA) where+ toJSON = toJSON . letterChar++instance FromJSON (Letter AA) where+ parseJSON = fmap charLetter . parseJSON++--instance (GHC.IsString f) => ToJSON (Pretty f (Letter AA)) where+-- toJSON = toJSON . T.pack . map letterChar . GHC.toList . getPretty+ -- | Translate 'Char' amino acid representation into efficient 'AA' newtype. charAA :: Char -> Letter AA@@ -79,7 +95,7 @@ -- * lookup tables -charBaa :: B.Bimap Char (Letter AA)+charBaa :: B.Bimap (B.HashMap Char (Letter AA)) (B.HashMap (Letter AA) Char) charBaa = B.fromList [ ('*',Stop) , ('A',A)
Biobase/Primary/Letter.hs view
@@ -34,12 +34,18 @@ instance Binary (Letter t) instance Serialize (Letter t)-instance FromJSON (Letter t)-instance ToJSON (Letter t) instance NFData (Letter t) type Primary t = VU.Vector (Letter t)++-- | Convert 'Letter' types into character forms. @DNA@, @RNA@, and @amino+-- acid@ sequences can make use of this. Other @Letter@ types only if they+-- have single-char representations.++class LetterChar t where+ letterChar :: Letter t -> Char+ charLetter :: Char -> Letter t -- | Conversion from a large number of sequence-like inputs to primary -- sequences.
Biobase/Primary/Nuc/DNA.hs view
@@ -1,6 +1,7 @@ module Biobase.Primary.Nuc.DNA where +import Data.Aeson import Data.Char (toUpper) import Data.Ix (Ix(..)) import Data.Primitive.Types@@ -41,6 +42,16 @@ toEnum k = error $ "toEnum/Letter DNA " ++ show k fromEnum (Letter k) = k +instance LetterChar DNA where+ letterChar = dnaChar+ charLetter = charDNA++instance (LetterChar DNA) => ToJSON (Primary DNA) where+ toJSON = toJSON . VU.toList . VU.map letterChar++instance (MkPrimary (VU.Vector Char) DNA) => FromJSON (Primary DNA) where+ parseJSON = fmap (primary :: String -> Primary DNA) . parseJSON+ acgt :: [Letter DNA] acgt = [A .. T] @@ -58,7 +69,7 @@ G -> 'G' T -> 'T' N -> 'N'-{-# INLINE dnaChar #-} +{-# INLINE dnaChar #-} instance Show (Letter DNA) where show c = [dnaChar c]
Biobase/Primary/Nuc/RNA.hs view
@@ -1,6 +1,7 @@ module Biobase.Primary.Nuc.RNA where +import Data.Aeson import Data.Char (toUpper) import Data.Ix (Ix(..)) import Data.Primitive.Types@@ -14,6 +15,7 @@ import qualified Data.Vector.Generic.Mutable as VGM import qualified Data.Vector.Unboxed as VU import Control.Category ((>>>))+import qualified Data.ByteString.Builder as BB import Biobase.Primary.Bounds import Biobase.Primary.Letter@@ -42,6 +44,27 @@ toEnum k | k>=0 && k<=4 = Letter k toEnum k = error $ "toEnum/Letter RNA " ++ show k fromEnum (Letter k) = k++instance LetterChar RNA where+ letterChar = rnaChar+ charLetter = charRNA++instance ToJSON (Letter RNA) where+ toJSON = toJSON . letterChar++instance FromJSON (Letter RNA) where+ parseJSON = fmap charLetter . parseJSON++-- We encode 'Primary RNA' directly as a string.+--+-- TODO we can't anymore, because this is not a newtype, just a type.++--instance ToJSON (Primary RNA) where+-- toJSON = toJSON . VU.toList . VU.map letterChar+--+--instance FromJSON (Primary RNA) where+-- parseJSON = fmap (primary :: String -> Primary RNA) . parseJSON+ acgu :: [Letter RNA] acgu = [A .. U]
Biobase/Primary/Nuc/XNA.hs view
@@ -1,6 +1,7 @@ module Biobase.Primary.Nuc.XNA where +import Data.Aeson import Data.Char (toUpper) import Data.Ix (Ix(..)) import Data.Primitive.Types@@ -43,6 +44,16 @@ toEnum k | k>=0 && k<=5 = Letter k toEnum k = error $ "toEnum/Letter XNA " ++ show k fromEnum (Letter k) = k++instance LetterChar XNA where+ letterChar = xnaChar+ charLetter = charXNA++instance (LetterChar XNA) => ToJSON (Primary XNA) where+ toJSON = toJSON . VU.toList . VU.map letterChar++instance (MkPrimary (VU.Vector Char) XNA) => FromJSON (Primary XNA) where+ parseJSON = fmap (primary :: String -> Primary XNA) . parseJSON charXNA = toUpper >>> \case 'A' -> A
+ Biobase/Primary/Pretty.hs view
@@ -0,0 +1,30 @@++-- | Wrapper newtype to simplify pretty and short encoding of primary+-- sequences.++module Biobase.Primary.Pretty where++import Data.Aeson+import qualified Data.Vector.Unboxed as VU+import qualified Data.Vector as V+import qualified Data.Vector.Storable as VS+import qualified Data.Text as T++import Biobase.Primary.Letter++++newtype Pretty f a = Pretty { getPretty :: f a }++instance (LetterChar x) => ToJSON (Pretty VU.Vector (Letter x)) where+ toJSON = String . T.pack . map letterChar . VU.toList . getPretty++instance (LetterChar x) => ToJSON (Pretty V.Vector (Letter x)) where+ toJSON = String . T.pack . map letterChar . V.toList . getPretty++instance (LetterChar x, VS.Storable (Letter x)) => ToJSON (Pretty VS.Vector (Letter x)) where+ toJSON = String . T.pack . map letterChar . VS.toList . getPretty++instance (LetterChar x) => ToJSON (Pretty [] (Letter x)) where+ toJSON = String . T.pack . map letterChar . getPretty+
Biobase/Primary/Unknown.hs view
@@ -8,6 +8,7 @@ module Biobase.Primary.Unknown where +import Data.Aeson import Control.Applicative ((<$>)) import Control.Arrow ((***),first) import Data.Hashable@@ -69,4 +70,18 @@ instance MkPrimary (VU.Vector Int) Unknown where primary = VU.map Letter {-# Inline primary #-}++instance ToJSON (Letter Unknown) where+ toJSON = toJSON . getLetter++instance FromJSON (Letter Unknown) where+ parseJSON = fmap Letter . parseJSON++{-+instance ToJSON (Primary Unknown) where+ toJSON = toJSON . map (show . getLetter) . VU.toList++instance FromJSON (Primary Unknown) where+ parseJSON = fmap (VU.fromList . map (Letter . read)) . parseJSON+-}
Biobase/Secondary/Diagrams.hs view
@@ -16,7 +16,7 @@ import Data.Tuple.Select (sel1,sel2) import Data.Tuple (swap) import Data.Vector.Binary-import Data.Vector.Cereal+import Data.Vector.Serialize import GHC.Generics import qualified Data.Vector.Unboxed as VU import Text.Printf
BiobaseXNA.cabal view
@@ -1,5 +1,5 @@ name: BiobaseXNA-version: 0.9.2.1+version: 0.9.3.0 author: Christian Hoener zu Siederdissen maintainer: choener@bioinf.uni-leipzig.de homepage: https://github.com/choener/BiobaseXNA@@ -11,7 +11,7 @@ license-file: LICENSE build-type: Simple stability: experimental-tested-with: GHC == 7.8.4, GHC == 7.10.1+tested-with: GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1 cabal-version: >= 1.10.0 description: This is a base library for bioinformatics with emphasis on RNA@@ -47,28 +47,29 @@ library- build-depends: base >= 4.7 && < 4.9- , aeson >= 0.8 && < 0.11- , bimaps >= 0.0.0.2 && < 0.0.1.0- , binary >= 0.7 && < 0.8- , bytes >= 0.15 && < 0.16- , bytestring >= 0.10 && < 0.11- , cereal >= 0.4 && < 0.5- , cereal-vector >= 0.2 && < 0.3- , containers >= 0.5 && < 0.6- , csv >= 0.1 && < 0.2- , deepseq >= 1.3 && < 1.5- , file-embed >= 0.0.8 && < 0.0.10- , hashable >= 1.2 && < 1.3- , lens >= 4.0 && < 4.14- , primitive >= 0.5 && < 0.7- , PrimitiveArray >= 0.7.0 && < 0.7.1- , split >= 0.2 && < 0.3- , text >= 1.0 && < 1.3- , tuple >= 0.3 && < 0.4- , vector >= 0.10 && < 0.12- , vector-binary-instances >= 0.2 && < 0.3- , vector-th-unbox >= 0.2 && < 0.3+ build-depends: base >= 4.7 && < 5.0+ , aeson >= 0.8 && < 1.1+ , binary >= 0.7 && < 0.8+ , bytes >= 0.15 && < 0.16+ , bytestring >= 0.10 && < 0.11+ , cereal >= 0.4 && < 0.6+ , cereal-vector >= 0.2 && < 0.3+ , containers >= 0.5 && < 0.6+ , csv >= 0.1 && < 0.2+ , deepseq >= 1.3 && < 1.5+ , file-embed >= 0.0.8 && < 0.1+ , hashable >= 1.2 && < 1.3+ , lens >= 4.0 && < 5.0+ , primitive >= 0.5 && < 0.7+ , split >= 0.2 && < 0.3+ , text >= 1.0 && < 1.3+ , tuple >= 0.3 && < 0.4+ , vector >= 0.10 && < 0.12+ , vector-binary-instances >= 0.2 && < 0.3+ , vector-th-unbox >= 0.2 && < 0.3+ --+ , bimaps == 0.1.0.*+ , PrimitiveArray == 0.7.1.* exposed-modules: Biobase.Primary Biobase.Primary.AA@@ -81,6 +82,7 @@ Biobase.Primary.Nuc.DNA Biobase.Primary.Nuc.RNA Biobase.Primary.Nuc.XNA+ Biobase.Primary.Pretty Biobase.Primary.Trans Biobase.Primary.Unknown Biobase.Secondary
changelog.md view
@@ -1,4 +1,10 @@+0.9.3.0+-------++- bigger version bump together with multiple ghc compatibility+ 0.9.2.1+------- - stack.yaml, some version bumping