module Biobase.TrainingData where
import Data.ByteString.Char8 as BS
import Data.List as L
import Prelude as P hiding (sequence)
import Biobase.FR3D
import Biobase.RNAstrand
import Biobase.Secondary
import Biobase.Secondary.Diagrams (dotBracket)
data TrainingData = TrainingData
{ primary :: String
, secondary :: [ExtPairIdx]
, predicted :: [ExtPairIdx]
, weight :: Double
, extendedKnowledge :: Bool
, comments :: [String]
} deriving (Read,Show)
class MkTrainingData a where
mkTrainingData :: a -> TrainingData
instance MkTrainingData LinFR3D where
mkTrainingData LinFR3D{..} = TrainingData
{ primary = BS.unpack sequence
, secondary = nub
. P.map (\((i,j),cww) -> if i<j then ((i1,j1),cww) else ((j1,i1),swp cww))
. P.map (\(i,j,cww) -> ((i,j),threeChar cww))
$ pairs
, predicted = []
, weight = 1.0
, extendedKnowledge = True
, comments = []
} where swp (c,x,y) = (c,y,x)
instance MkTrainingData RNAstrand where
mkTrainingData RNAstrand{..} = TrainingData
{ primary = BS.unpack sequence
, secondary = P.map (,(cis,wc,wc)) . dotBracket ["()","[]","<>"] . BS.unpack $ structure
, predicted = []
, weight = 1.0
, extendedKnowledge = False
, comments = []
}