packages feed

ADPfusion-0.5.2.2: ADPfusion.cabal

name:           ADPfusion
version:        0.5.2.2
author:         Christian Hoener zu Siederdissen, 2011-2016
copyright:      Christian Hoener zu Siederdissen, 2011-2016
homepage:       https://github.com/choener/ADPfusion
bug-reports:    https://github.com/choener/ADPfusion/issues
maintainer:     choener@bioinf.uni-leipzig.de
category:       Algorithms, Data Structures, Bioinformatics, Formal Languages
license:        BSD3
license-file:   LICENSE
build-type:     Simple
stability:      experimental
cabal-version:  >= 1.10.0
tested-with:    GHC == 7.10.3, GHC == 8.0.1
synopsis:       Efficient, high-level dynamic programming.
description:
                <http://www.bioinf.uni-leipzig.de/Software/gADP/ generalized Algebraic Dynamic Programming>
                .
                ADPfusion combines stream-fusion (using the stream interface
                provided by the vector library) and type-level programming to
                provide highly efficient dynamic programming combinators.
                .
                ADPfusion allows writing dynamic programs for single- and
                multi-tape problems. Inputs can be sequences, or sets. New
                input types can be defined, without having to rewrite this
                library thanks to the open-world assumption of ADPfusion.
                .
                The library provides the machinery for Outside and Ensemble
                algorithms as well. Ensemble algorithms combine Inside and
                Outside calculations.
                .
                Starting with version 0.4.1 we support writing multiple
                context-free grammars (interleaved syntactic variables). Such
                grammars have applications in bioinformatics and linguistics.
                .
                The homepage provides a number of tutorial-style examples, with
                linear and context-free grammars over sequence and set inputs.
                .
                The formal background for generalized algebraic dynamic
                progrmaming and ADPfusion is described in a number of papers.
                These can be found on the gADP homepage and in the README.
                .



Extra-Source-Files:
  README.md
  changelog.md



flag debug
  description:  Enable bounds checking and various other debug operations at the cost of a significant performance penalty.
  default:      False
  manual:       True

flag debugoutput
  description:  Enable debug output, which spams the screen full of index information
  default:      False
  manual:       True

flag debugdump
  description:  Enable dumping intermediate / core files
  default:      False
  manual:       True

flag examples
  description:  build the examples
  default:      False
  manual:       True

flag spectest
  description:  build the spec-ctor test case
  default:      False
  manual:       True

flag devel
  description:  build additional tests
  default:      False
  manual:       True

flag btstruc
  description:  performance test for backtracking structures
  default:      False
  manual:       True



library
  build-depends: base               >= 4.7    && < 5.0
               , bits               >= 0.4
               , containers
               , mmorph             >= 1.0
               , mtl                >= 2.0
               , primitive          >= 0.5.4
               , QuickCheck         >= 2.7
               , strict             >= 0.3
               , template-haskell   >= 2.0
               , th-orphans         >= 0.12
               , transformers       >= 0.3
               , tuple              >= 0.3
               , vector             >= 0.11
               --
               , DPutils            == 0.0.1.*
               , OrderedBits        == 0.0.1.*
               , PrimitiveArray     == 0.8.0.*

  exposed-modules:
    -- multi imports
    ADP.Fusion.Core
    ADP.Fusion.Point
    ADP.Fusion.Unit
    -- core system
    ADP.Fusion.Core.Apply
    ADP.Fusion.Core.Classes
    ADP.Fusion.Core.Multi
    ADP.Fusion.Core.TH
    ADP.Fusion.Core.TH.Backtrack
    ADP.Fusion.Core.TH.Common
    ADP.Fusion.Core.TyLvlIx
    ADP.Fusion.SynVar.Array
    ADP.Fusion.SynVar.Array.Type
    ADP.Fusion.SynVar.Axiom
    ADP.Fusion.SynVar.Backtrack
    ADP.Fusion.SynVar.Fill
    ADP.Fusion.SynVar.Indices.Classes
    ADP.Fusion.SynVar.Recursive.Type
    ADP.Fusion.SynVar.Split.Type
    ADP.Fusion.SynVar.TableWrap
    ADP.Fusion.Term.Chr.Type
    ADP.Fusion.Term.Deletion.Type
    ADP.Fusion.Term.Edge.Type
    ADP.Fusion.Term.Epsilon.Type
    ADP.Fusion.Term.PeekIndex.Type
    ADP.Fusion.Term.Strng.Type
    -- Point
    ADP.Fusion.Core.Point
    ADP.Fusion.SynVar.Indices.Point
    ADP.Fusion.SynVar.Recursive.Point
    ADP.Fusion.Term.Chr.Point
    ADP.Fusion.Term.Deletion.Point
    ADP.Fusion.Term.Epsilon.Point
    ADP.Fusion.Term.Strng.Point
    -- Unit
    ADP.Fusion.Core.Unit
    ADP.Fusion.SynVar.Indices.Unit
    ADP.Fusion.Term.Deletion.Unit
    ADP.Fusion.Term.Epsilon.Unit
    -- tutorials
    ADP.Fusion.Tutorial.NeedlemanWunsch

  default-extensions: BangPatterns
                    , ConstraintKinds
                    , CPP
                    , DataKinds
                    , DefaultSignatures
                    , DeriveDataTypeable
                    , DeriveGeneric
                    , FlexibleContexts
                    , FlexibleInstances
                    , GADTs
                    , KindSignatures
                    , MultiParamTypeClasses
                    , RankNTypes
                    , RecordWildCards
                    , ScopedTypeVariables
                    , StandaloneDeriving
                    , TemplateHaskell
                    , TupleSections
                    , TypeFamilies
                    , TypeOperators
                    , TypeSynonymInstances
                    , UndecidableInstances

  default-language:
    Haskell2010
  ghc-options:
    -O2 -funbox-strict-fields
  if flag(debugdump)
    ghc-options:
      -ddump-to-file
      -ddump-simpl
      -dsuppress-all



test-suite properties
  type:
    exitcode-stdio-1.0
  main-is:
    properties.hs
  other-modules:
    QuickCheck.Common
    QuickCheck.Point
  ghc-options:
    -threaded -rtsopts -with-rtsopts=-N
  hs-source-dirs:
    tests
  default-language:
    Haskell2010
  default-extensions: BangPatterns
                    , CPP
                    , FlexibleContexts
                    , FlexibleInstances
                    , MultiParamTypeClasses
                    , ScopedTypeVariables
                    , TemplateHaskell
                    , TypeFamilies
                    , TypeOperators
                    , TypeSynonymInstances
  cpp-options:
    -DADPFUSION_TEST_SUITE_PROPERTIES
  build-depends: base
               , ADPfusion
               , bits
               , OrderedBits
               , PrimitiveArray
               , QuickCheck
               , strict
               , tasty                        >= 0.11
               , tasty-quickcheck             >= 0.8
               , tasty-th                     >= 0.1
               , vector



-- Very simple two-sequence alignment.

executable NeedlemanWunsch

  if flag(examples)
    buildable:
      True
    build-depends:  base
                 ,  ADPfusion
                 ,  primitive
                 ,  PrimitiveArray
                 ,  template-haskell
                 ,  vector
  else
    buildable:
      False
  hs-source-dirs:
    src
  main-is:
    NeedlemanWunsch.hs
  default-language:
    Haskell2010
  default-extensions: BangPatterns
                    , FlexibleContexts
                    , FlexibleInstances
                    , MultiParamTypeClasses
                    , RecordWildCards
                    , TemplateHaskell
                    , TypeFamilies
                    , TypeOperators
  ghc-options:
    -O2
    -funbox-strict-fields
    -funfolding-use-threshold1000
    -funfolding-keeness-factor1000
  if flag(debugdump)
    ghc-options:
      -ddump-to-file
      -ddump-simpl
      -dsuppress-all



-- Very simple two-sequence alignment.

executable spectest

  if flag(spectest)
    buildable:
      True
    build-depends:  base
                 ,  ADPfusion
                 ,  PrimitiveArray
                 ,  template-haskell
                 ,  vector
  else
    buildable:
      False
  hs-source-dirs:
    src
  main-is:
    SpecTest.hs
  default-language:
    Haskell2010
  default-extensions: BangPatterns
                    , FlexibleContexts
                    , FlexibleInstances
                    , MultiParamTypeClasses
                    , RecordWildCards
                    , TemplateHaskell
                    , TypeFamilies
                    , TypeOperators
  ghc-options:
    -O2
    -funbox-strict-fields
    -funfolding-use-threshold1000
    -funfolding-keeness-factor1000
--  if flag(debug)
--    ghc-options:
--      -ddump-to-file
--      -ddump-simpl
--      -dsuppress-all



benchmark TestBacktrackingStructures
  type:
    exitcode-stdio-1.0

  if flag(btstruc)
    buildable:
      True
    build-depends: base
                 , template-haskell
                 , fmlist             >= 0.9
                 , vector
                 , criterion          >= 1.1
  else
    buildable:
      False
  hs-source-dirs:
    tests
  main-is:
    BacktrackingStructures.hs
  default-language:
    Haskell2010
  default-extensions: BangPatterns
                    , FlexibleContexts
                    , FlexibleInstances
                    , MultiParamTypeClasses
                    , RecordWildCards
                    , TemplateHaskell
                    , TypeFamilies
                    , TypeOperators
  ghc-options:
    -O2
    -funfolding-use-threshold1000
    -funfolding-keeness-factor1000



source-repository head
  type: git
  location: git://github.com/choener/ADPfusion