math-grads 0.1.6.2 → 0.1.6.4
raw patch · 3 files changed
+22/−16 lines, 3 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ Math.Grads.GenericGraph: instance (GHC.Classes.Ord v, GHC.Classes.Eq v) => GHC.Base.Monoid (Math.Grads.GenericGraph.GenericGraph v e)
+ Math.Grads.GenericGraph: instance GHC.Classes.Ord v => GHC.Base.Semigroup (Math.Grads.GenericGraph.GenericGraph v e)
Files
- math-grads.cabal +1/−1
- src/Math/Grads/Algo/SSSR.hs +16/−15
- src/Math/Grads/GenericGraph.hs +5/−0
math-grads.cabal view
@@ -1,6 +1,6 @@ cabal-version: >=1.10 name: math-grads-version: 0.1.6.2+version: 0.1.6.4 license: BSD3 license-file: LICENSE copyright: 2017 Alexandr Sadovnikov
src/Math/Grads/Algo/SSSR.hs view
@@ -5,22 +5,23 @@ ( findSSSR ) where -import Prelude hiding (map)--import Control.Arrow ((***))-import Control.Lens (over, _1, _2)-import Data.Bimap ((!>))-import Data.List (intersect, nub, sort)-import Data.List.Index (ifoldl)-import Data.Map.Strict (Map)-import qualified Data.Map.Strict as M (empty, insert, member, (!))-import Data.Matrix (Matrix, matrix, unsafeGet, unsafeSet)-import qualified Data.Set as S+import Prelude hiding (map) -import Math.Grads.Algo.Cycles (getCyclic)-import Math.Grads.GenericGraph (GenericGraph, subgraphWithReindex)-import Math.Grads.Graph (EdgeList, toList)+import Control.Arrow ((***))+import Control.Lens (over, _1, _2)+import Data.Bimap ((!>))+import Data.List (intersect, nub, sort)+import Data.List.Index (ifoldl)+import Data.Map.Strict (Map)+import qualified Data.Map.Strict as M (empty, insert, member, (!))+import Data.Matrix (Matrix, matrix, unsafeGet,+ unsafeSet)+import qualified Data.Set as S +import Math.Grads.Algo.Cycles (getCyclic)+import Math.Grads.Algo.Traversals (getComps)+import Math.Grads.GenericGraph (GenericGraph, subgraphWithReindex)+import Math.Grads.Graph (EdgeList, toList) -- | RP-Path algorithm for searching the smallest set of smallest rings. -- <https://www.ncbi.nlm.nih.gov/pubmed/19805142>@@ -31,7 +32,7 @@ (reindex, cyclicGraph) = subgraphWithReindex graph . S.toList $ getCyclic graph g@(_, edges) = toList cyclicGraph (n, m) = (length *** length) g- maxSSSRs = m - n + 1+ maxSSSRs = m - n + length (getComps cyclicGraph) edgeIndex :: Map (Int, Int) Int edgeIndex = ifoldl insertEdge M.empty edges
src/Math/Grads/GenericGraph.hs view
@@ -114,6 +114,11 @@ instance Functor (GenericGraph v) where fmap f (GenericGraph idxArr revMap adjArr) = GenericGraph idxArr revMap (((f <$>) <$>) <$> adjArr) +instance Ord v => Semigroup (GenericGraph v e) where+ (<>) = sumGraphs++instance (Ord v, Eq v) => Monoid (GenericGraph v e) where+ mempty = fromList ([], []) -- | 'fmap' which acts on adjacency lists of each vertex. --