module BioInf.ViennaRNA.RNAeval where

import Biobase.Types.Energy (DG(..))
import Biobase.Types.Sequence (RNAseq(..))
import Biobase.Types.Structure (RNAss(..))
import BioInf.ViennaRNA.Bindings (eosTemp)

import BioInf.ViennaRNA.Internal



-- | High-level wrapper for energy-of-struct calculations similar to the
-- command line @RNAeval@.

rnaeval  Double  RNAseq  RNAss  DG
rnaeval t (RNAseq s1) (RNAss s2)
  = unsafePerformIO . withMutex
  $! DG <$> eosTemp t s1 s2
{-# NoInline rnaeval #-}