{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE Arrows #-} {-# LANGUAGE RecordWildCards #-} module Main where import System.Console.CmdArgs import Biobase.Entrez.HTTP import qualified Data.ByteString.Lazy.Char8 as B import Biobase.Fasta.Types import Biobase.Fasta.Streaming options :: Options data Options = Options { geneId :: Int, geneStart :: Int, geneStop :: Int } deriving (Show,Data,Typeable) options = Options { geneId = def &= name "g" &= help "Gene id", geneStart = def &= name "s" &= help "Gene start", geneStop = def &= name "t" &= help "Gene stop" } &= summary ("Fetchsequence ") &= help "Florian Eggenhofer - 2018" &= verbosity efetchSequence :: Int -> Int -> Int -> IO () efetchSequence _geneId _geneStart _geneStop = do let eutilProgram = Just "efetch" let database = Just "nucleotide" let queryString = "id=" ++ show _geneId ++ "&seq_start=" ++ show _geneStart ++ "&seq_stop=" ++ show _geneStop ++ "&rettype=fasta" let entrezQuery = EntrezHTTPQuery eutilProgram database queryString result <- entrezHTTP entrezQuery let parsedFasta = parseFasta (B.pack result) print (fastaHeader (head (parsedFasta))) print (B.unpack (fastaSequence (head (parsedFasta)))) main :: IO () main = do Options{..} <- cmdArgs options efetchSequence geneId geneStart geneStop