-- | 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