packages feed

Taxonomy 1.0.1 → 1.0.2

raw patch · 3 files changed

+97/−46 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Bio.Taxonomy: drawTreeComparison :: (Int, Gr CompareTaxon Double) -> String
- Bio.TaxonomyData: abbreviation :: TaxGenCode -> Maybe String
- Bio.TaxonomyData: assembly :: Gene2Accession -> String
- Bio.TaxonomyData: cde :: TaxGenCode -> String
- Bio.TaxonomyData: citId :: TaxCitation -> Int
- Bio.TaxonomyData: citKey :: TaxCitation -> Maybe String
- Bio.TaxonomyData: classCDE :: TaxonName -> String
- Bio.TaxonomyData: compareRank :: CompareTaxon -> Rank
- Bio.TaxonomyData: compareScientificName :: CompareTaxon -> ByteString
- Bio.TaxonomyData: createDate :: Taxon -> String
- Bio.TaxonomyData: delTaxId :: TaxDelNode -> Int
- Bio.TaxonomyData: dispName :: TaxonName -> String
- Bio.TaxonomyData: division :: Taxon -> String
- Bio.TaxonomyData: divisionCDE :: TaxDivision -> String
- Bio.TaxonomyData: divisionComments :: TaxDivision -> Maybe String
- Bio.TaxonomyData: divisionId :: TaxDivision -> Int
- Bio.TaxonomyData: divisonName :: TaxDivision -> String
- Bio.TaxonomyData: emblCode :: TaxNode -> Maybe String
- Bio.TaxonomyData: endPositionOnTheGenomicAccession :: Gene2Accession -> String
- Bio.TaxonomyData: genBankHiddenFlag :: TaxNode -> Bool
- Bio.TaxonomyData: geneCodeName :: TaxGenCode -> String
- Bio.TaxonomyData: geneID :: Gene2Accession -> Int
- Bio.TaxonomyData: geneticCode :: Taxon -> TaxGenCode
- Bio.TaxonomyData: geneticCodeId :: TaxGenCode -> Int
- Bio.TaxonomyData: genomicNucleotideAccessionVersion :: Gene2Accession -> String
- Bio.TaxonomyData: genomicNucleotideGi :: Gene2Accession -> String
- Bio.TaxonomyData: hiddenSubtreeRootFlag :: TaxNode -> Bool
- Bio.TaxonomyData: inTree :: CompareTaxon -> [Int]
- Bio.TaxonomyData: inheritedDivFlag :: TaxNode -> Bool
- Bio.TaxonomyData: inheritedGCFlag :: TaxNode -> Bool
- Bio.TaxonomyData: inheritedMGCFlag :: TaxNode -> Bool
- Bio.TaxonomyData: instance Bounded Rank
- Bio.TaxonomyData: instance Enum Rank
- Bio.TaxonomyData: instance Eq CompareTaxon
- Bio.TaxonomyData: instance Eq Gene2Accession
- Bio.TaxonomyData: instance Eq LineageTaxon
- Bio.TaxonomyData: instance Eq NCBITaxDump
- Bio.TaxonomyData: instance Eq Rank
- Bio.TaxonomyData: instance Eq SimpleGene2Accession
- Bio.TaxonomyData: instance Eq SimpleTaxon
- Bio.TaxonomyData: instance Eq TaxCitation
- Bio.TaxonomyData: instance Eq TaxDelNode
- Bio.TaxonomyData: instance Eq TaxDivision
- Bio.TaxonomyData: instance Eq TaxGenCode
- Bio.TaxonomyData: instance Eq TaxMergedNode
- Bio.TaxonomyData: instance Eq TaxName
- Bio.TaxonomyData: instance Eq TaxNode
- Bio.TaxonomyData: instance Eq Taxon
- Bio.TaxonomyData: instance Eq TaxonName
- Bio.TaxonomyData: instance Ord Rank
- Bio.TaxonomyData: instance Read CompareTaxon
- Bio.TaxonomyData: instance Read Gene2Accession
- Bio.TaxonomyData: instance Read NCBITaxDump
- Bio.TaxonomyData: instance Read Rank
- Bio.TaxonomyData: instance Read SimpleGene2Accession
- Bio.TaxonomyData: instance Read SimpleTaxon
- Bio.TaxonomyData: instance Read TaxCitation
- Bio.TaxonomyData: instance Read TaxDelNode
- Bio.TaxonomyData: instance Read TaxDivision
- Bio.TaxonomyData: instance Read TaxGenCode
- Bio.TaxonomyData: instance Read TaxMergedNode
- Bio.TaxonomyData: instance Read TaxName
- Bio.TaxonomyData: instance Read TaxNode
- Bio.TaxonomyData: instance Show CompareTaxon
- Bio.TaxonomyData: instance Show Gene2Accession
- Bio.TaxonomyData: instance Show LineageTaxon
- Bio.TaxonomyData: instance Show NCBITaxDump
- Bio.TaxonomyData: instance Show Rank
- Bio.TaxonomyData: instance Show SimpleGene2Accession
- Bio.TaxonomyData: instance Show SimpleTaxon
- Bio.TaxonomyData: instance Show TaxCitation
- Bio.TaxonomyData: instance Show TaxDelNode
- Bio.TaxonomyData: instance Show TaxDivision
- Bio.TaxonomyData: instance Show TaxGenCode
- Bio.TaxonomyData: instance Show TaxMergedNode
- Bio.TaxonomyData: instance Show TaxName
- Bio.TaxonomyData: instance Show TaxNode
- Bio.TaxonomyData: instance Show Taxon
- Bio.TaxonomyData: instance Show TaxonName
- Bio.TaxonomyData: instance ToJSON (Gr SimpleTaxon Double)
- Bio.TaxonomyData: lineage :: Taxon -> String
- Bio.TaxonomyData: lineageEx :: Taxon -> [LineageTaxon]
- Bio.TaxonomyData: lineageRank :: LineageTaxon -> Rank
- Bio.TaxonomyData: lineageScienticName :: LineageTaxon -> String
- Bio.TaxonomyData: lineageTaxId :: LineageTaxon -> Int
- Bio.TaxonomyData: maturePeptideAccessionVersion :: Gene2Accession -> String
- Bio.TaxonomyData: maturePeptideGi :: Gene2Accession -> String
- Bio.TaxonomyData: medlineId :: TaxCitation -> Maybe Int
- Bio.TaxonomyData: mitoGeneticCode :: Taxon -> TaxGenCode
- Bio.TaxonomyData: mitochondrialGeneticCodeId :: TaxNode -> String
- Bio.TaxonomyData: nameClass :: TaxName -> ByteString
- Bio.TaxonomyData: nameTaxId :: TaxName -> Int
- Bio.TaxonomyData: nameTxt :: TaxName -> ByteString
- Bio.TaxonomyData: newTaxId :: TaxMergedNode -> Int
- Bio.TaxonomyData: nodeComments :: TaxNode -> Maybe String
- Bio.TaxonomyData: nodeDivisionId :: TaxNode -> String
- Bio.TaxonomyData: nodeGeneticCodeId :: TaxNode -> String
- Bio.TaxonomyData: oldTaxId :: TaxMergedNode -> Int
- Bio.TaxonomyData: orientation :: Gene2Accession -> String
- Bio.TaxonomyData: parentTaxId :: TaxNode -> Int
- Bio.TaxonomyData: proteinAccessionVersion :: Gene2Accession -> String
- Bio.TaxonomyData: proteinGi :: Gene2Accession -> String
- Bio.TaxonomyData: pubDate :: Taxon -> String
- Bio.TaxonomyData: pubmedId :: TaxCitation -> Maybe Int
- Bio.TaxonomyData: rank :: TaxNode -> Rank
- Bio.TaxonomyData: rnaNucleotideAccessionVersion :: Gene2Accession -> String
- Bio.TaxonomyData: rnaNucleotideGi :: Gene2Accession -> String
- Bio.TaxonomyData: simpleGenomicNucleotideAccessionVersion :: SimpleGene2Accession -> String
- Bio.TaxonomyData: simpleParentTaxId :: SimpleTaxon -> Int
- Bio.TaxonomyData: simpleRank :: SimpleTaxon -> Rank
- Bio.TaxonomyData: simpleScientificName :: SimpleTaxon -> ByteString
- Bio.TaxonomyData: simpleTaxId :: SimpleTaxon -> Int
- Bio.TaxonomyData: simpleTaxIdEntry :: SimpleGene2Accession -> Int
- Bio.TaxonomyData: startPositionOnTheGenomicAccession :: Gene2Accession -> String
- Bio.TaxonomyData: starts :: TaxGenCode -> String
- Bio.TaxonomyData: status :: Gene2Accession -> String
- Bio.TaxonomyData: taxCitations :: NCBITaxDump -> [TaxCitation]
- Bio.TaxonomyData: taxDelNodes :: NCBITaxDump -> [TaxDelNode]
- Bio.TaxonomyData: taxDivisions :: NCBITaxDump -> [TaxDivision]
- Bio.TaxonomyData: taxGenCodes :: NCBITaxDump -> [TaxGenCode]
- Bio.TaxonomyData: taxId :: TaxNode -> Int
- Bio.TaxonomyData: taxIdEntry :: Gene2Accession -> Int
- Bio.TaxonomyData: taxIdList :: TaxCitation -> Maybe [Int]
- Bio.TaxonomyData: taxMergedNodes :: NCBITaxDump -> [TaxMergedNode]
- Bio.TaxonomyData: taxNames :: NCBITaxDump -> [TaxName]
- Bio.TaxonomyData: taxNodes :: NCBITaxDump -> [TaxNode]
- Bio.TaxonomyData: taxonParentTaxId :: Taxon -> Int
- Bio.TaxonomyData: taxonRank :: Taxon -> Rank
- Bio.TaxonomyData: taxonScientificName :: Taxon -> String
- Bio.TaxonomyData: taxonTaxId :: Taxon -> Int
- Bio.TaxonomyData: text :: TaxCitation -> Maybe String
- Bio.TaxonomyData: uniqueName :: TaxName -> ByteString
- Bio.TaxonomyData: updateDate :: Taxon -> String
- Bio.TaxonomyData: url :: TaxCitation -> Maybe String
+ Bio.Taxonomy: drawTaxonomyComparison :: Bool -> (Int, Gr CompareTaxon Double) -> String
+ Bio.Taxonomy: extractTaxonomySubTreebyLevelNew :: [Node] -> Gr SimpleTaxon Double -> Maybe Int -> Gr SimpleTaxon Double
+ Bio.TaxonomyData: [abbreviation] :: TaxGenCode -> Maybe String
+ Bio.TaxonomyData: [assembly] :: Gene2Accession -> String
+ Bio.TaxonomyData: [cde] :: TaxGenCode -> String
+ Bio.TaxonomyData: [citId] :: TaxCitation -> Int
+ Bio.TaxonomyData: [citKey] :: TaxCitation -> Maybe String
+ Bio.TaxonomyData: [classCDE] :: TaxonName -> String
+ Bio.TaxonomyData: [compareRank] :: CompareTaxon -> Rank
+ Bio.TaxonomyData: [compareScientificName] :: CompareTaxon -> Text
+ Bio.TaxonomyData: [createDate] :: Taxon -> String
+ Bio.TaxonomyData: [delTaxId] :: TaxDelNode -> Int
+ Bio.TaxonomyData: [dispName] :: TaxonName -> String
+ Bio.TaxonomyData: [divisionCDE] :: TaxDivision -> String
+ Bio.TaxonomyData: [divisionComments] :: TaxDivision -> Maybe String
+ Bio.TaxonomyData: [divisionId] :: TaxDivision -> Int
+ Bio.TaxonomyData: [division] :: Taxon -> String
+ Bio.TaxonomyData: [divisonName] :: TaxDivision -> String
+ Bio.TaxonomyData: [emblCode] :: TaxNode -> Maybe String
+ Bio.TaxonomyData: [endPositionOnTheGenomicAccession] :: Gene2Accession -> String
+ Bio.TaxonomyData: [genBankHiddenFlag] :: TaxNode -> Bool
+ Bio.TaxonomyData: [geneCodeName] :: TaxGenCode -> String
+ Bio.TaxonomyData: [geneID] :: Gene2Accession -> Int
+ Bio.TaxonomyData: [geneticCodeId] :: TaxGenCode -> Int
+ Bio.TaxonomyData: [geneticCode] :: Taxon -> TaxGenCode
+ Bio.TaxonomyData: [genomicNucleotideAccessionVersion] :: Gene2Accession -> String
+ Bio.TaxonomyData: [genomicNucleotideGi] :: Gene2Accession -> String
+ Bio.TaxonomyData: [hiddenSubtreeRootFlag] :: TaxNode -> Bool
+ Bio.TaxonomyData: [inTree] :: CompareTaxon -> [Int]
+ Bio.TaxonomyData: [inheritedDivFlag] :: TaxNode -> Bool
+ Bio.TaxonomyData: [inheritedGCFlag] :: TaxNode -> Bool
+ Bio.TaxonomyData: [inheritedMGCFlag] :: TaxNode -> Bool
+ Bio.TaxonomyData: [lineageEx] :: Taxon -> [LineageTaxon]
+ Bio.TaxonomyData: [lineageRank] :: LineageTaxon -> Rank
+ Bio.TaxonomyData: [lineageScienticName] :: LineageTaxon -> String
+ Bio.TaxonomyData: [lineageTaxId] :: LineageTaxon -> Int
+ Bio.TaxonomyData: [lineage] :: Taxon -> String
+ Bio.TaxonomyData: [maturePeptideAccessionVersion] :: Gene2Accession -> String
+ Bio.TaxonomyData: [maturePeptideGi] :: Gene2Accession -> String
+ Bio.TaxonomyData: [medlineId] :: TaxCitation -> Maybe Int
+ Bio.TaxonomyData: [mitoGeneticCode] :: Taxon -> TaxGenCode
+ Bio.TaxonomyData: [mitochondrialGeneticCodeId] :: TaxNode -> String
+ Bio.TaxonomyData: [nameClass] :: TaxName -> Text
+ Bio.TaxonomyData: [nameTaxId] :: TaxName -> Int
+ Bio.TaxonomyData: [nameTxt] :: TaxName -> Text
+ Bio.TaxonomyData: [newTaxId] :: TaxMergedNode -> Int
+ Bio.TaxonomyData: [nodeComments] :: TaxNode -> Maybe String
+ Bio.TaxonomyData: [nodeDivisionId] :: TaxNode -> String
+ Bio.TaxonomyData: [nodeGeneticCodeId] :: TaxNode -> String
+ Bio.TaxonomyData: [oldTaxId] :: TaxMergedNode -> Int
+ Bio.TaxonomyData: [orientation] :: Gene2Accession -> String
+ Bio.TaxonomyData: [parentTaxId] :: TaxNode -> Int
+ Bio.TaxonomyData: [proteinAccessionVersion] :: Gene2Accession -> String
+ Bio.TaxonomyData: [proteinGi] :: Gene2Accession -> String
+ Bio.TaxonomyData: [pubDate] :: Taxon -> String
+ Bio.TaxonomyData: [pubmedId] :: TaxCitation -> Maybe Int
+ Bio.TaxonomyData: [rank] :: TaxNode -> Rank
+ Bio.TaxonomyData: [rnaNucleotideAccessionVersion] :: Gene2Accession -> String
+ Bio.TaxonomyData: [rnaNucleotideGi] :: Gene2Accession -> String
+ Bio.TaxonomyData: [simpleGenomicNucleotideAccessionVersion] :: SimpleGene2Accession -> String
+ Bio.TaxonomyData: [simpleParentTaxId] :: SimpleTaxon -> Int
+ Bio.TaxonomyData: [simpleRank] :: SimpleTaxon -> Rank
+ Bio.TaxonomyData: [simpleScientificName] :: SimpleTaxon -> Text
+ Bio.TaxonomyData: [simpleTaxIdEntry] :: SimpleGene2Accession -> Int
+ Bio.TaxonomyData: [simpleTaxId] :: SimpleTaxon -> Int
+ Bio.TaxonomyData: [startPositionOnTheGenomicAccession] :: Gene2Accession -> String
+ Bio.TaxonomyData: [starts] :: TaxGenCode -> String
+ Bio.TaxonomyData: [status] :: Gene2Accession -> String
+ Bio.TaxonomyData: [taxCitations] :: NCBITaxDump -> [TaxCitation]
+ Bio.TaxonomyData: [taxDelNodes] :: NCBITaxDump -> [TaxDelNode]
+ Bio.TaxonomyData: [taxDivisions] :: NCBITaxDump -> [TaxDivision]
+ Bio.TaxonomyData: [taxGenCodes] :: NCBITaxDump -> [TaxGenCode]
+ Bio.TaxonomyData: [taxIdEntry] :: Gene2Accession -> Int
+ Bio.TaxonomyData: [taxIdList] :: TaxCitation -> Maybe [Int]
+ Bio.TaxonomyData: [taxId] :: TaxNode -> Int
+ Bio.TaxonomyData: [taxMergedNodes] :: NCBITaxDump -> [TaxMergedNode]
+ Bio.TaxonomyData: [taxNames] :: NCBITaxDump -> [TaxName]
+ Bio.TaxonomyData: [taxNodes] :: NCBITaxDump -> [TaxNode]
+ Bio.TaxonomyData: [taxonParentTaxId] :: Taxon -> Int
+ Bio.TaxonomyData: [taxonRank] :: Taxon -> Rank
+ Bio.TaxonomyData: [taxonScientificName] :: Taxon -> String
+ Bio.TaxonomyData: [taxonTaxId] :: Taxon -> Int
+ Bio.TaxonomyData: [text] :: TaxCitation -> Maybe String
+ Bio.TaxonomyData: [uniqueName] :: TaxName -> Text
+ Bio.TaxonomyData: [updateDate] :: Taxon -> String
+ Bio.TaxonomyData: [url] :: TaxCitation -> Maybe String
+ Bio.TaxonomyData: instance Data.Aeson.Types.ToJSON.ToJSON (Data.Graph.Inductive.PatriciaTree.Gr Bio.TaxonomyData.SimpleTaxon GHC.Types.Double)
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.CompareTaxon
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.Gene2Accession
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.LineageTaxon
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.NCBITaxDump
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.Rank
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.SimpleGene2Accession
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.SimpleTaxon
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.TaxCitation
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.TaxDelNode
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.TaxDivision
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.TaxGenCode
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.TaxMergedNode
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.TaxName
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.TaxNode
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.Taxon
+ Bio.TaxonomyData: instance GHC.Classes.Eq Bio.TaxonomyData.TaxonName
+ Bio.TaxonomyData: instance GHC.Classes.Ord Bio.TaxonomyData.Rank
+ Bio.TaxonomyData: instance GHC.Enum.Bounded Bio.TaxonomyData.Rank
+ Bio.TaxonomyData: instance GHC.Enum.Enum Bio.TaxonomyData.Rank
+ Bio.TaxonomyData: instance GHC.Read.Read Bio.TaxonomyData.CompareTaxon
+ Bio.TaxonomyData: instance GHC.Read.Read Bio.TaxonomyData.Gene2Accession
+ Bio.TaxonomyData: instance GHC.Read.Read Bio.TaxonomyData.NCBITaxDump
+ Bio.TaxonomyData: instance GHC.Read.Read Bio.TaxonomyData.Rank
+ Bio.TaxonomyData: instance GHC.Read.Read Bio.TaxonomyData.SimpleGene2Accession
+ Bio.TaxonomyData: instance GHC.Read.Read Bio.TaxonomyData.SimpleTaxon
+ Bio.TaxonomyData: instance GHC.Read.Read Bio.TaxonomyData.TaxCitation
+ Bio.TaxonomyData: instance GHC.Read.Read Bio.TaxonomyData.TaxDelNode
+ Bio.TaxonomyData: instance GHC.Read.Read Bio.TaxonomyData.TaxDivision
+ Bio.TaxonomyData: instance GHC.Read.Read Bio.TaxonomyData.TaxGenCode
+ Bio.TaxonomyData: instance GHC.Read.Read Bio.TaxonomyData.TaxMergedNode
+ Bio.TaxonomyData: instance GHC.Read.Read Bio.TaxonomyData.TaxName
+ Bio.TaxonomyData: instance GHC.Read.Read Bio.TaxonomyData.TaxNode
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.CompareTaxon
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.Gene2Accession
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.LineageTaxon
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.NCBITaxDump
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.Rank
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.SimpleGene2Accession
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.SimpleTaxon
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.TaxCitation
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.TaxDelNode
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.TaxDivision
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.TaxGenCode
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.TaxMergedNode
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.TaxName
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.TaxNode
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.Taxon
+ Bio.TaxonomyData: instance GHC.Show.Show Bio.TaxonomyData.TaxonName
- Bio.Taxonomy: drawTaxonomy :: Gr SimpleTaxon Double -> String
+ Bio.Taxonomy: drawTaxonomy :: Bool -> Gr SimpleTaxon Double -> String
- Bio.Taxonomy: writeDotTree :: String -> Gr SimpleTaxon Double -> IO ()
+ Bio.Taxonomy: writeDotTree :: String -> Bool -> Gr SimpleTaxon Double -> IO ()
- Bio.Taxonomy: writeTree :: String -> String -> Gr SimpleTaxon Double -> IO ()
+ Bio.Taxonomy: writeTree :: String -> String -> Bool -> Gr SimpleTaxon Double -> IO ()
- Bio.TaxonomyData: CompareTaxon :: ByteString -> Rank -> [Int] -> CompareTaxon
+ Bio.TaxonomyData: CompareTaxon :: Text -> Rank -> [Int] -> CompareTaxon
- Bio.TaxonomyData: SimpleTaxon :: Int -> ByteString -> Int -> Rank -> SimpleTaxon
+ Bio.TaxonomyData: SimpleTaxon :: Int -> Text -> Int -> Rank -> SimpleTaxon
- Bio.TaxonomyData: TaxName :: Int -> ByteString -> ByteString -> ByteString -> TaxName
+ Bio.TaxonomyData: TaxName :: Int -> Text -> Text -> Text -> TaxName

Files

Taxonomy.cabal view
@@ -5,7 +5,7 @@ -- PVP summary:      +-+------- breaking API changes --                   | | +----- non-breaking API additions --                   | | | +--- code changes with no API change-version:             1.0.1+version:             1.0.2 synopsis:            Libary for parsing, processing and vizualization of taxonomy data description:         Haskell cabal Taxonomy libary contains tools, parsers, datastructures and visualisation                      for the NCBI (National Center for Biotechnology Information) Taxonomy datasources.@@ -40,8 +40,8 @@  source-repository this   type:     git-  location: https://github.com/eggzilla/Taxonomy/tree/v1.0.1-  tag:      v1.0.1+  location: https://github.com/eggzilla/Taxonomy/tree/v1.0.2+  tag:      v1.0.2  library   -- Modules exported by the library.
src/Bio/Taxonomy.hs view
@@ -40,11 +40,12 @@                        -- * Processing                        compareSubTrees,                            extractTaxonomySubTreebyLevel,+                       extractTaxonomySubTreebyLevelNew,                                                     extractTaxonomySubTreebyRank,                        safeNodePath,                        getParentbyRank,                        -- * Visualization-                       drawTreeComparison,+                       drawTaxonomyComparison,                        drawTaxonomy,                        writeTree,                        writeDotTree,@@ -65,10 +66,11 @@ import qualified Data.GraphViz.Printing as GVP import qualified Data.GraphViz.Attributes.Colors as GVAC import qualified Data.GraphViz.Attributes.Complete as GVA-import qualified Data.Text.Lazy as TL-import qualified Data.ByteString.Char8 as B+--import qualified Data.Text.Lazy as TL+--import qualified Data.ByteString.Char8 as B import qualified Data.ByteString.Lazy.Char8 as L import qualified Data.Aeson.Encode as AE+import qualified Data.Text.Lazy as T --------------------------------------------------------  ---------------------------------------@@ -78,14 +80,17 @@ readNamedTaxonomy :: String -> IO (Either ParseError (Gr SimpleTaxon Double))   readNamedTaxonomy directoryPath = do   nodeNames <- readNCBITaxNames (directoryPath ++ "names.dmp")-  let scientificNameBS = B.pack "scientific name"   if E.isLeft nodeNames      then return (Left (E.fromLeft nodeNames))      else do-       let nodeNamesVector = V.fromList (E.fromRight nodeNames)-       let filteredNodeNames = V.filter (\a -> nameClass a == scientificNameBS) nodeNamesVector+       let rightNodeNames = V.fromList (E.fromRight nodeNames)+       let filteredNodeNames = V.filter isScientificName rightNodeNames        parseFromFileEncISO88591 (genParserNamedTaxonomyGraph filteredNodeNames) (directoryPath ++ "nodes.dmp") +isScientificName :: TaxName -> Bool+isScientificName name = nameClass name == scientificNameT+  where scientificNameT = T.pack "scientific name"+ -- | NCBI taxonomy dump nodes and names in the input directory path are parsed and a SimpleTaxon tree is generated.  readTaxonomy :: String -> IO (Either ParseError (Gr SimpleTaxon Double))   readTaxonomy = parseFromFileEncISO88591 genParserTaxonomyGraph @@ -99,26 +104,35 @@   nodesEdges <- many1 (try genParserGraphNodeEdge)   optional eof   let (nodesList,edgesList) =  unzip nodesEdges-  let taxedges = filter (\(a,b,_) -> a /= b) edgesList+  --let taxedges = filter (\(a,b,_) -> a /= b) edgesList+  let taxedges = filter notLoopEdge  edgesList   --let taxnodes = concat nodesList   --return (mkGraph taxnodes taxedges)   return $! mkGraph nodesList taxedges +         +notLoopEdge :: (Int,Int,a) -> Bool+notLoopEdge (a,b,_) = a /= b+          genParserNamedTaxonomyGraph :: V.Vector TaxName -> GenParser Char st (Gr SimpleTaxon Double) genParserNamedTaxonomyGraph filteredNodeNames = do-  nodesEdges <- many1 (try genParserGraphNodeEdge)+  nodesEdges <- (many1 (try genParserGraphNodeEdge))   optional eof-  let (nodesList,edgesList) = unzip nodesEdges-  let taxedges = filter (\(a,b,_) -> a /= b) edgesList-  let taxnamednodes = map (setNodeScientificName filteredNodeNames) nodesList-  return $! mkGraph taxnamednodes taxedges+  let (nodesList,edgesList) = V.unzip (V.fromList nodesEdges)+  let taxedges = V.filter notLoopEdge edgesList+  let taxnamednodes = V.map (setNodeScientificName filteredNodeNames) nodesList+  return $! mkGraph (V.toList taxnamednodes) (V.toList taxedges)  setNodeScientificName :: V.Vector TaxName -> (t, SimpleTaxon) -> (t, SimpleTaxon) setNodeScientificName inputTaxNames (inputNode,inputTaxon) = outputNode-  where maybeRetrievedName = V.find (\a -> nameTaxId a == simpleTaxId inputTaxon) inputTaxNames-        retrievedName = maybe (B.pack "no name") nameTxt maybeRetrievedName+  where maybeRetrievedName = V.find (isTaxNameIdSimpleTaxid inputTaxon) inputTaxNames+        retrievedName = maybe (T.pack "no name") nameTxt maybeRetrievedName         outputNode = (inputNode,inputTaxon{simpleScientificName = retrievedName}) +isTaxNameIdSimpleTaxid :: SimpleTaxon -> TaxName -> Bool+isTaxNameIdSimpleTaxid inputTaxon inputTaxName = nameTaxId inputTaxName == simpleTaxId inputTaxon++                      genParserGraphNodeEdge :: GenParser Char st ((Int,SimpleTaxon),(Int,Int,Double)) genParserGraphNodeEdge = do   _simpleTaxId <- many1 digit@@ -130,7 +144,7 @@   char '\n'   let _simpleTaxIdInt = readInt _simpleTaxId   let _simpleParentTaxIdInt = readInt _simpleParentTaxId-  return ((_simpleTaxIdInt,SimpleTaxon _simpleTaxIdInt B.empty _simpleParentTaxIdInt (readRank _simpleRank)),(_simpleTaxIdInt,_simpleParentTaxIdInt,1 :: Double))+  return ((_simpleTaxIdInt,SimpleTaxon _simpleTaxIdInt T.empty _simpleParentTaxIdInt (readRank _simpleRank)),(_simpleTaxIdInt,_simpleParentTaxIdInt,1 :: Double))        -- | parse NCBITaxCitations from input string parseNCBITaxCitations :: String -> Either ParseError [TaxCitation]@@ -317,7 +331,7 @@   tab   char '|'   newline-  return $! TaxName (readInt _taxId) (B.pack _nameTxt) (maybe B.empty B.pack _uniqueName) (B.pack _nameClass)+  return $! TaxName (readInt _taxId) (T.pack _nameTxt) (maybe T.empty T.pack _uniqueName) (T.pack _nameClass)  genParserNCBISimpleTaxon :: GenParser Char st SimpleTaxon genParserNCBISimpleTaxon = do@@ -328,7 +342,7 @@   _simpleRank <- many1 (noneOf "\t")   many1 (noneOf "\n")   char '\n'-  return $! SimpleTaxon (readInt _simpleTaxId) B.empty (readInt _simpleParentTaxId) (readRank _simpleRank) +  return $! SimpleTaxon (readInt _simpleTaxId) T.empty (readInt _simpleParentTaxId) (readRank _simpleRank)   genParserNCBITaxNode :: GenParser Char st TaxNode genParserNCBITaxNode = do@@ -399,6 +413,23 @@         filteredledges = nub (concatMap (out graph . fst) filteredLNodes)         taxonomySubTree = mkGraph filteredLNodes filteredledges :: Gr SimpleTaxon Double       +-- | Extract a subtree corresponding to input node paths to root. Only nodes in level number distance to root are included. Used in Ids2Tree tool.+extractTaxonomySubTreebyLevelNew :: [Node] -> Gr SimpleTaxon Double -> Maybe Int -> Gr SimpleTaxon Double+extractTaxonomySubTreebyLevelNew inputNodes graph levelNumber = taxonomySubTree+  where inputNodeVector = V.fromList inputNodes+        paths = V.concatMap (getVectorPath (1 :: Node) graph) inputNodeVector+        contexts = V.map (context graph) paths+        vlnodes = V.map labNode' contexts+        ledges = concatMap (out graph . fst) lnodes+        lnodes = V.toList vlnodes+        --ledges = V.toList vledges+        unfilteredTaxonomySubTree = mkGraph lnodes ledges :: Gr SimpleTaxon Double+        filteredLNodes = filterNodesByLevel levelNumber lnodes unfilteredTaxonomySubTree+        --filteredLNodesVector = V.fromList filteredLNodes+        filteredledges = concatMap (out graph . fst) filteredLNodes+        --filteredledges = V.toList filteredledgesVector+        taxonomySubTree = mkGraph filteredLNodes filteredledges :: Gr SimpleTaxon Double      +                           -- | Extract a subtree corresponding to input node paths to root. If a Rank is provided, all node that are less or equal are omitted extractTaxonomySubTreebyRank :: [Node] -> Gr SimpleTaxon Double -> Maybe Rank -> Gr SimpleTaxon Double extractTaxonomySubTreebyRank inputNodes graph highestRank = taxonomySubTree@@ -409,9 +440,12 @@         filteredledges = nub (concatMap (out graph . fst) filteredLNodes)         taxonomySubTree = mkGraph filteredLNodes filteredledges :: Gr SimpleTaxon Double +getVectorPath :: Node -> Gr SimpleTaxon Double -> Node -> V.Vector Node+getVectorPath root graph node =  V.fromList (sp node root graph)+ getPath :: Node -> Gr SimpleTaxon Double -> Node -> Path getPath root graph node =  sp node root graph-+                            -- | Extract parent node with specified Rank getParentbyRank :: Node -> Gr SimpleTaxon Double -> Maybe Rank -> Maybe (Node, SimpleTaxon) getParentbyRank inputNode graph requestedRank = filteredLNode@@ -465,32 +499,48 @@ -- Visualisation functions  -- | Draw graph in dot format. Used in Ids2Tree tool.-drawTaxonomy :: Gr SimpleTaxon Double -> String-drawTaxonomy inputGraph = do+drawTaxonomy :: Bool -> Gr SimpleTaxon Double -> String+drawTaxonomy withRank inputGraph = do+  let nodeFormating = if withRank then nodeFormatWithRank else nodeFormatWithoutRank   let params = GV.nonClusteredParams {GV.isDirected       = True                        , GV.globalAttributes = [GV.GraphAttrs [GVA.Size (GVA.GSize (20 :: Double) (Just (20 :: Double)) False)]]                        , GV.isDotCluster     = const True-                       , GV.fmtNode = \ (_,l) -> [GV.textLabel (TL.pack (show (simpleRank l) ++ "\n" ++ B.unpack (simpleScientificName l)))]+                       --, GV.fmtNode = \ (_,l) -> [GV.textLabel (TL.pack (show (simpleRank l) ++ "\n" ++ T.unpack (simpleScientificName l)))]+                       , GV.fmtNode = nodeFormating                        , GV.fmtEdge          = const []                        }   let dotFormat = GV.graphToDot params inputGraph   let dottext = GVP.renderDot $ GVP.toDot dotFormat-  TL.unpack dottext+  T.unpack dottext +nodeFormatWithRank :: (t, SimpleTaxon) -> [GVA.Attribute]+nodeFormatWithRank (_,l) = [GV.textLabel (T.concat [T.pack (show (simpleRank l)), T.pack ("\n") , simpleScientificName l])]++nodeFormatWithoutRank :: (t, SimpleTaxon) -> [GVA.Attribute]+nodeFormatWithoutRank (_,l) = [GV.textLabel (simpleScientificName l)]+     -- | Draw tree comparison graph in dot format. Used in Ids2TreeCompare tool.-drawTreeComparison :: (Int,Gr CompareTaxon Double) -> String-drawTreeComparison (treeNumber,inputGraph) = do-  let cList = makeColorList treeNumber +drawTaxonomyComparison :: Bool -> (Int,Gr CompareTaxon Double) -> String+drawTaxonomyComparison withRank (treeNumber,inputGraph) = do+  let cList = makeColorList treeNumber+  let nodeFormating = if withRank then (compareNodeFormatWithRank cList) else (compareNodeFormatWithoutRank cList)   let params = GV.nonClusteredParams {GV.isDirected = True-                      , GV.globalAttributes = []+                       , GV.globalAttributes = []                        , GV.isDotCluster = const True-                       , GV.fmtNode = \ (_,l) -> [GV.textLabel (TL.pack (show (compareRank l) ++ "\n" ++ B.unpack (compareScientificName l))), GV.style GV.wedged, GVA.Color (selectColors (inTree l) cList)]+                       --, GV.fmtNode = \ (_,l) -> [GV.textLabel (TL.pack (show (compareRank l) ++ "\n" ++ B.unpack (compareScientificName l))), GV.style GV.wedged, GVA.Color (selectColors (inTree l) cList)]+                       , GV.fmtNode = nodeFormating                        , GV.fmtEdge = const []                        }   let dotFormat = GV.graphToDot params (grev inputGraph)   let dottext = GVP.renderDot $ GVP.toDot dotFormat-  TL.unpack dottext+  T.unpack dottext +compareNodeFormatWithRank :: [GVA.Color] -> (t, CompareTaxon) -> [GVA.Attribute]+compareNodeFormatWithRank cList (_,l) = [GV.textLabel (T.concat [T.pack (show (compareRank l) ++ "\n"),compareScientificName l]), GV.style GV.wedged, GVA.Color (selectColors (inTree l) cList)]++compareNodeFormatWithoutRank :: [GVA.Color] -> (t, CompareTaxon) -> [GVA.Attribute]+compareNodeFormatWithoutRank cList (_,l) = [GV.textLabel (compareScientificName l), GV.style GV.wedged, GVA.Color (selectColors (inTree l) cList)]+    -- | Colors from color list are selected according to in which of the compared trees the node is contained. selectColors :: [Int] -> [GVA.Color] -> GVAC.ColorList selectColors inTrees currentColorList = GVAC.toColorList (map (\i -> currentColorList !! i) inTrees)@@ -502,18 +552,18 @@         neededColors = treeNumber - 1  -- | Write tree representation either as dot or json to provided file path-writeTree :: String -> String -> Gr SimpleTaxon Double -> IO ()-writeTree requestedFormat outputDirectoryPath inputGraph = do+writeTree :: String -> String -> Bool -> Gr SimpleTaxon Double -> IO ()+writeTree requestedFormat outputDirectoryPath withRank inputGraph = do   case requestedFormat of-    "dot" -> writeDotTree outputDirectoryPath inputGraph+    "dot" -> writeDotTree outputDirectoryPath withRank inputGraph     "json"-> writeJsonTree outputDirectoryPath inputGraph-    _ -> writeDotTree outputDirectoryPath inputGraph+    _ -> writeDotTree outputDirectoryPath withRank inputGraph   -- | Write tree representation as dot to provided file path. -- Graphviz tools like dot can be applied to the written .dot file to generate e.g. svg-format images.-writeDotTree :: String -> Gr SimpleTaxon Double -> IO ()-writeDotTree outputDirectoryPath inputGraph = do-  let diagram = drawTaxonomy (grev inputGraph)+writeDotTree :: String -> Bool -> Gr SimpleTaxon Double -> IO ()+writeDotTree outputDirectoryPath withRank inputGraph = do+  let diagram = drawTaxonomy withRank (grev inputGraph)   writeFile (outputDirectoryPath ++ "taxonomy.dot") diagram  -- | Write tree representation as json to provided file path.
src/Bio/TaxonomyData.hs view
@@ -5,12 +5,13 @@  module Bio.TaxonomyData where import Prelude-import qualified Data.ByteString as B+--import qualified Data.ByteString as B import qualified Data.Aeson as A import qualified Data.Vector as V import Data.Graph.Inductive import qualified Data.Text as T-import qualified Data.Text.Encoding+import qualified Data.Text.Lazy as TL   +--import qualified Data.Text.Encoding  -- | SimpleTaxon only contains the most relevant fields of a taxonomy entry. --   For all annotaded fields use the Taxon datatype and its associated functions@@ -18,7 +19,7 @@   {    -- node id in GenBank    simpleTaxId :: Int,-   simpleScientificName :: B.ByteString,+   simpleScientificName :: TL.Text,    -- parent node id in GenBank taxonomy database                   simpleParentTaxId :: Int,    -- rank of this node (superkingdom, kingdom, ...) @@ -29,7 +30,7 @@ -- | Datastructure for tree comparisons data CompareTaxon = CompareTaxon   {-   compareScientificName :: B.ByteString,+   compareScientificName :: TL.Text,    compareRank :: Rank,    -- number indicating in which trees,     inTree :: [Int]@@ -157,11 +158,11 @@    -- the id of node associated with this name    nameTaxId :: Int,    -- name itself-   nameTxt :: B.ByteString,+   nameTxt :: TL.Text,    -- the unique variant of this name if name not unique-   uniqueName :: B.ByteString,+   uniqueName :: TL.Text,    -- (synonym, common name, ...)-   nameClass :: B.ByteString+   nameClass :: TL.Text   }   deriving (Show, Read, Eq) @@ -282,7 +283,7 @@   where jsonValue = A.object [currentScientificName,T.pack "children" A..= children]         childNodes = suc inputGraph node         currentLabel = lab inputGraph node-        currentScientificName = T.pack "name" A..= maybe (T.pack "notFound") (Data.Text.Encoding.decodeUtf8 . simpleScientificName) currentLabel+        currentScientificName = T.pack "name" A..= maybe (T.pack "notFound") (TL.toStrict  . simpleScientificName) currentLabel         children = A.Array (V.fromList (map (simpleTaxonJSONValue inputGraph) childNodes))         --jsonValue = A.object [currentScientificName,currentId,currentRank,(T.pack "children") A..= children]         --currentId = (T.pack "id") A..= (maybe (T.pack "notFound") (\a -> T.pack (show (simpleTaxId a))) currentLabel)