packages feed

BiobaseHTTPTools-1.0.0: Biobase/AccessionToTaxId.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 Data.List
import Data.Maybe

options :: Options
data Options = Options
  { accession :: String
  } deriving (Show,Data,Typeable)

options = Options
  { accession = def &= name "a" &= help "NCBI accession number, e.g NC_000913"
  } &= summary ("AccessionToTaxId ") &= help "Florian Eggenhofer - 2018" &= verbosity

accessionToTaxId :: String -> IO ()
accessionToTaxId _accession = do
  let program = Just "esummary"
  let database = Just "nucleotide"
  let queryString = "id=" ++ _accession
  let entrezQuery = EntrezHTTPQuery program database queryString
  result <- entrezHTTP entrezQuery
  let summary = head (readEntrezSummaries result)
  let taxIdItem = find (\a -> itemName a == "TaxId") (summaryItems (head (documentSummaries summary)))
  putStrLn (itemContent (fromJust taxIdItem))

main :: IO ()
main = do
  Options{..} <- cmdArgs options
  accessionToTaxId accession