{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.SageMaker.Types.DriftCheckBaselines
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SageMaker.Types.DriftCheckBaselines where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.SageMaker.Types.DriftCheckBias
import Amazonka.SageMaker.Types.DriftCheckExplainability
import Amazonka.SageMaker.Types.DriftCheckModelDataQuality
import Amazonka.SageMaker.Types.DriftCheckModelQuality

-- | Represents the drift check baselines that can be used when the model
-- monitor is set using the model package.
--
-- /See:/ 'newDriftCheckBaselines' smart constructor.
data DriftCheckBaselines = DriftCheckBaselines'
  { -- | Represents the drift check bias baselines that can be used when the
    -- model monitor is set using the model package.
    DriftCheckBaselines -> Maybe DriftCheckBias
bias :: Prelude.Maybe DriftCheckBias,
    -- | Represents the drift check explainability baselines that can be used
    -- when the model monitor is set using the model package.
    DriftCheckBaselines -> Maybe DriftCheckExplainability
explainability :: Prelude.Maybe DriftCheckExplainability,
    -- | Represents the drift check model data quality baselines that can be used
    -- when the model monitor is set using the model package.
    DriftCheckBaselines -> Maybe DriftCheckModelDataQuality
modelDataQuality :: Prelude.Maybe DriftCheckModelDataQuality,
    -- | Represents the drift check model quality baselines that can be used when
    -- the model monitor is set using the model package.
    DriftCheckBaselines -> Maybe DriftCheckModelQuality
modelQuality :: Prelude.Maybe DriftCheckModelQuality
  }
  deriving (DriftCheckBaselines -> DriftCheckBaselines -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DriftCheckBaselines -> DriftCheckBaselines -> Bool
$c/= :: DriftCheckBaselines -> DriftCheckBaselines -> Bool
== :: DriftCheckBaselines -> DriftCheckBaselines -> Bool
$c== :: DriftCheckBaselines -> DriftCheckBaselines -> Bool
Prelude.Eq, ReadPrec [DriftCheckBaselines]
ReadPrec DriftCheckBaselines
Int -> ReadS DriftCheckBaselines
ReadS [DriftCheckBaselines]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DriftCheckBaselines]
$creadListPrec :: ReadPrec [DriftCheckBaselines]
readPrec :: ReadPrec DriftCheckBaselines
$creadPrec :: ReadPrec DriftCheckBaselines
readList :: ReadS [DriftCheckBaselines]
$creadList :: ReadS [DriftCheckBaselines]
readsPrec :: Int -> ReadS DriftCheckBaselines
$creadsPrec :: Int -> ReadS DriftCheckBaselines
Prelude.Read, Int -> DriftCheckBaselines -> ShowS
[DriftCheckBaselines] -> ShowS
DriftCheckBaselines -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DriftCheckBaselines] -> ShowS
$cshowList :: [DriftCheckBaselines] -> ShowS
show :: DriftCheckBaselines -> String
$cshow :: DriftCheckBaselines -> String
showsPrec :: Int -> DriftCheckBaselines -> ShowS
$cshowsPrec :: Int -> DriftCheckBaselines -> ShowS
Prelude.Show, forall x. Rep DriftCheckBaselines x -> DriftCheckBaselines
forall x. DriftCheckBaselines -> Rep DriftCheckBaselines x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DriftCheckBaselines x -> DriftCheckBaselines
$cfrom :: forall x. DriftCheckBaselines -> Rep DriftCheckBaselines x
Prelude.Generic)

-- |
-- Create a value of 'DriftCheckBaselines' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'bias', 'driftCheckBaselines_bias' - Represents the drift check bias baselines that can be used when the
-- model monitor is set using the model package.
--
-- 'explainability', 'driftCheckBaselines_explainability' - Represents the drift check explainability baselines that can be used
-- when the model monitor is set using the model package.
--
-- 'modelDataQuality', 'driftCheckBaselines_modelDataQuality' - Represents the drift check model data quality baselines that can be used
-- when the model monitor is set using the model package.
--
-- 'modelQuality', 'driftCheckBaselines_modelQuality' - Represents the drift check model quality baselines that can be used when
-- the model monitor is set using the model package.
newDriftCheckBaselines ::
  DriftCheckBaselines
newDriftCheckBaselines :: DriftCheckBaselines
newDriftCheckBaselines =
  DriftCheckBaselines'
    { $sel:bias:DriftCheckBaselines' :: Maybe DriftCheckBias
bias = forall a. Maybe a
Prelude.Nothing,
      $sel:explainability:DriftCheckBaselines' :: Maybe DriftCheckExplainability
explainability = forall a. Maybe a
Prelude.Nothing,
      $sel:modelDataQuality:DriftCheckBaselines' :: Maybe DriftCheckModelDataQuality
modelDataQuality = forall a. Maybe a
Prelude.Nothing,
      $sel:modelQuality:DriftCheckBaselines' :: Maybe DriftCheckModelQuality
modelQuality = forall a. Maybe a
Prelude.Nothing
    }

-- | Represents the drift check bias baselines that can be used when the
-- model monitor is set using the model package.
driftCheckBaselines_bias :: Lens.Lens' DriftCheckBaselines (Prelude.Maybe DriftCheckBias)
driftCheckBaselines_bias :: Lens' DriftCheckBaselines (Maybe DriftCheckBias)
driftCheckBaselines_bias = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DriftCheckBaselines' {Maybe DriftCheckBias
bias :: Maybe DriftCheckBias
$sel:bias:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckBias
bias} -> Maybe DriftCheckBias
bias) (\s :: DriftCheckBaselines
s@DriftCheckBaselines' {} Maybe DriftCheckBias
a -> DriftCheckBaselines
s {$sel:bias:DriftCheckBaselines' :: Maybe DriftCheckBias
bias = Maybe DriftCheckBias
a} :: DriftCheckBaselines)

-- | Represents the drift check explainability baselines that can be used
-- when the model monitor is set using the model package.
driftCheckBaselines_explainability :: Lens.Lens' DriftCheckBaselines (Prelude.Maybe DriftCheckExplainability)
driftCheckBaselines_explainability :: Lens' DriftCheckBaselines (Maybe DriftCheckExplainability)
driftCheckBaselines_explainability = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DriftCheckBaselines' {Maybe DriftCheckExplainability
explainability :: Maybe DriftCheckExplainability
$sel:explainability:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckExplainability
explainability} -> Maybe DriftCheckExplainability
explainability) (\s :: DriftCheckBaselines
s@DriftCheckBaselines' {} Maybe DriftCheckExplainability
a -> DriftCheckBaselines
s {$sel:explainability:DriftCheckBaselines' :: Maybe DriftCheckExplainability
explainability = Maybe DriftCheckExplainability
a} :: DriftCheckBaselines)

-- | Represents the drift check model data quality baselines that can be used
-- when the model monitor is set using the model package.
driftCheckBaselines_modelDataQuality :: Lens.Lens' DriftCheckBaselines (Prelude.Maybe DriftCheckModelDataQuality)
driftCheckBaselines_modelDataQuality :: Lens' DriftCheckBaselines (Maybe DriftCheckModelDataQuality)
driftCheckBaselines_modelDataQuality = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DriftCheckBaselines' {Maybe DriftCheckModelDataQuality
modelDataQuality :: Maybe DriftCheckModelDataQuality
$sel:modelDataQuality:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckModelDataQuality
modelDataQuality} -> Maybe DriftCheckModelDataQuality
modelDataQuality) (\s :: DriftCheckBaselines
s@DriftCheckBaselines' {} Maybe DriftCheckModelDataQuality
a -> DriftCheckBaselines
s {$sel:modelDataQuality:DriftCheckBaselines' :: Maybe DriftCheckModelDataQuality
modelDataQuality = Maybe DriftCheckModelDataQuality
a} :: DriftCheckBaselines)

-- | Represents the drift check model quality baselines that can be used when
-- the model monitor is set using the model package.
driftCheckBaselines_modelQuality :: Lens.Lens' DriftCheckBaselines (Prelude.Maybe DriftCheckModelQuality)
driftCheckBaselines_modelQuality :: Lens' DriftCheckBaselines (Maybe DriftCheckModelQuality)
driftCheckBaselines_modelQuality = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DriftCheckBaselines' {Maybe DriftCheckModelQuality
modelQuality :: Maybe DriftCheckModelQuality
$sel:modelQuality:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckModelQuality
modelQuality} -> Maybe DriftCheckModelQuality
modelQuality) (\s :: DriftCheckBaselines
s@DriftCheckBaselines' {} Maybe DriftCheckModelQuality
a -> DriftCheckBaselines
s {$sel:modelQuality:DriftCheckBaselines' :: Maybe DriftCheckModelQuality
modelQuality = Maybe DriftCheckModelQuality
a} :: DriftCheckBaselines)

instance Data.FromJSON DriftCheckBaselines where
  parseJSON :: Value -> Parser DriftCheckBaselines
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"DriftCheckBaselines"
      ( \Object
x ->
          Maybe DriftCheckBias
-> Maybe DriftCheckExplainability
-> Maybe DriftCheckModelDataQuality
-> Maybe DriftCheckModelQuality
-> DriftCheckBaselines
DriftCheckBaselines'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Bias")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Explainability")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ModelDataQuality")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ModelQuality")
      )

instance Prelude.Hashable DriftCheckBaselines where
  hashWithSalt :: Int -> DriftCheckBaselines -> Int
hashWithSalt Int
_salt DriftCheckBaselines' {Maybe DriftCheckModelQuality
Maybe DriftCheckModelDataQuality
Maybe DriftCheckExplainability
Maybe DriftCheckBias
modelQuality :: Maybe DriftCheckModelQuality
modelDataQuality :: Maybe DriftCheckModelDataQuality
explainability :: Maybe DriftCheckExplainability
bias :: Maybe DriftCheckBias
$sel:modelQuality:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckModelQuality
$sel:modelDataQuality:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckModelDataQuality
$sel:explainability:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckExplainability
$sel:bias:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckBias
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DriftCheckBias
bias
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DriftCheckExplainability
explainability
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DriftCheckModelDataQuality
modelDataQuality
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DriftCheckModelQuality
modelQuality

instance Prelude.NFData DriftCheckBaselines where
  rnf :: DriftCheckBaselines -> ()
rnf DriftCheckBaselines' {Maybe DriftCheckModelQuality
Maybe DriftCheckModelDataQuality
Maybe DriftCheckExplainability
Maybe DriftCheckBias
modelQuality :: Maybe DriftCheckModelQuality
modelDataQuality :: Maybe DriftCheckModelDataQuality
explainability :: Maybe DriftCheckExplainability
bias :: Maybe DriftCheckBias
$sel:modelQuality:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckModelQuality
$sel:modelDataQuality:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckModelDataQuality
$sel:explainability:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckExplainability
$sel:bias:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckBias
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe DriftCheckBias
bias
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DriftCheckExplainability
explainability
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DriftCheckModelDataQuality
modelDataQuality
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DriftCheckModelQuality
modelQuality

instance Data.ToJSON DriftCheckBaselines where
  toJSON :: DriftCheckBaselines -> Value
toJSON DriftCheckBaselines' {Maybe DriftCheckModelQuality
Maybe DriftCheckModelDataQuality
Maybe DriftCheckExplainability
Maybe DriftCheckBias
modelQuality :: Maybe DriftCheckModelQuality
modelDataQuality :: Maybe DriftCheckModelDataQuality
explainability :: Maybe DriftCheckExplainability
bias :: Maybe DriftCheckBias
$sel:modelQuality:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckModelQuality
$sel:modelDataQuality:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckModelDataQuality
$sel:explainability:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckExplainability
$sel:bias:DriftCheckBaselines' :: DriftCheckBaselines -> Maybe DriftCheckBias
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Bias" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DriftCheckBias
bias,
            (Key
"Explainability" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DriftCheckExplainability
explainability,
            (Key
"ModelDataQuality" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DriftCheckModelDataQuality
modelDataQuality,
            (Key
"ModelQuality" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DriftCheckModelQuality
modelQuality
          ]
      )