{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
module Types where
import GHC.Generics
import qualified Data.ByteString.Lazy.Char8 as B
import Data.Csv
newtype ID = ID Int
newtype Wiggle = Wiggle Double
newtype Label = Label B.ByteString deriving (Eq, Ord)
newtype Frequency = Frequency Double
data Entity = Clone | Read
data FilterType = Substring | Position deriving (Read)
data Method = Hierarchical | CompareAll deriving (Read)
data AbsoluteOrFraction = Absolute | Fraction
data CurrentMinMax = CurrentMinMax
{ minMaxDLocationNum :: !(Maybe Int, Maybe Int)
, minMaxSLocationNum :: !(Maybe Int, Maybe Int)
, minMaxDSubstringLen :: !(Int, Int)
, minMaxSSubstringLen :: !(Int, Int)
} deriving (Eq,Ord,Show)
data PrintITD = PrintITD { label :: !B.ByteString
, fHeader :: !B.ByteString
, fSequence :: !B.ByteString
, dSubstring :: !B.ByteString
, dLocations :: !B.ByteString
, dMutations :: !B.ByteString
, sSubstring :: !B.ByteString
, sLocation :: !B.ByteString
, sOtherLocations :: !B.ByteString
, classification :: !B.ByteString
}
deriving (Eq, Ord, Show, Generic)
instance FromNamedRecord PrintITD
instance ToNamedRecord PrintITD
instance DefaultOrdered PrintITD
data ITDInfo = ITDInfo { label :: !B.ByteString
, fHeader :: !B.ByteString
, fSequence :: !B.ByteString
, dSubstring :: !B.ByteString
, dLocations :: !B.ByteString
, dMutations :: !B.ByteString
, sSubstring :: !B.ByteString
, sLocation :: !B.ByteString
, sOtherLocations :: !B.ByteString
, classification :: !B.ByteString
, dLocationNum :: !(Maybe Int)
, sLocationNum :: !(Maybe Int)
, dSubstringLen :: !Int
, sSubstringLen :: !Int
}
deriving (Eq, Ord, Show)
data PrintCollapsedITD = PrintCollapsedITD
{ label :: !B.ByteString
, fHeader :: !B.ByteString
, fSequence :: !B.ByteString
, dSubstring :: !B.ByteString
, dLocations :: !B.ByteString
, dMutations :: !B.ByteString
, sSubstring :: !B.ByteString
, sLocation :: !B.ByteString
, sOtherLocations :: !B.ByteString
, classification :: !B.ByteString
, frequency :: !Double
} deriving (Eq, Ord, Show, Generic)
instance FromNamedRecord PrintCollapsedITD
instance ToNamedRecord PrintCollapsedITD
instance DefaultOrdered PrintCollapsedITD
data PrintWithCloneID = PrintWithCloneID
{ label :: !B.ByteString
, fHeader :: !B.ByteString
, fSequence :: !B.ByteString
, dSubstring :: !B.ByteString
, dLocations :: !B.ByteString
, dMutations :: !B.ByteString
, sSubstring :: !B.ByteString
, sLocation :: !B.ByteString
, sOtherLocations :: !B.ByteString
, classification :: !B.ByteString
, frequency :: !Double
, cloneID :: !B.ByteString
} deriving (Eq, Ord, Show, Generic)
instance FromNamedRecord PrintWithCloneID
instance ToNamedRecord PrintWithCloneID
instance DefaultOrdered PrintWithCloneID