:mod:`quartic_sdk.model.tests` ============================== .. py:module:: quartic_sdk.model.tests Submodules ---------- .. toctree:: :titlesonly: :maxdepth: 1 test_helpers/index.rst Package Contents ---------------- Classes ~~~~~~~ .. autoapisummary:: quartic_sdk.model.tests.Base quartic_sdk.model.tests.BaseQuarticModel quartic_sdk.model.tests.SupportedModel quartic_sdk.model.tests.ModelThatReturnsList quartic_sdk.model.tests.ModelThatReturnsNone quartic_sdk.model.tests.ModelThatReturnsString quartic_sdk.model.tests.SlowModel quartic_sdk.model.tests.ModelWithLog quartic_sdk.model.tests.ModelWithValidWindow quartic_sdk.model.tests.ModelWithInValidWindow quartic_sdk.model.tests.MockLoggingHandler quartic_sdk.model.tests.SupportedSpectralModel quartic_sdk.model.tests.SpectralModelThatReturnsString quartic_sdk.model.tests.SlowSpectralModel .. class:: Base(body_json, api_helper) The base class which is used for creating all the required instances of specific types .. method:: get(self, name) Return the value of the given `name` attribute :param name: (string) The attribute name to be returned :return: The returned attribute value .. method:: __str__(self) Return the stringifed version of the representation .. method:: __eq__(self, other) Override equals to check equality of all attributes :param other: The other object, to which we are comparing :return: (bool) Whether they are equal .. class:: BaseQuarticModel(name: str, description: str = '', log_level: str = 'INFO') A Base Class Model for Wrapping User Models into Quartic Deployments. User needs to inherit this class and override the predict method with all the post model training steps such as, preprocessing, prediction, postprocessing the pandas dataframe passed to :func: `predict` during real time prediction. Note: Please do not overwrite method :func: `save` as it contains utilities to validate and deploy model to the Quartic AI Platform Parameters ---------- name : Name of the model to be saved in Quartic AI Platform description : Description of the current model log_level : Log Level for logs created/executed during run time i.e. during real time predictions Attributes ---------- name : Name of the model to be saved in Quartic AI Platform description : description of model log_level : Log level log : Logger instance which can be used to set run time logs ex: self.log.info("Example Log") Methods ------- save : private save method to save deploy model to the Quartic AI Platform predict : abstract predict method which needs to overridden Examples -------- class MyModel(BaseQuarticModel): def __init__(self, model): self.model = model super().__init__('MyModel', 'model description', 'INFO') def preprocess(self, input_df): transformed_df = custom_transform(input_df) return transformed_df def postprocess(self, input_df): transformed_df = custom_transform_post(input_df) return transformed_df def predict(self, input_df): pre_transformed_df = self.preprocess(input_df) prediction_df = self.model.predict(pre_transformed_df) self.log.info("Test Log") return postprocess(prediction_df)['output_column'] # pandas Series lr = LinearRegression() lr.train(input_data) my_model = MyModel(lr) my_model.save('my_model_output', [Tag('A'), Tag('B')], Tag('C'), input_data, None) .. method:: save(self, client, output_tag_name: str, feature_tags: List[int], target_tag: int, test_df: pandas.DataFrame, ml_node: int = None) :param client: Quartic APIClient :param output_tag_name: name for Prediction output tag :param feature_tags: Feature Tag ids used in the model :param target_tag: Target tag id to specify the parent of current soft tag :param test_df: Test input dataframe to validate input and prediction output in agreement with Quartic AI Platform :param ml_node: Optional - Ml Node Id if deployment of model needs to be done to specific node :return: None on successfully storing the model to the Quartic AI Platform .. method:: predict(self, input_df: pandas.DataFrame) -> pandas.Series :abstractmethod: Abstract method for custom predict method :param input_df: Input Data frame for prediction :return: Returns pd .. method:: with_window(duration) This is decorator method for window support User can decorate predict method with this decorator for window support :param duration: window duration in sec :return: None .. method:: moving_window_predict(self, input_df: pandas.DataFrame, previous_df: pandas.DataFrame) This method calls predict for with window model along with respective window data for each row in input_df. :param input_df: input dataframe :param previous_df: previous dataframe for with window model :return: pandas series of predictions along with timestamps respective to input_df records .. class:: SupportedModel Bases: :class:`quartic_sdk.model.BaseQuarticModel.BaseQuarticModel` Example Model used for testing model This is a valid model that can be save to quartic platform .. method:: predict(self, input_df: pandas.DataFrame) -> pandas.Series Abstract method for custom predict method :param input_df: Input Data frame for prediction :return: Returns pd .. class:: ModelThatReturnsList Bases: :class:`quartic_sdk.model.BaseQuarticModel.BaseQuarticModel` Example Model used for testing model This is a valid model that can be save to quartic platform .. method:: predict(self, input_df: pandas.DataFrame) -> pandas.Series Abstract method for custom predict method :param input_df: Input Data frame for prediction :return: Returns pd .. class:: ModelThatReturnsNone Bases: :class:`quartic_sdk.model.BaseQuarticModel.BaseQuarticModel` Example Model used for testing model This is a valid model that can be save to quartic platform .. method:: predict(self, input_df: pandas.DataFrame) -> pandas.Series Abstract method for custom predict method :param input_df: Input Data frame for prediction :return: Returns pd .. class:: ModelThatReturnsString Bases: :class:`quartic_sdk.model.BaseQuarticModel.BaseQuarticModel` Example Model used for testing model This is a invalid model whose predict function returns data of type string .. method:: post_transform(self, data) .. method:: predict(self, input_df: pandas.DataFrame) -> pandas.Series Abstract method for custom predict method :param input_df: Input Data frame for prediction :return: Returns pd .. class:: SlowModel Bases: :class:`quartic_sdk.model.BaseQuarticModel.BaseQuarticModel` Example Model used for testing model This is a invalid model whose predict function takes longer processing time than that is supported by Quartic .. method:: pre_transform(self, df) A simple transformation that sleeps for x secs before returning same .. method:: predict(self, input_df: pandas.DataFrame) -> pandas.Series sample prediction .. class:: ModelWithLog Bases: :class:`quartic_sdk.model.BaseQuarticModel.BaseQuarticModel` Example Model used for testing model This is a invalid model whose predict function takes longer processing time than that is supported by Quartic .. method:: predict(self, input_df: pandas.DataFrame) -> pandas.Series sample prediction .. class:: ModelWithValidWindow Bases: :class:`quartic_sdk.model.BaseQuarticModel.BaseQuarticModel` A Base Class Model for Wrapping User Models into Quartic Deployments. User needs to inherit this class and override the predict method with all the post model training steps such as, preprocessing, prediction, postprocessing the pandas dataframe passed to :func: `predict` during real time prediction. Note: Please do not overwrite method :func: `save` as it contains utilities to validate and deploy model to the Quartic AI Platform Parameters ---------- name : Name of the model to be saved in Quartic AI Platform description : Description of the current model log_level : Log Level for logs created/executed during run time i.e. during real time predictions Attributes ---------- name : Name of the model to be saved in Quartic AI Platform description : description of model log_level : Log level log : Logger instance which can be used to set run time logs ex: self.log.info("Example Log") Methods ------- save : private save method to save deploy model to the Quartic AI Platform predict : abstract predict method which needs to overridden Examples -------- class MyModel(BaseQuarticModel): def __init__(self, model): self.model = model super().__init__('MyModel', 'model description', 'INFO') def preprocess(self, input_df): transformed_df = custom_transform(input_df) return transformed_df def postprocess(self, input_df): transformed_df = custom_transform_post(input_df) return transformed_df def predict(self, input_df): pre_transformed_df = self.preprocess(input_df) prediction_df = self.model.predict(pre_transformed_df) self.log.info("Test Log") return postprocess(prediction_df)['output_column'] # pandas Series lr = LinearRegression() lr.train(input_data) my_model = MyModel(lr) my_model.save('my_model_output', [Tag('A'), Tag('B')], Tag('C'), input_data, None) .. method:: predict(self, input_df: pandas.DataFrame) -> pandas.Series sample prediction .. class:: ModelWithInValidWindow Bases: :class:`quartic_sdk.model.BaseQuarticModel.BaseQuarticModel` A Base Class Model for Wrapping User Models into Quartic Deployments. User needs to inherit this class and override the predict method with all the post model training steps such as, preprocessing, prediction, postprocessing the pandas dataframe passed to :func: `predict` during real time prediction. Note: Please do not overwrite method :func: `save` as it contains utilities to validate and deploy model to the Quartic AI Platform Parameters ---------- name : Name of the model to be saved in Quartic AI Platform description : Description of the current model log_level : Log Level for logs created/executed during run time i.e. during real time predictions Attributes ---------- name : Name of the model to be saved in Quartic AI Platform description : description of model log_level : Log level log : Logger instance which can be used to set run time logs ex: self.log.info("Example Log") Methods ------- save : private save method to save deploy model to the Quartic AI Platform predict : abstract predict method which needs to overridden Examples -------- class MyModel(BaseQuarticModel): def __init__(self, model): self.model = model super().__init__('MyModel', 'model description', 'INFO') def preprocess(self, input_df): transformed_df = custom_transform(input_df) return transformed_df def postprocess(self, input_df): transformed_df = custom_transform_post(input_df) return transformed_df def predict(self, input_df): pre_transformed_df = self.preprocess(input_df) prediction_df = self.model.predict(pre_transformed_df) self.log.info("Test Log") return postprocess(prediction_df)['output_column'] # pandas Series lr = LinearRegression() lr.train(input_data) my_model = MyModel(lr) my_model.save('my_model_output', [Tag('A'), Tag('B')], Tag('C'), input_data, None) .. method:: predict(self, input_df: pandas.DataFrame) -> pandas.Series sample prediction .. class:: MockLoggingHandler(*args, **kwargs) Bases: :class:`logging.Handler` Mock logging handler to check for expected logs. .. method:: emit(self, record) Do whatever it takes to actually log the specified logging record. This version is intended to be implemented by subclasses and so raises a NotImplementedError. .. method:: reset(self) .. class:: SupportedSpectralModel Bases: :class:`quartic_sdk.model.BaseSpectralModel` Example Model used for testing spectral model This is a valid spectral model that can be saved to the Quartic AI Platform .. method:: predict(self, input_df: pandas.DataFrame) -> pandas.Series Abstract method for custom predict method :param input_df: Input Data frame for prediction :return: Returns pd .. class:: SpectralModelThatReturnsString Bases: :class:`quartic_sdk.model.BaseSpectralModel` Example Model used for testing spectral model This is a invalid spectral model whose predict function returns data of type string .. method:: post_transform(self, data) .. method:: predict(self, input_df: pandas.DataFrame) -> pandas.Series Abstract method for custom predict method :param input_df: Input Data frame for prediction :return: Returns pd .. class:: SlowSpectralModel Bases: :class:`quartic_sdk.model.BaseSpectralModel` Example Model used for testing spectral model This is a invalid spectral model whose predict function takes longer processing time than that is supported by the Quartic AI Platform .. method:: pre_transform(self, df) A simple transformation that sleeps for x secs before returning same .. method:: predict(self, input_df: pandas.DataFrame) -> pandas.Series sample prediction