{-
  Main function for simseq

  Read a set of sequences, apply an error model to generate simulated
  sequences.

  Usage: simseq [options] fasta-file..

  See Options.hs for option details.
-}

module Main where

import Bio.Sequence

import System.IO
import Data.ByteString.Lazy.Char8 (pack)

import UnfoldMut
import Options

main :: IO ()
main = do
   (Opts pri mut trm,ss) <- getOpts
   ms <- pri ss
   let ts = mkseqs $ map (transcribe mut trm) ms
   hWriteFasta stdout ts

mkseqs :: [String] -> [Sequence]
mkseqs = map ($Nothing) . zipWith Seq [pack (">tr_"++show x) | x <- ([1..]::[Int])] . map pack

