srtree 3.0.0.1 → 3.0.0.2
raw patch · 3 files changed
+44/−2 lines, 3 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ Text.ParseSR: NEOGP :: SRAlgs
Files
- ChangeLog.md +4/−0
- src/Text/ParseSR.hs +39/−1
- srtree.cabal +1/−1
ChangeLog.md view
@@ -1,5 +1,9 @@ # Changelog for srtree +## 3.0.0.2++- Added parser for NeoGP.jl + ## 3.0.0.1 - Fixed some wrong bounds
src/Text/ParseSR.hs view
@@ -39,7 +39,7 @@ -- * Data types and caller functions -- | Supported algorithms.-data SRAlgs = TIR | HL | OPERON | BINGO | GOMEA | PYSR | SBP | EPLEX deriving (Show, Read, Enum, Bounded)+data SRAlgs = TIR | HL | OPERON | BINGO | GOMEA | PYSR | SBP | EPLEX | NEOGP deriving (Show, Read, Enum, Bounded) -- | Supported outputs. data Output = PYTHON | MATH | TIKZ | LATEX deriving (Show, Read, Enum, Bounded)@@ -64,6 +64,7 @@ parseSR SBP header reparam = eitherResult . (`feed` "") . parse (parseGOMEA True reparam $ splitHeader header) . putEOL . B.strip parseSR EPLEX header reparam = eitherResult . (`feed` "") . parse (parseGOMEA True reparam $ splitHeader header) . putEOL . B.strip parseSR PYSR header reparam = eitherResult . (`feed` "") . parse (parsePySR True reparam $ splitHeader header) . putEOL . B.strip+parseSR NEOGP header reparam = eitherResult . (`feed` "") . parse (parseNeoGP True reparam $ splitHeader header) . putEOL . B.strip --parsePat :: B.ByteString -> Either String Pattern --parsePat = eitherResult . (`feed` "") . parse parsePatExpr . putEOL . B.strip@@ -216,6 +217,43 @@ <|> do char 't' ix <- decimal pure $ Fix $ Param ix+ <?> "var"++-- | parser for NeoGP+parseNeoGP :: Bool -> Bool -> [(B.ByteString, Int)] -> ParseTree+parseNeoGP b = parseExpr b (prefixOps : binOps) binFuns var+ where+ binFuns = [ ]+ prefixOps = map (uncurry prefix)+ [ ("id", id), ("abs", abs)+ , ("sinh", sinh), ("cosh", cosh), ("tanh", tanh)+ , ("sin", sin), ("cos", cos), ("tan", tan)+ , ("asinh", asinh), ("acosh", acosh), ("atanh", atanh)+ , ("asin", asin), ("acos", acos), ("atan", atan)+ , ("sqrtabs", sqrtabs), ("sqrt", sqrt), ("cbrt", cbrt), ("square", (**2))+ , ("logabs", logabs), ("log", log), ("exp", exp), ("cube", cube), ("recip", recip)+ , ("Id", id), ("Abs", abs)+ , ("Sinh", sinh), ("Cosh", cosh), ("Tanh", tanh)+ , ("Sin", sin), ("Cos", cos), ("Tan", tan)+ , ("ASinh", asinh), ("ACosh", acosh), ("ATanh", atanh)+ , ("ASin", asin), ("ACos", acos), ("ATan", atan)+ , ("SqrtAbs", sqrtabs), ("Sqrt", sqrt), ("Cbrt", cbrt), ("Square", (**2))+ , ("LogAbs", logabs), ("Log", log), ("Exp", exp), ("Recip", recip), ("Cube", cube)+ ]+ binOps = [[binary "^" (**) AssocLeft], [binary "**" (**) AssocLeft]+ , [binary "*" (*) AssocLeft, binary "/" (/) AssocLeft]+ , [binary "+" (+) AssocLeft, binary "-" (-) AssocLeft]+ , [binary "|**|" powabs AssocLeft], [binary "aq" aq AssocLeft]+ ]+ powabs l r = Fix $ Bin PowerAbs l r+ aq l r = Fix $ Bin AQ l r++ var = do char 'x'+ ix <- decimal+ pure $ Fix $ Var (ix-1)+ <|> do char 'p'+ ix <- decimal+ pure $ Fix $ Param (ix-1) <?> "var" -- | parser for Operon.
srtree.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: srtree-version: 3.0.0.1+version: 3.0.0.2 synopsis: A general library to work with Symbolic Regression expression trees. description: A Symbolic Regression Tree data structure to work with mathematical expressions with support to first order derivative and simplification; license: BSD3