packages feed

BiobaseHTTPTools-1.0.0: Biobase/FetchSequence.hs

{-# 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