Better diagnostics for unknown metrics

This commit is contained in:
Filip Gralinski 2021-07-23 18:34:39 +02:00
parent 36a930d159
commit 8c2fa3d8ed
2 changed files with 4 additions and 1 deletions

View File

@ -135,6 +135,7 @@ data GEvalException = NoExpectedFile FilePath
| UnexpectedMultipleOutputs | UnexpectedMultipleOutputs
| OtherException String | OtherException String
| NoHeaderFile FilePath | NoHeaderFile FilePath
| UnknownMetric String
deriving (Eq) deriving (Eq)
instance Exception GEvalException instance Exception GEvalException
@ -157,6 +158,7 @@ instance Show GEvalException where
show UnexpectedMultipleOutputs = "Multiple outputs are not possible in this mode, use -o option to select an output file" show UnexpectedMultipleOutputs = "Multiple outputs are not possible in this mode, use -o option to select an output file"
show (OtherException message) = message show (OtherException message) = message
show (NoHeaderFile filePath) = somethingWrongWithFilesMessage "No file with header specification" filePath show (NoHeaderFile filePath) = somethingWrongWithFilesMessage "No file with header specification" filePath
show (UnknownMetric t) = "Unknown or broken metric definition: " ++ t
somethingWrongWithFilesMessage :: String -> FilePath -> String somethingWrongWithFilesMessage :: String -> FilePath -> String
somethingWrongWithFilesMessage msg filePath = Prelude.concat somethingWrongWithFilesMessage msg filePath = Prelude.concat

View File

@ -15,6 +15,7 @@ module GEval.Metric
import Data.Word import Data.Word
import Data.Text hiding (map) import Data.Text hiding (map)
import Data.Monoid ((<>)) import Data.Monoid ((<>))
import Control.Exception
import GEval.Common import GEval.Common
import GEval.Clippings import GEval.Clippings
@ -192,7 +193,7 @@ instance Read Metric where
readsPrec _ ('M':'u':'l':'t':'i':'L':'a':'b':'e':'l':'-':'L':'o':'g':'L':'o':'s':'s':theRest) = [(MultiLabelLogLoss, theRest)] readsPrec _ ('M':'u':'l':'t':'i':'L':'a':'b':'e':'l':'-':'L':'o':'g':'L':'o':'s':'s':theRest) = [(MultiLabelLogLoss, theRest)]
readsPrec _ ('M':'u':'l':'t':'i':'L':'a':'b':'e':'l':'-':'L':'i':'k':'e':'l':'i':'h':'o':'o':'d':theRest) = [(MultiLabelLikelihood, theRest)] readsPrec _ ('M':'u':'l':'t':'i':'L':'a':'b':'e':'l':'-':'L':'i':'k':'e':'l':'i':'h':'o':'o':'d':theRest) = [(MultiLabelLikelihood, theRest)]
readsPrec _ ('H':'a':'v':'e':'r':'s':'i':'n':'e':theRest) = [(Haversine, theRest)] readsPrec _ ('H':'a':'v':'e':'r':'s':'i':'n':'e':theRest) = [(Haversine, theRest)]
readsPrec _ t = throw $ UnknownMetric t
data MetricOrdering = TheLowerTheBetter | TheHigherTheBetter data MetricOrdering = TheLowerTheBetter | TheHigherTheBetter