packages feed

parsestar-1.4: example/STAR2Fasta.hs

{-# LANGUAGE ScopedTypeVariables, OverloadedStrings #-}
module Main where

import           System.IO             (putStrLn, hPutStrLn, hPrint, stderr)
import           System.Environment    (getArgs)
import           Control.Monad         (forM, when)
import           Data.List             (intercalate)
import qualified Data.ByteString.Char8 as BS

import           Data.STAR.ChemShifts  (parse, ChemShift(..),
                                        extractSequenceFromChemShifts,
                                        showSequenceWithChain)

main = do fnames <- getArgs
          when (null fnames) $ do
            putStrLn "Usage: STAR2Fasta <input.str> ..."
            putStrLn "Shows FASTA sequence read from NMR-STAR file."
          forM fnames $ \fname ->
            do putStr $ concat [">", fname, "\n"]
               cs <- Data.STAR.ChemShifts.parse fname
               either (hPutStrLn stderr)
                      (putStrLn                          .
                       intercalate "\n"                  .
                       map (showSequenceWithChain fname) .
                       extractSequenceFromChemShifts     ) cs