module Biobase.SubstMatrix.Import where import Control.Applicative import Data.Char (toLower) import qualified Data.Map as M import Biobase.Primary.AA (charAA) import Biobase.Types.Odds import Data.PrimitiveArray hiding (map) import qualified Biobase.Primary.AA as AA import Biobase.SubstMatrix fromFile :: FilePath -> IO (AASubstMat t) fromFile fname = do (x:xs) <- dropWhile (("#"==).take 1) . lines <$> readFile fname let cs = map head . words $ x -- should give us the characters encoding an amino acid let ss = map (map DLO . map read . drop 1 . words) $ xs let xs = [ ((Z:.charAA k1:.charAA k2),z) | (k1,s) <- zip cs ss , (k2,z) <- zip cs s ] return . AASubstMat $ fromAssocs (Z:.AA.Stop:.AA.Stop) (Z:.AA.Z:.AA.Z) (DLO $ -999) xs