metamorph

A Clojure library designed to providing pipelining operations.

Pipeline operation

Pipeline operation is a function which accepts context as a map and returns possibly modified context map.

Context

Context is just a map where pipeline information is stored. There are three reserved keys which are supposed to help organize a pipeline:

Compliant functions

All the steps of a metamorph pipeline are function which need to follow the following conventions, in order to work well together:

Metamorph compliant libraries

The existing clojure libraries tablecloth,tech.ml.dataset and tech.ml will be extended to make methamorph compliant functions available.

Similar concept in sklearn pipelines

The metamorph concept is similar to the pipeline concept of sklearn, which allows as well to run a give pipeline in fit and transform. But metamorph allows to combine models with arbitrary transform functions, which don’t need to be models.

Two types of functions in pipeline

We foresee that mainly 2 types of functions get added to a pipeline.

  1. State independend functions: They only manipulate the main data object, and will ignore all other information in contexts. Neither will they use mode or the id in the context map.
  2. State dependend functions: These functions will behave different depending on the mode and will likely store data in the context map, which can be used by the same function in an other mode or by other functions later in the pipeline.

Pipelines can be constrcucted from function or as pure data

Metamorph pipelines can be either constructed from a sequence of function calls or declarative as a sequence of maps.

Both rely on the same functions.

This should allow advanced use cases, like the generation of pipelines, which gives large flexibility for hyper parameter tuning in machine learning. ### Advantages of the metamorph concept

Creating a pipeline

To create a pipeline you can use two functions:

Usage

TODO!

License

Copyright © 2021 Scicloj

This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0.

This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version, with the GNU Classpath Exception which is available at https://www.gnu.org/software/classpath/license.html.