-- | ViennaRNA secondary structures.
--
-- TODO extends all data structures to accept energy values associated with
-- structures, if needed.
--
-- TODO or said otherwise, parsers for RNAfold, RNAsubopt, etc output would be
-- nice.

module Biobase.Vienna where

import Data.ByteString.Char8 as BS



-- | Encapsulation of ViennaRNA secondary structures.
--
-- Sometimes, we need to associate more than one structure with a sequence.
-- This happens, for example, when parsing RNAsubopt output.

data Vienna
  = Vienna
    { sequence  :: !ByteString
    , structure :: !ByteString
    }
  | ViennaMany
    { sequence   :: !ByteString
    , structures :: ![ByteString]
    }
  deriving (Read,Show)