-- | Wraps the BioInf.RNAEval functions, does a bit of input splitting, but not
-- much else.
--
-- TODO nonStandardMax should be an option
--
-- TODO allow different energy par files
--
-- TODO allow loading turner parameters directly
--
-- NOTE All my main programs tend to shrink to less than 100 lines of code ;-)
module Main where
import Control.Monad (liftM)
import Data.List.Split (splitEvery)
import System.IO (hFlush, stdout)
import Text.Printf
import Data.List.Split (splitEvery)
import Biobase.RNA (mkPrimary)
import Biobase.Structure
import Biobase.Structure.DotBracket
import Biobase.Vienna.Default
import Biobase.Vienna.Modification.NonStandard
import BioInf.RNAEval
-- | Evaluate the energy of a sequence and dotbracket string.
doEval trnr [pri,dotb] = do
let inp = mkPrimary pri
let sst = toSSTree $ dotbracketToPairlist dotb
let te = annotateWithEnergy trnr inp sst
mapM_ putStrLn $ explainTree inp te
printf "Total: %6d\n" $ treeSum te
hFlush stdout
return ()
main = do
print "RNAEval"
let trnr = nonStandardMax . fst $ turner2004GH -- default energy tables
cnts <- liftM (splitEvery 2 . lines) $ getContents
mapM_ (doEval trnr) cnts